コード例 #1
0
        public void AddExpiredTriggerPreventsCaching()
        {
            var    cache           = CreateCache();
            string key             = "myKey";
            var    obj             = new object();
            var    callbackInvoked = new ManualResetEvent(false);
            var    trigger         = new TestTrigger()
            {
                IsExpired = true
            };
            var result = cache.Set(key, context =>
            {
                context.AddExpirationTrigger(trigger);
                context.RegisterPostEvictionCallback((subkey, value, reason, state) =>
                {
                    // TODO: Verify params
                    var localCallbackInvoked = (ManualResetEvent)state;
                    localCallbackInvoked.Set();
                }, state: callbackInvoked);
                return(obj);
            });

            Assert.Same(obj, result); // The created item should be returned, but not cached.

            Assert.True(trigger.IsExpiredWasCalled);
            Assert.False(trigger.ActiveExpirationCallbacksWasCalled);
            Assert.Null(trigger.Registration);
            Assert.True(callbackInvoked.WaitOne(100), "Callback");

            result = cache.Get(key);
            Assert.Null(result); // It wasn't cached
        }
コード例 #2
0
        public void AbsoluteExpiration_WorksAcrossLink()
        {
            var    clock   = new TestClock();
            var    cache   = CreateCache(clock);
            var    obj     = new object();
            string key     = "myKey";
            string key1    = "myKey1";
            var    trigger = new TestTrigger()
            {
                ActiveExpirationCallbacks = true
            };

            using (var link = cache.CreateLinkingScope())
            {
                cache.Set(key, obj, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromSeconds(5)));

                cache.Set(key1, obj, new MemoryCacheEntryOptions().AddEntryLink(link));
            }

            Assert.StrictEqual(obj, cache.Get(key));
            Assert.StrictEqual(obj, cache.Get(key1));

            clock.Add(TimeSpan.FromSeconds(10));

            object value;

            Assert.False(cache.TryGetValue(key1, out value));
            Assert.False(cache.TryGetValue(key, out value));
        }
コード例 #3
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());
        }
コード例 #4
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));
        }
コード例 #5
0
        public void TriggerExpires_LinkedEntry()
        {
            var    cache   = CreateCache();
            var    obj     = new object();
            string key     = "myKey";
            string key1    = "myKey1";
            var    trigger = new TestTrigger()
            {
                ActiveExpirationCallbacks = true
            };

            using (var link = cache.CreateLinkingScope())
            {
                cache.Set(key, obj, new MemoryCacheEntryOptions().AddExpirationTrigger(trigger));

                cache.Set(key1, obj, new MemoryCacheEntryOptions().AddEntryLink(link));
            }

            Assert.StrictEqual(obj, cache.Get(key));
            Assert.StrictEqual(obj, cache.Get(key1));

            trigger.Fire();

            object value;

            Assert.False(cache.TryGetValue(key1, out value));
            Assert.False(cache.TryGetValue(key, out value));
        }
コード例 #6
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();
        }
コード例 #7
0
        public void RemoveItemDisposesTriggerRegistration()
        {
            var    cache           = CreateCache();
            string key             = "myKey";
            var    obj             = new object();
            var    callbackInvoked = new ManualResetEvent(false);
            var    trigger         = new TestTrigger()
            {
                ActiveExpirationCallbacks = true
            };

            cache.Set(key, context =>
            {
                context.AddExpirationTrigger(trigger);
                context.RegisterPostEvictionCallback((subkey, value, reason, state) =>
                {
                    // TODO: Verify params
                    var localCallbackInvoked = (ManualResetEvent)state;
                    localCallbackInvoked.Set();
                }, state: callbackInvoked);
                return(obj);
            });
            cache.Remove(key);

            Assert.NotNull(trigger.Registration);
            Assert.True(trigger.Registration.Disposed);
            Assert.True(callbackInvoked.WaitOne(100), "Callback");
        }
コード例 #8
0
        public void GetWithImplicitLinkPopulatesTriggers()
        {
            var    cache = CreateCache();
            var    obj   = new object();
            string key   = "myKey";
            string key1  = "myKey1";

            Assert.Null(EntryLinkHelpers.ContextLink);

            IEntryLink link;

            using (link = cache.CreateLinkingScope())
            {
                Assert.StrictEqual(link, EntryLinkHelpers.ContextLink);
                var trigger = new TestTrigger()
                {
                    ActiveExpirationCallbacks = true
                };
                cache.Set(key, obj, new MemoryCacheEntryOptions().AddExpirationTrigger(trigger));
            }

            Assert.Null(EntryLinkHelpers.ContextLink);

            Assert.Equal(1, link.Triggers.Count());
            Assert.Null(link.AbsoluteExpiration);

            cache.Set(key1, obj, new MemoryCacheEntryOptions().AddEntryLink(link));
        }
コード例 #9
0
        public void GetWithLinkPopulatesTriggers()
        {
            var    cache = CreateCache();
            var    obj   = new object();
            string key   = "myKey";
            string key1  = "myKey1";

            var link = new EntryLink();

            var trigger = new TestTrigger()
            {
                ActiveExpirationCallbacks = true
            };

            cache.Set(key, link, context =>
            {
                context.AddExpirationTrigger(trigger);
                return(obj);
            });

            Assert.Equal(1, link.Triggers.Count());
            Assert.Null(link.AbsoluteExpiration);

            cache.Set(key1, context =>
            {
                context.AddEntryLink(link);
                return(obj);
            });
        }
コード例 #10
0
        public void FireTriggerRemovesItem()
        {
            var    cache           = CreateCache();
            string key             = "myKey";
            var    obj             = new object();
            var    callbackInvoked = new ManualResetEvent(false);
            var    trigger         = new TestTrigger()
            {
                ActiveExpirationCallbacks = true
            };

            cache.Set(key, context =>
            {
                context.AddExpirationTrigger(trigger);
                context.RegisterPostEvictionCallback((subkey, value, reason, state) =>
                {
                    // TODO: Verify params
                    var localCallbackInvoked = (ManualResetEvent)state;
                    localCallbackInvoked.Set();
                }, state: callbackInvoked);
                return(obj);
            });

            trigger.Fire();

            var found = cache.TryGetValue(key, out obj);

            Assert.False(found);

            Assert.True(callbackInvoked.WaitOne(100), "Callback");
        }
コード例 #11
0
 public DialogueTestDataController(TestTrigger trigger_, string charName_)
 {
     charName = charName_;
     SetTestData();
     SetDefaultValues();
     SetVocabIntro(vocab);
     myTestTrigger = trigger_;
 }
コード例 #12
0
 public DialogueTestDataController(TestTrigger trigger_, string[] vocab_, TestType testType_, string charName_)
 {
     charName = charName_;
     vocab    = vocab_;
     SetDefaultValues();
     myTestTrigger = trigger_;
     testType      = testType_;
 }
コード例 #13
0
        public void Test_AutoEnable_Disable_to_Enable()
        {
            // AutoEnable=Disable -> Enable -> Disable

            // コマンドのモック
            var cmdMock = new TestCommand();

            cmdMock.Setup_CanExecute(false);

            // リンク先要素
            var element = new UIElement();

            element.IsEnabled.Should().Be(true);    // 初期状態を一応確認

            // テスト対象の準備
            var target = new InvokeCommandAction();

            target.AutoEnable = false;

            // テスト対象のアクションを呼び出すためのトリガ作成&アタッチ
            var trigger = new TestTrigger();

            trigger.Attach(element);
            trigger.Actions.Add(target);

            // コマンド設定
            target.Command = cmdMock.Object;

            // コマンド実行可能状態変更(→true)して、変化無いことを確認
            cmdMock.Setup_CanExecute(true);
            cmdMock.Raise_CanExecuteChanged();
            element.IsEnabled.Should().Be(true);    // 初期状態から変化無いこと

            // コマンド実行可能状態変更(→false)して、変化無いことを確認
            cmdMock.Setup_CanExecute(false);
            cmdMock.Raise_CanExecuteChanged();
            element.IsEnabled.Should().Be(true);    // 初期状態から変化無いこと

            // リンク無効なので呼び出されないことの検証
            cmdMock.Verify(c => c.CanExecute(It.IsAny <object>()), Times.Never());

            // リンク有効化。状態反映される確認
            target.AutoEnable = true;
            element.IsEnabled.Should().Be(false);   // コマンド状態にリンク
            cmdMock.Verify(c => c.CanExecute(It.IsAny <object>()), Times.Once());

            // 有効状態での状態変化のリンク
            cmdMock.Setup_CanExecute(true);
            cmdMock.Raise_CanExecuteChanged();
            element.IsEnabled.Should().Be(true);    // リンクして変化すること
            cmdMock.Setup_CanExecute(false);
            cmdMock.Raise_CanExecuteChanged();
            element.IsEnabled.Should().Be(false);   // リンクして変化すること
        }
コード例 #14
0
        public void ProcessDialogueNodeTest(string[] vocabArray)
        {
            EnableSubmitBtn();
            SetSubmitBtnText("Submit answer");
            TestTrigger testTrigger = new TestTrigger("Translating to English", DialogueIcon, TestTrigger.TriggerType.DialogueNode);

            currentDialogueTestData = new DialogueTestDataController(testTrigger, vocabArray, DialogueTestDataController.TestType.read, GetSpeakersName(currentNodeID));
            InsertVocabTestNode(currentDialogueTestData.GetPlayerVocab());
            DisplayGrammar();
            InsertPlayerInputField();
        }
コード例 #15
0
        public void Run_WithArgs_Fast()
        {
            int i  = 0;
            var tt = new TestTrigger();
            var em = ExecutionManager.CreateWithArgs <string>(async(x) => { i++; TestContext.WriteLine($"i: {i}"); Assert.AreEqual("XXX", x.Value); await Task.CompletedTask; }, tt).Run();

            Assert.AreEqual(iterations, i);
            Assert.AreEqual(iterations, tt.Count);
            Assert.AreEqual(iterations, em.ExecutorCount);
            Assert.AreEqual(ExecutionManagerStopReason.TriggerStop, em.StopReason);
        }
コード例 #16
0
        public void Test_AutoEnable_Enable_SwitchCommand()
        {
            // AutoEnable=Enable -> Attach Element -> Set Command -> Switch Command

            // コマンドのモック
            var cmdMock = new TestCommand();

            cmdMock.Setup_CanExecute(false);

            // リンク先要素
            var element = new UIElement();

            element.IsEnabled.Should().Be(true);    // 初期状態を一応確認

            // テスト対象の準備
            var target = new InvokeCommandAction();

            target.AutoEnable = true;

            // テスト対象のアクションを呼び出すためのトリガ作成
            var trigger = new TestTrigger();

            trigger.Attach(element);
            trigger.Actions.Add(target);

            // コマンド設定
            target.Command = cmdMock.Object;

            using (var elementMon = element.Monitor())
            {
                // 同じ状態の別コマンドのモック
                var otherCcmd1Mock = new TestCommand();
                otherCcmd1Mock.Setup_CanExecute(false);

                // コマンド差し替え
                target.Command = otherCcmd1Mock.Object;

                // 状態は維持されるし、一時的な変化も生じていないこと
                element.IsEnabled.Should().Be(false);
                elementMon.Should().NotRaise(nameof(element.IsEnabledChanged));

                // 別状態の別コマンドのモック
                var otherCmd2Mock = new TestCommand();
                otherCmd2Mock.Setup_CanExecute(true);

                // コマンド差し替え
                target.Command = otherCmd2Mock.Object;

                // 差し替え後の状態を反映していること
                element.IsEnabled.Should().Be(true);
                elementMon.Should().Raise(nameof(element.IsEnabledChanged));
            }
        }
コード例 #17
0
        public async Task Schedule(string nodeName, string uri, string testId, string requestId, string callBackUri)
        {
            HttpClient httpClient = new HttpClient();
            var        parameters = new TestTrigger
            {
                NodeName = nodeName, Id = testId, CallBackUrl = callBackUri, RequestId = requestId
            };

            var stringContent = new StringContent(JsonConvert.SerializeObject(parameters));

            stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            var response = await httpClient.PostAsync(uri, stringContent);
        }
コード例 #18
0
ファイル: SlidingTriggerTest.cs プロジェクト: osmnozcn/Beef
        public void Run_WithArgs_Slow()
        {
            int i  = 0;
            var tt = new TestTrigger();
            var sw = Stopwatch.StartNew();
            var em = ExecutionManager.CreateWithArgs <string>(async(x) => { i++; TestContext.WriteLine($"i: {i}"); Assert.AreEqual("XXX", x.Value); await Task.Delay(200); }, tt).Run();

            sw.Stop();
            Assert.IsTrue(sw.ElapsedMilliseconds > 2000, sw.ElapsedMilliseconds.ToString());
            Assert.AreEqual(iterations, i);
            Assert.AreEqual(iterations, tt.Count);
            Assert.AreEqual(iterations, em.ExecutorCount);
            Assert.AreEqual(ExecutionManagerStopReason.TriggerStop, em.StopReason);
        }
コード例 #19
0
        public void Test_AutoEnable_Enable_AttachElem_SetCommand()
        {
            // AutoEnable=Enable -> Attach Element -> Set Command

            // コマンドのモック
            var cmdMock = new TestCommand();

            cmdMock.Setup_CanExecute(true);

            // リンク先要素
            var element = new UIElement();

            element.IsEnabled.Should().Be(true);    // 初期状態を一応確認

            // テスト対象の準備
            var target = new InvokeCommandAction();

            target.AutoEnable = true;

            // テスト対象のアクションを呼び出すためのトリガ作成
            var trigger = new TestTrigger();

            trigger.Attach(element);
            trigger.Actions.Add(target);

            // コマンド設定
            target.Command = cmdMock.Object;

            // リンク有効なのでアタッチ時点で呼び出しがあるはず
            cmdMock.Verify(c => c.CanExecute(It.IsAny <object>()), Times.AtLeastOnce());

            // コマンド実行可能状態変更(→false)して、連携することを確認
            cmdMock.Invocations.Clear();
            cmdMock.Setup_CanExecute(false);
            cmdMock.Raise_CanExecuteChanged();
            element.IsEnabled.Should().Be(false);

            // リンク有効なので呼び出しがあるはず
            cmdMock.Verify(c => c.CanExecute(It.IsAny <object>()), Times.AtLeastOnce());

            // コマンド実行可能状態変更(→false)して、連携することを確認
            cmdMock.Invocations.Clear();
            cmdMock.Setup_CanExecute(true);
            cmdMock.Raise_CanExecuteChanged();
            element.IsEnabled.Should().Be(true);

            // リンク有効なので呼び出しがあるはず
            cmdMock.Verify(c => c.CanExecute(It.IsAny <object>()), Times.AtLeastOnce());
        }
コード例 #20
0
ファイル: TestsController.cs プロジェクト: WonderTools/Eagle
        public async Task <TestReport> Execute([FromBody] TestTrigger value)
        {
            var eagleEngine = new EagleEngine(typeof(TestClass));

            var            testSuites = eagleEngine.GetDiscoveredTestSuites();
            IResultHandler handler    = new HttpRequestResultHandler(testSuites, value.NodeName, value.RequestId, value.CallBackUrl);
            var            result     = await eagleEngine.ExecuteTest(handler, value.Id);

            return(new TestReport()
            {
                TestResults = result,
                TestSuites = testSuites,
                NodeName = value.NodeName,
                RequestId = value.RequestId,
            });
        }
コード例 #21
0
        public void GetTriggersTest()
        {
            var trigger  = new TestTrigger();
            var triggers = Interaction.GetTriggers(testDependencyObject);

            Assert.IsNotNull(triggers);
            Assert.AreEqual(triggers.Count, 0);

            triggers = Interaction.GetTriggers(testDependencyObject); // for code coverage
            triggers.Add(trigger);
            Assert.AreEqual(triggers.Count, 1);
            Assert.AreEqual(trigger.AssociatedObject, testDependencyObject);

            triggers.Remove(trigger);
            Assert.AreEqual(triggers.Count, 0);
        }
コード例 #22
0
        public void SetWithLazyTriggerDoesntRegisterForNotification()
        {
            var    cache   = CreateCache();
            string key     = "myKey";
            var    value   = new object();
            var    trigger = new TestTrigger()
            {
                ActiveExpirationCallbacks = false
            };

            cache.Set(key, value, new MemoryCacheEntryOptions().AddExpirationTrigger(trigger));

            Assert.True(trigger.IsExpiredWasCalled);
            Assert.True(trigger.ActiveExpirationCallbacksWasCalled);
            Assert.Null(trigger.Registration);
        }
コード例 #23
0
        public void LinkContextsCanNest()
        {
            var    cache = CreateCache();
            var    obj   = new object();
            string key   = "myKey";
            string key1  = "myKey1";

            var link1 = new EntryLink();
            var link2 = new EntryLink();

            Assert.Null(EntryLinkHelpers.ContextLink);

            using (link1.FlowContext())
            {
                Assert.StrictEqual(link1, EntryLinkHelpers.ContextLink);

                using (link2.FlowContext())
                {
                    Assert.StrictEqual(link2, EntryLinkHelpers.ContextLink);

                    var trigger = new TestTrigger()
                    {
                        ActiveExpirationCallbacks = true
                    };
                    cache.Set(key, context =>
                    {
                        context.AddExpirationTrigger(trigger);
                        return(obj);
                    });
                }

                Assert.StrictEqual(link1, EntryLinkHelpers.ContextLink);
            }

            Assert.Null(EntryLinkHelpers.ContextLink);

            Assert.Equal(0, link1.Triggers.Count());
            Assert.Null(link1.AbsoluteExpiration);
            Assert.Equal(1, link2.Triggers.Count());
            Assert.Null(link2.AbsoluteExpiration);

            cache.Set(key1, context =>
            {
                context.AddEntryLink(link2);
                return(obj);
            });
        }
コード例 #24
0
        public void Serialization_CanBeSerializedAndDeserialized_NameAndGroupAndJobNameAndJobGroup()
        {
            BinaryFormatter binaryFormatter = new BinaryFormatter();

            using (var ms = new MemoryStream())
            {
                var trigger = new TestTrigger("TriggerName", "TriggerGroup", "JobName", "JobGroup");
                binaryFormatter.Serialize(ms, trigger);

                ms.Position = 0;

                var deserializedTrigger = binaryFormatter.Deserialize(ms) as TestTrigger;
                Assert.That(deserializedTrigger, Is.Not.Null);
                Assert.That(deserializedTrigger, Is.TypeOf <TestTrigger>());
                Assert.That(deserializedTrigger.JobKey, Is.Not.Null);
                Assert.That(deserializedTrigger.JobKey.Name, Is.EqualTo("JobName"));
                Assert.That(deserializedTrigger.JobKey.Group, Is.EqualTo("JobGroup"));
                Assert.That(deserializedTrigger.Key, Is.Not.Null);
                Assert.That(deserializedTrigger.Key.Name, Is.EqualTo("TriggerName"));
                Assert.That(deserializedTrigger.Key.Group, Is.EqualTo("TriggerGroup"));
            }

            using (var ms = new MemoryStream())
            {
                var trigger = new TestTrigger
                {
                    JobKey = new JobKey("JobName", "JobGroup"),
                    Key    = new TriggerKey("TriggerName", "TriggerGroup")
                };
                binaryFormatter.Serialize(ms, trigger);

                ms.Position = 0;

                var deserializedTrigger = binaryFormatter.Deserialize(ms) as TestTrigger;
                Assert.That(deserializedTrigger, Is.Not.Null);
                Assert.That(deserializedTrigger, Is.TypeOf <TestTrigger>());
                Assert.That(deserializedTrigger.JobKey, Is.Not.Null);
                Assert.That(deserializedTrigger.JobKey.Name, Is.EqualTo("JobName"));
                Assert.That(deserializedTrigger.JobKey.Group, Is.EqualTo("JobGroup"));
                Assert.That(deserializedTrigger.Key, Is.Not.Null);
                Assert.That(deserializedTrigger.Key.Name, Is.EqualTo("TriggerName"));
                Assert.That(deserializedTrigger.Key.Group, Is.EqualTo("TriggerGroup"));
            }
        }
コード例 #25
0
        public void HandleEvent()
        {
            //ARRANGE
            var i = new TestInitiator();
            var t = new TestTrigger {Name = "Trigger"};
            i.Workflow = new TestWorkFlow();
            //ACT

            i.HandleEvent(OrgStore,"Object", "Event", t);

            //ASSERT

            Assert.AreEqual(1, i.ActionsPerformed.Count);
            Assert.AreEqual("Action", i.ActionsPerformed[0].Action);
            Assert.AreEqual("Object", i.ActionsPerformed[0].ObjectType);
            Assert.AreSame(i, (i.ActionsPerformed[0] as TestAction).Initiator);
            Assert.AreSame(t, (i.ActionsPerformed[0] as TestAction).Trigger);

        }
コード例 #26
0
        public void SetWithTriggerRegistersForNotificaiton()
        {
            var    cache   = CreateCache();
            string key     = "myKey";
            var    value   = new object();
            var    trigger = new TestTrigger()
            {
                ActiveExpirationCallbacks = true
            };

            cache.Set(key, value, new MemoryCacheEntryOptions().AddExpirationTrigger(trigger));

            Assert.True(trigger.IsExpiredWasCalled);
            Assert.True(trigger.ActiveExpirationCallbacksWasCalled);
            Assert.NotNull(trigger.Registration);
            Assert.NotNull(trigger.Registration.RegisteredCallback);
            Assert.NotNull(trigger.Registration.RegisteredState);
            Assert.False(trigger.Registration.Disposed);
        }
コード例 #27
0
        public void ProcessAbilityTest(CharAbility ability)
        {
            //queuedAbility = ability;
            EnableSubmitBtn();
            SetSubmitBtnText("Submit answer");
            SetObjectPortrait(playerCharacter.GetCombatController().GetCurrentEnemyTarget().CharacterPortrait);
            SetDialogueReasonSymbol(ability.myIcon);
            InsertSpacer();
            TestTrigger testTrigger = new TestTrigger(ability.GetMyName(), ability.GetMyIcon(), TestTrigger.TriggerType.Ability);

            currentDialogueTestData = new DialogueTestDataController(testTrigger, playerCharacter.CharacterName);
            GameObject dialogueNode = BuildDialogueNode(currentDialogueTestData.GetVocabIntro()); //text instruction to player

            InsertDialogueNode(dialogueNode);
            InsertVocabTestNode(currentDialogueTestData.GetPlayerVocab());
            DisplayGrammar();
            InsertPlayerInputField();
            SetInUse();
        }
コード例 #28
0
        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());
        }
コード例 #29
0
        public void NestedLinkContextsCanAggregate()
        {
            var    clock = new TestClock();
            var    cache = CreateCache(clock);
            var    obj   = new object();
            string key2  = "myKey2";
            string key3  = "myKey3";

            var trigger2 = new TestTrigger()
            {
                ActiveExpirationCallbacks = true
            };
            var trigger3 = new TestTrigger()
            {
                ActiveExpirationCallbacks = true
            };

            IEntryLink link1 = null;
            IEntryLink link2 = null;

            using (link1 = cache.CreateLinkingScope())
            {
                cache.Set(key2, obj, new MemoryCacheEntryOptions()
                          .AddExpirationTrigger(trigger2)
                          .SetAbsoluteExpiration(TimeSpan.FromSeconds(10)));

                using (link2 = cache.CreateLinkingScope())
                {
                    cache.Set(key3, obj, new MemoryCacheEntryOptions()
                              .AddExpirationTrigger(trigger3)
                              .SetAbsoluteExpiration(TimeSpan.FromSeconds(15)));
                }
            }

            Assert.Equal(1, link1.Triggers.Count());
            Assert.NotNull(link1.AbsoluteExpiration);
            Assert.Equal(clock.UtcNow + TimeSpan.FromSeconds(10), link1.AbsoluteExpiration);

            Assert.Equal(1, link2.Triggers.Count());
            Assert.NotNull(link2.AbsoluteExpiration);
            Assert.Equal(clock.UtcNow + TimeSpan.FromSeconds(15), link2.AbsoluteExpiration);
        }
コード例 #30
0
        public void WhenInvokedWithAParameter_ThenOpensTheChildWindow()
        {
            var childWindow = new TestChildWindow {
            };
            var action      = new PopupChildWindowAction {
                ChildWindow = childWindow
            };
            var trigger = new TestTrigger {
                Actions = { action }
            };
            var args = new InteractionRequestedEventArgs(null, () => { });

            trigger.InvokeActions(args);

            EnqueueConditional(() => childWindow.IsOpen);

            EnqueueCallback(() => { childWindow.Close(); });

            EnqueueTestComplete();
        }
コード例 #31
0
        public void SetWithLazyTriggerDoesntRegisterForNotification()
        {
            var    cache   = CreateCache();
            string key     = "myKey";
            var    obj     = new object();
            var    trigger = new TestTrigger()
            {
                ActiveExpirationCallbacks = false
            };

            cache.Set(key, context =>
            {
                context.AddExpirationTrigger(trigger);
                return(obj);
            });

            Assert.True(trigger.IsExpiredWasCalled);
            Assert.True(trigger.ActiveExpirationCallbacksWasCalled);
            Assert.Null(trigger.Registration);
        }