Skip to content

Commit a9575cb

Browse files
committed
implement tests
1 parent 460684b commit a9575cb

File tree

1 file changed

+81
-26
lines changed

1 file changed

+81
-26
lines changed
Lines changed: 81 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,93 @@
11
(ns anagram-test
2-
(:require [clojure.test :refer [deftest is]]
2+
(:require [clojure.test :refer [deftest testing is]]
33
anagram))
44

55
(deftest no-matches
6-
(is (= []
7-
(anagram/anagrams-for "diaper" ["hello" "world" "zombies" "pants"]))))
6+
(testing "No matches"
7+
(is (= []
8+
(anagram/anagrams-for "diaper" ["hello" "world" "zombies" "pants"])))))
89

9-
(deftest detect-simple-anagram
10-
(is (= ["tan"] (anagram/anagrams-for "ant" ["tan" "stand" "at"]))))
10+
(deftest detects-two-anagrams
11+
(testing "Detects two anagrams"
12+
(is (= ["lemons", "melons"]
13+
(anagram/anagrams-for "solemn" ["lemons", "cherry", "melons"])))))
1114

12-
(deftest does-not-confuse-different-duplicates
13-
(is (= [] (anagram/anagrams-for "galea" ["eagle"]))))
15+
(deftest does-not-detect-anagram-subsets
16+
(testing "Does not detect anagram subsets"
17+
(is (= []
18+
(anagram/anagrams-for "good" ["dog", "goody"])))))
1419

15-
(deftest eliminate-anagram-subsets
16-
(is (= [] (anagram/anagrams-for "good" ["dog" "goody"]))))
20+
(deftest detects-anagram
21+
(testing "Detects anagram"
22+
(is (= ["inlets"]
23+
(anagram/anagrams-for "listen" ["enlists", "google", "inlets", "banana"])))))
1724

18-
(deftest detect-anagram
19-
(is (= ["inlets"]
20-
(let [coll ["enlists" "google" "inlets" "banana"]]
21-
(anagram/anagrams-for "listen" coll)))))
25+
(deftest detects-three-anagrams
26+
(testing "Detects three anagrams"
27+
(is (= ["gallery", "regally", "largely"]
28+
(anagram/anagrams-for "allergy" ["gallery", "ballerina", "regally", "clergy", "largely", "leading"])))))
2229

23-
(deftest multiple-anagrams
24-
(is (= ["gallery" "regally" "largely"]
25-
(let [coll ["gallery" "ballerina" "regally"
26-
"clergy" "largely" "leading"]]
27-
(anagram/anagrams-for "allergy" coll)))))
30+
(deftest detects-multiple-anagrams-with-different-case
31+
(testing "Detects multiple anagrams with different case"
32+
(is (= ["Eons", "ONES"]
33+
(anagram/anagrams-for "nose" ["Eons", "ONES"])))))
2834

29-
(deftest case-insensitive-anagrams
30-
(is (= ["Carthorse"]
31-
(let [coll ["cashregister" "Carthorse" "radishes"]]
32-
(anagram/anagrams-for "Orchestra" coll)))))
35+
(deftest does-not-detect-non-anagrams-with-identical-checksum
36+
(testing "Does not detect non-anagrams with identical checksum"
37+
(is (= []
38+
(anagram/anagrams-for "mass" ["last"])))))
3339

34-
(deftest word-is-not-own-anagram
35-
(is (= [] (anagram/anagrams-for "banana" ["banana"]))))
40+
(deftest detects-anagrams-case-insensitively
41+
(testing "Detects anagrams case-insensitively"
42+
(is (= ["Carthorse"]
43+
(anagram/anagrams-for "Orchestra" ["cashregister", "Carthorse", "radishes"])))))
3644

37-
(deftest capital-word-is-not-own-anagram
38-
(is (= [] (anagram/anagrams-for "BANANA" ["banana"]))))
45+
(deftest detects-anagrams-using-case-insensitive-subject
46+
(testing "Detects anagrams using case-insensitive subject"
47+
(is (= ["carthorse"]
48+
(anagram/anagrams-for "Orchestra" ["cashregister", "carthorse", "radishes"])))))
49+
50+
(deftest detects-anagrams-using-case-insensitive-possible-matches
51+
(testing "Detects anagrams using case-insensitive possible matches"
52+
(is (= ["Carthorse"]
53+
(anagram/anagrams-for "orchestra" ["cashregister", "Carthorse", "radishes"])))))
54+
55+
(deftest does-not-detect-anagram-if-original-word-is-repeated
56+
(testing "Does not detect an anagram if the original word is repeated"
57+
(is (= []
58+
(anagram/anagrams-for "go" ["goGoGO"])))))
59+
60+
(deftest anagrams-must-use-all-letters-exactly-once
61+
(testing "Anagrams must use all letters exactly once"
62+
(is (= []
63+
(anagram/anagrams-for "tapper" ["patter"])))))
64+
65+
(deftest words-are-not-anagrams-of-themselves
66+
(testing "Words are not anagrams of themselves"
67+
(is (= []
68+
(anagram/anagrams-for "BANANA" ["BANANA"])))))
69+
70+
(deftest words-are-not-anagrams-of-themselves-even-if-letter-case-is-partially-different
71+
(testing "Words are not anagrams of themselves even if letter case is partially different"
72+
(is (= []
73+
(anagram/anagrams-for "BANANA" ["Banana"])))))
74+
75+
(deftest words-are-not-anagrams-of-themselves-even-if-letter-case-is-completely-different
76+
(testing "Words are not anagrams of themselves even if letter case is completely different"
77+
(is (= []
78+
(anagram/anagrams-for "BANANA" ["banana"])))))
79+
80+
(deftest words-other-than-themselves-can-be-anagrams
81+
(testing "Words other than themselves can be anagrams"
82+
(is (= ["Silent"]
83+
(anagram/anagrams-for "LISTEN" ["LISTEN", "Silent"])))))
84+
85+
(deftest handles-greek-letters
86+
(testing "Handles case of greek letters"
87+
(is (= ["ΒΓΑ", "γβα"]
88+
(anagram/anagrams-for "ΑΒΓ" ["ΒΓΑ", "ΒΓΔ", "γβα", "αβγ"])))))
89+
90+
(deftest different-characters-may-have-same-bytes
91+
(testing "Different characters may have the same bytes"
92+
(is (= []
93+
(anagram/anagrams-for "a⬂" ["€a"])))))

0 commit comments

Comments
 (0)