# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl DbxrefSet.t'
#########################
BEGIN {
eval { require Test; };
use Test;
plan tests => 23;
}
#########################
use OBO::Util::DbxrefSet;
use OBO::Core::Dbxref;
use strict;
#################
# class methods #
#################
my $my_set = OBO::Util::DbxrefSet->new;
ok(1);
# three new dbxref's
my $ref1 = OBO::Core::Dbxref->new;
my $ref2 = OBO::Core::Dbxref->new;
my $ref3 = OBO::Core::Dbxref->new;
$ref1->name("APO:vm");
$ref2->name("APO:ls");
$ref3->name("APO:ea");
#######################
# object data methods #
#######################
# remove from my_set
$my_set->remove($ref1);
ok($my_set->size() == 0);
ok(!$my_set->contains($ref1));
$my_set->add($ref1);
ok($my_set->contains($ref1));
$my_set->remove($ref1);
ok($my_set->size() == 0);
ok(!$my_set->contains($ref1));
### set versions ###
$my_set->add($ref1);
ok($my_set->contains($ref1));
$my_set->add($ref2);
ok($my_set->contains($ref2));
$my_set->add($ref3);
ok($my_set->contains($ref3));
my $ref4 = OBO::Core::Dbxref->new;
my $ref5 = OBO::Core::Dbxref->new;
my $ref6 = OBO::Core::Dbxref->new;
$ref4->name("APO:ef");
$ref5->name("APO:sz");
$ref6->name("APO:qa");
$my_set->add_all($ref4, $ref5, $ref6);
ok($my_set->contains($ref4) && $my_set->contains($ref5) && $my_set->contains($ref6));
### get versions ###
#foreach ($my_set->get_set()) {
# print $_, "\n";
#}
########################
# other object methods #
########################
$my_set->add_all($ref4, $ref5, $ref6);
ok($my_set->size() == 6);
# remove from my_set
$my_set->remove($ref4);
ok($my_set->size() == 5);
ok(!$my_set->contains($ref4));
my $ref7 = $ref4;
my $ref8 = $ref5;
my $ref9 = $ref6;
my $my_set2 = OBO::Util::DbxrefSet->new;
ok(1);
ok($my_set2->is_empty());
ok(!$my_set->equals($my_set2));
$my_set->add_all($ref4, $ref5, $ref6);
$my_set2->add_all($ref7, $ref8, $ref9, $ref1, $ref2, $ref3);
ok(!$my_set2->is_empty());
ok($my_set->contains($ref7) && $my_set->contains($ref8) && $my_set->contains($ref9));
ok($my_set->equals($my_set2));
ok($my_set2->size() == 6);
$my_set2->clear();
ok($my_set2->is_empty());
ok($my_set2->size() == 0);
ok(1);