public void NewGlossNewLexEntryNewLexSense() { // load sandbox for first 'xxxa' var cba0_0 = GetNewAnalysisOccurence(m_text1, 0, 0, 0); m_sandbox.SwitchWord(cba0_0); // verify that the word gloss is empty ITsString tssEmpty = TsStringUtils.MakeString("", Cache.DefaultAnalWs); ITsString tssWordGloss = m_sandbox.GetTssInSandbox(InterlinLineChoices.kflidWordGloss, Cache.DefaultAnalWs); CompareTss(tssEmpty, tssWordGloss); // add a new word gloss and confirm the analysis. ITsString tssWordGlossInSandbox = m_sandbox.SetTssInSandbox(InterlinLineChoices.kflidWordGloss, Cache.DefaultAnalWs, "0.0.xxxa"); // mark the count of LexEntries int cEntriesOrig = Cache.LangProject.LexDbOA.Entries.Count(); // verify no analyses exist for this wordform; IWfiWordform wf = cba0_0.Analysis.Wordform; Assert.AreEqual(0, wf.AnalysesOC.Count); // set word pos, to first possibility (e.g. 'adjunct') int hvoSbWordPos = m_sandbox.SelectIndexInCombo(InterlinLineChoices.kflidWordPos, 0, 0); Assert.IsFalse(hvoSbWordPos == 0); // select nonzero pos // confirm the analysis (making a real analysis and a LexSense) var wag = m_sandbox.ConfirmAnalysis(); var glossFactory = Cache.ServiceLocator.GetInstance <IWfiGlossFactory>(); IWfiGloss wfiGloss = wag.Gloss; CompareTss(tssWordGlossInSandbox, wfiGloss.Form.get_String(Cache.DefaultAnalWs)); // confirm we have only one analysis and that it is monomorphemic IWfiAnalysis wfiAnalysis = wag.WfiAnalysis; Assert.AreEqual(wf, wag.Wordform, "Expected confirmed analysis to be owned by the original wordform."); Assert.AreEqual(1, wf.AnalysesOC.Count); Assert.AreEqual(1, wfiAnalysis.MorphBundlesOS.Count); Assert.AreEqual(1, wfiAnalysis.MeaningsOC.Count); // make sure the strings of the wfi gloss matches the strings of the lex gloss. ValidateSenseWithAnalysis(m_sandbox.GetLexSenseForWord(), wfiGloss, hvoSbWordPos); // make sure a new entry is in the Lexicon. int cEntriesAfter = Cache.LangProject.LexDbOA.Entries.Count(); Assert.AreEqual(cEntriesOrig + 1, cEntriesAfter); }
public void NewGlossNewLexEntryNewLexSense() { // load sandbox for first 'xxxa' int hvoCba0_0 = GetCbaHvo(0, 0, 0); m_sandbox.SwitchWord(hvoCba0_0, false); // verify that the word gloss is empty ITsString tssEmpty = StringUtils.MakeTss("", Cache.DefaultAnalWs); ITsString tssWordGloss = m_sandbox.GetTssInSandbox(InterlinLineChoices.kflidWordGloss, Cache.DefaultAnalWs); CompareTss(tssEmpty, tssWordGloss); // add a new word gloss and confirm the analysis. ITsString tssWordGlossInSandbox = m_sandbox.SetTssInSandbox(InterlinLineChoices.kflidWordGloss, Cache.DefaultAnalWs, "0.0.xxxa"); // mark the count of LexEntries int cEntriesOrig = Cache.LangProject.LexDbOA.EntriesOC.Count; // verify no analyses exist for this wordform; int hvoWf = WfiWordform.GetWfiWordformFromInstanceOf(Cache, hvoCba0_0); WfiWordform wf = new WfiWordform(Cache, hvoWf); Assert.AreEqual(0, wf.AnalysesOC.Count); // set word pos, to first possibility (e.g. 'adjunct') int hvoSbWordPos = m_sandbox.SelectIndexInCombo(InterlinLineChoices.kflidWordPos, 0, 0); Assert.IsFalse(hvoSbWordPos == 0); // select nonzero pos // confirm the analysis (making a real analysis and a LexSense) int hvoGloss = m_sandbox.ConfirmAnalysis(); WfiGloss wfiGloss = new WfiGloss(Cache, hvoGloss); CompareTss(tssWordGlossInSandbox, wfiGloss.Form.GetAlternativeTss(Cache.DefaultAnalWs)); // confirm we have only one analysis and that it is monomorphemic WfiAnalysis wfiAnalysis = wfiGloss.Owner as WfiAnalysis; Assert.AreEqual(wf.Hvo, wfiAnalysis.OwnerHVO, "Expected confirmed analysis to be owned by the original wordform."); Assert.AreEqual(1, wf.AnalysesOC.Count); Assert.AreEqual(1, wfiAnalysis.MorphBundlesOS.Count); Assert.AreEqual(1, wfiAnalysis.MeaningsOC.Count); // make sure the strings of the wfi gloss matches the strings of the lex gloss. ValidateSenseWithAnalysis(m_sandbox.GetLexSenseForWord(), wfiGloss, hvoSbWordPos); // make sure a new entry is in the Lexicon. int cEntriesAfter = Cache.LangProject.LexDbOA.EntriesOC.Count; Assert.AreEqual(cEntriesOrig + 1, cEntriesAfter); }