public void GenerateDoubleSeqItems() { ArrayList list = new ArrayList(); IManyOnePathSortItem bv; XmlNode column = m_columnList[5]; // Semantic domains XmlViewsUtils.CollectBrowseItems(1, column, list, m_mdc, m_sda, m_layouts); Assert.AreEqual(1, list.Count, "got one item for SD obj 1"); // no senses! list.Clear(); XmlViewsUtils.CollectBrowseItems(4, column, list, m_mdc, m_sda, m_layouts); Assert.AreEqual(1, list.Count, "got one item for SD obj 4"); // sense 5 has no SDs list.Clear(); // Senses 7, 8, 9, having SDs 7->30, 8->31, and 9->30, 31, 32 XmlViewsUtils.CollectBrowseItems(6, column, list, m_mdc, m_sda, m_layouts); Assert.AreEqual(5, list.Count, "got five items for SD obj 6"); int[] keys = new int[] { 30, 31, 30, 31, 32 }; int[] keys2 = new int[] { 7, 8, 9, 9, 9 }; for (int i = 0; i < keys.Length; i++) { bv = list[i] as IManyOnePathSortItem; Assert.AreEqual(keys[i], bv.KeyObject); Assert.AreEqual(2, bv.PathLength); Assert.AreEqual(6, bv.PathObject(0)); Assert.AreEqual(2010, bv.PathFlid(0)); // LexEntry.Senses Assert.AreEqual(keys2[i], bv.PathObject(1)); Assert.AreEqual(21016, bv.PathFlid(1)); // LexSense.SemanticDomain } }
public void GenerateSeqItems() { ArrayList list = new ArrayList(); XmlNode column = m_columnList[3]; // Glosses XmlViewsUtils.CollectBrowseItems(1, column, list, m_mdc, m_sda, m_layouts); Assert.AreEqual(1, list.Count, "got one items for glosses obj 1"); list.Clear(); XmlViewsUtils.CollectBrowseItems(4, column, list, m_mdc, m_sda, m_layouts); Assert.AreEqual(1, list.Count, "got one item for glosses obj 4"); IManyOnePathSortItem bv = list[0] as IManyOnePathSortItem; Assert.AreEqual(5, bv.KeyObject); Assert.AreEqual(1, bv.PathLength); Assert.AreEqual(4, bv.PathObject(0)); Assert.AreEqual(2010, bv.PathFlid(0)); list.Clear(); XmlViewsUtils.CollectBrowseItems(6, column, list, m_mdc, m_sda, m_layouts); Assert.AreEqual(3, list.Count, "got three items for glosses obj 6"); int[] keys = new int[] { 7, 8, 9 }; for (int i = 0; i < keys.Length; i++) { bv = list[i] as IManyOnePathSortItem; Assert.AreEqual(keys[i], bv.KeyObject); Assert.AreEqual(1, bv.PathLength); Assert.AreEqual(6, bv.PathObject(0)); Assert.AreEqual(2010, bv.PathFlid(0)); } }
public void GenerateAtomicItems() { ArrayList list = new ArrayList(); XmlNode column = m_columnList[1]; // Etymology XmlViewsUtils.CollectBrowseItems(1, column, list, m_mdc, m_sda, m_layouts); Assert.AreEqual(1, list.Count, "got one item for etymology obj 1"); IManyOnePathSortItem bv = list[0] as IManyOnePathSortItem; Assert.AreEqual(60, bv.KeyObject); Assert.AreEqual(1, bv.PathLength); Assert.AreEqual(1, bv.PathObject(0)); Assert.AreEqual(2011, bv.PathFlid(0)); list.Clear(); XmlViewsUtils.CollectBrowseItems(4, column, list, m_mdc, m_sda, m_layouts); Assert.AreEqual(1, list.Count, "got one item for etymology obj 4"); list.Clear(); XmlViewsUtils.CollectBrowseItems(6, column, list, m_mdc, m_sda, m_layouts); Assert.AreEqual(1, list.Count, "got one item for etymology obj 6"); bv = list[0] as IManyOnePathSortItem; Assert.AreEqual(61, bv.KeyObject); Assert.AreEqual(1, bv.PathLength); Assert.AreEqual(6, bv.PathObject(0)); Assert.AreEqual(2011, bv.PathFlid(0)); }
/// <summary> /// Add to collector the ManyOnePathSortItems which this sorter derives from /// the specified object. This implementation follows object and sequence properties, /// if there is only one in a given structure, and makes an item for each thing /// found. /// </summary> /// <param name="obj"></param> /// <param name="collector"></param> public void CollectItems(ICmObject obj, ArrayList collector) { CheckDisposed(); int start = collector.Count; XmlViewsUtils.CollectBrowseItems(obj.Hvo, m_colSpec, collector, m_mdc, m_sda, m_layouts); for (int i = start; i < collector.Count; i++) { (collector[i] as ManyOnePathSortItem).RootObject = obj; } }
public void DisplayAtomicPathObject() { ArrayList list = new ArrayList(); XmlNode column = m_columnList[1]; XmlViewsUtils.CollectBrowseItems(1, column, list, m_mdc, m_sda, m_layouts); IManyOnePathSortItem bvi = list[0] as IManyOnePathSortItem; // Try on first column. Nothing in the path matches, but we still dig inside // the span. int useHvo; List <XmlNode> collectStructNodes = new List <XmlNode>(); XmlNode useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[0], m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes); Assert.AreEqual(1, useHvo); CheckDebugId(useNode, "LexemeCf"); Assert.AreEqual(1, collectStructNodes.Count); CheckDebugId(collectStructNodes[0], "LexemeSpan"); // Try on matching column. collectStructNodes.Clear(); useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[1], m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes); Assert.AreEqual(bvi.KeyObject, useHvo); CheckDebugId(useNode, "EtymologyComment"); Assert.AreEqual(1, collectStructNodes.Count); XmlNode structNode1 = collectStructNodes[0]; CheckDebugId(structNode1, "EtymologySpan"); // Try on a column involving a lookup. This affects the node output. collectStructNodes.Clear(); useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[2], m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes); Assert.AreEqual(1, useHvo); CheckDebugId(useNode, "EntryMsaSeq"); Assert.AreEqual(1, collectStructNodes.Count); structNode1 = collectStructNodes[0]; CheckDebugId(structNode1, "EntryMsasDiv"); // On a different view of the Etymology, we should still get the Etymology object. collectStructNodes.Clear(); useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[6], m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes); Assert.AreEqual(bvi.KeyObject, useHvo); CheckDebugId(useNode, "EtymologyComment2"); // But this column has no structural nodes. Assert.AreEqual(0, collectStructNodes.Count); }
public void DisplayPathlessObject() { ArrayList list = new ArrayList(); XmlNode column = m_columnList[0]; XmlViewsUtils.CollectBrowseItems(1, column, list, m_mdc, m_sda, m_layouts); IManyOnePathSortItem bvi = list[0] as IManyOnePathSortItem; // Try on original column. We get original object since there's no path, // but we still dig inside the span int useHvo; List <XmlNode> collectStructNodes = new List <XmlNode>(); XmlNode useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[0], m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes); Assert.AreEqual(1, useHvo); CheckDebugId(useNode, "LexemeCf"); Assert.AreEqual(1, collectStructNodes.Count); CheckDebugId(collectStructNodes[0], "LexemeSpan"); // Try on another column. Again we get original object, and dig inside span collectStructNodes.Clear(); useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[1], m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes); Assert.AreEqual(1, useHvo); CheckDebugId(useNode, "EtymologyObj"); Assert.AreEqual(1, collectStructNodes.Count); XmlNode structNode1 = collectStructNodes[0]; CheckDebugId(structNode1, "EtymologySpan"); // Try on a column involving a lookup. This affects the node output. collectStructNodes.Clear(); useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[2], m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes); Assert.AreEqual(1, useHvo); CheckDebugId(useNode, "EntryMsaSeq"); Assert.AreEqual(1, collectStructNodes.Count); structNode1 = collectStructNodes[0]; CheckDebugId(structNode1, "EntryMsasDiv"); }
public void GeneratePathlessItems() { ArrayList list = new ArrayList(); XmlNode column = m_columnList[0]; XmlViewsUtils.CollectBrowseItems(1, column, list, m_mdc, m_sda, m_layouts); Assert.AreEqual(1, list.Count, "got one item for lexeme obj 1"); IManyOnePathSortItem bv = list[0] as IManyOnePathSortItem; Assert.AreEqual(1, bv.KeyObject); Assert.AreEqual(0, bv.PathLength); list.Clear(); XmlViewsUtils.CollectBrowseItems(4, column, list, m_mdc, m_sda, m_layouts); Assert.AreEqual(1, list.Count, "got one item for lexeme obj 4"); list.Clear(); XmlViewsUtils.CollectBrowseItems(6, column, list, m_mdc, m_sda, m_layouts); Assert.AreEqual(1, list.Count, "got one item for lexeme obj 6"); bv = list[0] as IManyOnePathSortItem; Assert.AreEqual(6, bv.KeyObject); Assert.AreEqual(0, bv.PathLength); }
public void DisplayDoubleSeqPathObject() { ArrayList list = new ArrayList(); XmlNode column = m_columnList[5]; XmlViewsUtils.CollectBrowseItems(6, column, list, m_mdc, m_sda, m_layouts); IManyOnePathSortItem bvi = list[0] as IManyOnePathSortItem; // Try on first column. Nothing in the path matches, but we still dig inside // the span. int useHvo; List <XmlNode> collectStructNodes = new List <XmlNode>(); XmlNode useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[0], m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes); Assert.AreEqual(6, useHvo); CheckDebugId(useNode, "LexemeCf"); Assert.AreEqual(1, collectStructNodes.Count); CheckDebugId(collectStructNodes[0], "LexemeSpan"); // Try on etymology column. Has an <obj>, but doens't match collectStructNodes.Clear(); useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[1], m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes); Assert.AreEqual(6, useHvo); CheckDebugId(useNode, "EtymologyObj"); Assert.AreEqual(1, collectStructNodes.Count); XmlNode structNode1 = collectStructNodes[0]; CheckDebugId(structNode1, "EtymologySpan"); // Try on a column involving a lookup. This affects the node output. collectStructNodes.Clear(); useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[2], m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes); Assert.AreEqual(6, useHvo); CheckDebugId(useNode, "EntryMsaSeq"); Assert.AreEqual(1, collectStructNodes.Count); structNode1 = collectStructNodes[0]; CheckDebugId(structNode1, "EntryMsasDiv"); // On the matching column, we should get the leaf object collectStructNodes.Clear(); useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[5], m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes); Assert.AreEqual(bvi.KeyObject, useHvo); CheckDebugId(useNode, "PACN_Para"); Assert.AreEqual(1, collectStructNodes.Count); structNode1 = collectStructNodes[0]; CheckDebugId(structNode1, "DosDiv"); // On the gloss column, we get the sense. collectStructNodes.Clear(); useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[3], m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes); Assert.AreEqual(7, useHvo); // the first sense CheckDebugId(useNode, "SenseGloss"); Assert.AreEqual(1, collectStructNodes.Count); structNode1 = collectStructNodes[0]; CheckDebugId(structNode1, "SenseGlossPara"); // Make sure that for later Bvis, we get later senses collectStructNodes.Clear(); bvi = list[3] as IManyOnePathSortItem; useNode = XmlViewsUtils.GetNodeToUseForColumn(bvi, m_columnList[3], m_mdc, m_sda, m_layouts, out useHvo, collectStructNodes); Assert.AreEqual(9, useHvo); // the third sense, in which context we display the 4th SD }
/// <summary> /// Add to collector the ManyOnePathSortItems which this sorter derives from /// the specified object. This implementation follows object and sequence properties, /// if there is only one in a given structure, and makes an item for each thing /// found. /// </summary> public void CollectItems(int hvo, ArrayList collector) { int start = collector.Count; XmlViewsUtils.CollectBrowseItems(hvo, m_colSpec, collector, m_mdc, m_sda, m_layouts); }