예제 #1
0
        public void Constructor_FourPatterns_CreatesCorrectTransitionTree()
        {
            // act
            var tree = new AhoCorasickTree(new[] { "a", "ab", "ba", "abc" });

            // assert
            Assert.AreEqual(2, tree.Root.Transitions.Count());

            var a = tree.Root.GetTransition('a');

            Assert.IsNotNull(a);
            var ab = a.GetTransition('b');

            Assert.IsNotNull(ab);
            var abc = ab.GetTransition('c');

            Assert.IsNotNull(abc);

            var b = tree.Root.GetTransition('b');

            Assert.IsNotNull(b);
            var ba = b.GetTransition('a');

            Assert.IsNotNull(ba);
        }
예제 #2
0
        public int FindAll(string input)
        {
            // arrange
            var tree = new AhoCorasickTree(new[] { "ab", "abc", "bcd" });

            // act
            return(tree.FindAll(input).Count());
        }
예제 #3
0
        public bool ContainsThatStart(string input)
        {
            // arrange
            var tree = new AhoCorasickTree(new[] { "ab", "abc", "bcd" });

            // act
            return(tree.ContainsThatStart(input));
        }
예제 #4
0
        public void Constructor_InputIsEmpty_ShouldHaveOnlyParentNode()
        {
            // act
            var tree = new AhoCorasickTree(new string[] {});

            // assert
            CollectionAssert.IsEmpty(tree.Root.Transitions);
        }
예제 #5
0
        public void Constructor_TreeSameLetters_HasOneTransition()
        {
            // act
            var tree = new AhoCorasickTree(new[] { "a", "a", "a" });

            // assert
            Assert.AreEqual(1, tree.Root.Transitions.Count());
        }
예제 #6
0
파일: Program.cs 프로젝트: niejn/workshops
        static void Main(string[] args)
        {
            var tree = new AhoCorasickTree(ResourcesUtils.GetKeywords());

            for (var i = 0; i < 1000000000; i++)
            {
                tree.Contains(UserAgent);
            }
        }
        public void FindKeywordAndPosition()
        {
            var keywords          = new AhoCorasickTree(new[] { "Mozilla", "6.3", "KHTML", "someKeyword" });
            var userAgent         = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36";
            var keywordsPositions = keywords.Search(userAgent).ToList();

            Assert.Equal(3, keywordsPositions.Count);
            Assert.Contains(new KeyValuePair <string, int>("Mozilla", 0), keywordsPositions);
            Assert.Contains(new KeyValuePair <string, int>("6.3", 24), keywordsPositions);
            Assert.Contains(new KeyValuePair <string, int>("KHTML", 56), keywordsPositions);
        }
        public void FindKeywordAndPosition()
        {
            var keywords = new AhoCorasickTree(new[] { "Mozilla", "6.3", "KHTML", "someKeyword" });
            var userAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36";
            var keywordsPositions = keywords.Search(userAgent).ToList();

            Assert.Equal(3, keywordsPositions.Count);
            Assert.Contains(new KeyValuePair<string, int>("Mozilla", 0), keywordsPositions);
            Assert.Contains(new KeyValuePair<string, int>("6.3", 24), keywordsPositions);
            Assert.Contains(new KeyValuePair<string, int>("KHTML", 56), keywordsPositions);
        }
 public void FindKeywordAndPositionFromWikipedia()
 {
     var keywords = new AhoCorasickTree(new[] { "a", "ab", "bab", "bc", "bca", "c", "caa" });
     var keywordsPositions = keywords.Search("abccab").ToList();
     Assert.Equal(7, keywordsPositions.Count);
     Assert.Contains(new KeyValuePair<string, int>("a", 0), keywordsPositions);
     Assert.Contains(new KeyValuePair<string, int>("ab", 0), keywordsPositions);
     Assert.Contains(new KeyValuePair<string, int>("bc", 1), keywordsPositions);
     Assert.Contains(new KeyValuePair<string, int>("c", 2), keywordsPositions);
     Assert.Contains(new KeyValuePair<string, int>("c", 3), keywordsPositions);
     Assert.Contains(new KeyValuePair<string, int>("a", 4), keywordsPositions);
     Assert.Contains(new KeyValuePair<string, int>("ab", 4), keywordsPositions);
 }
        public void FindKeywordAndPositionFromWikipedia()
        {
            var keywords          = new AhoCorasickTree(new[] { "a", "ab", "bab", "bc", "bca", "c", "caa" });
            var keywordsPositions = keywords.Search("abccab").ToList();

            Assert.Equal(7, keywordsPositions.Count);
            Assert.Contains(new KeyValuePair <string, int>("a", 0), keywordsPositions);
            Assert.Contains(new KeyValuePair <string, int>("ab", 0), keywordsPositions);
            Assert.Contains(new KeyValuePair <string, int>("bc", 1), keywordsPositions);
            Assert.Contains(new KeyValuePair <string, int>("c", 2), keywordsPositions);
            Assert.Contains(new KeyValuePair <string, int>("c", 3), keywordsPositions);
            Assert.Contains(new KeyValuePair <string, int>("a", 4), keywordsPositions);
            Assert.Contains(new KeyValuePair <string, int>("ab", 4), keywordsPositions);
        }
예제 #11
0
        public SmallTreeBenchmark()
        {
            var randomString = new RandomString();
            var keywords     = new string[NumberOfKeywords];

            for (int i = 0; i < NumberOfKeywords; i++)
            {
                keywords[i] = randomString.GetRandomString(LengthOfKeyword);
            }
            _sut  = new AhoCorasickTree(keywords);
            _sut2 = new AhoCorasickTreeHashBased(keywords);

            _keyword = keywords[0];
        }
        public void Contains(string str, bool expected)
        {
            var sut = new AhoCorasickTree(new[] { "ab", "abc", "bcd" });

            Assert.Equal(expected, sut.Contains(str));
        }
예제 #13
0
 public void Contains(string str, bool expected)
 {
     var sut = new AhoCorasickTree(new[] { "ab", "abc", "bcd" });
     Assert.Equal(expected, sut.Contains(str));
 }
예제 #14
0
 public void CanCreate()
 {
     var sut = new AhoCorasickTree(new[] { "ab", "ab" });
 }
        public void Test()
        {
            var sut = new AhoCorasickTree(new[] { "abcd", "bc" });

            Assert.True(sut.Contains("abc"));
        }
예제 #16
0
 public void Test()
 {
     var sut = new AhoCorasickTree(new[] { "abcd", "bc" });
     Assert.True(sut.Contains("abc"));
 }
 public void CanCreate()
 {
     var sut = new AhoCorasickTree(new[] { "ab", "ab" });
 }