#!perl # This unit tests that the various equality operations work. use Test::More tests => 21; use lib 't'; use Enumeration; use SubClass; # $e1 equals $e2; nothing else equals anything else. my $e1 = new SubClass(SubClass::test); my $e2 = new SubClass(SubClass::test); my $x = new SubClass(SubClass::a); my $y = new Enumeration (qw(this is a test)); $y->set('test'); ok $e1->is(SubClass::test), 'is, equal: subclass instance equals constant'; ok $e1->is($e2), 'is, equal: subclass instance equals subclass instance'; ok $y->is('test'), 'is, equal: free instance equals constant'; ok !$e1->is($x), 'is, not equal: same class, different value'; ok !$e2->is($y), 'is, not equal: different class, same value'; ok $e1 eq SubClass::test, 'eq, equal: subclass instance equals constant'; ok $e1 eq $e2, 'eq, equal: subclass instance equals subclass instance'; ok $y eq 'test', 'eq, equal: free instance equals constant'; ok !($e1 eq $x), 'eq, not equal: same class, different value'; ok !($e2 eq $y), 'eq, not equal: different class, same value'; ok !($e1 ne SubClass::test), 'ne, equal: subclass instance equals constant'; ok !($e1 ne $e2), 'ne, equal: subclass instance equals subclass instance'; ok !($y ne 'test'), 'ne, equal: free instance equals constant'; ok $e1 ne $x, 'ne, not equal: same class, different value'; ok $e2 ne $y, 'ne, not equal: different class, same value'; ok SubClass::test eq $e1, 'eq, equal: constant equals subclass instance'; ok 'test' eq $y, 'eq, equal: constant equals free instance'; ok !(SubClass::test ne $e1), 'ne, equal: constant equals subclass instance'; ok !('test' ne $y), 'ne, equal: constant equals free instance'; ok $e1->is_any($e2, $x, $y), 'is_any with various object arguments'; ok !$e1->is_none($e2, $x, $y), 'is_none with various object arguments';