use Set::Scalar;
use strict;
print "1..49\n";
my $s = Set::Scalar->new;
print "not " unless $s->size == 0;
print "ok 1\n";
print "not " unless $s->is_null;
print "ok 2\n";
print "not " unless $s->is_universal;
print "ok 3\n";
print "not " unless $s eq "()";
print "ok 4\n";
print "not " unless $s->universe eq "[]";
print "ok 5\n";
$s->insert("a");
print "not " unless $s->size == 1;
print "ok 6\n";
print "not " if $s->is_null;
print "ok 7\n";
print "not " unless $s->is_universal;
print "ok 8\n";
print "not " unless $s eq "(a)";
print "ok 9\n";
print "not " unless $s->universe eq "[a]";
print "ok 10\n";
$s->insert("a");
print "not " unless $s->size == 1;
print "ok 11\n";
print "not " if $s->is_null;
print "ok 12\n";
print "not " unless $s->is_universal;
print "ok 13\n";
print "not " unless $s eq "(a)";
print "ok 14\n";
print "not " unless $s->universe eq "[a]";
print "ok 15\n";
$s->insert("b", "c", "d", "e");
print "not " unless $s->size == 5;
print "ok 16\n";
print "not " if $s->is_null;
print "ok 17\n";
print "not " unless $s->is_universal;
print "ok 18\n";
print "not " unless $s eq "(a b c d e)";
print "ok 19\n";
print "not " unless $s->universe eq "[a b c d e]";
print "ok 20\n";
$s->delete("b", "d");
print "not " unless $s->size == 3;
print "ok 21\n";
print "not " if $s->is_null;
print "ok 22\n";
print "not " if $s->is_universal;
print "ok 23\n";
print "not " unless $s eq "(a c e)";
print "ok 24\n";
print "not " unless $s->universe eq "[a b c d e]";
print "ok 25\n";
$s->invert("b", "c", "d");
print "not " unless $s->size == 4;
print "ok 26\n";
print "not " if $s->is_null;
print "ok 27\n";
print "not " if $s->is_universal;
print "ok 28\n";
print "not " unless $s eq "(a b d e)";
print "ok 29\n";
print "not " unless $s->universe eq "[a b c d e]";
print "ok 30\n";
$s->fill();
print "not " unless $s->size == 5;
print "ok 31\n";
print "not " if $s->is_null;
print "ok 32\n";
print "not " unless $s->is_universal;
print "ok 33\n";
print "not " unless $s eq "(a b c d e)";
print "ok 34\n";
print "not " unless $s->universe eq "[a b c d e]";
print "ok 35\n";
$s->clear();
print "not " unless $s->size == 0;
print "ok 36\n";
print "not " unless $s->is_null;
print "ok 37\n";
print "not " if $s->is_universal;
print "ok 38\n";
print "not " unless $s eq "()";
print "ok 39\n";
print "not " unless $s->universe eq "[a b c d e]";
print "ok 40\n";
eval { $s->clear("x") };
print "not " unless $@ =~ /\Q::clear(): need no arguments/;
print "ok 41\n";
eval { $s->fill("y") };
print "not " unless $@ =~ /\Q::fill(): need no arguments/;
print "ok 42\n";
$s->insert("a".."e");
print "not " unless "@{ [ sort $s->members ] }" eq "a b c d e";
print "ok 43\n";
print "not " unless "@{ [ sort @$s ] }" eq "a b c d e";
print "ok 44\n";
my $t = Set::Scalar->new(@$s);
print "not " unless "@{ [ sort @$t ] }" eq "a b c d e";
print "ok 45\n";
$t += "f";
print "not " unless "@{ [ sort @$t ] }" eq "a b c d e f";
print "ok 46\n";
my $u = $t;
print "not " unless "@{ [ sort @$u ] }" eq "a b c d e f";
print "ok 47\n";
$t += "g";
print "not " unless "@{ [ sort @$t ] }" eq "a b c d e f g";
print "ok 48\n";
print "not " unless "@{ [ sort @$u ] }" eq "a b c d e f";
print "ok 49\n";
# End Of File.