Commit | Line | Data |
---|---|---|
fef2a3db JH |
1 | (ns frak-test |
2 | (:use clojure.test | |
3 | frak)) | |
4 | ||
5 | (def trie-put #'frak/trie-put) | |
6 | (def build-trie #'frak/build-trie) | |
7 | ||
8 | (deftest trie-test | |
9 | (is (= (-> (trie-put "a") | |
10 | (trie-put "b")) | |
11 | ^{:terminals '(\b \a) | |
12 | :visitors '(\b \a)} | |
13 | {\a nil | |
14 | \b nil})) | |
15 | ||
16 | (is (= (-> (trie-put "aaa") | |
17 | (trie-put "ab")) | |
18 | ^{:visitors '(\a\a)} | |
19 | {\a | |
20 | ^{:terminals '(\b) | |
21 | :visitors '(\a \b)} | |
22 | {\a | |
23 | ^{:terminals '(\a) | |
24 | :visitors '(\a)} | |
25 | {\a nil} | |
26 | \b nil}})) | |
27 | ||
28 | (is (= (-> (trie-put "ab") | |
29 | (trie-put "aaa")) | |
30 | ^{:visitors '(\a\a)} | |
31 | {\a | |
32 | ^{:terminals '(\b) | |
33 | :visitors '(\a \b)} | |
34 | {\a | |
35 | ^{:terminals '(\a) | |
36 | :visitors '(\a)} | |
37 | {\a nil} | |
38 | \b nil}}))) | |
39 | ||
40 | (deftest pattern-test | |
41 | (let [strs1 ["foo" "bar" "baz"] | |
42 | strs2 ["baz" "bar" "foo"] | |
43 | pat1 (pattern strs1) | |
44 | pat2 (pattern strs2)] | |
45 | (is (every? #(re-matches pat1 %) strs1)) | |
46 | ||
47 | (is (every? #(re-matches pat2 %) strs1)) | |
48 | ||
49 | (is (every? #(re-matches pat1 %) strs2)) | |
50 | ||
51 | (is (every? #(re-matches pat2 %) strs2)) | |
52 | ||
53 | (is (not (or (re-matches pat1 "f") | |
54 | (re-matches pat1 "b") | |
55 | (re-matches pat1 "ba") | |
11fd73a8 JH |
56 | (re-matches pat1 "fo"))))) |
57 | ||
58 | (let [pat1 (pattern ["foo" "foot"]) | |
59 | pat2 (pattern ["foo" "" "foot"])] | |
60 | (is (= (str pat1) | |
14a44feb JH |
61 | (str pat2)))) |
62 | ||
63 | (is (= "ba[trz]" | |
64 | (str (pattern ["bat" "bar" "baz"])))) | |
65 | ||
66 | (is (= "b(?:i[pt]|at)" | |
67 | (str (pattern ["bat" "bip" "bit"]))))) |