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)); } }