1
+ namespace Algorithms.Tests.DataStructures
2
+
3
+ open Microsoft.VisualStudio .TestTools .UnitTesting
4
+ open Algorithms.DataStructures .Trie
5
+
6
+ [<TestClass>]
7
+ type TrieTests () =
8
+
9
+ [<TestMethod>]
10
+ member this. ``Test insertion and retrieval with strings`` () =
11
+ let mutable trie = empty
12
+
13
+ trie <- insert " foo" trie
14
+ Assert.IsTrue( search " foo" trie)
15
+
16
+ trie <- insert " foobar" trie
17
+ Assert.IsTrue( search " foobar" trie)
18
+ Assert.IsTrue( search " foo" trie)
19
+
20
+ trie <- insert " bar" trie
21
+ Assert.IsTrue( search " bar" trie)
22
+ Assert.IsFalse( search " baz" trie)
23
+ Assert.IsFalse( search " foobarbaz" trie)
24
+
25
+ [<TestMethod>]
26
+ member this. ``Test empty trie`` () =
27
+ let trie = empty
28
+ Assert.IsFalse( search " foo" trie)
29
+ Assert.IsFalse( search " " trie)
30
+
31
+ [<TestMethod>]
32
+ member this. ``Test insert empty key`` () =
33
+ let trie =
34
+ empty
35
+ |> insert " "
36
+
37
+ Assert.IsTrue( search " " trie)
38
+ Assert.IsFalse( search " foo" trie)
39
+
40
+ [<TestMethod>]
41
+ member this. ``Test overlapping keys`` () =
42
+ let trie =
43
+ empty
44
+ |> insert " car"
45
+ |> insert " cart"
46
+ |> insert " carter"
47
+
48
+ Assert.IsTrue( search " car" trie)
49
+ Assert.IsTrue( search " cart" trie)
50
+ Assert.IsTrue( search " carter" trie)
51
+ Assert.IsFalse( search " care" trie)
52
+
53
+ [<TestMethod>]
54
+ member this. ``Test partial match`` () =
55
+ let trie =
56
+ empty
57
+ |> insert " apple"
58
+
59
+ Assert.IsFalse( search " app" trie)
60
+ Assert.IsFalse( search " appl" trie)
61
+ Assert.IsTrue( search " apple" trie)
62
+ Assert.IsFalse( search " applepie" trie)
0 commit comments