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); }
/// <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; }
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); }
public PlayPauseButton() { InitializeComponent(); var viewModel = new PlayPauseButtonViewModel(); DataContext = viewModel; ViewModel = (PlayPauseButtonViewModel)(DataContext); }
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); }
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); }
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); }
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); }