public void コンポーネントの活性化() { var comp = new SimpleComponent("test"); bool calledActivated = false; comp.OnActivated = _ => { calledActivated = true; return ReturnCode_t.RTC_OK; }; comp.ActivateAsync().Result.Is(ReturnCode_t.RTC_OK); calledActivated.Is(true); }
public void 状態が変化しなかったらタイムアウト() { var comp = new SimpleComponent("test"); comp.OnActivated = _ => { Thread.Sleep(TimeSpan.FromSeconds(3)); return ReturnCode_t.RTC_OK; }; AssertEx.Throws<TimeoutException>(() => comp.ActivateAsync() .ToObservable() .Timeout(TimeSpan.FromSeconds(1)) .First() ); }
public static void Main(string[] args) { using (var manager = new RtcManager(args)) { var comp = new SimpleComponent("HelloWorld") { OnExecute = _ => { Console.WriteLine("Hello Wolrd!"); return ReturnCode_t.RTC_OK; } }; manager.RegisterComponent(comp); manager.Run(); } }
public void OnExecuteを動かしてみる() { var comp = new SimpleComponent("test"); var testScheduler = new TestScheduler(); var recorder = testScheduler.CreateObserver<ReturnCode_t>(); comp.ExecutionContextScheduler = testScheduler; // OnExecuteが呼ばれるたびにカウンタをインクリメント var executeCounter = 0; comp.OnExecute = _ => { executeCounter = executeCounter + 1; return ReturnCode_t.RTC_OK; }; // コンポーネントを活性化 comp.ActivateAsync().ToObservable().Subscribe(recorder); // 時間がたっていないので何も起きていない executeCounter.Is(0); recorder.Messages.Count.Is(0); // 時間を進める testScheduler.AdvanceBy(100); // 活性化に成功したことを確認 recorder.Messages.Count.Is(2); recorder.Messages.First().Value.Value.Is(ReturnCode_t.RTC_OK); executeCounter.Is(0); // 時間を5秒進める testScheduler.AdvanceBy(TimeSpan.FromSeconds(5).Ticks); // OnExecuteは1秒に1回呼ばれる executeCounter.Is(5); }
public void 存在しない実行コンテキストを指定したら例外() { var comp = new SimpleComponent("test"); AssertEx.Throws<ArgumentOutOfRangeException>(() => comp.DeactivateAsync(1).Wait()); }
public void 活性化しているのにActivateしたら失敗() { var comp = new SimpleComponent("test"); comp.ActivateAsync().Result.Is(ReturnCode_t.RTC_OK); comp.ActivateAsync().Result.Is(ReturnCode_t.PRECONDITION_NOT_MET); }
public void 状態が変化しなかったらタイムアウト() { var comp = new SimpleComponent("test"); comp.OnActivated = _ => ReturnCode_t.RTC_ERROR; comp.OnReset = _ => { Thread.Sleep(TimeSpan.FromSeconds(3)); return ReturnCode_t.RTC_OK; }; comp.ActivateAsync().Result.Is(ReturnCode_t.RTC_OK); AssertEx.Throws<TimeoutException>(() => comp.ResetAsync(timeout: TimeSpan.FromSeconds(1)).Wait() ); }
public void コンポーネントのリセット() { var comp = new SimpleComponent("test"); comp.OnActivated = _ => ReturnCode_t.RTC_ERROR; bool calledReset = false; comp.OnReset = _ => { calledReset = true; return ReturnCode_t.RTC_OK; }; comp.ActivateAsync().Result.Is(ReturnCode_t.RTC_OK); comp.ResetAsync().Result.Is(ReturnCode_t.RTC_OK); calledReset.Is(true); }
public void エラーが起きていないのにResetしたら失敗() { var comp = new SimpleComponent("test"); comp.ResetAsync().Result.Is(ReturnCode_t.PRECONDITION_NOT_MET); }