public void TestOD(Mods mods)
        {
            var diffCalc = new DifficultyCalculator();
            var beatmap  = new Beatmap();

            var resultValues = new List <float>();

            for (var i = 10; i >= 0; i--)
            {
                beatmap.OverallDifficulty = i;
                var odResult = diffCalc.ApplyMods(beatmap, mods)["OD"];
                resultValues.Add((float)Math.Round(odResult, 2));
            }
            CollectionAssert.AreEqual(OD_VALUES[mods], resultValues);
        }
        private void InitListView()
        {
            //listview
            ListViewBeatmaps.FullRowSelect            = true;
            ListViewBeatmaps.AllowColumnReorder       = true;
            ListViewBeatmaps.Sorting                  = SortOrder.Descending;
            ListViewBeatmaps.UseHotItem               = true;
            ListViewBeatmaps.UseTranslucentHotItem    = true;
            ListViewBeatmaps.UseFiltering             = true;
            ListViewBeatmaps.UseNotifyPropertyChanged = true;
            ListViewBeatmaps.ShowItemCountOnGroups    = true;
            ListViewBeatmaps.CellEditActivation       = ObjectListView.CellEditActivateMode.DoubleClick;
            var format = "{0:0.##}";

            column_ar.AspectToStringFormat = format;
            column_cs.AspectToStringFormat = format;
            column_od.AspectToStringFormat = format;
            column_hp.AspectToStringFormat = format;

            column_stars.AspectGetter = rowObject =>
            {
                if (rowObject is Beatmap beatmap)
                {
                    return(beatmap.Stars(_currentPlayMode, _currentMods));
                }
                return(null);
            };

            column_ar.AspectGetter = rowObject =>
            {
                if (rowObject is Beatmap beatmap)
                {
                    return(_difficultyCalculator.ApplyMods(beatmap, _currentMods).Ar);
                }
                return(null);
            };
            column_od.AspectGetter = rowObject =>
            {
                if (rowObject is Beatmap beatmap)
                {
                    return(_difficultyCalculator.ApplyMods(beatmap, _currentMods).Od);
                }
                return(null);
            };
            column_cs.AspectGetter = rowObject =>
            {
                if (rowObject is Beatmap beatmap)
                {
                    return(_difficultyCalculator.ApplyMods(beatmap, _currentMods).Cs);
                }
                return(null);
            };
            column_hp.AspectGetter = rowObject =>
            {
                if (rowObject is Beatmap beatmap)
                {
                    return(_difficultyCalculator.ApplyMods(beatmap, _currentMods).Hp);
                }
                return(null);
            };
            LastPlayed.AspectToStringConverter = delegate(object cellValue)
            {
                if (cellValue == null)
                {
                    return("Never");
                }
                var val = (DateTime)cellValue;
                return(val > d ? $"{val}" : "Never");
            };

            var dropsink = new RearrangingDropSink();

            dropsink.CanDropBetween        = false;
            dropsink.CanDropOnItem         = false;
            dropsink.CanDropOnSubItem      = false;
            dropsink.CanDropOnBackground   = true;
            dropsink.ModelDropped         += DropsinkOnModelDropped;
            this.ListViewBeatmaps.DropSink = dropsink;
        }