예제 #1
0
파일: App.xaml.cs 프로젝트: Kairushii/PopUp
        protected override void OnExit(ExitEventArgs e)
        {
            _notifyIcon.Dispose();
            _timerViewModel.Dispose();
            _timerStore.Dispose();

            base.OnExit(e);
        }
예제 #2
0
        public void Test_TimerViewModel_HappyPath()
        {
            //arrange
            string startAt     = "02";
            string initialText = "";
            string stoppedText = "";
            string afterTick   = "";
            string finalText   = "";
            string afterReset  = "";

            Mock <IUserInterface>   ui     = new Mock <IUserInterface>();
            Mock <ILogger>          logger = new Mock <ILogger>();
            Mock <ILoopSoundPlayer> player = new Mock <ILoopSoundPlayer>();

            var config = new ConfigurationValues();

            var timer = CreateDispatcherTimer(config);

            TimerClock clock = new TimerClock(config, logger.Object, timer.Object);

            TimerViewModel timervm = new TimerViewModel(ui.Object, player.Object, clock, config, logger.Object);

            //act
            timervm.Text = startAt;
            MethodInfo dynMethod = timervm.GetType().GetMethod("Ui_UiEventHappened", BindingFlags.NonPublic | BindingFlags.Instance);

            dynMethod.Invoke(timervm, new object[] { new object(), new UIEventArgs(UIEventArgs.UIEventType.BtnStartClicked) });
            initialText = timervm.Text;

            timer.Raise(x => x.Tick += null, this, new EventArgs()
            {
            });
            afterTick = timervm.Text;

            dynMethod.Invoke(timervm, new object[] { new object(), new UIEventArgs(UIEventArgs.UIEventType.BtnStartClicked) });
            timer.Raise(x => x.Tick += null, this, new EventArgs()
            {
            });

            stoppedText = timervm.Text;

            dynMethod.Invoke(timervm, new object[] { new object(), new UIEventArgs(UIEventArgs.UIEventType.BtnStartClicked) });
            timer.Raise(x => x.Tick += null, this, new EventArgs()
            {
            });

            finalText = timervm.Text;

            dynMethod.Invoke(timervm, new object[] { new object(), new UIEventArgs(UIEventArgs.UIEventType.BtnResetClicked) });
            afterReset = timervm.Text;

            timervm.Dispose();

            //assert
            Assert.Equal("00:00:02", initialText);
            Assert.Equal("00:00:01", afterTick);
            Assert.Equal("00:00:01", stoppedText);
            Assert.Equal("00:00:00", finalText);
            Assert.Equal("00:00:01", afterReset);

            logger.Verify(x => x.LogError(It.IsAny <string>()), Times.Never);
            logger.Verify(x => x.LogError(It.IsAny <string>(), It.IsAny <Exception>()), Times.Never);
            player.Verify(x => x.Play(It.IsAny <int>()), Times.Once);
        }