Exemplo n.º 1
0
        public void TestMod()
        {
            var ruleset = new OsuRuleset();

            var mod1 = new OsuModDoubleTime {
                SpeedChange = { Value = 1.25 }
            };
            var mod2 = new OsuModDoubleTime {
                SpeedChange = { Value = 1.26 }
            };
            var mod3 = new OsuModDoubleTime {
                SpeedChange = { Value = 1.26 }
            };

            var doubleConvertedMod1 = new APIMod(mod1).ToMod(ruleset);
            var doubleConvertedMod2 = new APIMod(mod2).ToMod(ruleset);
            var doubleConvertedMod3 = new APIMod(mod3).ToMod(ruleset);

            Assert.That(mod1, Is.Not.EqualTo(mod2));
            Assert.That(doubleConvertedMod1, Is.Not.EqualTo(doubleConvertedMod2));

            Assert.That(mod2, Is.EqualTo(mod2));
            Assert.That(doubleConvertedMod2, Is.EqualTo(doubleConvertedMod2));

            Assert.That(mod2, Is.EqualTo(mod3));
            Assert.That(doubleConvertedMod2, Is.EqualTo(doubleConvertedMod3));

            Assert.That(mod3, Is.EqualTo(mod2));
            Assert.That(doubleConvertedMod3, Is.EqualTo(doubleConvertedMod2));
        }
Exemplo n.º 2
0
        public void Test()
        {
            var mod1 = new OsuModDoubleTime {
                SpeedChange = { Value = 1.25 }
            };
            var mod2 = new OsuModDoubleTime {
                SpeedChange = { Value = 1.26 }
            };
            var mod3 = new OsuModDoubleTime {
                SpeedChange = { Value = 1.26 }
            };
            var apiMod1 = new APIMod(mod1);
            var apiMod2 = new APIMod(mod2);
            var apiMod3 = new APIMod(mod3);

            Assert.That(mod1, Is.Not.EqualTo(mod2));
            Assert.That(apiMod1, Is.Not.EqualTo(apiMod2));

            Assert.That(mod2, Is.EqualTo(mod2));
            Assert.That(apiMod2, Is.EqualTo(apiMod2));

            Assert.That(mod2, Is.EqualTo(mod3));
            Assert.That(apiMod2, Is.EqualTo(apiMod3));

            Assert.That(mod3, Is.EqualTo(mod2));
            Assert.That(apiMod3, Is.EqualTo(apiMod2));
        }
Exemplo n.º 3
0
        public void TestModSettingsUnboundWhenCopied()
        {
            var original = new OsuModDoubleTime();
            var copy     = (OsuModDoubleTime)original.DeepClone();

            original.SpeedChange.Value = 2;

            Assert.That(original.SpeedChange.Value, Is.EqualTo(2.0));
            Assert.That(copy.SpeedChange.Value, Is.EqualTo(1.5));
        }
Exemplo n.º 4
0
        public void TestAPIModDetachedFromSource()
        {
            var mod = new OsuModDoubleTime {
                SpeedChange = { Value = 1.01 }
            };
            var apiMod = new APIMod(mod);

            mod.SpeedChange.Value = 1.5;

            Assert.That(apiMod.Settings["speed_change"], Is.EqualTo(1.01d));
        }
Exemplo n.º 5
0
        public void TestSpeedChangeCustomisation(double rate)
        {
            var mod = new OsuModDoubleTime {
                SpeedChange = { Value = rate }
            };

            CreateModTest(new ModTestData
            {
                Mod           = mod,
                PassCondition = () => Player.ScoreProcessor.JudgedHits >= 2 &&
                                Precision.AlmostEquals(Player.GameplayClockContainer.GameplayClock.Rate, mod.SpeedChange.Value)
            });
        }
Exemplo n.º 6
0
        public void TestModSettingsUnboundWhenCopied()
        {
            OsuModDoubleTime original = null;
            OsuModDoubleTime copy     = null;

            AddStep("create mods", () =>
            {
                original = new OsuModDoubleTime();
                copy     = (OsuModDoubleTime)original.CreateCopy();
            });

            AddStep("change property", () => original.SpeedChange.Value = 2);

            AddAssert("original has new value", () => Precision.AlmostEquals(2.0, original.SpeedChange.Value));
            AddAssert("copy has original value", () => Precision.AlmostEquals(1.5, copy.SpeedChange.Value));
        }
Exemplo n.º 7
0
        public void TestGlobalModInstancesNotRetained()
        {
            OsuModDoubleTime mod = null;

            AddStep("set dt mod and store", () =>
            {
                SelectedMods.Value = new[] { new OsuModDoubleTime() };

                // Mod select overlay replaces our mod.
                mod = (OsuModDoubleTime)SelectedMods.Value[0];
            });

            AddStep("create item", () => songSelect.BeatmapDetails.CreateNewItem());

            AddStep("change stored mod rate", () => mod.SpeedChange.Value = 2);
            AddAssert("item has rate 1.5", () => Precision.AlmostEquals(1.5, ((OsuModDoubleTime)SelectedRoom.Value.Playlist.First().RequiredMods[0]).SpeedChange.Value));
        }
Exemplo n.º 8
0
        public void TestStarDifficultyChangesOnModSettings()
        {
            OsuModDoubleTime dt = null;

            AddStep("change selected mod to DT", () => SelectedMods.Value = new[] { dt = new OsuModDoubleTime {
                                                                                        SpeedChange = { Value = 1.5 }
                                                                                    } });
            AddUntilStep($"star difficulty -> {BASE_STARS + 1.5}", () => starDifficultyBindable.Value?.Stars == BASE_STARS + 1.5);

            AddStep("change DT speed to 1.25", () => dt.SpeedChange.Value = 1.25);
            AddUntilStep($"star difficulty -> {BASE_STARS + 1.25}", () => starDifficultyBindable.Value?.Stars == BASE_STARS + 1.25);

            AddStep("change selected mod to NC", () => SelectedMods.Value = new[] { new OsuModNightcore {
                                                                                        SpeedChange = { Value = 1.75 }
                                                                                    } });
            AddUntilStep($"star difficulty -> {BASE_STARS + 1.75}", () => starDifficultyBindable.Value?.Stars == BASE_STARS + 1.75);
        }
Exemplo n.º 9
0
        public void TestSettingsResetOnDeselection()
        {
            var osuModDoubleTime = new OsuModDoubleTime {
                SpeedChange = { Value = 1.2 }
            };

            changeRuleset(0);

            AddStep("set dt mod with custom rate", () => { SelectedMods.Value = new[] { osuModDoubleTime }; });

            AddAssert("selected mod matches", () => (SelectedMods.Value.Single() as OsuModDoubleTime)?.SpeedChange.Value == 1.2);

            AddStep("deselect", () => modSelect.DeselectAllButton.TriggerClick());
            AddAssert("selected mods empty", () => SelectedMods.Value.Count == 0);

            AddStep("reselect", () => modSelect.GetModButton(osuModDoubleTime).TriggerClick());
            AddAssert("selected mod has default value", () => (SelectedMods.Value.Single() as OsuModDoubleTime)?.SpeedChange.IsDefault == true);
        }
Exemplo n.º 10
0
        public void TestBPMUpdates()
        {
            const double bpm     = 120;
            IBeatmap     beatmap = createTestBeatmap(new OsuRuleset().RulesetInfo);

            beatmap.ControlPointInfo.Add(0, new TimingControlPoint {
                BeatLength = 60 * 1000 / bpm
            });

            OsuModDoubleTime doubleTime = null;

            selectBeatmap(beatmap);
            checkDisplayedBPM($"{bpm}");

            AddStep("select DT", () => SelectedMods.Value = new[] { doubleTime = new OsuModDoubleTime() });
            checkDisplayedBPM($"{bpm * 1.5f}");

            AddStep("change DT rate", () => doubleTime.SpeedChange.Value = 2);
            checkDisplayedBPM($"{bpm * 2}");
        }
Exemplo n.º 11
0
        public void TestExternallySetModIsReplacedByOverlayInstance()
        {
            Mod external         = new OsuModDoubleTime();
            Mod overlayButtonMod = null;

            changeRuleset(0);

            AddStep("set mod externally", () => { SelectedMods.Value = new[] { external }; });

            AddAssert("ensure button is selected", () =>
            {
                var button       = modSelect.GetModButton(SelectedMods.Value.Single());
                overlayButtonMod = button.SelectedMod;
                return(overlayButtonMod.GetType() == external.GetType());
            });

            // Right now, when an external change occurs, the ModSelectOverlay will replace the global instance with its own
            AddAssert("mod instance doesn't match", () => external != overlayButtonMod);

            AddAssert("one mod present in global selected", () => SelectedMods.Value.Count == 1);
            AddAssert("globally selected matches button's mod instance", () => SelectedMods.Value.Contains(overlayButtonMod));
            AddAssert("globally selected doesn't contain original external change", () => !SelectedMods.Value.Contains(external));
        }
Exemplo n.º 12
0
        public void TestStarDifficultyChangesOnModSettings()
        {
            OsuModDoubleTime dt = null;

            AddStep("set computation function", () => difficultyCache.ComputeDifficulty = lookup =>
            {
                var modRateAdjust = (ModRateAdjust)lookup.OrderedMods.SingleOrDefault(mod => mod is ModRateAdjust);
                return(new StarDifficulty(BASE_STARS + modRateAdjust?.SpeedChange.Value ?? 0, 0));
            });

            AddStep("change selected mod to DT", () => SelectedMods.Value = new[] { dt = new OsuModDoubleTime {
                                                                                        SpeedChange = { Value = 1.5 }
                                                                                    } });
            AddUntilStep($"star difficulty -> {BASE_STARS + 1.5}", () => starDifficultyBindable.Value?.Stars == BASE_STARS + 1.5);

            AddStep("change DT speed to 1.25", () => dt.SpeedChange.Value = 1.25);
            AddUntilStep($"star difficulty -> {BASE_STARS + 1.25}", () => starDifficultyBindable.Value?.Stars == BASE_STARS + 1.25);

            AddStep("change selected mod to NC", () => SelectedMods.Value = new[] { new OsuModNightcore {
                                                                                        SpeedChange = { Value = 1.75 }
                                                                                    } });
            AddUntilStep($"star difficulty -> {BASE_STARS + 1.75}", () => starDifficultyBindable.Value?.Stars == BASE_STARS + 1.75);
        }
Exemplo n.º 13
0
        public void TestBPMUpdates()
        {
            const float bpm     = 120;
            IBeatmap    beatmap = createTestBeatmap(new OsuRuleset().RulesetInfo);

            beatmap.ControlPointInfo.Add(0, new TimingControlPoint {
                BeatLength = 60 * 1000 / bpm
            });

            OsuModDoubleTime doubleTime = null;

            selectBeatmap(beatmap);
            checkDisplayedBPM(bpm);

            AddStep("select DT", () => SelectedMods.Value = new[] { doubleTime = new OsuModDoubleTime() });
            checkDisplayedBPM(bpm * 1.5f);

            AddStep("change DT rate", () => doubleTime.SpeedChange.Value = 2);
            checkDisplayedBPM(bpm * 2);

            void checkDisplayedBPM(float target) =>
            AddUntilStep($"displayed bpm is {target}", () => this.ChildrenOfType <BeatmapInfoWedge.WedgeInfoText.InfoLabel>().Any(
                             label => label.Statistic.Name == "BPM" && label.Statistic.Content == target.ToString(CultureInfo.InvariantCulture)));
        }
Exemplo n.º 14
0
 public void GlobalSetup()
 {
     mod = new OsuModDoubleTime();
 }
Exemplo n.º 15
0
 public override void SetUp()
 {
     base.SetUp();
     mod = new OsuModDoubleTime();
 }