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);
}