use Set::Object;
print "1..28\n";
sub check {
my ($test, $ok) = @_;
if ($ok) {
print "ok $test\n";
} else {
print "not ok $test\n";
}
}
my $a = Set::Object->new("a".."e");
my $b = Set::Object->new("c".."g");
my $d = $a->difference($b);
check( 1, $d eq "Set::Object(a b)" );
check( 2, $a eq "Set::Object(a b c d e)" );
check( 3, $b eq "Set::Object(c d e f g)" );
my $e = $a - $b;
check( 4, $e eq "Set::Object(a b)" );
check( 5, $a eq "Set::Object(a b c d e)" );
check( 6, $b eq "Set::Object(c d e f g)" );
my $f = $b->difference($a);
check( 7, $f eq "Set::Object(f g)" );
check( 8, $a eq "Set::Object(a b c d e)" );
check( 9, $b eq "Set::Object(c d e f g)" );
my $g = $b - $a;
check( 10, $g eq "Set::Object(f g)" );
check( 11, $a eq "Set::Object(a b c d e)" );
check( 12, $b eq "Set::Object(c d e f g)" );
my $h = $a - "x";
check( 13, $h eq "Set::Object(a b c d e)" );
check( 14, $a eq "Set::Object(a b c d e)" );
my $i = "y" - $a;
check( 15, $i eq "Set::Object(y)" );
check( 16, $a eq "Set::Object(a b c d e)" );
my $j = $a - "c";
check( 17, $j eq "Set::Object(a b d e)" );
check( 18, $a eq "Set::Object(a b c d e)" );
my $k = "e" - $a;
check( 19, $k eq "Set::Object()" );
check( 20, $a eq "Set::Object(a b c d e)" );
my $m = Set::Object->new();
my $n = Set::Object->new();
my $o = $m - $n;
check( 21, defined($m) && ref($m) && $m->isa("Set::Object") );
check( 22, defined($n) && ref($n) && $n->isa("Set::Object") );
check( 23, $m eq $n );
check( 24, $n eq $o );
check( 25, $o eq $m );
check( 26, $m == $n );
check( 27, $n == $o );
check( 28, $o == $m );
sub show {
my $z = shift;
print "# set: ".sprintf("SV = %x, addr = %x", Set::Object::refaddr($z), $$z)."\b";
print "# size is: ",($z->size),"\n";
print "# stringified: $z\n";
print "# universe is: ",($z->universe),"\n";
}