/usr/local/CPAN/XAO-Base/testcases/SimpleHash.pm
package testcases::SimpleHash;
use strict;
use XAO::SimpleHash;
use base qw(testcases::base);
sub test_everything {
my $self=shift;
my $sh=new XAO::SimpleHash(a => 1, b => 2);
$self->assert($sh->get('a') == 1,
"get() - wrong value");
$self->assert($sh->defined('a'),
"'a' is not defined and should be");
$self->assert(! $sh->defined('A'),
"'A' is defined but should not be");
$sh->put(c => 3);
$self->assert($sh->get('c') == 3,
"Wrong value for 'c'");
$sh->fill({ a => 11, d => 4});
$self->assert($sh->get('a') == 11 && $sh->get('d') == 4,
"Fill() breaks on hash reference");
$sh->fill(b => 22, c => 33);
$self->assert($sh->get('b') == 22 && $sh->get('c') == 33,
"Fill() breaks on hash");
$sh->fill([d => 44], [e => 55]);
$self->assert($sh->get('d') == 44 && $sh->get('e') == 55,
"Fill() breaks on array references");
my $got=join(',',sort $sh->values);
$self->assert($got eq '11,22,33,44,55',
"Wrong list from values ($got)");
$self->assert(join(',',sort $sh->keys) eq 'a,b,c,d,e',
"Wrong list from keys()");
$sh->delete('a');
$self->assert(! $sh->contains(12),
"Value is still available after delete");
$self->assert($sh->contains(22) eq 'b',
"Contains(22) returned wrong value");
$self->assert($sh->put('/test/foo/bar' => 123) == 123,
"Put doesn't work with URI");
$self->assert(ref($sh->get('test/foo')) eq 'HASH',
"Put(uri) created incorrect structure");
$self->assert($sh->exists('//test//foo///bar'),
"Exists does not work on URIs");
$self->assert(! $sh->exists('//test//foo///BAR'),
"Exists does not work on URIs (2)");
$self->assert($sh->get('test')->{foo}->{bar} == 123,
"Get returned incorrect hash structure");
$sh->put('test/foo/bar' => undef);
$self->assert($sh->exists('//test//foo///bar'),
"Exists does not work right on URI");
$self->assert(! $sh->defined('//test//foo///bar'),
"Defined does not work right on URI");
$sh->put('test//foo/aaa' => 'AAA');
$self->assert($sh->get('test/foo/aaa') eq 'AAA',
"Deep put does not work");
$sh->delete('test/foo');
$self->assert(! $sh->exists('//test//foo'),
"Element still exists after deleting an URI");
$self->assert(! $sh->exists('//test//foo/bar'),
"Element still exists after deleting an URI (2)");
my $clone=$sh->new(foo => 'bar');
$self->assert(ref($clone),
"Can't clone SimpleHash object");
$self->assert($clone->get('foo') eq 'bar',
"Passing initialization parameters does not work");
}
1;