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"));
}
}
}
}