The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/local/bin/perl
###########################################################################
#
#  Tree::Ternary
#
#  Copyright (C) 1999, Mark Rogaski; all rights reserved.
#
#  This module is free software.  You can redistribute it and/or
#  modify it under the terms of the Artistic License 2.0.
#
#  This program is distributed in the hope that it will be useful,
#  but without any warranty; without even the implied warranty of
#  merchantability or fitness for a particular purpose.
#
###########################################################################

use Test;
use Tree::Ternary;

BEGIN { plan tests => 38 }

$ref = new Tree::Ternary;

ok($ref->nodes(), 0);
ok($ref->terminals(), 0);

ok(ref($a = $ref->rinsert("firewater")), 'SCALAR');
ok($ref->nodes(), 9);
ok($ref->terminals(), 1);

ok(ref($a = $ref->rinsert("firewater")), '');
ok($ref->nodes(), 9);
ok($ref->terminals(), 1);

ok(ref($a = $ref->rinsert("stereolab")), 'SCALAR');
ok($ref->nodes(), 18);
ok($ref->terminals(), 2);

ok(ref($a = $ref->rinsert("tirewater")), 'SCALAR');
ok($ref->nodes(), 27);
ok($ref->terminals(), 3);

ok(ref($a = $ref->rinsert("tidewater")), 'SCALAR');
ok($ref->nodes(), 34);
ok($ref->terminals(), 4);

ok(ref($a = $ref->rinsert("tidewader")), 'SCALAR');
ok($ref->nodes(), 37);
ok($ref->terminals(), 5);

ok(ref($a = $ref->rinsert("firewater")), '');
ok($ref->nodes(), 37);
ok($ref->terminals(), 5);

ok(ref($a = $ref->rinsert("")), 'SCALAR');
ok($ref->nodes(), 37);
ok($ref->terminals(), 6);

ok(ref($a = $ref->rinsert("stereo")), 'SCALAR');
ok($ref->nodes(), 37);
ok($ref->terminals(), 7);

ok(ref($a = $ref->rinsert("")), '');
ok($ref->nodes(), 37);
ok($ref->terminals(), 7);

for ($i = 0;$i < 90;$i++) { $big .= chr($i); }
ok(ref($a = $ref->rinsert($big)), 'SCALAR');
ok($ref->nodes(), 127);
ok($ref->terminals(), 8);

ok(ref($a = $ref->rinsert($big)), '');
ok($ref->nodes(), 127);
ok($ref->terminals(), 8);