-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTestRadixTrie.cs
66 lines (57 loc) · 2.43 KB
/
TestRadixTrie.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using System;
using System.Collections.Generic;
using NUnit.Framework;
namespace RadixTrie
{
[TestFixture]
public class TestRadixTrie
{
[Test]
public void RadixTrie()
{
var radixTrie = new RadixTrie();
var lst1 = new List<int>() { 1, 2, 3, 4 };
var lst2 = new List<int>() { 1, 2, 3 };
var lst3 = new List<int>() { 2, 3, 4 };
var lst4 = new List<int>() { 2, 3 };
var lst5 = new List<int>() { 3 };
//Insert Test
Assert.AreEqual(1, radixTrie.NodeCount);
radixTrie.Insert(lst1, "A");
Assert.AreEqual(2, radixTrie.NodeCount);
radixTrie.Insert(lst2, "B");
Assert.AreEqual(3, radixTrie.NodeCount);
radixTrie.Insert(lst3, "C");
Assert.AreEqual(4, radixTrie.NodeCount);
radixTrie.Insert(lst4, "D");
Assert.AreEqual(5, radixTrie.NodeCount);
radixTrie.Insert(lst5, "E");
Assert.AreEqual(6, radixTrie.NodeCount);
//Index Search Test
Assert.True(radixTrie.Matcher.NextMatchKey(new List<int>() { 1 }));
List<string> lst = radixTrie.Matcher.GetPrefixMatchValues(); // "A" , "B"
Assert.True(lst.Count == 2);
Assert.False(radixTrie.Matcher.IsExactMatchKey());
Assert.True(radixTrie.Matcher.NextMatchKey(new List<int>() { 2, 3 }));
Assert.True(radixTrie.Matcher.IsExactMatchKey());
Assert.True("B" == radixTrie.Matcher.GetExactMatchValue());
Assert.False(radixTrie.Matcher.NextMatchKey(new List<int>() { 5 }));
Assert.True(radixTrie.Matcher.NextMatchKey(new List<int>() { 4 }));
radixTrie.Matcher.ResetMatchKey();
Assert.True(radixTrie.Matcher.NextMatchKey(new List<int>() { 3 }));
//Delete Test
radixTrie.Delete(lst5);
Assert.AreEqual(5, radixTrie.NodeCount);
radixTrie.Delete(lst4);
Assert.AreEqual(3, radixTrie.NodeCount);
radixTrie.Delete(lst3);
Assert.AreEqual(3, radixTrie.NodeCount);
radixTrie.Delete(lst1);
Assert.AreEqual(2, radixTrie.NodeCount);
radixTrie.Delete(lst2);
Assert.AreEqual(1, radixTrie.NodeCount);
radixTrie.Matcher.ResetMatchKey();
Assert.False(radixTrie.Matcher.NextMatchKey(new List<int>() { 1 }));
}
}
}