Beispiel #1
0
        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();
        }
Beispiel #4
0
        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());
        }
Beispiel #5
0
        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());
        }