public void TestMediaEngineService ()
{
AssertTransition (null, () => service.Volume = 5, PlayerEvent.Volume);
for (int i = 0; i < 3; i++) {
WaitFor (PlayerState.Idle);
// Assert the default, just-started-up idle state
Assert.IsFalse (service.IsPlaying ());
Assert.AreEqual (null, service.CurrentTrack);
Assert.AreEqual (null, service.CurrentSafeUri);
LoadAndPlay ("A_boy.ogg");
Assert.AreEqual (0, service.CurrentTrack.PlayCount);
for (int j = 0; j < 4; j++) {
AssertTransition (() => service.Pause (), PlayerState.Paused);
AssertTransition (() => service.Play (), PlayerState.Playing);
Assert.IsTrue (service.IsPlaying ());
Thread.Sleep ((int) (rand.NextDouble () * 100));
}
AssertTransition (() => service.Position = service.Length - 200, PlayerEvent.Seek);
WaitFor (PlayerState.Idle, PlayerEvent.EndOfStream);
Assert.AreEqual (1, service.CurrentTrack.PlayCount);
service.Close (true);
}
play_when_idles = 0;
Assert.AreEqual (PlayerState.Idle, service.CurrentState);
service.Play ();
Thread.Sleep (50);
Assert.AreEqual (1, play_when_idles);
Assert.AreEqual (PlayerState.Idle, service.CurrentState);
LoadAndPlay ("A_boy.ogg");
AssertTransition (() => service.TrackInfoUpdated (), PlayerEvent.TrackInfoUpdated);
LoadAndPlay ("A_girl.ogg");
AssertTransition (() => service.TrackInfoUpdated (), PlayerEvent.TrackInfoUpdated);
AssertTransition (() => service.Dispose (), PlayerState.Paused, PlayerState.Idle);
}