Open() public method

public Open ( SafeUri uri ) : void
uri Hyena.SafeUri
return void
Beispiel #1
0
        [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);
        }
Beispiel #2
0
        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);
        }