/// <summary> /// looks in the paragraph to find an annotation that matches the information /// captured in CaptureObjectInfo(). /// </summary> /// <returns>0 if none found</returns> public int FindIdenticalTwfic() { if (IsCapturedObjectInfoValid()) return Object.Hvo; // otherwise look through our paragraph annotations and see // if we can find one corresponding to the one we've saved. // Enhance: we could start with the offsets in the paragraph // and look for an equivalent segform independent of segment // boundaries. StTxtPara para = new StTxtPara(m_fdoCache, m_hvoPara); List<int> segments = para.Segments; if (m_iSegment < 0 || m_iSegment >= segments.Count) return 0; int hvoSegment = segments[m_iSegment]; List<int> segforms = para.SegmentForms(hvoSegment); if (m_iSegmentForm < 0 || m_iSegmentForm >= segforms.Count) return 0; int hvoSegform = segforms[m_iSegmentForm]; StTxtPara.TwficInfo twficInfo = new StTxtPara.TwficInfo(m_fdoCache, hvoSegform); if (this.IsIdenticalObjectInfo(twficInfo)) return hvoSegform; else return 0; }
private void ValidateGuesses(List<int> expectedGuesses, StTxtPara paraWithGuesses) { List<int> segsParaGuesses = paraWithGuesses.Segments; int iExpectedGuess = 0; foreach (int hvoSegParaGuesses in segsParaGuesses) { List<int> segFormsParaGuesses = paraWithGuesses.SegmentForms(hvoSegParaGuesses); Assert.AreEqual(expectedGuesses.Count, segFormsParaGuesses.Count); foreach (int hvoSegFormParaGuesses in segFormsParaGuesses) { int hvoGuessActual = 0; CmBaseAnnotation cba = new CmBaseAnnotation(Cache, hvoSegFormParaGuesses); if (cba.InstanceOfRAHvo != 0) { // should be a twfic so get it's guess. StTxtPara.TwficInfo cbaInfo = new StTxtPara.TwficInfo(Cache, cba.Hvo); hvoGuessActual = cbaInfo.GetGuess(); } Assert.AreEqual(expectedGuesses[iExpectedGuess], hvoGuessActual, "Guess mismatch"); iExpectedGuess++; } } }