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));
        }
예제 #4
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
        }
예제 #9
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>
        public void CollectItems(int hvo, ArrayList collector)
        {
            int start = collector.Count;

            XmlViewsUtils.CollectBrowseItems(hvo, m_colSpec, collector, m_mdc, m_sda, m_layouts);
        }