public void FindWordsStartsWith_ReturnSubsetOfDictionaryWordsArgumentOfConstructor() { // arrange var dictionaryWords = new List<DictionaryWord>() { new DictionaryWord("aabbbccc", 1), new DictionaryWord("bbbaaaddd", 10), new DictionaryWord("aaaabbbccc", 100) }; var value = "aa"; var autocompleteSearcher = new AutocompleteSearcher(dictionaryWords); // act IEnumerable<DictionaryWord> result = autocompleteSearcher.FindWordsStartsWith(value); // assert foreach (var item in result) { Assert.IsTrue( dictionaryWords.Contains(item), string.Format("Элемент {0} не входит в словарь", item)); } }
public void Constructor_WhenDictionaryWordsIsNull_ShouldThrowArgumentNullException() { // arrange IEnumerable<DictionaryWord> dictionaryWords = null; // act try { var autocompleteSearcher = new AutocompleteSearcher(dictionaryWords); } catch (ArgumentNullException e) { //assert Assert.AreEqual("dictionaryWords", e.ParamName, false); return; } Assert.Fail("Ожидаемое исключение не было выброшено."); }
public void FindWordsStartsWith_ReturnWordsCountLimitedByMaxCountArgument() { // arrange var dictionaryWords = new List<DictionaryWord>() { new DictionaryWord("aabbbccc", 1), new DictionaryWord("aaaabbbccc", 10), new DictionaryWord("aaabbbccc", 100), new DictionaryWord("aaaabbbccc", 1000) }; var value = "aa"; var wordsMaxCount = 2; var autocompleteSearcher = new AutocompleteSearcher(dictionaryWords); // act IEnumerable<DictionaryWord> result = autocompleteSearcher.FindWordsStartsWith(value, wordsMaxCount); // assert Assert.IsTrue( result.Count() <= wordsMaxCount, "Результат содержит слишком много элементов"); }
public void FindWordsStartsWith_WhenValueIsNull_ShouldThrowArgumentNullException() { // arrange var dictionaryWords = new List<DictionaryWord>(); var autocompleteSearcher = new AutocompleteSearcher(dictionaryWords); // act try { autocompleteSearcher.FindWordsStartsWith(null); } catch (ArgumentNullException e) { //assert Assert.AreEqual("value", e.ParamName, false); return; } Assert.Fail("Ожидаемое исключение не было выброшено."); }
public void FindWordsStartsWith_WhenMaxCountLess1_ShouldThrowArgumentOutOfRangeException() { // arrange var dictionaryWords = new List<DictionaryWord>(); var value = "aa"; var autocompleteSearcher = new AutocompleteSearcher(dictionaryWords); // act try { autocompleteSearcher.FindWordsStartsWith(value, 0); } catch (ArgumentOutOfRangeException e) { // assert Assert.AreEqual("maxCount", e.ParamName, false); return; } Assert.Fail("Ожидаемое исключение не было выброшено."); }
public void FindWordsStartsWith_ReturnWordsWithSameBeginning() { // arrange var dictionaryWords = new List<DictionaryWord>() { new DictionaryWord("aabbbccc", 1), new DictionaryWord("bbbaaaddd", 10), new DictionaryWord("aaaabbbccc", 100), new DictionaryWord("caabbbccc", 1000) }; var value = "aa"; var autocompleteSearcher = new AutocompleteSearcher(dictionaryWords); // act IEnumerable<DictionaryWord> result = autocompleteSearcher.FindWordsStartsWith(value); // assert foreach (var item in result) { Assert.IsTrue( item.Text.StartsWith( value, StringComparison.Ordinal), "Результат содержит слово '{0}', его начало не совпадает с '{1}'", item.Text, value); } }
public void FindWordsStartsWith_ReturnWordsOrderedByFrequencyDescendingAndTextAscending() { // arrange var dictionaryWords = new List<DictionaryWord>() { new DictionaryWord("aabbbccc", 10), new DictionaryWord("aaaabbbccc", 1), new DictionaryWord("aaabbbccc", 1000), new DictionaryWord("aaaabbbccc", 1000) }; var value = "aa"; var autocompleteSearcher = new AutocompleteSearcher(dictionaryWords); // act IEnumerable<DictionaryWord> result = autocompleteSearcher.FindWordsStartsWith(value); // assert DictionaryWord prevItem = null; foreach (var item in result) { if (prevItem != null) { Assert.IsTrue( item.Frequency <= prevItem.Frequency, "Нет сортировки по убыванию частоты слова"); if (prevItem.Frequency == item.Frequency) { Assert.IsTrue( string.CompareOrdinal(item.Text, prevItem.Text) >= 0, "Нет сортировки по алфавиту"); } } prevItem = item; } }