1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use Games::Word qw(is_substring all_substrings);
my %is_substring_tests = (
"" => [""],
"abc", => ["", "abc", "ab", "ac"],
"aaba" => ["a", "aa", "aaa", "aab", "aba"],
"abcba" => ["aa", "bb", "c", "abc", "cba", "abba"],
);
my %isnt_substring_tests = (
"" => ["a"],
"abc" => ["z", "ba", "baz", "abz"],
"aaba" => ["c", "abaa"],
);
my %all_substrings_tests = (
"" => [''],
"a" => ['', "a"],
"ab" => ['', "a", "b", "ab"],
"aab" => ['', "a", "a", "b", "aa", "ab", "ab", "aab"],
"abc" => ['', "a", "b", "c", "ab", "ac", "bc", "abc"],
);
for my $word (keys %is_substring_tests) {
ok(is_substring($_, $word), "is '$_' a substring of '$word'?")
for @{ $is_substring_tests{$word} };
}
for my $word (keys %isnt_substring_tests) {
ok(!is_substring($_, $word), "is '$_' not a substring of '$word'?")
for @{ $isnt_substring_tests{$word} };
}
for my $word (keys %all_substrings_tests) {
is_deeply(
[sort(all_substrings($word))],
[sort(@{ $all_substrings_tests{$word} })],
"do we get all of the substrings of '$word'?"
);
}
done_testing;
|