public void Ababa ()
		{
			const string word = "ababa";
			var automata = new LevTAutomataImitation (word, 1);
			foreach (string typo in FullNeighborhood.GenerateNeighbors1(word)) {
				Assert.True(automata.AcceptWord(typo));
			}
		}
		public void A ()
		{
			var automata = new LevTAutomataImitation ("a", 1);
			Assert.True (automata.AcceptWord ("a"));
			Assert.True (automata.AcceptWord (""));
			Assert.True (automata.AcceptWord ("b"));
			Assert.True (automata.AcceptWord ("ab"));
			Assert.True (automata.AcceptWord ("ba"));
			Assert.False (automata.AcceptWord ("abc"));
			Assert.False (automata.AcceptWord ("bac"));
			Assert.False (automata.AcceptWord ("bca"));
			Assert.False (automata.AcceptWord ("abcd"));
		}
		public void Atlas ()
		{
			var automata = new LevTAutomataImitation ("atlas", 2);
			Assert.True (automata.AcceptWord ("atlas"));
			Assert.True (automata.AcceptWord ("xatlxs"));
			Assert.False (automata.AcceptWord ("otter"));
			Assert.False (automata.AcceptWord (""));
			Assert.True (automata.AcceptWord ("aaatlas"));
			Assert.False (automata.AcceptWord ("aaaatlas"));
			Assert.False (automata.AcceptWord ("last"));
			Assert.True (automata.AcceptWord ("latas"));
			Assert.True (automata.AcceptWord ("taals"));
			Assert.False (automata.AcceptWord ("taalss"));
			Assert.False (automata.AcceptWord ("taasl"));
			Assert.False (automata.AcceptWord ("salomon"));
		}
		public void ExistngLetter ()
		{
			var automata = new LevTAutomataImitation ("atlas", 2);
			//10010
			Assert.AreEqual (18, automata.GetCharacteristicVector ('a', 0));
			//00100
			Assert.AreEqual (4, automata.GetCharacteristicVector ('a', 1));
			//01000
			Assert.AreEqual (8, automata.GetCharacteristicVector ('a', 2));
			//10000
			Assert.AreEqual (16, automata.GetCharacteristicVector ('a', 3));
			//00000
			Assert.AreEqual (0, automata.GetCharacteristicVector ('a', 4));
			//00000
			Assert.AreEqual (0, automata.GetCharacteristicVector ('a', 5));
			//00000
			Assert.AreEqual (0, automata.GetCharacteristicVector ('a', 6));
		}
		public void NonExistingLetter ()
		{
			var automata = new LevTAutomataImitation ("atlas", 2);
			//00000
			Assert.AreEqual (0, automata.GetCharacteristicVector ('x', 0));
			//00000
			Assert.AreEqual (0, automata.GetCharacteristicVector ('x', 1));
			//00000
			Assert.AreEqual (0, automata.GetCharacteristicVector ('x', 2));
			//00000
			Assert.AreEqual (0, automata.GetCharacteristicVector ('x', 3));
			//00000
			Assert.AreEqual (0, automata.GetCharacteristicVector ('x', 4));
			//00000
			Assert.AreEqual (0, automata.GetCharacteristicVector ('x', 5));
			//00000
			Assert.AreEqual (0, automata.GetCharacteristicVector ('x', 6));
		}
		public void Otter ()
		{
			var automata = new LevTAutomataImitation ("otter", 2);
			Assert.True (automata.AcceptWord ("xotter"));
			Assert.True (automata.AcceptWord ("xyotter"));
			Assert.False (automata.AcceptWord ("xyzotter"));
			Assert.True (automata.AcceptWord ("oxtter"));
			Assert.True (automata.AcceptWord ("oxtyter"));
			Assert.False (automata.AcceptWord ("oxtyterz"));
			Assert.False (automata.AcceptWord (""));
			Assert.True (automata.AcceptWord ("toter"));
			Assert.True (automata.AcceptWord ("toetr"));
			Assert.False (automata.AcceptWord ("toert"));
			Assert.True (automata.AcceptWord ("oter"));
			Assert.True (automata.AcceptWord ("ter"));
			Assert.False (automata.AcceptWord ("er"));
			Assert.False (automata.AcceptWord ("tre"));
		}
		public void Abcde ()
		{
			var automata = new LevTAutomataImitation ("abcde", 1);
			Assert.True (automata.AcceptWord ("aabcde"));
			Assert.False (automata.AcceptWord ("aaabcde"));
			Assert.False (automata.AcceptWord ("aaaabcde"));
			Assert.True (automata.AcceptWord ("abced"));
			Assert.False (automata.AcceptWord ("acbed"));
			Assert.False (automata.AcceptWord ("aacbed"));
			Assert.True (automata.AcceptWord ("abde"));
			Assert.False (automata.AcceptWord ("abd"));
			Assert.False (automata.AcceptWord ("ad"));
			Assert.False (automata.AcceptWord ("bd"));
			Assert.True (automata.AcceptWord ("xbcde"));
			Assert.False (automata.AcceptWord ("xbcxe"));
			Assert.False (automata.AcceptWord ("xxcdx"));
			Assert.False (automata.AcceptWord ("bacdx"));
			Assert.False (automata.AcceptWord ("bade"));
			Assert.False (automata.AcceptWord ("xbdce"));
			Assert.False (automata.AcceptWord ("xbdxe"));
			Assert.False (automata.AcceptWord ("xbdcx"));
		}
		public void Array ()
		{
			//Misspelled word
			string wordToSearch = "fulzy";
			//Your dictionary
			string[] dictionaryAsArray = new string[] { "fuzzy", "fully", "funny", "fast"};
			//Maximum Damerau-Levenstein distance
			const int editDistance = 2;
			//Constructing automaton
			LevTAutomataImitation automaton = new LevTAutomataImitation (wordToSearch, editDistance);
			//List of possible corrections
			IEnumerable<string> corrections = dictionaryAsArray.Where(str => automaton.AcceptWord(str));

			Assert.AreEqual (3, corrections.Count());
		}