public void SelectsValidReleasesWithTracks()
        {
            string           fileWithValues  = "data/releases-artist-2pac.json";
            var              values          = TestHelper.GetFileData(fileWithValues);
            var              deserializeJson = new DeserializeJson <ReleaseResults>();
            var              releaseResults  = deserializeJson.Deserialize(values);
            MusicStatService sut             = new MusicStatService();
            MusicInterpretor sut2            = new MusicInterpretor(sut);
            List <Release>   Releases        = new List <Release>();

            for (int i = 0; i < releaseResults.Releases.Count; i++)
            {
                CommandFactory commandFactory = new GetTracksByReleaseIDFactory(releaseResults.Releases[i], sut);
                Command        command        = commandFactory.GetCommand();
                Task           t = command.ExecuteAsync();
                t.ContinueWith(task =>
                {
                    if (task.Status == TaskStatus.RanToCompletion)
                    {
                        GetTracksByReleaseID getTracksByReleaseID = (GetTracksByReleaseID)command;//doesn't filter non-unique tracks
                        Releases.Add(getTracksByReleaseID.Release);
                    }
                    else
                    {
                        Assert.False(true);
                    }
                });
            }
            var totalTracks = Releases.Where(x => (x != null && x.Media != null)).SelectMany(x => x.Media).SelectMany(x => x.Tracks).ToList();

            Assert.Equal(13, Releases.Count);
            Assert.True(totalTracks.Count > 0);//why are we gettin random tracks back?
        }
        public void getsAndCalculatesAverageWords(IMusicStatService service, string artistName)
        {
            MusicInterpretor sut    = new MusicInterpretor(service);
            Artist           artist = sut.PickArtist(artistName);
            var average             = sut.calculateArtistStats(artist);

            Assert.True(average.AverageWords > 0);
        }
        public void SelectsValidArtist()
        {
            //TODO: avoids picking an artist with no releases
            //Picks most releases if duplicates exist or
            //if no duplicates exist and
            //the first match has no releases
            MusicInterpretor sut = new MusicInterpretor(new MusicStatService());
            var artist           = sut.PickArtist("Tupac Shakur");

            Assert.False(artist == null);
            Assert.False(artist.Releases.Length == 0);
        }
        public void SelectsValidReleasesWithTracksWithMultiThread()
        {
            MusicStatService sut      = new MusicStatService();
            MusicInterpretor sut2     = new MusicInterpretor(sut);
            List <Release>   Releases = new List <Release>();

            /*
             *          CommandFactory commandFactory = new GetReleasesByArtistsIDFactory("382f1005-e9ab-4684-afd4-0bdae4ee37f2", sut);
             *          Command command = commandFactory.GetCommand();
             *          command.ExecuteAsync().Wait();
             *          GetReleasesByArtistsID getTracksByReleaseID = (GetReleasesByArtistsID)command;//doesn't filter non-unique tracks
             *          Releases = getTracksByReleaseID.ReleaseResults.Releases;
             *
             *          var totalTracks = Releases.Where(x => (x != null && x.Media != null)).SelectMany(x => x.Media).SelectMany(x => x.Tracks).ToList();
             *
             *          Assert.Equal(14, Releases.Count);
             *          Assert.True(totalTracks.Count > 0);//why are we gettin random tracks back?
             */
        }
        public void FiltersDuplicateTracksFromReleases(IMusicStatService service, string artistName)
        {
            MusicInterpretor sut      = new MusicInterpretor(service);
            var          artist       = sut.PickArtist(artistName);
            var          releases     = new List <Release>(artist.Releases);
            List <Track> uniqueTracks = releases.SelectMany(x => x.Media[0].Tracks).ToList();

            //??

            for (int i = 0; i < releases.Count; i++)
            {
            }

            /*for (int i = 0; i < rawTracks.Count; i++)
             * {
             *  Track verification = uniqueTracks.Find(x => x.Title == rawTracks[i].Title);
             *  Assert.NotNull(verification);
             * }*/
        }