示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#5
0
文件: Track.cs 项目: quad341/zpd
 /// <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;
 }
示例#6
0
文件: ZuneApi.cs 项目: quad341/zpd
 /// <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();
                }
            }
        }