use Test::More tests => 15;
use lib '../lib';
BEGIN { use_ok( 'UDCode' ) }
ok(! is_udcode("b", "ab", "abba")); # abba,b ab,b,ab
ok(! is_udcode("a", "ab", "ba")); # ab,a a,ba
ok( is_udcode("ab", "ba"));
ok( is_udcode("a", "b"));
ok( is_udcode("aab", "ab", "b"));
ok( is_udcode("a", "ab")); # not a prefix code
ok( is_udcode("a")); # trivial
# What if some of the strings in the code list are identical?
# Are they considered the same strings or different strings?
#
# For example, suppose is_udcode("x", "x")
# Then $code[0] . $code[1] eq $code[1] . $code[0]
# So this is not UD.
# But all we have is "x" . "x" eq "x" . "x", so maybe is *is* UD
#
# Behavior decision: identical code words are disregarded
# So the code above *is* UD.
ok( is_udcode("a", "a")); # trivial
ok( is_udcode("a", "a", "a")); # trivial
ok(! is_udcode("a", "ab", "ba", "a"));
ok(! is_udcode("b", "ab", "ab", "abba"));
ok( is_udcode("ab", "ba", "ba"));
ok( is_udcode("a", "b", "b"));
ok( is_udcode("a", "b", "b", "a"));