public async Task StopsCurrentMediaPlayerWhenSwitchingAndPlaying()
        {
            var audioPlayer = new AudioPlayer();

            var oldMediaPlayer = Substitute.For<IMediaPlayerCallback>();
            var newMediaPlayer = Substitute.For<IMediaPlayerCallback>();

            audioPlayer.RegisterAudioPlayerCallback(oldMediaPlayer);

            var song = Helpers.SetupSongMock();

            await audioPlayer.LoadAsync(song);
            await audioPlayer.PlayAsync();

            audioPlayer.RegisterAudioPlayerCallback(newMediaPlayer);

            var song2 = Helpers.SetupSongMock();

            await audioPlayer.LoadAsync(song2);
            await audioPlayer.PlayAsync();

            oldMediaPlayer.Received(1).StopAsync();
        }
            public async Task StopsCurrentPlayback()
            {
                var audioPlayer = new AudioPlayer();

                var states = audioPlayer.PlaybackState.CreateCollection();

                var mediaPlayer = Substitute.For<IMediaPlayerCallback>();
                mediaPlayer.Finished.Returns(Observable.Never<Unit>());
                audioPlayer.RegisterAudioPlayerCallback(mediaPlayer);

                await audioPlayer.LoadAsync(Helpers.SetupSongMock());
                await audioPlayer.PlayAsync();

                await audioPlayer.LoadAsync(Helpers.SetupSongMock());

                Assert.Equal(new[] { AudioPlayerState.None, AudioPlayerState.Stopped, AudioPlayerState.Playing, AudioPlayerState.Stopped }, states);
            }