示例#1
0
        public async Task ShuffleTest()
        {
            var res1 = await Tracklist.Clear();

            Assert.True(res1);

            var res2 = await Library.Search(
                queryArtist : "Air Supply",
                queryAlbum : "Strangers In Love"
                );

            Assert.True(res2.Succeeded);
            Assert.True(1 <= res2.Result.Length);
            Assert.True(1 <= res2.Result.First().Tracks.Length);
            var uris = res2.Result.First().Tracks
                       .OrderBy(e => e.TrackNo)
                       .Select(e => e.Uri)
                       .ToArray();

            var res3 = await Tracklist.Add(uris);

            Assert.True(res3.Succeeded);

            var ordered = new Dictionary <int, string>()
            {
                { 0, uris[0] },
                { 1, uris[1] },
                { 2, uris[2] },
                { 3, uris[3] },
                { 4, uris[4] },
                { 10, uris[10] }
            };
            var unordered = new Dictionary <int, string>()
            {
                { 5, uris[5] },
                { 6, uris[6] },
                { 7, uris[7] },
                { 8, uris[8] },
                { 9, uris[9] },
            };
            var res4 = await Tracklist.Shuffle(5, 10);

            Assert.True(res4);

            var res5 = await Tracklist.GetTlTracks();

            Assert.True(res5.Succeeded);
            Assert.Equal(uris.Length, res5.Result.Length);

            foreach (var pair in ordered)
            {
                Assert.Equal(ordered[pair.Key], res5.Result[pair.Key].Track.Uri);
            }

            var shuffled = false;

            foreach (var pair in unordered)
            {
                if (pair.Value != res5.Result[pair.Key].Track.Uri)
                {
                    shuffled = true;
                    break;
                }
            }
            Assert.True(shuffled);
        }