[Test] // https://bugzilla.gnome.org/show_bug.cgi?id=722731 public void TestThatInvalidTracksShouldNotBecomeCurrentTrack() { var a_valid_track = "A_boy.ogg"; var a_valid_uri = new SafeUri(Paths.Combine(TestsDir, "data", a_valid_track)); var a_track_that_doesnt_exit = "this_does_not_exist_in_the_data_folder.ogg"; var an_invalid_track = new SafeUri(Paths.Combine(TestsDir, "data", a_track_that_doesnt_exit)); TrackInfo current_track = null; WaitUntil(PlayerEvent.Error, () => { service.Open(a_valid_uri); current_track = service.CurrentTrack; Assert.IsNotNull(current_track); Assert.IsTrue(current_track.Uri.AbsolutePath.EndsWith(a_valid_track)); service.SetNextTrack(an_invalid_track); service.Play(); }); WaitUntil(PlayerEvent.StartOfStream, () => { service.Open(a_valid_uri); service.Play(); }); current_track = service.CurrentTrack; Assert.IsNotNull(current_track); var actual_filename = System.IO.Path.GetFileName(SafeUri.UriToFilename(current_track.Uri)); Assert.AreEqual(a_valid_track, actual_filename); }
private void LoadAndPlay(string filename) { track_intercepts = 0; var uri = new SafeUri(Paths.Combine(TestsDir, "data", filename)); var states = service.IsPlaying() ? new object [] { PlayerState.Paused, PlayerState.Idle, PlayerState.Loading } : new object [] { PlayerState.Loading }; //var states = service.IsPlaying () ? new object [] { PlayerState.Paused, PlayerState.Loading } : new object [] { PlayerState.Loading }; Log.DebugFormat("LoadAndPlaying {0}", filename); if (rand.NextDouble() > .5) { AssertTransition(() => service.Open(new TrackInfo() { Uri = uri }), states); } else { AssertTransition(() => service.Open(uri), states); } Assert.AreEqual(1, track_intercepts); // Sleep just a bit to ensure we didn't change from Loading Thread.Sleep(30); Assert.AreEqual(PlayerState.Loading, service.CurrentState); // Assert conditions after Opening (but not actually playing) a track Assert.AreEqual(uri, service.CurrentSafeUri); Assert.IsTrue(service.CanPause); Assert.IsTrue(service.IsPlaying()); Assert.IsTrue(service.Position == 0); Assert.IsTrue(service.IsPlaying(service.CurrentTrack)); AssertTransition(() => service.Play(), PlayerState.Loaded, PlayerEvent.StartOfStream, PlayerState.Playing); Assert.IsTrue(service.Length > 0); }