use Set::Scalar;
print "1..8\n";
my $s = Set::Scalar->new("a");
my $t = Set::Scalar->new("b");
$s->insert($t);
print "not " unless $s == "(a (b))";
print "ok 1\n";
$t->insert($s);
print "not " unless $s == "(a (b (a ...)))";
print "ok 2\n";
print "not " unless $t == "(b (a (b ...)))";
print "ok 3\n";
my $u = Set::Scalar->new("c");
$u->insert($u);
print "not " unless $u == "(c (c ...))";
print "ok 4\n";
$s->insert($u);
# There is some nondeterminism that needs to be resolved.
print "not " unless $s == "(a (b (a ...)) (c ...))" or
$s == "(a (b (a (c ...) ...)) (c ...))";
print "ok 5\n";
print "not " unless $t == "(b (a (b ...) (c ...)))" or
$t == "(b (a (b (c ...) ...) (c ...)))";
print "ok 6\n";
$t->delete($s);
print "not " unless $s == "(a (b) (c ...))";
print "ok 7\n";
print "not " unless $t == "(b)";
print "ok 8\n";