public void ShouldRoundTripRatingsValues() { for (double s = 0.0; s <= 5.0; s += 0.5) { uint r = TrackRating.FiveStarRatingToRaw(s); double ns = TrackRating.RawRatingToFiveStar(r); Assert.Equal(s, ns); } for (double p = 0.0; p <= 1.0; p = Math.Round(p + 0.01, 2)) { uint r = TrackRating.PercentRatingToRaw(p); double np = TrackRating.RawRatingToPercent(r); Assert.Equal(p, np); } }
void ShouldMergeDefaultAndSuppliedRatings() { var defaultRating = TrackRating.FiveStarRatingToRaw(4.0); var parser = new DanceInfoTagParser(defaultRating, DanceCategories.None, "WC [email protected]", "Foxtrot", "Smooth", "[email protected]", "Swing"); var tdis = parser.GetTagDanceInfo().ToList(); Assert.Equal(4, tdis.Count); var foxtrots = tdis.Where((t) => t.Dance == Dances.Foxtrot); var smooth = foxtrots.Single((t) => (t.Categories & DanceCategories.Smooth) != DanceCategories.None); var social = foxtrots.Single((t) => (t.Categories & DanceCategories.Social) != DanceCategories.None); Assert.Equal(defaultRating, smooth.RawRating); Assert.Equal(3.5, social.FiveStarRating); var swings = tdis.Where((t) => t.Dance == Dances.WestCoastSwing); var swing = swings.Single((t) => (t.Categories & DanceCategories.Swing) != DanceCategories.None); social = swings.Single((t) => (t.Categories & DanceCategories.Social) != DanceCategories.None); Assert.Equal(4.5, swing.FiveStarRating); Assert.Equal(3.5, social.FiveStarRating); }
public void ShouldFilterByRating() { var library = SampleData.GetTestLibrary(); foreach (var rating in SampleData.ExpectedTracksByRating.Keys) { var filter = new TrackDanceFilter() { MinRating = TrackRating.FiveStarRatingToRaw(rating), MaxRating = TrackRating.FiveStarRatingToRaw(5.0), IncludeTracksWithNoRating = false }; var tracks = filter.Apply(library.Tracks); Assert.Equal(SampleData.ExpectedTracksByRating[rating], tracks.Count()); foreach (var track in tracks) { Assert.NotNull(track.Rating); Assert.True(track.Rating.FiveStarRating >= rating); } } }
private void TrackRatingView_Show( long theTrackID, TrackRating theTrackRating) { // Instantiate an instance TrackRatingView theView = new TrackRatingView(); theView.buttonOK.Click += new EventHandler(TrackRatingView_buttonOK_Click); theView.TrackID = theTrackID; switch (theTrackRating) { case TrackRating.OneStar: theView.radio1Star.Checked = true; break; case TrackRating.TwoStar: theView.radio2Star.Checked = true; break; case TrackRating.ThreeStar: theView.radio3Star.Checked = true; break; case TrackRating.FourStar: theView.radio4star.Checked = true; break; case TrackRating.FiveStar: theView.radio5star.Checked = true; break; default: theView.radioUnrated.Checked = true; break; } // Show the form theView.ShowDialog(this._MainView); }
/// <summary> /// Toggles the user rating of this track. /// </summary> /// <returns>The new track rating.</returns> /// <seealso cref="Rating"/> /// <seealso cref="RatingChanged"/> public TrackRating ToggleRating() { if (CanRate) { switch (rating) { case TrackRating.Unrated: rating = TrackRating.Like; break; case TrackRating.Like: rating = TrackRating.DontLike; break; case TrackRating.DontLike: rating = TrackRating.Unrated; break; } Application.DeferredInvoke(new DeferredInvokeHandler(delegate(object sender) { ZuneTrack.UserRating = (int)rating; }), DeferredInvokePriority.Normal); if (RatingChanged != null) RatingChanged(this, EventArgs.Empty); } return rating; }
/// <summary> /// Handles the RatingChanged event of the CurrentTrack. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void CurrentTrack_RatingChanged(object sender, EventArgs e) { // only fire if the rating has changed if (TrackRatingChanged != null && CurrentTrack.Rating != lastTrackRating) { TrackRatingChanged(this, EventArgs.Empty); lastTrackRating = CurrentTrack.Rating; } }
public static void UpdateTrackRating( FileInfo theDatabaseFileInfo, long theTrackID, TrackRating theTrackRating) { using (SQLiteConnection theConnection = new SQLiteConnection( DatabaseLayer.ToConnectionString(theDatabaseFileInfo))) { try { theConnection.Open(); using (SQLiteCommand theCommand = theConnection.CreateCommand()) { theCommand.CommandText = "UPDATE [Tracks] " + "SET [Rating] = ? " + "WHERE [ID] = ?"; SQLiteParameter theRatingParameter = theCommand.CreateParameter(); theCommand.Parameters.Add(theRatingParameter); SQLiteParameter theTrackIDParameter = theCommand.CreateParameter(); theCommand.Parameters.Add(theTrackIDParameter); theRatingParameter.Value = (int)theTrackRating; theTrackIDParameter.Value = theTrackID; theCommand.ExecuteNonQuery(); } } finally { theConnection.Close(); } } }