|
| 1 | + |
1 | 2 | Execute (no matches):
|
2 |
| - let candidates = ['hello', 'world', 'zombies', 'pants'] |
3 |
| - let subject = "diaper" |
4 |
| - let expected = [] |
5 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 3 | + let g:candidates = ['hello', 'world', 'zombies', 'pants'] |
| 4 | + let g:subject = "diaper" |
| 5 | + let g:expected = [] |
| 6 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
6 | 7 |
|
7 | 8 | Execute (detects two anagrams):
|
8 |
| - let candidates = ['lemons', 'cherry', 'melons'] |
9 |
| - let subject = "solemn" |
10 |
| - let expected = ['lemons', 'melons'] |
11 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 9 | + let g:candidates = ['lemons', 'cherry', 'melons'] |
| 10 | + let g:subject = "solemn" |
| 11 | + let g:expected = ['lemons', 'melons'] |
| 12 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
12 | 13 |
|
13 | 14 | Execute (does not detect anagram subsets):
|
14 |
| - let candidates = ['dog', 'goody'] |
15 |
| - let subject = "good" |
16 |
| - let expected = [] |
17 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 15 | + let g:candidates = ['dog', 'goody'] |
| 16 | + let g:subject = "good" |
| 17 | + let g:expected = [] |
| 18 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
18 | 19 |
|
19 | 20 | Execute (detects anagram):
|
20 |
| - let candidates = ['enlists', 'google', 'inlets', 'banana'] |
21 |
| - let subject = "listen" |
22 |
| - let expected = ['inlets'] |
23 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 21 | + let g:candidates = ['enlists', 'google', 'inlets', 'banana'] |
| 22 | + let g:subject = "listen" |
| 23 | + let g:expected = ['inlets'] |
| 24 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
24 | 25 |
|
25 | 26 | Execute (detects three anagrams):
|
26 |
| - let candidates = ['gallery', 'ballerina', 'regally', 'clergy', 'largely', 'leading'] |
27 |
| - let subject = "allergy" |
28 |
| - let expected = ['gallery', 'regally', 'largely'] |
29 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 27 | + let g:candidates = ['gallery', 'ballerina', 'regally', 'clergy', 'largely', 'leading'] |
| 28 | + let g:subject = "allergy" |
| 29 | + let g:expected = ['gallery', 'regally', 'largely'] |
| 30 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
30 | 31 |
|
31 | 32 | Execute (detects multiple anagrams with different case):
|
32 |
| - let candidates = ['Eons', 'ONES'] |
33 |
| - let subject = "nose" |
34 |
| - let expected = ['Eons', 'ONES'] |
35 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 33 | + let g:candidates = ['Eons', 'ONES'] |
| 34 | + let g:subject = "nose" |
| 35 | + let g:expected = ['Eons', 'ONES'] |
| 36 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
36 | 37 |
|
37 | 38 | Execute (does not detect non-anagrams with identical checksum):
|
38 |
| - let candidates = ['last'] |
39 |
| - let subject = "mass" |
40 |
| - let expected = [] |
41 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 39 | + let g:candidates = ['last'] |
| 40 | + let g:subject = "mass" |
| 41 | + let g:expected = [] |
| 42 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
42 | 43 |
|
43 | 44 | Execute (detects anagrams case-insensitively):
|
44 |
| - let candidates = ['cashregister', 'Carthorse', 'radishes'] |
45 |
| - let subject = "Orchestra" |
46 |
| - let expected = ['Carthorse'] |
47 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 45 | + let g:candidates = ['cashregister', 'Carthorse', 'radishes'] |
| 46 | + let g:subject = "Orchestra" |
| 47 | + let g:expected = ['Carthorse'] |
| 48 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
48 | 49 |
|
49 | 50 | Execute (detects anagrams using case-insensitive subject):
|
50 |
| - let candidates = ['cashregister', 'carthorse', 'radishes'] |
51 |
| - let subject = "Orchestra" |
52 |
| - let expected = ['carthorse'] |
53 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 51 | + let g:candidates = ['cashregister', 'carthorse', 'radishes'] |
| 52 | + let g:subject = "Orchestra" |
| 53 | + let g:expected = ['carthorse'] |
| 54 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
54 | 55 |
|
55 | 56 | Execute (detects anagrams using case-insensitive possible matches):
|
56 |
| - let candidates = ['cashregister', 'Carthorse', 'radishes'] |
57 |
| - let subject = "orchestra" |
58 |
| - let expected = ['Carthorse'] |
59 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 57 | + let g:candidates = ['cashregister', 'Carthorse', 'radishes'] |
| 58 | + let g:subject = "orchestra" |
| 59 | + let g:expected = ['Carthorse'] |
| 60 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
| 61 | + |
| 62 | +Execute (does not detect an anagram if the original word is repeated): |
| 63 | + let g:candidates = ['goGoGO'] |
| 64 | + let g:subject = "go" |
| 65 | + let g:expected = [] |
| 66 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
60 | 67 |
|
61 | 68 | Execute (anagrams must use all letters exactly once):
|
62 |
| - let candidates = ['patter'] |
63 |
| - let subject = "tapper" |
64 |
| - let expected = [] |
65 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 69 | + let g:candidates = ['patter'] |
| 70 | + let g:subject = "tapper" |
| 71 | + let g:expected = [] |
| 72 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
66 | 73 |
|
67 | 74 | Execute (words are not anagrams of themselves):
|
68 |
| - let candidates = ['BANANA'] |
69 |
| - let subject = "BANANA" |
70 |
| - let expected = [] |
71 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 75 | + let g:candidates = ['BANANA'] |
| 76 | + let g:subject = "BANANA" |
| 77 | + let g:expected = [] |
| 78 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
72 | 79 |
|
73 | 80 | Execute (words are not anagrams of themselves even if letter case is partially different):
|
74 |
| - let candidates = ['Banana'] |
75 |
| - let subject = "BANANA" |
76 |
| - let expected = [] |
77 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 81 | + let g:candidates = ['Banana'] |
| 82 | + let g:subject = "BANANA" |
| 83 | + let g:expected = [] |
| 84 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
78 | 85 |
|
79 | 86 | Execute (words are not anagrams of themselves even if letter case is completely different):
|
80 |
| - let candidates = ['banana'] |
81 |
| - let subject = "BANANA" |
82 |
| - let expected = [] |
83 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 87 | + let g:candidates = ['banana'] |
| 88 | + let g:subject = "BANANA" |
| 89 | + let g:expected = [] |
| 90 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
84 | 91 |
|
85 | 92 | Execute (words other than themselves can be anagrams):
|
86 |
| - let candidates = ['LISTEN', 'Silent'] |
87 |
| - let subject = "LISTEN" |
88 |
| - let expected = ['Silent'] |
89 |
| - AssertEqual expected, FindAnagrams(candidates, subject) |
| 93 | + let g:candidates = ['LISTEN', 'Silent'] |
| 94 | + let g:subject = "LISTEN" |
| 95 | + let g:expected = ['Silent'] |
| 96 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
| 97 | + |
| 98 | +Execute (handles case of greek letters): |
| 99 | + let g:candidates = ['ΒΓΑ', 'ΒΓΔ', 'γβα', 'αβγ'] |
| 100 | + let g:subject = "ΑΒΓ" |
| 101 | + let g:expected = ['ΒΓΑ', 'γβα'] |
| 102 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
| 103 | + |
| 104 | +Execute (different characters may have the same bytes): |
| 105 | + let g:candidates = ['€a'] |
| 106 | + let g:subject = "a⬂" |
| 107 | + let g:expected = [] |
| 108 | + AssertEqual g:expected, FindAnagrams(g:candidates, g:subject) |
0 commit comments