public void Test_Invoke_Multiple() { // テスト用データモック var propMock = new Mock <IDisposable>(); var argMock = new Mock <IDisposable>(); // テスト対象の準備 var target = new ObjectDisposeAction(); target.Object = propMock.Object; target.DisposeParameter = true; // テスト対象のアクションを呼び出すためのトリガ作成 var element = new DependencyObject(); var trigger = new TestTrigger(); trigger.Attach(element); trigger.Actions.Add(target); // アクションを2回実行させる trigger.Invoke(argMock.Object); trigger.Invoke(argMock.Object); // 呼び出し結果の検証 propMock.Verify(c => c.Dispose(), Times.Exactly(2)); argMock.Verify(c => c.Dispose(), Times.Exactly(2)); }
public void Test_Invoke_ParamModeAuto2() { // Mode=Auto, プロパティ設定なし時 // コマンドのモック var cmdMock = new TestCommand(); cmdMock.Setup_CanExecute(true); // パラメータ用データ var argParam = new object(); var propParam = new object(); // テスト対象の準備 var target = new InvokeCommandAction(); target.CommandParameterMode = InvokeCommandAction.CommandParameterModeKind.Auto; target.Command = cmdMock.Object; //target.CommandParameter = propParam; // プロパティ設定なし // テスト対象のアクションを呼び出すためのトリガ作成 var element = new DependencyObject(); var trigger = new TestTrigger(); trigger.Attach(element); trigger.Actions.Add(target); // アクションを呼び出すためにトリガ実行 trigger.Invoke(argParam); // 呼び出し結果の検証 cmdMock.Verify(c => c.Execute(argParam), Times.Once()); cmdMock.Verify(c => c.Execute(propParam), Times.Never()); }
public void Test_Invoke_NoCommand() { // 呼び出しコマンドが設定されていないとき // コマンドのモック var cmdMock = new TestCommand(); cmdMock.Setup_CanExecute(true); // パラメータ用データ var argParam = new object(); var propParam = new object(); // テスト対象の準備 (Command未設定) var target = new InvokeCommandAction(); target.CommandParameterMode = InvokeCommandAction.CommandParameterModeKind.Auto; target.CommandParameter = propParam; // テスト対象のアクションを呼び出すためのトリガ作成 var element = new DependencyObject(); var trigger = new TestTrigger(); trigger.Attach(element); trigger.Actions.Add(target); // アクションを呼び出すためにトリガ実行 new Action(() => trigger.Invoke(argParam)).Should().NotThrow(); }
public void Test_Invoke_without_Param() { // テスト用データモック var propMock = new Mock <IDisposable>(); var argMock = new Mock <IDisposable>(); // テスト対象の準備 var target = new ObjectDisposeAction(); target.Object = propMock.Object; target.DisposeParameter = false; // テスト対象のアクションを呼び出すためのトリガ作成 var element = new DependencyObject(); var trigger = new TestTrigger(); trigger.Attach(element); trigger.Actions.Add(target); // アクションを呼び出すためにトリガ実行 trigger.Invoke(argMock.Object); // 呼び出し結果の検証 propMock.Verify(c => c.Dispose(), Times.Once()); argMock.Verify(c => c.Dispose(), Times.Never()); }
public void Test_Invoke_DisposeError() { // テスト用データモック var propMock = new Mock <IDisposable>(); var argMock = new Mock <IDisposable>(); propMock.Setup(m => m.Dispose()).Throws(new Exception()); argMock.Setup(m => m.Dispose()).Throws(new Exception()); // テスト対象の準備 var target = new ObjectDisposeAction(); target.Object = propMock.Object; target.DisposeParameter = true; // テスト対象のアクションを呼び出すためのトリガ作成 var element = new DependencyObject(); var trigger = new TestTrigger(); trigger.Attach(element); trigger.Actions.Add(target); // アクションを呼び出すためにトリガ実行 new Action(() => trigger.Invoke(argMock.Object)).Should().NotThrow(); }
public void Test_ParameterConverter_ModeAuto2() { // Mode=Auto, プロパティ設定あり時 // コマンドのモック var cmdMock = new TestCommand(); cmdMock.Setup_CanExecute(true); // コンバータのモック var convMock = new TestValueConverter(); convMock.Setup_Convert((value, t, param, c) => "test"); // パラメータ用データ var argParam = new object(); var propParam = new object(); // テスト対象の準備 var target = new InvokeCommandAction(); target.Command = cmdMock.Object; target.CommandParameterMode = InvokeCommandAction.CommandParameterModeKind.Auto; //target.CommandParameter = propParam; // プロパティ設定なし target.ParameterConverter = convMock.Object; // テスト対象のアクションを呼び出すためのトリガ作成 var element = new DependencyObject(); var trigger = new TestTrigger(); trigger.Attach(element); trigger.Actions.Add(target); // アクションを呼び出すためにトリガ実行 trigger.Invoke(argParam); // 呼び出し結果の検証 cmdMock.Verify(c => c.Execute(argParam), Times.Never()); cmdMock.Verify(c => c.Execute(propParam), Times.Never()); cmdMock.Verify(c => c.Execute("test"), Times.Once()); convMock.Verify(c => c.Convert(argParam, It.IsAny <Type>(), null, It.IsAny <CultureInfo>()), Times.Once()); }
public void Test_Invoke_ParamBinding_Property() { // Mode=Auto // コマンドのモック var cmdMock = new TestCommand(); cmdMock.Setup_CanExecute(true); // テスト対象の準備 var target = new InvokeCommandAction(); target.CommandParameterMode = InvokeCommandAction.CommandParameterModeKind.Property; target.Command = cmdMock.Object; // バインドソース var argParam = new object(); var propParam = new ReactivePropertySlim <object>(new object()); // バインド var binding = new Binding(); binding.Mode = BindingMode.OneWay; binding.Source = propParam; binding.Path = new PropertyPath(nameof(propParam.Value)); BindingOperations.SetBinding(target, InvokeCommandAction.CommandParameterProperty, binding); // テスト対象のアクションを呼び出すためのトリガ作成 var element = new DependencyObject(); var trigger = new TestTrigger(); trigger.Attach(element); trigger.Actions.Add(target); // アクションを呼び出すためにトリガ実行 trigger.Invoke(argParam); // 呼び出し結果の検証 cmdMock.Verify(c => c.Execute(argParam), Times.Never()); cmdMock.Verify(c => c.Execute(propParam.Value), Times.Once()); }
public void Test_ParameterConverter_Error() { // Mode=Auto, プロパティ設定あり時 // コマンドのモック var cmdMock = new TestCommand(); cmdMock.Setup_CanExecute(true); // コンバータのモック var convMock = new TestValueConverter(); convMock.Setup_Convert_Throws(new Exception()); // パラメータ用データ var argParam = new object(); var propParam = new object(); // テスト対象の準備 var target = new InvokeCommandAction(); target.Command = cmdMock.Object; target.CommandParameterMode = InvokeCommandAction.CommandParameterModeKind.Auto; target.ParameterConverter = convMock.Object; // テスト対象のアクションを呼び出すためのトリガ作成 var element = new DependencyObject(); var trigger = new TestTrigger(); trigger.Attach(element); trigger.Actions.Add(target); // アクションを呼び出すためにトリガ実行 trigger.Invoke(argParam); // 呼び出し結果の検証 cmdMock.Verify(c => c.Execute(null), Times.Once()); }