SIL.FieldWorks.IText.SandboxBaseTests.LexEntriesComboHandler_InflTypeOptions_GlossAppendSenseNames_Ordered_PL_PST C# (CSharp) Method

LexEntriesComboHandler_InflTypeOptions_GlossAppendSenseNames_Ordered_PL_PST() private method

		public void LexEntriesComboHandler_InflTypeOptions_GlossAppendSenseNames_Ordered_PL_PST()
		{
			using (var sandbox = SetupSandbox(() =>
			{
				const string wff = "variantEntry";
				var mockText = MakeText(wff);
				var wf = MakeWordform(wff);
				var wa = MakeAnalysis(wf);
				var options = new MakeBundleOptions();
				options.LexEntryForm = wff;
				options.MakeMorph = (mff) =>
				{
					Guid slotType = GetSlotType(mff);
					IMoMorphSynAnalysis msa1;
					const string mainEntryForm = "mainEntry";
					var mainEntry = MakeEntry(mainEntryForm.Replace("-", ""), "V:(Imperative)", slotType, out msa1);
					var mainSense = MakeSense(mainEntry, "mainGloss", msa1);

					IMoMorphSynAnalysis msa2;
					var variantEntry = MakeEntry(mff.Replace("-", ""), "V:(Imperative)", slotType, out msa2);
					var letPlural =
						Cache.ServiceLocator.GetInstance<ILexEntryInflTypeRepository>().GetObject(
							LexEntryTypeTags.kguidLexTypPluralVar);
					// add types to entryRef in the order of "pl" followed by "pst"
					letPlural.GlossAppend.set_String(Cache.DefaultAnalWs, "pl");
					var ler = variantEntry.MakeVariantOf(mainSense, letPlural);
					var letPst =
						Cache.ServiceLocator.GetInstance<ILexEntryInflTypeRepository>().GetObject(
							LexEntryTypeTags.kguidLexTypPastVar);
					letPst.GlossAppend.set_String(Cache.DefaultAnalWs, "pst");
					ler.VariantEntryTypesRS.Add(letPst);
					return variantEntry.LexemeFormOA;
				};
				options.MakeSense = (entry) =>
				{
					var entryRef = entry.EntryRefsOS.First();
					return entryRef.ComponentLexemesRS.First() as ILexSense;
				};
				options.MakeMsa = (sense) => { return sense.MorphoSyntaxAnalysisRA; };
				options.MakeInflType = (mf) =>
				{
					var entry = mf.Owner as ILexEntry;
					var entryRef = entry.EntryRefsOS.First();
					var vet = entryRef.VariantEntryTypesRS.First() as ILexEntryInflType;
					return vet;
				};
				var wmb = MakeBundle(wa, options);

				var para = (IStTxtPara)mockText.ContentsOA.ParagraphsOS[0];
				var seg = para.SegmentsOS[0];
				seg.AnalysesRS.Add(wa);
				return new AnalysisOccurrence(seg, 0);
			}))
			{

				var letPlural =
					Cache.ServiceLocator.GetInstance<ILexEntryInflTypeRepository>().GetObject(
						LexEntryTypeTags.kguidLexTypPluralVar);
				var letPst =
					Cache.ServiceLocator.GetInstance<ILexEntryInflTypeRepository>().GetObject(
						LexEntryTypeTags.kguidLexTypPastVar);

				using (var handler = GetComboHandler(sandbox, InterlinLineChoices.kflidLexEntries, 0) as SandboxBase.IhMissingEntry)
				{
					var sortedMorphItems = handler.MorphItems;
					sortedMorphItems.Sort();
					// menu items should be ordered according to entryRef.VariantEntryTypesRS
					{
						var mi1 = sortedMorphItems[0];
						Assert.That(mi1.m_inflType, Is.EqualTo(letPlural));
						Assert.That(mi1.m_nameSense, Is.EqualTo("mainGloss.pl"));
					}
					{
						var mi2 = sortedMorphItems[1];
						Assert.That(mi2.m_inflType, Is.EqualTo(letPst));
						Assert.That(mi2.m_nameSense, Is.EqualTo("mainGloss.pst"));
					}
				}
			}
		}