From fc274ea5c2cc92e4ec8516fbb061de3f6b94bc59 Mon Sep 17 00:00:00 2001 From: zkldi Date: Thu, 2 Sep 2021 17:06:28 +0100 Subject: [PATCH] Support DP randoms and add test cases --- .../ir/fervidex/converter.test.ts | 43 +++++++++++++++++-- .../import-types/ir/fervidex/converter.ts | 11 +++-- .../import-types/ir/fervidex/types.ts | 1 + 3 files changed, 48 insertions(+), 7 deletions(-) diff --git a/server/src/lib/score-import/import-types/ir/fervidex/converter.test.ts b/server/src/lib/score-import/import-types/ir/fervidex/converter.test.ts index c8cc05a91..fd18f74f2 100644 --- a/server/src/lib/score-import/import-types/ir/fervidex/converter.test.ts +++ b/server/src/lib/score-import/import-types/ir/fervidex/converter.test.ts @@ -14,6 +14,7 @@ import { } from "./converter"; import { FervidexScore } from "./types"; import deepmerge from "deepmerge"; +import { ChartDocument } from "tachi-common"; const logger = CreateLogCtx(__filename); @@ -136,7 +137,43 @@ t.test("#ConverterIRFervidex", (t) => { song: Testing511Song, chart: Testing511SPA, dryScore: baseDryScore, - }, // broken + }, + "Should return a dry score." + ); + + t.end(); + }); + + t.test("Should turn DP randoms into tuples.", async (t) => { + // lazily clone the SPA as a DPA. + + const Testing511DPA = deepmerge(Testing511SPA, { + playtype: "DP", + chartID: "dp_test", + data: { arcChartID: "dp_test" }, + }); + + await db.charts.iidx.insert(Testing511DPA); + + // @ts-expect-error apparantly this prop isnt optional. but i'm sure it is. + delete Testing511DPA._id; + + const res = await ConverterIRFervidex( + deepmerge(baseFervidexScore, { option: { style_2p: "R_RANDOM" }, chart: "dpa" }), + { version: "27" }, + "ir/fervidex", + logger + ); + + t.hasStrict( + res, + { + song: Testing511Song, + chart: Testing511DPA, + dryScore: deepmerge(baseDryScore, { + scoreMeta: { random: ["RANDOM", "R-RANDOM"] }, + }), + }, "Should return a dry score." ); @@ -157,7 +194,7 @@ t.test("#ConverterIRFervidex", (t) => { song: Testing511Song, chart: Testing511SPA, dryScore: deepmerge(baseDryScore, { scoreData: { hitMeta: { bp: null } } }), - }, // broken + }, "Should return a dry score." ); @@ -235,7 +272,7 @@ t.test("#ConverterIRFervidex", (t) => { dryScore: deepmerge(baseDryScore, { scoreData: { hitMeta: { gauge: null, gaugeHistory: [10, 5, null, null] } }, }), - }, // broken + }, "Should return a dry score." ); diff --git a/server/src/lib/score-import/import-types/ir/fervidex/converter.ts b/server/src/lib/score-import/import-types/ir/fervidex/converter.ts index 676c41a5c..7c7c9d8b5 100644 --- a/server/src/lib/score-import/import-types/ir/fervidex/converter.ts +++ b/server/src/lib/score-import/import-types/ir/fervidex/converter.ts @@ -77,9 +77,7 @@ export function TachifyRange( } } -export function TachifyRandom( - gauge: FervidexScore["option"]["style"] -): DryScore<"iidx:SP" | "iidx:DP">["scoreMeta"]["random"] { +export function TachifyRandom(gauge: FervidexScore["option"]["style"]) { switch (gauge) { case "RANDOM": return "RANDOM"; @@ -213,7 +211,12 @@ export const ConverterIRFervidex: ConverterFunction