Skip to content

Commit 1a5f8c6

Browse files
authored
Sync anagram tests (#352)
* Sync anagram tests * Update stub formatting * Swap expected vs result order
1 parent 88e7e13 commit 1a5f8c6

File tree

3 files changed

+78
-48
lines changed

3 files changed

+78
-48
lines changed

exercises/practice/anagram/.meta/tests.toml

+5
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ description = "detects anagrams using case-insensitive possible matches"
4545

4646
[7cc195ad-e3c7-44ee-9fd2-d3c344806a2c]
4747
description = "does not detect an anagram if the original word is repeated"
48+
include = false
49+
50+
[630abb71-a94e-4715-8395-179ec1df9f91]
51+
description = "does not detect an anagram if the original word is repeated"
52+
reimplements = "7cc195ad-e3c7-44ee-9fd2-d3c344806a2c"
4853

4954
[9878a1c9-d6ea-4235-ae51-3ea2befd6842]
5055
description = "anagrams must use all letters exactly once"

exercises/practice/anagram/anagram-test.el

+68-46
Original file line numberDiff line numberDiff line change
@@ -4,69 +4,91 @@
44

55
;;; Code:
66

7+
78
(load-file "anagram.el")
89
(declare-function anagrams-for "anagram.el" (subject candidates))
910

11+
1012
(ert-deftest no-matches ()
11-
(should (equal '() (anagrams-for
12-
"diaper"
13-
'("hello" "world" "zombies" "pants")))))
13+
(should (equal (anagrams-for "diaper" '("hello" "world" "zombies" "pants"))
14+
'())))
15+
16+
17+
(ert-deftest detects-two-anagrams ()
18+
(should (equal (anagrams-for "solemn" '("lemons" "cherry" "melons"))
19+
'("lemons" "melons"))))
1420

15-
(ert-deftest detect-simple-anagram ()
16-
(should (equal '("tan") (anagrams-for
17-
"ant"
18-
'("tan" "stand" "at")))))
1921

20-
(ert-deftest does-not-confuse-different-duplicates ()
21-
(should (equal '() (anagrams-for
22-
"galea"
23-
'("eagle")))))
22+
(ert-deftest does-not-detect-anagram-subsets ()
23+
(should (equal (anagrams-for "good" '("dog" "goody"))
24+
'())))
2425

25-
(ert-deftest eliminate-anagram-subsets ()
26-
(should (equal '() (anagrams-for
27-
"good"
28-
'("dog" "goody")))))
2926

3027
(ert-deftest detect-anagram ()
31-
(should (equal '("inlets") (anagrams-for
32-
"listen"
33-
'("enlists" "google" "inlets" "banana")))))
34-
35-
(ert-deftest multiple-anagrams ()
36-
(should (equal '("gallery" "regally" "largely")
37-
(anagrams-for
38-
"allergy"
39-
'("gallery" "ballerina" "regally" "clergy" "largely" "leading")))))
40-
41-
(ert-deftest case-insensitive-anagrams ()
42-
(should (equal '("Carthorse")
43-
(anagrams-for
44-
"Orchestra"
45-
'("cashregister" "Carthorse" "radishes")))))
28+
(should (equal (anagrams-for "listen" '("enlists" "google" "inlets" "banana"))
29+
'("inlets"))))
30+
31+
32+
(ert-deftest detects-three-anagrams ()
33+
(should (equal (anagrams-for "allergy"
34+
'("gallery" "ballerina" "regally" "clergy" "largely" "leading"))
35+
'("gallery" "regally" "largely"))))
36+
37+
38+
(ert-deftest detects-multiple-anagrams-with-different-case ()
39+
(should (equal (anagrams-for "nose" '("Eons" "ONES"))
40+
'("Eons" "ONES"))))
41+
42+
43+
(ert-deftest does-not-detect-non-anagram-with-identical-checksum ()
44+
(should (equal (anagrams-for "mass" '("last"))
45+
'())))
46+
47+
48+
(ert-deftest detects-anagrams-case-insensitively ()
49+
(should (equal (anagrams-for "Orchestra" '("cashregister" "Carthorse" "radishes"))
50+
'("Carthorse"))))
51+
52+
53+
(ert-deftest detects-anagrams-using-case-insensitive-subject ()
54+
(should (equal (anagrams-for "Orchestra" '("cashregister" "carthorse" "radishes"))
55+
'("carthorse"))))
56+
57+
58+
(ert-deftest detects-anagrams-using-case-insensitive-possible-matches ()
59+
(should (equal (anagrams-for "orchestra" '("cashregister" "Carthorse" "radishes"))
60+
'("Carthorse"))))
61+
62+
63+
(ert-deftest does-not-detect-anagram-if-original-word-is-repeated ()
64+
(should (equal (anagrams-for "go" '("goGoGO"))
65+
'())))
66+
67+
68+
(ert-deftest anagrams-must-use-all-letters-exactly-once ()
69+
(should (equal (anagrams-for "tapper" '("patter"))
70+
'())))
71+
4672

4773
(ert-deftest word-is-not-own-anagram ()
48-
(should (equal '()
49-
(anagrams-for
50-
"BANANA"
51-
'("BANANA")))))
74+
(should (equal (anagrams-for "BANANA" '("BANANA"))
75+
'())))
76+
5277

5378
(ert-deftest word-is-not-own-anagram-if-letter-case-is-partially-different ()
54-
(should (equal '()
55-
(anagrams-for
56-
"BANANA"
57-
'("Banana")))))
79+
(should (equal (anagrams-for "BANANA" '("Banana"))
80+
'())))
81+
5882

5983
(ert-deftest word-is-not-own-anagram-if-letter-case-is-completely-different ()
60-
(should (equal '()
61-
(anagrams-for
62-
"BANANA"
63-
'("banana")))))
84+
(should (equal (anagrams-for "BANANA" '("banana"))
85+
'())))
86+
6487

6588
(ert-deftest words-other-than-themselves-can-be-anagrams ()
66-
(should (equal '("Silent")
67-
(anagrams-for
68-
"LISTEN"
69-
'("Listen" "Silent" "LISTEN")))))
89+
(should (equal (anagrams-for "LISTEN" '("LISTEN" "Silent"))
90+
'("Silent"))))
91+
7092

7193
(provide 'anagram-test)
7294
;;; anagram-test.el ends here

exercises/practice/anagram/anagram.el

+5-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22

33
;;; Commentary:
44

5-
(defun anagrams-for (subject candidates)
65
;;; Code:
7-
)
6+
7+
8+
(defun anagrams-for (subject candidates)
9+
(error "Delete this S-Expression and write your own implementation"))
10+
811

912
(provide 'anagram)
1013
;;; anagram.el ends here

0 commit comments

Comments
 (0)