public void スクロールすると例外が発生する不具合() { { var help = new HelpWithScroll<int>(); help.Items = new int[0]; help.NumberOfItemsToBeShown = 1; help.ScrollDown(); help.ScrollUp(); } { var help = new HelpWithScroll<int>(); help.Items = new [] { 1, 2, 3, }; help.NumberOfItemsToBeShown = 5; help.ScrollDown(); help.ScrollUp(); } { var help = new HelpWithScroll<int>(); help.Items = new [] { 1, 2, 3, }; help.NumberOfItemsToBeShown = 3; help.ScrollDown(); help.ScrollUp(); } }
public void Test0() { var help = new HelpWithScroll<int>(); Assert.Throws<ArgumentOutOfRangeException>(() => { help.NumberOfItemsToBeShown = 0; }); Assert.AreEqual(10, help.NumberOfItemsToBeShown); help.NumberOfItemsToBeShown = 1; Assert.AreEqual(1, help.NumberOfItemsToBeShown); var items = new [] { 1, 2, }; help.Items = items; Assert.AreEqual(0, help.NumberOfUpperItems); Assert.AreEqual(1, help.NumberOfLowerItems); CollectionAssert.AreEqual(new [] { 1, }, help.GetItemsToBeShown()); Assert.Throws<ArgumentOutOfRangeException>(() => { help.ScrollDown(0); }); Assert.Throws<ArgumentOutOfRangeException>(() => { help.ScrollUp(0); }); var count = 0; help.UpdateScreen += (sender, e) => { count++; }; Assert.AreEqual(0, count); help.ScrollDown(10); Assert.AreEqual(1, help.NumberOfUpperItems); Assert.AreEqual(0, help.NumberOfLowerItems); CollectionAssert.AreEqual(new [] { 2, }, help.GetItemsToBeShown()); Assert.AreEqual(1, count); Assert.True(help.NeedToShowButtonToScrollUp); Assert.False(help.NeedToShowButtonToScrollDown); help.ScrollDown(10); Assert.AreEqual(1, help.NumberOfUpperItems); Assert.AreEqual(0, help.NumberOfLowerItems); CollectionAssert.AreEqual(new [] { 2, }, help.GetItemsToBeShown()); Assert.AreEqual(1, count); Assert.True(help.NeedToShowButtonToScrollUp); Assert.False(help.NeedToShowButtonToScrollDown); help.ScrollUp(10); Assert.AreEqual(0, help.NumberOfUpperItems); Assert.AreEqual(1, help.NumberOfLowerItems); CollectionAssert.AreEqual(new [] { 1, }, help.GetItemsToBeShown()); Assert.AreEqual(2, count); Assert.False(help.NeedToShowButtonToScrollUp); Assert.True(help.NeedToShowButtonToScrollDown); help.ScrollUp(10); Assert.AreEqual(0, help.NumberOfUpperItems); Assert.AreEqual(1, help.NumberOfLowerItems); CollectionAssert.AreEqual(new [] { 1, }, help.GetItemsToBeShown()); Assert.AreEqual(2, count); Assert.False(help.NeedToShowButtonToScrollUp); Assert.True(help.NeedToShowButtonToScrollDown); var help2 = new HelpWithScroll<int>(99); Assert.AreEqual(99, help2.NumberOfItemsToBeShown); }
public DaimonState(EPuzzleWindow window, Daimon daimon, int numberOfItemsToBeShown = 16) : base(window) { _helpWithScroll = new HelpWithScroll<Chumon>(numberOfItemsToBeShown); Daimon = daimon; DrawingObjectRoot.BackColor = EPuzzleColors.DaimonStateBackColor; PropertyChanged += (sender, e) => { if ("CurrentItem" != e.PropertyName) return; var chumonButton = CurrentItem as ChumonButton; if (null != chumonButton) { _kirokuBox.Chumon = chumonButton.Chumon; _kirokuInfoBox.Chumon = chumonButton.Chumon; } }; Action0 += (sender, e) => { var chumonButton = CurrentItem as ChumonButton; if (null != chumonButton) { Chumonを開始する(chumonButton.Chumon, this); return; } var daimonButton = CurrentItem as DaimonButton; if (null != daimonButton) { Window.State = FoFi(this, new DaimonState(Window, daimonButton.Daimon)); return; } var button = CurrentItem as EigoTestButtonItem; if (null != button) { switch (button.Name) { case "upButton" : { _helpWithScroll.ScrollUp(); return; } case "downButton" : { _helpWithScroll.ScrollDown(); return; } } var chumon = button.Tag as Chumon; if (null != chumon) { Chumonを開始する(chumon, this); return; } } }; ActionLeft += (sender, e) => { MoveToPreviousDaimon(); /* if (null == Daimon.PreviousItem) return; Window.State = FoFi(this, new DaimonState(Window, (Daimon)Daimon.PreviousItem)); */ }; ActionRight += (sender, e) => { MoveToNextDaimon(); /* if (null == Daimon.NextItem) return; Window.State = FoFi(this, new DaimonState(Window, (Daimon)Daimon.NextItem)); */ }; ActionUp += (sender, e) => { if (null == Daimon.Parent.PreviousItem) return; MoveTo((MondaiDocument)Daimon.Parent.PreviousItem); }; ActionDown += (sender, e) => { if (null == Daimon.Parent.NextItem) return; MoveTo((MondaiDocument)Daimon.Parent.NextItem); }; _helpWithScroll.UpdateScreen += (sender, e) => { UpdateItemsToBeDrawn(); }; UpdateItemsToBeDrawn(); }