示例#1
0
        public void CheckIfScreenSleepEnabledTestMethod()
        {
            var settingsManagerStub = MockRepository.GenerateMock <ISettingsManager <AppSettings> >();

            settingsManagerStub.Expect(x => x.GetConfig()).Return(new AppSettings {
                IsScreenSleepEnabled = true
            });

            var facade = new SpotifySaveModeStopperFacade(null, null, null, null, null, null, settingsManagerStub);

            Assert.IsTrue(facade.IsScreenSleepEnabled());
            settingsManagerStub.VerifyAllExpectations();
        }
        public void ChangeAutoStartSettingsTestMethod()
        {
            var autoStartChangeFired = new ManualResetEvent(false);

            var settingsManagerStub = MockRepository.GenerateStub<ISettingsManager<AppSettings>>();
            settingsManagerStub.Stub(x => x.GetConfig()).Return(new AppSettings { IsScreenSleepEnabled = true });

            var autoStartManagerStub = MockRepository.GenerateMock<IAutoStartManager>();
            autoStartManagerStub.Expect(x => x.SetAutoStart(Arg<bool>.Is.Equal(true)))
                .Do((Action<bool>)(ant => { autoStartChangeFired.Set(); }));

            var facade = new SpotifySaveModeStopperFacade(null, null, null, null, null, autoStartManagerStub, settingsManagerStub);
            facade.ChangeAutoStart(true);

            Assert.IsTrue(autoStartChangeFired.WaitOne(10));
            autoStartManagerStub.VerifyAllExpectations();
        }
示例#3
0
        public void ChangeScreenSleepSettingsTestMethod()
        {
            var saveConfigFired = new ManualResetEvent(false);

            var settingsManagerStub = MockRepository.GenerateMock <ISettingsManager <AppSettings> >();

            settingsManagerStub.Stub(x => x.GetConfig()).Return(new AppSettings {
                IsScreenSleepEnabled = true
            });
            settingsManagerStub.Expect(x => x.SaveConfig(new AppSettings()))
            .Constraints(Property.Value("IsScreenSleepEnabled", true))
            .Do((Action <AppSettings>)(ant => { saveConfigFired.Set(); }));

            var facade = new SpotifySaveModeStopperFacade(null, null, null, null, null, null, settingsManagerStub);

            facade.ChangeScreenSleep(true);

            Assert.IsTrue(saveConfigFired.WaitOne(10));
            settingsManagerStub.VerifyAllExpectations();
        }
示例#4
0
        public void ChangeAutoStartSettingsTestMethod()
        {
            var autoStartChangeFired = new ManualResetEvent(false);

            var settingsManagerStub = MockRepository.GenerateStub <ISettingsManager <AppSettings> >();

            settingsManagerStub.Stub(x => x.GetConfig()).Return(new AppSettings {
                IsScreenSleepEnabled = true
            });

            var autoStartManagerStub = MockRepository.GenerateMock <IAutoStartManager>();

            autoStartManagerStub.Expect(x => x.SetAutoStart(Arg <bool> .Is.Equal(true)))
            .Do((Action <bool>)(ant => { autoStartChangeFired.Set(); }));

            var facade = new SpotifySaveModeStopperFacade(null, null, null, null, null, autoStartManagerStub, settingsManagerStub);

            facade.ChangeAutoStart(true);

            Assert.IsTrue(autoStartChangeFired.WaitOne(10));
            autoStartManagerStub.VerifyAllExpectations();
        }
示例#5
0
        public void ChangeListeningTestMethod()
        {
            const string spotifyProcessName = "Spotify";

            var messageDisplayerStub = MockRepository.GenerateStub <IMessageDisplayer>();

            messageDisplayerStub.Stub(x => x.OutputMessage(Arg <string> .Is.Anything)).Repeat.Any();

            var settingsManagerStub = MockRepository.GenerateStub <ISettingsManager <AppSettings> >();

            settingsManagerStub.Stub(x => x.GetConfig()).Return(new AppSettings {
                IsScreenSleepEnabled = true
            });

            var processAnalyserStub = MockRepository.GenerateStub <IProcessAnalyser>();

            processAnalyserStub.Stub(x => x.IsAppRunning(spotifyProcessName))
            .Repeat.Any()
            .Return(true);

            var appStateStub = MockRepository.GenerateStub <IAppStatusReporting>();

            appStateStub.Stub(x => x.NotifyAntiSleepingModeIsActivated());
            appStateStub.Stub(x => x.NotifyAntiSleepingModeIsDisabled());

            var constantDisplaySleepScreenEnabled   = new ManualResetEvent(false);
            var constantDisplayNoSleepScreenEnabled = new ManualResetEvent(false);
            var constantDisplayDisabled             = new ManualResetEvent(false);

            var preventSleepScreenMock = MockRepository.GenerateMock <IPreventSleepScreen>();

            preventSleepScreenMock.Expect(x => x.EnableConstantDisplayAndPower(true, false))
            .Do((Action <bool, bool>)((contantPower, constantScreen) =>
            {
                constantDisplayDisabled.Reset();
                constantDisplayNoSleepScreenEnabled.Reset();
                constantDisplaySleepScreenEnabled.Set();
            }));

            preventSleepScreenMock.Expect(x => x.EnableConstantDisplayAndPower(true, true))
            .Do((Action <bool, bool>)((contantPower, constantScreen) =>
            {
                constantDisplaySleepScreenEnabled.Reset();
                constantDisplayDisabled.Reset();
                constantDisplayNoSleepScreenEnabled.Set();
            }));

            preventSleepScreenMock.Expect(x => x.EnableConstantDisplayAndPower(false, false))
            .Do((Action <bool, bool>)((contantPower, constantScreen) =>
            {
                constantDisplayNoSleepScreenEnabled.Reset();
                constantDisplaySleepScreenEnabled.Reset();
                constantDisplayDisabled.Set();
            }));

            //Sequence:
            //  false - false - true always
            var calledTimes       = 0;
            var soundAnalyserMock = MockRepository.GenerateMock <ISoundAnalyser>();

            soundAnalyserMock.Expect(x => x.IsProcessNameOutputingSound(Arg <string> .Is.Equal(spotifyProcessName)))
            .Return(false)
            .WhenCalled(invk =>
            {
                Interlocked.Increment(ref calledTimes);
                if (calledTimes < 3)
                {
                    invk.ReturnValue = false;
                }
                else
                {
                    invk.ReturnValue = true;
                }
            });

            var facade = new SpotifySaveModeStopperFacade(messageDisplayerStub, preventSleepScreenMock, soundAnalyserMock, processAnalyserStub, appStateStub, null, settingsManagerStub, 1);

            facade.StartListening();

            var debugCoef = 1;

#if DEBUG
            debugCoef = 60;
#endif

            Assert.IsTrue(constantDisplaySleepScreenEnabled.WaitOne(debugCoef * 2 * 2 * 1500));
            Assert.IsFalse(constantDisplayDisabled.WaitOne(1000));

            facade.ChangeScreenSleep(false);

            Assert.IsTrue(constantDisplayDisabled.WaitOne(debugCoef * 2 * 1 * 1500));
            Assert.IsTrue(constantDisplayNoSleepScreenEnabled.WaitOne(debugCoef * 2 * 1 * 1500));

            Assert.IsFalse(constantDisplayDisabled.WaitOne(500));
            Assert.IsFalse(constantDisplaySleepScreenEnabled.WaitOne(500));

            preventSleepScreenMock.VerifyAllExpectations();
            soundAnalyserMock.VerifyAllExpectations();
        }
        public MainWindow()
        {
            InitializeComponent();

            #region Poor Man DI
            var iconChanger = new AppStateReporting(SetPlayingGui, SetNotPlayingGui);
            var messageDisplayer = new DummyMessageDisplayer();
            var powerHandler = new PowerRequestContextHandler();
            var soundAnalyser = new CsCoreSoundAnalyser(messageDisplayer);
            var processAnalyser = new ProcessAnalyser();

            var fullPath = Assembly.GetExecutingAssembly().Location;
            var autoStartManager = new AutoStartManager(AppName, fullPath);

            var settingsManager = new SettingsManager<AppSettings>(AppName, new AppSettings {IsScreenSleepEnabled = false});
            #endregion

            _facade = new SpotifySaveModeStopperFacade(messageDisplayer, powerHandler, soundAnalyser, processAnalyser, iconChanger, autoStartManager, settingsManager);

            #region Events Subscription
            Closing += OnClosing;
            #endregion

            #region Init Tray Icon
            WindowState = WindowState.Minimized;
            Visibility = Visibility.Hidden;
            ShowInTaskbar = false;

            _notifyIcon = new NotifyIcon();
            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SpotifySleepModeStopperGui.music.ico"))
            {
                _notPlayingIcon = new Icon(stream);
            }
            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SpotifySleepModeStopperGui.music_playing.ico"))
            {
                _playingIcon = new Icon(stream);
            }
            SetNotPlayingGui();
            _notifyIcon.Visible = true;

            var contextMenu = new ContextMenu();
            var exitMenuItem = new MenuItem();
            exitMenuItem.Index = 2;
            exitMenuItem.Text = ExitMess;
            exitMenuItem.Click += exit_Click;

            _screenBehaviorMenuItem = new MenuItem();
            _screenBehaviorMenuItem.Index = 1;

            if (_facade.IsScreenSleepEnabled())
                _screenBehaviorMenuItem.Text = ScreenSleepEnabledMess;
            else
                _screenBehaviorMenuItem.Text = ScreenSleepDisabledMess;

            _screenBehaviorMenuItem.Click += ScreenBehaviorMenuItemOnClick;

            _autoStartMenuItem = new MenuItem();
            _autoStartMenuItem.Index = 0;

            if (_facade.IsAutoStartEnabled())
                _autoStartMenuItem.Text = AppStartingOnStartupMess; //"Auto Startup";
            else
                _autoStartMenuItem.Text = AppNotStartingOnStartupMess;

            _autoStartMenuItem.Click += AutoStartMenuItemOnClick;

            contextMenu.MenuItems.AddRange(new[] { _autoStartMenuItem, _screenBehaviorMenuItem, exitMenuItem });
            _notifyIcon.ContextMenu = contextMenu;
            #endregion

            _facade.StartListening();
        }
        public void ChangeListeningTestMethod()
        {
            const string spotifyProcessName = "Spotify";

            var messageDisplayerStub = MockRepository.GenerateStub<IMessageDisplayer>();
            messageDisplayerStub.Stub(x => x.OutputMessage(Arg<string>.Is.Anything)).Repeat.Any();

            var settingsManagerStub = MockRepository.GenerateStub<ISettingsManager<AppSettings>>();
            settingsManagerStub.Stub(x => x.GetConfig()).Return(new AppSettings { IsScreenSleepEnabled = true });

            var processAnalyserStub = MockRepository.GenerateStub<IProcessAnalyser>();
            processAnalyserStub.Stub(x => x.IsAppRunning(spotifyProcessName))
                .Repeat.Any()
                .Return(true);

            var appStateStub = MockRepository.GenerateStub<IAppStatusReporting>();
            appStateStub.Stub(x => x.NotifyAntiSleepingModeIsActivated());
            appStateStub.Stub(x => x.NotifyAntiSleepingModeIsDisabled());

            var constantDisplaySleepScreenEnabled = new ManualResetEvent(false);
            var constantDisplayNoSleepScreenEnabled = new ManualResetEvent(false);
            var constantDisplayDisabled = new ManualResetEvent(false);

            var preventSleepScreenMock = MockRepository.GenerateMock<IPreventSleepScreen>();
            preventSleepScreenMock.Expect(x => x.EnableConstantDisplayAndPower(true, false))
                .Do((Action<bool, bool>)((contantPower, constantScreen) =>
                {
                    constantDisplayDisabled.Reset();
                    constantDisplayNoSleepScreenEnabled.Reset();
                    constantDisplaySleepScreenEnabled.Set();
                }));

            preventSleepScreenMock.Expect(x => x.EnableConstantDisplayAndPower(true, true))
               .Do((Action<bool, bool>)((contantPower, constantScreen) =>
               {
                   constantDisplaySleepScreenEnabled.Reset();
                   constantDisplayDisabled.Reset();
                   constantDisplayNoSleepScreenEnabled.Set();
               }));

            preventSleepScreenMock.Expect(x => x.EnableConstantDisplayAndPower(false, false))
                .Do((Action<bool, bool>)((contantPower, constantScreen) =>
                {
                    constantDisplayNoSleepScreenEnabled.Reset();
                    constantDisplaySleepScreenEnabled.Reset();
                    constantDisplayDisabled.Set();
                }));

            //Sequence:
            //  false - false - true always
            var calledTimes = 0;
            var soundAnalyserMock = MockRepository.GenerateMock<ISoundAnalyser>();

            soundAnalyserMock.Expect(x => x.IsProcessNameOutputingSound(Arg<string>.Is.Equal(spotifyProcessName)))
                .Return(false)
                .WhenCalled(invk =>
                {
                    Interlocked.Increment(ref calledTimes);
                    if (calledTimes < 3)
                        invk.ReturnValue = false;
                    else
                        invk.ReturnValue = true;
                });

            var facade = new SpotifySaveModeStopperFacade(messageDisplayerStub, preventSleepScreenMock, soundAnalyserMock, processAnalyserStub, appStateStub, null, settingsManagerStub, 1);
            facade.StartListening();

            var debugCoef = 1;

            #if DEBUG
            debugCoef = 60;
            #endif

            Assert.IsTrue(constantDisplaySleepScreenEnabled.WaitOne(debugCoef * 2 * 2 * 1500));
            Assert.IsFalse(constantDisplayDisabled.WaitOne(1000));

            facade.ChangeScreenSleep(false);

            Assert.IsTrue(constantDisplayDisabled.WaitOne(debugCoef * 2 * 1 * 1500));
            Assert.IsTrue(constantDisplayNoSleepScreenEnabled.WaitOne(debugCoef * 2 * 1 * 1500));

            Assert.IsFalse(constantDisplayDisabled.WaitOne(500));
            Assert.IsFalse(constantDisplaySleepScreenEnabled.WaitOne(500));

            preventSleepScreenMock.VerifyAllExpectations();
            soundAnalyserMock.VerifyAllExpectations();
        }
        public void CheckIfScreenSleepEnabledTestMethod()
        {
            var settingsManagerStub = MockRepository.GenerateMock<ISettingsManager<AppSettings>>();
            settingsManagerStub.Expect(x => x.GetConfig()).Return(new AppSettings { IsScreenSleepEnabled = true });

            var facade = new SpotifySaveModeStopperFacade(null, null, null, null, null, null, settingsManagerStub);

            Assert.IsTrue(facade.IsScreenSleepEnabled());
            settingsManagerStub.VerifyAllExpectations();
        }
        public void ChangeScreenSleepSettingsTestMethod()
        {
            var saveConfigFired = new ManualResetEvent(false);

            var settingsManagerStub = MockRepository.GenerateMock<ISettingsManager<AppSettings>>();
            settingsManagerStub.Stub(x => x.GetConfig()).Return(new AppSettings { IsScreenSleepEnabled = true });
            settingsManagerStub.Expect(x => x.SaveConfig(new AppSettings()))
                .Constraints(Property.Value("IsScreenSleepEnabled", true))
                .Do((Action<AppSettings>)(ant => { saveConfigFired.Set(); }));

            var facade = new SpotifySaveModeStopperFacade(null, null, null, null, null, null, settingsManagerStub);
            facade.ChangeScreenSleep(true);

            Assert.IsTrue(saveConfigFired.WaitOne(10));
            settingsManagerStub.VerifyAllExpectations();
        }
        public MainWindow()
        {
            InitializeComponent();

            #region Poor Man DI
            var iconChanger      = new AppStateReporting(SetPlayingGui, SetNotPlayingGui);
            var messageDisplayer = new DummyMessageDisplayer();
            var powerHandler     = new PowerRequestContextHandler();
            var soundAnalyser    = new CsCoreSoundAnalyser(messageDisplayer);
            var processAnalyser  = new ProcessAnalyser();

            var fullPath         = Assembly.GetExecutingAssembly().Location;
            var autoStartManager = new AutoStartManager(AppName, fullPath);

            var settingsManager = new SettingsManager <AppSettings>(AppName, new AppSettings {
                IsScreenSleepEnabled = false
            });
            #endregion

            _facade = new SpotifySaveModeStopperFacade(messageDisplayer, powerHandler, soundAnalyser, processAnalyser, iconChanger, autoStartManager, settingsManager);

            #region Events Subscription
            Closing += OnClosing;
            #endregion

            #region Init Tray Icon
            WindowState   = WindowState.Minimized;
            Visibility    = Visibility.Hidden;
            ShowInTaskbar = false;

            _notifyIcon = new NotifyIcon();
            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SpotifySleepModeStopperGui.music.ico"))
            {
                _notPlayingIcon = new Icon(stream);
            }
            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SpotifySleepModeStopperGui.music_playing.ico"))
            {
                _playingIcon = new Icon(stream);
            }
            SetNotPlayingGui();
            _notifyIcon.Visible = true;

            var contextMenu  = new ContextMenu();
            var exitMenuItem = new MenuItem();
            exitMenuItem.Index  = 2;
            exitMenuItem.Text   = ExitMess;
            exitMenuItem.Click += exit_Click;

            _screenBehaviorMenuItem       = new MenuItem();
            _screenBehaviorMenuItem.Index = 1;

            if (_facade.IsScreenSleepEnabled())
            {
                _screenBehaviorMenuItem.Text = ScreenSleepEnabledMess;
            }
            else
            {
                _screenBehaviorMenuItem.Text = ScreenSleepDisabledMess;
            }

            _screenBehaviorMenuItem.Click += ScreenBehaviorMenuItemOnClick;

            _autoStartMenuItem       = new MenuItem();
            _autoStartMenuItem.Index = 0;

            if (_facade.IsAutoStartEnabled())
            {
                _autoStartMenuItem.Text = AppStartingOnStartupMess; //"Auto Startup";
            }
            else
            {
                _autoStartMenuItem.Text = AppNotStartingOnStartupMess;
            }

            _autoStartMenuItem.Click += AutoStartMenuItemOnClick;

            contextMenu.MenuItems.AddRange(new[] { _autoStartMenuItem, _screenBehaviorMenuItem, exitMenuItem });
            _notifyIcon.ContextMenu = contextMenu;
            #endregion

            _facade.StartListening();
        }