Skip to content

Commit

Permalink
adjust SanDokuResponse to include new diffcalc properties and update …
Browse files Browse the repository at this point in the history
…diffcalc test to up to date values
  • Loading branch information
omkelderman committed Nov 24, 2024
1 parent 64125eb commit 0b55d18
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,27 @@
@JsonIgnoreProperties(ignoreUnknown = true)
public record SanDokuResponse(
@GameMode int beatmapGameMode,
String beatmapMd5,
@GameMode int gameModeUsed,
@BitwiseMods long modsUsed,
SanDokuDiffCalcResult diffCalcResult) {

@Builder(toBuilder = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public static record SanDokuDiffCalcResult(
public record SanDokuDiffCalcResult(
// only declare fields which are needed for std calc
int maxCombo,
double starRating,
int maxCombo,
double aim,
double speed,
double overallDifficulty,
double approachRate,
double speedNoteCount,
double flashlight,
double sliderFactor,
double speedNoteCount,
double aimDifficultStrainCount,
double speedDifficultStrainCount,
double approachRate,
double overallDifficulty,
double drainRate,
int hitCircleCount,
int sliderCount,
int spinnerCount) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,53 +40,53 @@ public void bestFriendsParameters() throws Exception {
// NoMod
assertThat(sanDoku.getDiff(0, 0, beatmap).diffCalcResult()).satisfies(result -> {
// https://osu.ppy.sh/api/get_beatmaps?k=***&m=0&b=328472&mods=0
assertThat(result.starRating()).isCloseTo(4.73447, apiRounding);
assertThat(result.aim()).isCloseTo(2.53878, apiRounding);
assertThat(result.speed()).isCloseTo(1.88141, apiRounding);
assertThat(result.starRating()).isCloseTo(4.74189, apiRounding);
assertThat(result.aim()).isCloseTo(2.54927, apiRounding);
assertThat(result.speed()).isCloseTo(1.84998, apiRounding);
assertThat(result.maxCombo()).isEqualTo(404);
});

// Hidden, should not change anything
assertThat(sanDoku.getDiff(0, Mods.getMask(Mods.Hidden), beatmap).diffCalcResult()).satisfies(result -> {
// https://osu.ppy.sh/api/get_beatmaps?k=***&m=0&b=328472&mods=0 ==> uses 0 as mods since HD doesn't give a result
assertThat(result.starRating()).isCloseTo(4.73447, apiRounding);
assertThat(result.aim()).isCloseTo(2.53878, apiRounding);
assertThat(result.speed()).isCloseTo(1.88141, apiRounding);
assertThat(result.starRating()).isCloseTo(4.74189, apiRounding);
assertThat(result.aim()).isCloseTo(2.54927, apiRounding);
assertThat(result.speed()).isCloseTo(1.84998, apiRounding);
assertThat(result.maxCombo()).isEqualTo(404);
});

// Flashlight
assertThat(sanDoku.getDiff(0, Mods.getMask(Mods.Flashlight), beatmap).diffCalcResult()).satisfies(result -> {
// https://osu.ppy.sh/api/get_beatmaps?k=***&m=0&b=328472&mods=1024
assertThat(result.starRating()).isCloseTo(5.28149, apiRounding); // star rating is different!
assertThat(result.aim()).isCloseTo(2.53878, apiRounding);
assertThat(result.speed()).isCloseTo(1.88141, apiRounding);
assertThat(result.starRating()).isCloseTo(5.29152, apiRounding); // star rating is different!
assertThat(result.aim()).isCloseTo(2.54927, apiRounding);
assertThat(result.speed()).isCloseTo(1.84998, apiRounding);
assertThat(result.maxCombo()).isEqualTo(404);
});

// and now Hidden & Flashlight, here Hidden actually does get taken into account, but only because it is combined with FL
assertThat(sanDoku.getDiff(0, Mods.getMask(Mods.Hidden, Mods.Flashlight), beatmap).diffCalcResult()).satisfies(result -> {
// https://osu.ppy.sh/api/get_beatmaps?k=***&m=0&b=328472&mods=1032
assertThat(result.starRating()).isCloseTo(5.49584, apiRounding); // star rating is different!
assertThat(result.aim()).isCloseTo(2.53878, apiRounding);
assertThat(result.speed()).isCloseTo(1.88141, apiRounding);
assertThat(result.starRating()).isCloseTo(5.50678, apiRounding); // star rating is different!
assertThat(result.aim()).isCloseTo(2.54927, apiRounding);
assertThat(result.speed()).isCloseTo(1.84998, apiRounding);
assertThat(result.maxCombo()).isEqualTo(404);
});

assertThat(sanDoku.getDiff(0, Mods.getMask(Mods.DoubleTime), beatmap).diffCalcResult()).satisfies(result -> {
// https://osu.ppy.sh/api/get_beatmaps?k=***&m=0&b=328472&mods=64
assertThat(result.starRating()).isCloseTo(6.65472, apiRounding);
assertThat(result.aim()).isCloseTo(3.52504, apiRounding);
assertThat(result.speed()).isCloseTo(2.72927, apiRounding);
assertThat(result.starRating()).isCloseTo(6.65498, apiRounding);
assertThat(result.aim()).isCloseTo(3.5396, apiRounding);
assertThat(result.speed()).isCloseTo(2.67524, apiRounding);
assertThat(result.maxCombo()).isEqualTo(404);
});

// now with HR DT
assertThat(sanDoku.getDiff(0, Mods.getMask(Mods.HardRock, Mods.DoubleTime), beatmap).diffCalcResult()).satisfies(result -> {
// https://osu.ppy.sh/api/get_beatmaps?k=***&m=0&b=328472&mods=80
assertThat(result.starRating()).isCloseTo(7.06681, apiRounding);
assertThat(result.aim()).isCloseTo(3.82241, apiRounding);
assertThat(result.speed()).isCloseTo(2.74129, apiRounding);
assertThat(result.starRating()).isCloseTo(7.07645, apiRounding);
assertThat(result.aim()).isCloseTo(3.83819, apiRounding);
assertThat(result.speed()).isCloseTo(2.68853, apiRounding);
assertThat(result.maxCombo()).isEqualTo(404);
});
}
Expand Down

0 comments on commit 0b55d18

Please sign in to comment.