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)); }
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)); }
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)); }
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)); }
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) }); }
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)); }
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)); }
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); }
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); }
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}"); }
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)); }
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); }
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))); }
public void GlobalSetup() { mod = new OsuModDoubleTime(); }
public override void SetUp() { base.SetUp(); mod = new OsuModDoubleTime(); }