public void Item_MemberExtendedClickTest_Up() { // Arrange // Field values Instance.SetPrivateField(MemberListViewModelMember.MembersField, new ObservableCollection<IMemberListItemViewModel>(MembersFieldMocks.Select(mock => mock.Object))); IMemberListItemViewModel valueLastClickedMember = MembersFieldMocks[4].Object; Instance.SetPrivateField("LastClickedMemberField", valueLastClickedMember); // Input data object inputSender = MembersFieldMocks[1].Object; MemberClickEventArgs inputE = new MemberClickEventArgs { IsChecked = true }; // Expected data IMemberListItemViewModel expectedLastClickedMemberField = MembersFieldMocks[1].Object; // Act Instance.InvokePrivateMethod("Item_MemberExtendedClick", inputSender, inputE); // Assert // Members IMemberListItemViewModel actualLastClickedMember = (IMemberListItemViewModel)Instance.GetPrivateField("LastClickedMemberField"); Assert.Same(expectedLastClickedMemberField, actualLastClickedMember); // Called method IList<Mock<IMemberListItemViewModel>> calledMemberMocks = new List<Mock<IMemberListItemViewModel>> { MembersFieldMocks[4], MembersFieldMocks[3], MembersFieldMocks[2], MembersFieldMocks[1] }; foreach (Mock<IMemberListItemViewModel> mock in calledMemberMocks) { mock.VerifySet(vm => vm.IsChecked = false); } // Not called method foreach (Mock<IMemberListItemViewModel> mock in MembersFieldMocks.Except(calledMemberMocks)) { mock.VerifySet(vm => vm.IsChecked = It.IsAny<bool>(), Times.Never); } }
public void Item_MemberExtendedClickTest_FirstClick() { // Arrange // Field values Instance.SetPrivateField("LastClickedMemberField", null); // Input data object inputSender = MembersFieldMocks[1].Object; MemberClickEventArgs inputE = new MemberClickEventArgs { IsChecked = true }; // Expected data IMemberListItemViewModel expectedLastClickedMemberField = MembersFieldMocks[1].Object; // Act Instance.InvokePrivateMethod("Item_MemberExtendedClick", inputSender, inputE); // Assert // Members IMemberListItemViewModel actualLastClickedMember = (IMemberListItemViewModel)Instance.GetPrivateField("LastClickedMemberField"); Assert.Same(expectedLastClickedMemberField, actualLastClickedMember); // Not called method foreach (Mock<IMemberListItemViewModel> mock in MembersFieldMocks) { mock.VerifySet(vm => vm.IsChecked = It.IsAny<bool>(), Times.Never); } }
public void Item_MemberExtendedClickTest_SenderTypeError() { // Arrange object inputSender = new object(); MemberClickEventArgs inputE = new MemberClickEventArgs { IsChecked = false }; // Act & Assert Assert.Throws<ArgumentException>( () => { Instance.InvokePrivateMethod("Item_MemberExtendedClick", inputSender, inputE); }); }
public void Item_MemberClickTest() { // Arrange object inputSender = new Mock<IMemberListItemViewModel>().Object; MemberClickEventArgs inputE = new MemberClickEventArgs { IsChecked = false }; IMemberListItemViewModel expectedLastClickedMemberField = (IMemberListItemViewModel)inputSender; // Act Instance.InvokePrivateMethod("Item_MemberClick", inputSender, inputE); // Assert IMemberListItemViewModel actualLastClickedMemberField = (IMemberListItemViewModel)Instance.GetPrivateField("LastClickedMemberField"); Assert.Same(expectedLastClickedMemberField, actualLastClickedMemberField); }
/// <summary> /// メンバーリストのメンバーが連続選択クリックされたときのイベントハンドラ /// </summary> /// <param name="sender">クリックされたメンバーのViewModel (<see cref="IMemberListItemViewModel"/>)</param> /// <param name="e">イベントデータ</param> /// <exception cref="ArgumentException"><paramref name="sender"/>が<see cref="IMemberListItemViewModel"/>でない.</exception> private void Item_MemberExtendedClick(object sender, MemberClickEventArgs e) { if (!(sender is IMemberListItemViewModel)) { throw new ArgumentException(); } if (LastClickedMember != null) { int clickedIndex = Members.IndexOf((IMemberListItemViewModel)sender); int lastClickedIndex = Members.IndexOf(LastClickedMember); int firstIndex = Math.Min(clickedIndex, lastClickedIndex); int selectCount = Math.Abs(clickedIndex - lastClickedIndex) + 1; bool nextIsCheckedState = LastClickedMember.IsChecked; IEnumerable<IMemberListItemViewModel> targetMembers = Members.Skip(firstIndex).Take(selectCount); foreach (IMemberListItemViewModel member in targetMembers) { member.IsChecked = nextIsCheckedState; } } LastClickedMember = sender as IMemberListItemViewModel; }
/// <summary> /// メンバーリストのメンバーがクリックされたときのイベントハンドラ /// </summary> /// <param name="sender">クリックされたメンバーのViewModel (<see cref="IMemberListItemViewModel"/>)</param> /// <param name="e">イベントデータ</param> /// <exception cref="ArgumentException"><paramref name="sender"/>が<see cref="IMemberListItemViewModel"/>でない.</exception> private void Item_MemberClick(object sender, MemberClickEventArgs e) { if (!(sender is IMemberListItemViewModel)) { throw new ArgumentException(); } LastClickedMember = sender as IMemberListItemViewModel; }
/// <summary> /// <see cref="MemberExtendedClickCommand"/>の<see cref="ICommand.Execute"/>の処理 /// </summary> private void ExtendClickMember() { this.IsChecked = !this.IsChecked; // MouseBindingなのでチェック状態は自動で変わらない MemberClickEventArgs e = new MemberClickEventArgs(); e.IsChecked = this.IsChecked; MemberExtendedClick?.Invoke(this, e); }
/// <summary> /// <see cref="MemberClickCommand"/>の<see cref="ICommand.Execute"/>の処理 /// </summary> private void ClickMember() { MemberClickEventArgs e = new MemberClickEventArgs(); e.IsChecked = this.IsChecked; MemberClick?.Invoke(this, e); }