Ejemplo n.º 1
0
        public void PlayPauseButton_ProfileChanged_ListensForProfileChanges()
        {
            var first = new UserProfile()
            {
                PlayPauseButton = new PlayPauseButton()
                {
                    Height = 1
                }
            };
            var second = new UserProfile()
            {
                PlayPauseButton = new PlayPauseButton()
                {
                    Height = 2
                }
            };

            _appSettings.SetupSequence(m => m.CurrentProfile)
            .Returns(first)
            .Returns(second);

            var  vm     = new PlayPauseButtonViewModel(_appSettings.Object, _dialog.Object, _session.Object, _messageBus.Object);
            bool raised = false;

            vm.PropertyChanged += (_, __) => raised = true;

            Assert.Equal(first.PlayPauseButton.Height, vm.Height);
            _appSettings.Raise(m => m.ProfileChanged += null, EventArgs.Empty);

            Assert.False(vm.IsEditing);
            Assert.True(raised);
            Assert.Equal(second.PlayPauseButton.Height, vm.Height);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ViewModelContainer"/> class.
 /// </summary>
 /// <param name="generalSettingsViewModel">Audioband view model.</param>
 /// <param name="albumArtPopupViewModel">Album art popup view model.</param>
 /// <param name="albumArtViewModel">Album art view model.</param>
 /// <param name="customLabelsViewModel">Custom labels view model.</param>
 /// <param name="nextButtonViewModel">Next button view model.</param>
 /// <param name="playPauseButtonViewModel">Play pause button view model.</param>
 /// <param name="repeatModeButtonViewModel">Repeat mode button view model.</param>
 /// <param name="shuffleModeButtonViewModel">Shuffle mode button view model.</param>
 /// <param name="previousButtonViewModel">Previous button view model.</param>
 /// <param name="progressBarViewModel">Progress bar view model.</param>
 /// <param name="audioSourceSettingsViewModel">Audio source settings view model.</param>
 public ViewModelContainer(
     GeneralSettingsViewModel generalSettingsViewModel,
     AlbumArtPopupViewModel albumArtPopupViewModel,
     AlbumArtViewModel albumArtViewModel,
     CustomLabelsViewModel customLabelsViewModel,
     NextButtonViewModel nextButtonViewModel,
     PlayPauseButtonViewModel playPauseButtonViewModel,
     RepeatModeButtonViewModel repeatModeButtonViewModel,
     ShuffleModeButtonViewModel shuffleModeButtonViewModel,
     PreviousButtonViewModel previousButtonViewModel,
     ProgressBarViewModel progressBarViewModel,
     AudioSourceSettingsViewModel audioSourceSettingsViewModel)
 {
     GeneralSettingsViewModel     = generalSettingsViewModel;
     AlbumArtPopupViewModel       = albumArtPopupViewModel;
     AlbumArtViewModel            = albumArtViewModel;
     CustomLabelsViewModel        = customLabelsViewModel;
     NextButtonViewModel          = nextButtonViewModel;
     PlayPauseButtonViewModel     = playPauseButtonViewModel;
     RepeatModeButtonViewModel    = repeatModeButtonViewModel;
     ShuffleModeButtonViewModel   = shuffleModeButtonViewModel;
     PreviousButtonViewModel      = previousButtonViewModel;
     ProgressBarViewModel         = progressBarViewModel;
     AudioSourceSettingsViewModel = audioSourceSettingsViewModel;
 }
Ejemplo n.º 3
0
        public async Task PlayPauseButton_PlayAndPauseCommandExecuted_AudioSourceIsNotified()
        {
            _appSettings.SetupGet(m => m.CurrentProfile).Returns(new UserProfile()
            {
                PlayPauseButton = new PlayPauseButton()
            });
            var audioSourceMock   = new Mock <IInternalAudioSource>();
            var isPlayingSequence = new[] { true, false };
            var index             = 0;

            audioSourceMock.Setup(m => m.PlayTrackAsync())
            .Callback(() => Assert.True(isPlayingSequence[index++]))
            .Returns(Task.CompletedTask);
            audioSourceMock.Setup(m => m.PauseTrackAsync())
            .Callback(() => Assert.False(isPlayingSequence[index++]))
            .Returns(Task.CompletedTask);

            _session.SetupGet(m => m.CurrentAudioSource).Returns(audioSourceMock.Object);
            _session.SetupSequence(m => m.IsPlaying).Returns(true).Returns(false);

            var viewModel = new PlayPauseButtonViewModel(_appSettings.Object, _dialog.Object, _session.Object, _messageBus.Object);
            await viewModel.PlayPauseTrackCommand.ExecuteAsync(null);

            _session.Raise(m => m.PropertyChanged         += null, null, new PropertyChangedEventArgs(nameof(IAudioSession.IsPlaying)));
            audioSourceMock.Raise(m => m.IsPlayingChanged += null, null, true);
            await viewModel.PlayPauseTrackCommand.ExecuteAsync(null);
        }
Ejemplo n.º 4
0
        public PlayPauseButton()
        {
            InitializeComponent();
            var viewModel = new PlayPauseButtonViewModel();

            DataContext = viewModel;
            ViewModel   = (PlayPauseButtonViewModel)(DataContext);
        }
Ejemplo n.º 5
0
        public void PlayPauseButtonListensToAudioSource()
        {
            _appSettings.SetupGet(m => m.PlayPauseButton).Returns(new PlayPauseButton());
            _session.SetupSequence(m => m.IsPlaying).Returns(true).Returns(false);
            var viewModel = new PlayPauseButtonViewModel(_appSettings.Object, _dialog.Object, _session.Object, _messageBus.Object);

            _session.Raise(m => m.PropertyChanged += null, null, new PropertyChangedEventArgs(nameof(IAudioSession.IsPlaying)));
            Assert.IsTrue(viewModel.IsPlaying);
            Assert.IsFalse(viewModel.IsPlayButtonShown);

            _session.Raise(m => m.PropertyChanged += null, null, new PropertyChangedEventArgs(nameof(IAudioSession.IsPlaying)));
            Assert.IsFalse(viewModel.IsPlaying);
            Assert.IsTrue(viewModel.IsPlayButtonShown);
        }
Ejemplo n.º 6
0
        public void PlayPauseButton_AudioSessionPlayStateChanged_ListensToEvent()
        {
            _appSettings.SetupGet(m => m.CurrentProfile).Returns(new UserProfile()
            {
                PlayPauseButton = new PlayPauseButton()
            });
            _session.SetupSequence(m => m.IsPlaying).Returns(true).Returns(false);
            var viewModel = new PlayPauseButtonViewModel(_appSettings.Object, _dialog.Object, _session.Object, _messageBus.Object);

            _session.Raise(m => m.PropertyChanged += null, null, new PropertyChangedEventArgs(nameof(IAudioSession.IsPlaying)));
            Assert.True(viewModel.IsPlaying);
            Assert.False(viewModel.IsPlayButtonShown);

            _session.Raise(m => m.PropertyChanged += null, null, new PropertyChangedEventArgs(nameof(IAudioSession.IsPlaying)));
            Assert.False(viewModel.IsPlaying);
            Assert.True(viewModel.IsPlayButtonShown);
        }
Ejemplo n.º 7
0
        public void PlayPauseButtonMarkedAsEditingWhenContentIsEdited()
        {
            _appSettings.SetupGet(m => m.PlayPauseButton).Returns(new PlayPauseButton());
            var viewModel = new PlayPauseButtonViewModel(_appSettings.Object, _dialog.Object, _session.Object, _messageBus.Object);

            viewModel.PlayContent.Text = "";
            Assert.IsTrue(viewModel.PlayContent.IsEditing);
            Assert.IsTrue(viewModel.IsEditing);

            viewModel.EndEdit();
            Assert.IsFalse(viewModel.IsEditing);
            Assert.IsFalse(viewModel.PlayContent.IsEditing);

            viewModel.PauseContent.Text = "";
            Assert.IsTrue(viewModel.IsEditing);
            Assert.IsTrue(viewModel.PauseContent.IsEditing);
        }
Ejemplo n.º 8
0
        public void PlayPauseButton_PropertiesInContentAreChanged_ViewModelIsMarkedAsEditing()
        {
            _appSettings.SetupGet(m => m.PlayPauseButton).Returns(new PlayPauseButton());
            var viewModel = new PlayPauseButtonViewModel(_appSettings.Object, _dialog.Object, _session.Object, _messageBus.Object);

            viewModel.PlayContent.Text = "";
            Assert.True(viewModel.PlayContent.IsEditing);
            Assert.True(viewModel.IsEditing);

            viewModel.EndEdit();
            Assert.False(viewModel.IsEditing);
            Assert.False(viewModel.PlayContent.IsEditing);

            viewModel.PauseContent.Text = "";
            Assert.True(viewModel.IsEditing);
            Assert.True(viewModel.PauseContent.IsEditing);
        }