Ejemplo n.º 1
0
        public void PlayAllAndSelected()
        {
            controller.Run();
            Assert.IsTrue(viewModel.PlayerService.PlayAllCommand.CanExecute(null));
            Assert.IsFalse(viewModel.PlayerService.PlaySelectedCommand.CanExecute(null));

            // Select first music file
            AssertHelper.CanExecuteChangedEvent(viewModel.PlayerService.PlaySelectedCommand,
                                                () => selectionService.SelectedMusicFiles.Add(selectionService.MusicFiles[0]));
            Assert.IsTrue(viewModel.PlayerService.PlaySelectedCommand.CanExecute(null));

            // Insert a dummy playlist item which will be replaced by Play
            playlistManager.AddAndReplaceItems(new[] { new PlaylistItem(MockMusicFile.CreateEmpty("empty.mp3")) });
            Assert.AreEqual(1, playlistManager.Items.Count);

            // Play all
            var playerService = Container.GetExportedValue <PlayerService>();

            playerService.IsPlayCommand = true;
            bool playPauseCommandCalled = false;

            playerService.PlayPauseCommand = new DelegateCommand(() => playPauseCommandCalled = true);

            bool showPlaylistViewCalled = false;

            shellService.ShowPlaylistViewAction = () => showPlaylistViewCalled = true;

            viewModel.PlayerService.PlayAllCommand.Execute(null);
            Assert.IsTrue(playPauseCommandCalled);
            Assert.IsTrue(showPlaylistViewCalled);
            AssertHelper.SequenceEqual(musicFiles, playlistManager.Items.Select(x => x.MusicFile));
            Assert.AreEqual(musicFiles.First(), playlistManager.CurrentItem.MusicFile);
        }
Ejemplo n.º 2
0
        public void LaodAndSaveSettings()
        {
            var environmentService = Container.GetExportedValue <MockEnvironmentService>();

            environmentService.AppSettingsPath = Environment.CurrentDirectory;

            controller.Initialize();
            controller.Run();

            var playerController = Container.GetExportedValue <PlayerController>();

            shellService.Settings.Height = 42;
            playerController.PlaylistManager.CurrentItem = new PlaylistItem(MockMusicFile.CreateEmpty("Test"));

            controller.Shutdown();

            shellService.Settings.Height = 0;
            playerController.PlaylistSettings.LastPlayedFileName = null;

            controller.Initialize();
            controller.Run();

            Assert.AreEqual(42, shellService.Settings.Height);
            Assert.AreEqual("Test", playerController.PlaylistSettings.LastPlayedFileName);

            File.Delete(Path.Combine(environmentService.AppSettingsPath, "Settings.xml"));
            File.Delete(Path.Combine(environmentService.AppSettingsPath, "Playlist.xml"));
        }
Ejemplo n.º 3
0
        public void AutoFillFromFileNameTest()
        {
            var viewModel = Container.GetExportedValue <MusicPropertiesViewModel>();

            Assert.IsFalse(viewModel.AutoFillFromFileNameCommand.CanExecute(null));

            var musicFile = MockMusicFile.CreateEmpty(@"C:\Users\Public\Music\Dancefloor\Culture Beat - Serenity.mp3");

            viewModel.MusicFile = musicFile;

            Assert.IsTrue(viewModel.AutoFillFromFileNameCommand.CanExecute(null));
            viewModel.AutoFillFromFileNameCommand.Execute(null);
            Assert.AreEqual("Culture Beat", musicFile.Metadata.Artists.First());
            Assert.AreEqual("Serenity", musicFile.Metadata.Title);
            Assert.IsFalse(viewModel.AutoFillFromFileNameCommand.CanExecute(null));

            musicFile           = MockMusicFile.CreateEmpty(@"\\server\share\Culture Beat Serenity.wma");
            viewModel.MusicFile = musicFile;
            viewModel.AutoFillFromFileNameCommand.Execute(null);
            Assert.IsFalse(musicFile.Metadata.Artists.Any());
            Assert.AreEqual("Culture Beat Serenity", musicFile.Metadata.Title);

            musicFile           = MockMusicFile.CreateEmpty(@"C:\Culture Beat - Serenity - Epilog.wma");
            viewModel.MusicFile = musicFile;
            viewModel.AutoFillFromFileNameCommand.Execute(null);
            Assert.AreEqual("Culture Beat", musicFile.Metadata.Artists.First());
            Assert.AreEqual("Serenity - Epilog", musicFile.Metadata.Title);

            // CanExecute returns false when metadata are not supported.
            musicFile           = new MockMusicFile(MusicMetadata.CreateUnsupported(TimeSpan.FromSeconds(55), 1411000), @"C:\Test.wav");
            viewModel.MusicFile = musicFile;
            Assert.IsFalse(viewModel.AutoFillFromFileNameCommand.CanExecute(null));
        }
Ejemplo n.º 4
0
 public MusicFile Create(string fileName)
 {
     if (!musicFilesCache.TryGetValue(fileName, out MusicFile musicFile))
     {
         musicFile = MockMusicFile.CreateEmpty(fileName);
         musicFilesCache.Add(fileName, musicFile);
     }
     return(musicFile);
 }
        public void ConvertTest()
        {
            var musicFile       = new MockMusicFile(new MusicMetadata(TimeSpan.FromSeconds(20), 0), "");
            var unsupportedFile = new MockMusicFile(MusicMetadata.CreateUnsupported(TimeSpan.FromSeconds(20), 0), "");

            var converter = new MusicPropertiesEnabledConverter();

            Assert.AreEqual(true, converter.Convert(new object[] { musicFile, true }, null, null, null));
            Assert.AreEqual(false, converter.Convert(new object[] { unsupportedFile, true }, null, null, null));

            AssertHelper.ExpectedException <NotSupportedException>(() => converter.ConvertBack(null, null, null, null));
        }
Ejemplo n.º 6
0
        public void SearchTextTest()
        {
            var          viewModel          = Container.GetExportedValue <PlaylistViewModel>();
            var          view               = Container.GetExportedValue <MockPlaylistView>();
            PlaylistItem scrollIntoViewItem = null;

            view.ScrollIntoViewStub = x => scrollIntoViewItem = x;
            bool focusSearchBoxCalled = false;

            view.FocusSearchBoxStub = () => focusSearchBoxCalled = true;

            var musicFiles = new[]
            {
                MockMusicFile.CreateEmpty(@"C:\Users\Public\Music\Dancefloor\Culture Beat - Serenity.wav"),
                MockMusicFile.CreateEmpty(@"C:\Future Breeze - Why don't you dance with me.mp3"),
                MockMusicFile.CreateEmpty(@"C:\Culture Beat - Serenity - Epilog.wma"),
            };
            var playlistManager = new PlaylistManager();

            playlistManager.AddAndReplaceItems(musicFiles.Select(x => new PlaylistItem(x)));
            viewModel.PlaylistManager = playlistManager;

            viewModel.SearchText = "Bill";
            Assert.IsNull(viewModel.SelectedPlaylistItem);
            Assert.IsNull(scrollIntoViewItem);
            Assert.IsTrue(focusSearchBoxCalled);

            viewModel.SearchText = "Cul";
            Assert.AreEqual(playlistManager.Items[0], viewModel.SelectedPlaylistItem);
            Assert.AreEqual(playlistManager.Items[0], scrollIntoViewItem);

            // Selection stays on the same item
            viewModel.SearchText = "Cultur";
            Assert.AreEqual(playlistManager.Items[0], viewModel.SelectedPlaylistItem);
            Assert.AreEqual(playlistManager.Items[0], scrollIntoViewItem);

            viewModel.SearchText = "Epi";
            Assert.AreEqual(playlistManager.Items[2], viewModel.SelectedPlaylistItem);
            Assert.AreEqual(playlistManager.Items[2], scrollIntoViewItem);

            // Selection stays on the same item
            scrollIntoViewItem   = null;
            viewModel.SearchText = "";
            Assert.AreEqual(playlistManager.Items[2], viewModel.SelectedPlaylistItem);
            Assert.IsNull(scrollIntoViewItem);

            viewModel.SelectedPlaylistItem = playlistManager.Items[1];

            // Search starts from selection
            viewModel.SearchText = "Cul";
            Assert.AreEqual(playlistManager.Items[2], viewModel.SelectedPlaylistItem);
            Assert.AreEqual(playlistManager.Items[2], scrollIntoViewItem);
        }
Ejemplo n.º 7
0
        public void TranscodeStatusTest()
        {
            var musicFile = new MockMusicFile(new MusicMetadata(TimeSpan.FromSeconds(33), 320), "TestFile.wma");
            var item      = new TranscodeItem(musicFile, "TestFile.mp3");

            Assert.AreEqual(TranscodeStatus.Pending, item.TranscodeStatus);

            AssertHelper.PropertyChangedEvent(item, x => x.TranscodeStatus, () => item.Progress = 0.01);
            Assert.AreEqual(TranscodeStatus.InProgress, item.TranscodeStatus);

            AssertHelper.PropertyChangedEvent(item, x => x.TranscodeStatus, () => item.Progress = 1);
            Assert.AreEqual(TranscodeStatus.Completed, item.TranscodeStatus);

            AssertHelper.PropertyChangedEvent(item, x => x.TranscodeStatus, () => item.Error = new InvalidOperationException());
            Assert.AreEqual(TranscodeStatus.Error, item.TranscodeStatus);
        }
Ejemplo n.º 8
0
        public void PropertiesTest()
        {
            var musicFile = new MockMusicFile(new MusicMetadata(TimeSpan.FromSeconds(33), 320), "TestFile.wma");
            var item      = new TranscodeItem(musicFile, "TestFile.mp3");

            Assert.AreEqual(musicFile, item.Source);
            Assert.AreEqual("TestFile.mp3", item.DestinationFileName);

            Assert.AreEqual(0, item.Progress);
            AssertHelper.PropertyChangedEvent(item, x => x.Progress, () => item.Progress = 0.5);
            Assert.AreEqual(0.5, item.Progress);

            Assert.IsNull(item.Error);
            var exception = new InvalidOperationException("Test");

            AssertHelper.PropertyChangedEvent(item, x => x.Error, () => item.Error = exception);
            Assert.AreEqual(exception, item.Error);
        }
Ejemplo n.º 9
0
        public void RaisePropertyChangedTest()
        {
            var ls = CultureInfo.CurrentCulture.TextInfo.ListSeparator;

            var musicFile = new MockMusicFile(new MusicMetadata(new TimeSpan(0, 3, 33), 320)
            {
                Artists = new string[0],
                Title   = ""
            }, @"C:\Users\Public\Music\Dancefloor\Culture Beat - Serenity.mp3");
            var dataModel = new MusicFileDataModel(musicFile);

            Assert.AreEqual("", dataModel.ArtistsString);

            AssertHelper.PropertyChangedEvent(dataModel, x => x.ArtistsString, () => musicFile.Metadata.Artists = new[] { "Culture Beat" });
            Assert.AreEqual("Culture Beat", dataModel.ArtistsString);

            AssertHelper.PropertyChangedEvent(dataModel, x => x.ArtistsString, () => musicFile.Metadata.Artists = new[] { "Culture Beat", "Second artist" });
            Assert.AreEqual("Culture Beat" + ls + " Second artist", dataModel.ArtistsString);
        }
Ejemplo n.º 10
0
        public void CopyFileNameToClipboardTest()
        {
            var clipboardService = Container.GetExportedValue <MockClipboardService>();
            var viewModel        = Container.GetExportedValue <MusicPropertiesViewModel>();

            string clipboardText = null;

            clipboardService.SetTextAction = txt => clipboardText = txt;

            viewModel.CopyFileNameCommand.Execute(null);
            Assert.IsNull(clipboardText);

            var musicFile = MockMusicFile.CreateEmpty(@"C:\Users\Public\Music\Dancefloor\Culture Beat - Serenity.mp3");

            viewModel.MusicFile = musicFile;

            viewModel.CopyFileNameCommand.Execute(null);
            Assert.AreEqual("Culture Beat - Serenity", clipboardText);
        }
Ejemplo n.º 11
0
        public void UpdateAutoFillFromFileNameTestCommand()
        {
            var viewModel = Container.GetExportedValue <MusicPropertiesViewModel>();

            Assert.IsFalse(viewModel.AutoFillFromFileNameCommand.CanExecute(null));

            var musicFile = MockMusicFile.CreateEmpty(@"C:\Users\Public\Music\Dancefloor\Culture Beat - Serenity.mp3");

            viewModel.MusicFile = musicFile;
            Assert.IsTrue(viewModel.AutoFillFromFileNameCommand.CanExecute(null));

            AssertHelper.CanExecuteChangedEvent(viewModel.AutoFillFromFileNameCommand, () => musicFile.Metadata.Title = "Serenity");
            Assert.IsFalse(viewModel.AutoFillFromFileNameCommand.CanExecute(null));

            AssertHelper.CanExecuteChangedEvent(viewModel.AutoFillFromFileNameCommand, () => musicFile.Metadata.Title = "");
            Assert.IsTrue(viewModel.AutoFillFromFileNameCommand.CanExecute(null));

            AssertHelper.CanExecuteChangedEvent(viewModel.AutoFillFromFileNameCommand, () => musicFile.Metadata.Artists = new[] { "Culture Beat" });
            Assert.IsFalse(viewModel.AutoFillFromFileNameCommand.CanExecute(null));
        }
Ejemplo n.º 12
0
        public void AddRemoveTranscodeItemsTest()
        {
            var musicFile1 = new MockMusicFile(new MusicMetadata(TimeSpan.FromSeconds(33), 320), "TestFile1.wma");
            var musicFile2 = new MockMusicFile(new MusicMetadata(TimeSpan.FromSeconds(33), 320), "TestFile2.wma");
            var item1      = new TranscodeItem(musicFile1, "TestFile1.mp3");
            var item2      = new TranscodeItem(musicFile1, "TestFile2.mp3");

            var manager = new TranscodingManager();

            Assert.IsFalse(manager.TranscodeItems.Any());

            manager.AddTranscodeItem(item1);
            manager.AddTranscodeItem(item2);

            Assert.IsTrue(new[] { item1, item2 }.SequenceEqual(manager.TranscodeItems));

            manager.RemoveTranscodeItem(item1);

            Assert.AreEqual(item2, manager.TranscodeItems.Single());
        }
Ejemplo n.º 13
0
        public void LaodAndSaveSettings()
        {
            var appSettings      = new AppSettings();
            var playlistSettings = new PlaylistSettings();
            var settingsService  = Container.GetExportedValue <MockSettingsService>();

            settingsService.GetStub = type =>
            {
                if (type == typeof(AppSettings))
                {
                    return(appSettings);
                }
                if (type == typeof(PlaylistSettings))
                {
                    return(playlistSettings);
                }
                return(null);
            };

            controller.Initialize();
            controller.Run();

            var playerController = Container.GetExportedValue <PlayerController>();

            shellService.Settings.Height = 42;
            playerController.PlaylistManager.CurrentItem = new PlaylistItem(MockMusicFile.CreateEmpty("Test"));

            controller.Shutdown();


            shellService.Settings             = null;
            playerController.PlaylistSettings = null;

            controller.Initialize();
            controller.Run();

            Assert.AreEqual(42, shellService.Settings.Height);
            Assert.AreEqual("Test", playerController.PlaylistSettings.LastPlayedFileName);
        }
Ejemplo n.º 14
0
        public void SearchNextAndPrevious()
        {
            var viewModel = Container.GetExportedValue <PlaylistViewModel>();
            var view      = Container.GetExportedValue <MockPlaylistView>();

            var musicFiles = new[]
            {
                MockMusicFile.CreateEmpty(@"C:\Culture Beat"),
                MockMusicFile.CreateEmpty(@"C:\Culture Beat"),
                MockMusicFile.CreateEmpty(@"C:\Culture Beat"),
                MockMusicFile.CreateEmpty(@"C:\Foo"),
            };
            var playlistManager = new PlaylistManager();

            playlistManager.AddAndReplaceItems(musicFiles.Select(x => new PlaylistItem(x)));
            viewModel.PlaylistManager = playlistManager;

            viewModel.SearchText = "Culture";
            Assert.AreEqual(playlistManager.Items[0], viewModel.SelectedPlaylistItem);

            viewModel.SearchNextCommand.Execute(null);
            Assert.AreEqual(playlistManager.Items[1], viewModel.SelectedPlaylistItem);

            viewModel.SearchNextCommand.Execute(null);
            Assert.AreEqual(playlistManager.Items[2], viewModel.SelectedPlaylistItem);

            viewModel.SearchNextCommand.Execute(null);
            Assert.AreEqual(playlistManager.Items[0], viewModel.SelectedPlaylistItem);

            viewModel.SearchPreviousCommand.Execute(null);
            Assert.AreEqual(playlistManager.Items[2], viewModel.SelectedPlaylistItem);

            viewModel.SearchPreviousCommand.Execute(null);
            Assert.AreEqual(playlistManager.Items[1], viewModel.SelectedPlaylistItem);

            viewModel.SearchPreviousCommand.Execute(null);
            Assert.AreEqual(playlistManager.Items[0], viewModel.SelectedPlaylistItem);
        }