Inheritance: ISortItemProvider
Exemple #1
0
        public void ItemClicked()
        {
            // test data
            var kick       = MakeEntry("kick", "strike with foot");
            var boot       = MakeEntry("boot", "strike with boot");
            var lexRefType = MakeLexRefType("TestRelation");
            var lexRef     = MakeLexReference(lexRefType, kick.SensesOS[0]);

            lexRef.TargetsRS.Add(boot.SensesOS[0]);

            // Make the view to test.
            using (var view = new TestRootSite(Cache, kick.Hvo))
            {
                view.Width = 1000;                 // keep everything on one line
                var dummy  = view.Handle;          // triggers MakeRoot as handle is created
                var dummy2 = view.RootBox.Width;   // triggers constructing boxes.
                view.PerformLayout();

                int widthKick      = view.Vc.ItemWidths[kick.LexemeFormOA.Hvo];
                int widthKickSense = view.Vc.ItemWidths[kick.SensesOS[0].Hvo];

                var mockItems = new MockSortItemProvider();
                mockItems.Items.AddRange(new[] { kick.Hvo, boot.Hvo });
                var nullAdjuster = new NullTargetAdjuster();

                // click on the lexeme form: should find nothing, it's a root object.
                Point where = new Point(1, 1);
                var result = XmlDocView.SubitemClicked(where, LexEntryTags.kClassId, view, Cache, mockItems, nullAdjuster);
                Assert.That(result, Is.Null);

                // click on the gloss of kick: should find nothing, it's still part of the root.
                where  = new Point(widthKick + 5, 1);
                result = XmlDocView.SubitemClicked(where, LexEntryTags.kClassId, view, Cache, mockItems, nullAdjuster);
                Assert.That(result, Is.Null);

                // click on the gloss, asking for a sense: should find nothing, no containing sense
                result = XmlDocView.SubitemClicked(where, LexSenseTags.kClassId, view, Cache, mockItems, nullAdjuster);
                Assert.That(result, Is.Null);

                // click on the synonym: should find the other entry.
                where  = new Point(widthKick + widthKickSense * 2 + 5, 1);
                result = XmlDocView.SubitemClicked(where, LexEntryTags.kClassId, view, Cache, mockItems, nullAdjuster);
                Assert.That(result, Is.EqualTo(boot));

                // Should not return the item it otherwise would if it is not a possible target.
                mockItems.Items.Remove(boot.Hvo);
                result = XmlDocView.SubitemClicked(where, LexEntryTags.kClassId, view, Cache, mockItems, nullAdjuster);
                Assert.That(result, Is.Null);

                // MainEntryFromSubEntryTargetAdjuster should convert subentry to main entry
                // Make boot a subentry of bootRoot
                var bootRoot = MakeEntry("boo", "fragment of boot");
                var ler      = Cache.ServiceLocator.GetInstance <ILexEntryRefFactory>().Create();
                boot.EntryRefsOS.Add(ler);
                ler.RefType = LexEntryRefTags.krtComplexForm;
                ler.PrimaryLexemesRS.Add(bootRoot);
                mockItems.Items.Add(boot.Hvo);                 // not rejected as item
                mockItems.Items.Add(bootRoot.Hvo);             // has to be valid itself also
                var subentryAdjuster = new MainEntryFromSubEntryTargetAdjuster();
                result = XmlDocView.SubitemClicked(where, LexEntryTags.kClassId, view, Cache, mockItems, subentryAdjuster);
                Assert.That(result, Is.EqualTo(bootRoot));
            }
        }
		public void ItemClicked()
		{
			// test data
			var kick = MakeEntry("kick", "strike with foot");
			var boot = MakeEntry("boot", "strike with boot");
			var lexRefType = MakeLexRefType("TestRelation");
			var lexRef = MakeLexReference(lexRefType, kick.SensesOS[0]);
			lexRef.TargetsRS.Add(boot.SensesOS[0]);

			// Make the view to test.
			using (var view = new TestRootSite(Cache, kick.Hvo))
			{
				view.Width = 1000; // keep everything on one line
				var dummy = view.Handle; // triggers MakeRoot as handle is created
				var dummy2 = view.RootBox.Width; // triggers constructing boxes.
				view.PerformLayout();

				int widthKick = view.Vc.ItemWidths[kick.LexemeFormOA.Hvo];
				int widthKickSense = view.Vc.ItemWidths[kick.SensesOS[0].Hvo];

				var mockItems = new MockSortItemProvider();
				mockItems.Items.AddRange(new[] { kick.Hvo, boot.Hvo });
				var nullAdjuster = new NullTargetAdjuster();

				// click on the lexeme form: should find nothing, it's a root object.
				Point where = new Point(1, 1);
				var result = XmlDocView.SubitemClicked(where, LexEntryTags.kClassId, view, Cache, mockItems, nullAdjuster);
				Assert.That(result, Is.Null);

				// click on the gloss of kick: should find nothing, it's still part of the root.
				where = new Point(widthKick + 5, 1);
				result = XmlDocView.SubitemClicked(where, LexEntryTags.kClassId, view, Cache, mockItems, nullAdjuster);
				Assert.That(result, Is.Null);

				// click on the gloss, asking for a sense: should find nothing, no containing sense
				result = XmlDocView.SubitemClicked(where, LexSenseTags.kClassId, view, Cache, mockItems, nullAdjuster);
				Assert.That(result, Is.Null);

				// click on the synonym: should find the other entry.
				where = new Point(widthKick + widthKickSense * 2 + 5, 1);
				result = XmlDocView.SubitemClicked(where, LexEntryTags.kClassId, view, Cache, mockItems, nullAdjuster);
				Assert.That(result, Is.EqualTo(boot));

				// Should not return the item it otherwise would if it is not a possible target.
				mockItems.Items.Remove(boot.Hvo);
				result = XmlDocView.SubitemClicked(where, LexEntryTags.kClassId, view, Cache, mockItems, nullAdjuster);
				Assert.That(result, Is.Null);

				// MainEntryFromSubEntryTargetAdjuster should convert subentry to main entry
				// Make boot a subentry of bootRoot
				var bootRoot = MakeEntry("boo", "fragment of boot");
				var ler = Cache.ServiceLocator.GetInstance<ILexEntryRefFactory>().Create();
				boot.EntryRefsOS.Add(ler);
				ler.RefType = LexEntryRefTags.krtComplexForm;
				ler.PrimaryLexemesRS.Add(bootRoot);
				mockItems.Items.Add(boot.Hvo); // not rejected as item
				mockItems.Items.Add(bootRoot.Hvo); // has to be valid itself also
				var subentryAdjuster = new MainEntryFromSubEntryTargetAdjuster();
				result = XmlDocView.SubitemClicked(where, LexEntryTags.kClassId, view, Cache, mockItems, subentryAdjuster);
				Assert.That(result, Is.EqualTo(bootRoot));
			}
		}