コード例 #1
0
        public void KeyDataSourceTests_BasicTests_Pass()
        {
            var indexDataSource = new KeyDataSource <Answer>();

            Assert.False(indexDataSource.IsInitialized);
            Assert.ThrowsAny <NullReferenceException>(() => indexDataSource.Size);

            var setup = new TestSetup();

            // Size is number of distinct keys
            var count = setup.AnswerRepository.Active().Select(x => x.IndexKey).Distinct().Count();

            var result = indexDataSource.Initialize(setup.AnswerRepository, 0);

            Assert.True(indexDataSource.IsInitialized);
            Assert.Equal(count, result);

            // Can not initialize the same instance twice.
            Assert.ThrowsAny <Exception>(() => indexDataSource.Initialize(setup.AnswerRepository, 0));

            Assert.Equal(count, indexDataSource.Size);

            var items = indexDataSource.Items;

            Assert.Equal(count, items.Count());
        }
コード例 #2
0
        public void KeyDataSourceTests_FindExact_FindsOne()
        {
            var setup = new TestSetup();

            var indexDataSource = new KeyDataSource <Answer>();

            indexDataSource.Initialize(setup.AnswerRepository, 0);

            var answer = new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev1", Phrase = "A"
            };

            // Insert twice intentionally
            indexDataSource.Insert(answer);
            indexDataSource.Insert(answer);

            var result = indexDataSource.FindExact(answer.IndexKey);

            Assert.Equal(result.IndexKey, answer.IndexKey);

            result = indexDataSource.FindExact(answer.IndexKey.ToLower());
            Assert.Equal(result.IndexKey, answer.IndexKey);

            Assert.Null(indexDataSource.FindExact("junk"));
        }
コード例 #3
0
        public int InitBadWords()
        {
            var dataSource = new KeyDataSource <BadWord>();

            dataSource.Initialize(_badWordsRepository, 0);
            _cacheManager.Add(CacheConstants.CACHE_KEY_BADWORDS_DATA, dataSource);
            return(dataSource.Size);
        }
コード例 #4
0
        public void KeyDataSourceTests_InsertNull_OK()
        {
            var dataSource = new KeyDataSource <Answer>();

            Assert.Null(dataSource.Insert(null));
            Assert.Null(dataSource.Find(null));
            Assert.Null(dataSource.FindTopItems(null));
            Assert.Null(dataSource.FindExact(null));
        }
コード例 #5
0
        public int InitSuggestions()
        {
            var dataSource = new KeyDataSource <Suggestion>();

            // Limit to 10k for now.
            dataSource.Initialize(_suggestionRepository, 10000);
            _cacheManager.Add(CacheConstants.CACHE_KEY_SUGGESTIONS_DATA, dataSource);
            return(dataSource.Size);
        }
コード例 #6
0
        public void KeyDataSourceTests_LimitedInit_Initializes()
        {
            var setup = new TestSetup();

            var indexDataSource = new KeyDataSource <Answer>();
            var result          = indexDataSource.Initialize(setup.AnswerRepository, 1);

            Assert.True(indexDataSource.IsInitialized);
            Assert.Equal(1, result);
        }
コード例 #7
0
        public void KeyDataSourceTests_OverInit_Initializes()
        {
            var setup = new TestSetup();

            var indexDataSource = new KeyDataSource <Answer>();
            var result          = indexDataSource.Initialize(setup.AnswerRepository, 1000);

            Assert.True(indexDataSource.IsInitialized);
            // Size is number of distinct keys
            var count = setup.AnswerRepository.Active().Select(x => x.IndexKey).Distinct().Count();

            Assert.Equal(count, result);
        }
コード例 #8
0
        /// <summary>
        /// Check cache first, if not there, load and save in cache.
        /// </summary>
        /// <returns></returns>
        private KeyDataSource <Suggestion> GetCachedData()
        {
            object data = _cacheManager.Get(CacheConstants.CACHE_KEY_SUGGESTIONS_DATA);

            if (data == null)
            {
                var dataSource = new KeyDataSource <Suggestion>();
                // 0 means load all
                dataSource.Initialize(_repository, 0);
                _cacheManager.Add(CacheConstants.CACHE_KEY_SUGGESTIONS_DATA, dataSource);
                return(dataSource);
            }
            return((KeyDataSource <Suggestion>)data);
        }
コード例 #9
0
        private KeyDataSource <BadWord> GetCachedData()
        {
            object data = _cacheManager.Get(CacheConstants.CACHE_KEY_BADWORDS_DATA);

            if (data == null)
            {
                var dataSource = new KeyDataSource <BadWord>();
                // Load all data
                dataSource.Initialize(_repository, 0);
                _cacheManager.Add(CacheConstants.CACHE_KEY_BADWORDS_DATA, dataSource);
                return(dataSource);
            }
            return((KeyDataSource <BadWord>)data);
        }
コード例 #10
0
        public void KeyDataSourceTests_Find_Finds()
        {
            var setup = new TestSetup();

            var indexDataSource = new KeyDataSource <Answer>();

            indexDataSource.Initialize(setup.AnswerRepository, 0);

            // Pick the first item
            var key = setup.AnswerRepository.Active().First().IndexKey;
            // make sure that index key from this item is only in the index once
            // Although generally this might not be the case if index has something with key + something.
            // But for now let's leave it like this. Will be interesting to see if tests break because
            // of that at some point.
            var result = indexDataSource.Find(key).Count();

            Assert.Equal(result, 1);

            // Search on null
            Assert.Null(indexDataSource.Find(null));
        }
コード例 #11
0
        public void KeyDataSourceTests_FindTopItems_Finds()
        {
            var setup = new TestSetup();

            var indexDataSource = new KeyDataSource <Answer>();

            indexDataSource.Initialize(setup.AnswerRepository, 0);

            // Search on null
            Assert.Null(indexDataSource.FindTopItems(null));

            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev1", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev2", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev3", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev4", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev5", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev6", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev7", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev8", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev9", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev10", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev11", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev12", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev13", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev14", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev15", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev16", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev17", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev18", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev19", Phrase = "A"
            });
            indexDataSource.Insert(new Answer()
            {
                LeftWord = "Andy", RightWord = "Goosev20", Phrase = "A"
            });

            var key   = "Andy Goosev";
            var count = indexDataSource.FindTopItems(key).Count();

            Assert.Equal(count, KeyDataSource <Answer> .DEFAULT_TOP_COUNT);
        }