public void GetEntriesWithSimilarLexicalForm_EntriesWithDifferingWritingSystems_OnlyFindEntriesMatchingTheGivenWritingSystem()
		{
			using (var env = new TestEnvironment())
			{
				env.CreateThreeDifferentLexEntries(delegate(LexEntry e) { return e.LexicalForm; });
				LexEntry lexEntryWithFrenchLexicalForm = env.Repository.CreateItem();
				lexEntryWithFrenchLexicalForm.LexicalForm.SetAlternative("fr", "de Word2");
				var ws = WritingSystemDefinitionForTest("de");

				var matches = env.Repository.GetEntriesWithSimilarLexicalForm(
					"de Wor",
					ws,
					ApproximateMatcherOptions.IncludePrefixedForms);
				Assert.AreEqual(3, matches.Count);
				Assert.AreEqual("de Word1", matches[0]["Form"]);
				Assert.AreEqual("de Word2", matches[1]["Form"]);
				Assert.AreEqual("de Word3", matches[2]["Form"]);
			}
		}
		public void GetEntriesWithSimilarLexicalForm_MultipleEntriesWithEqualAndLowestMatchingDistance_ReturnsThoseEntries()
		{
			using (var env = new TestEnvironment())
			{
				env.CreateThreeDifferentLexEntries(delegate(LexEntry e) { return e.LexicalForm; });
				var ws = WritingSystemDefinitionForTest("de");
				var matches = env.Repository.GetEntriesWithSimilarLexicalForm(
					"",
					ws,
					ApproximateMatcherOptions.IncludePrefixedForms);
				Assert.AreEqual(3, matches.Count);
			}
		}
		public void GetAllEntriesSortedByDefinition_DefinitionAndGlossOfOneEntryAreIdentical_ReturnsOnlyOneRecordToken()
		{
			using (var env = new TestEnvironment())
			{
				env.CreateThreeDifferentLexEntries(delegate(LexEntry e)
				{
					e.Senses.Add(new LexSense());
					return e.Senses[0].Definition;
				});
				LexEntry lexEntryWithBothDefinitionAndAGloss = env.Repository.CreateItem();
				lexEntryWithBothDefinitionAndAGloss.Senses.Add(new LexSense());
				lexEntryWithBothDefinitionAndAGloss.Senses[0].Definition.SetAlternative("de", "de Word4");
				lexEntryWithBothDefinitionAndAGloss.Senses[0].Gloss.SetAlternative("de", "de Word4");
				var german = WritingSystemDefinitionForTest("de");
				ResultSet<LexEntry> listOfLexEntriesSortedByDefinition = env.Repository.GetAllEntriesSortedByDefinitionOrGloss(german);
				Assert.AreEqual(4, listOfLexEntriesSortedByDefinition.Count);
				Assert.AreEqual("de Word1", listOfLexEntriesSortedByDefinition[0]["Form"]);
				Assert.AreEqual("de Word2", listOfLexEntriesSortedByDefinition[1]["Form"]);
				Assert.AreEqual("de Word3", listOfLexEntriesSortedByDefinition[2]["Form"]);
				Assert.AreEqual("de Word4", listOfLexEntriesSortedByDefinition[3]["Form"]);
			}
		}
		public void GetAllEntriesSortedByDefinition_DefinitionsDoesNotExistInWritingSystemButGlossDoesForAllEntries_ReturnsListSortedByGloss()
		{
			using (var env = new TestEnvironment())
			{
				env.CreateThreeDifferentLexEntries(delegate(LexEntry e)
				{
					e.Senses.Add(new LexSense());
					return e.Senses[0].Gloss;
				});
				var german = WritingSystemDefinitionForTest("de");
				ResultSet<LexEntry> listOfLexEntriesSortedByGloss = env.Repository.GetAllEntriesSortedByDefinitionOrGloss(german);
				Assert.AreEqual(3, listOfLexEntriesSortedByGloss.Count);
				Assert.AreEqual("de Word1", listOfLexEntriesSortedByGloss[0]["Form"]);
				Assert.AreEqual("de Word2", listOfLexEntriesSortedByGloss[1]["Form"]);
				Assert.AreEqual("de Word3", listOfLexEntriesSortedByGloss[2]["Form"]);
			}
		}
		public void GetAllEntriesSortedByLexicalFormOrAlternative_LexicalFormExistsInWritingSystemForAllEntries_ReturnsListSortedByLexicalForm()
		{
			using (var env = new TestEnvironment())
			{
				env.CreateThreeDifferentLexEntries(delegate(LexEntry e) { return e.LexicalForm; });
				var german = WritingSystemDefinitionForTest("de");
				ResultSet<LexEntry> listOfLexEntriesSortedByLexicalForm = env.Repository.GetAllEntriesSortedByLexicalFormOrAlternative(german);
				Assert.AreEqual("de Word1", listOfLexEntriesSortedByLexicalForm[0]["Form"]);
				Assert.AreEqual("de Word2", listOfLexEntriesSortedByLexicalForm[1]["Form"]);
				Assert.AreEqual("de Word3", listOfLexEntriesSortedByLexicalForm[2]["Form"]);
			}
		}
		public void GetAllEntriesSortedByHeadword_CitationFormInWritingSystemDoesNotExistButLexicalFormDoes_SortsByLexicalFormForThatEntry()
		{
			using (var env = new TestEnvironment())
			{
				env.CreateThreeDifferentLexEntries(delegate(LexEntry e) { return e.CitationForm; });
				LexEntry lexEntryWithOutGermanCitationForm = env.Repository.CreateItem();
				lexEntryWithOutGermanCitationForm.CitationForm.SetAlternative("fr", "fr Word4");
				lexEntryWithOutGermanCitationForm.LexicalForm.SetAlternative("de", "de Word0");
				var german = WritingSystemDefinitionForTest("de");
				ResultSet<LexEntry> listOfLexEntriesSortedByHeadWord = env.Repository.GetAllEntriesSortedByHeadword(german);
				Assert.AreEqual(4, listOfLexEntriesSortedByHeadWord.Count);
				Assert.AreEqual("de Word0", listOfLexEntriesSortedByHeadWord[0]["Form"]);
				Assert.AreEqual("de Word1", listOfLexEntriesSortedByHeadWord[1]["Form"]);
				Assert.AreEqual("de Word2", listOfLexEntriesSortedByHeadWord[2]["Form"]);
				Assert.AreEqual("de Word3", listOfLexEntriesSortedByHeadWord[3]["Form"]);
			}
		}