test: add charge test

main
spacemeowx2 2022-10-29 17:03:14 +08:00
parent d2d04c703d
commit 705d4dc7f9
3 changed files with 58 additions and 5 deletions

View File

@ -55,6 +55,59 @@ function genOpenWins(
return result; return result;
} }
Deno.test("RankTracker tracks challenge charge", async () => {
const tracker = new TestRankTracker(INIT_STATE);
assertEquals(tracker.testGet(), {
state: INIT_STATE,
deltaMap: new Map(),
});
const finalState = await tracker.updateState([{
bankaraMatchChallenge: {
winCount: 1,
loseCount: 0,
maxWinCount: 5,
maxLoseCount: 3,
isPromo: false,
isUdemaeUp: false,
udemaeAfter: null,
earnedUdemaePoint: null,
state: "INPROGRESS",
},
historyDetails: {
nodes: [
{
id: genId(2),
udemae: "B-",
judgement: "WIN",
bankaraMatch: {
earnedUdemaePoint: null,
},
nextHistoryDetail: null,
previousHistoryDetail: null,
},
],
},
}, {
bankaraMatchChallenge: null,
historyDetails: {
nodes: genOpenWins({
startId: 0,
count: 1,
udemae: "B-",
}),
},
}]);
assertEquals(tracker.testGet().state, INIT_STATE);
assertEquals(finalState, {
gameId: await gameId(genId(2)),
rank: "B-",
rankPoint: 45,
});
});
Deno.test("RankTracker", async () => { Deno.test("RankTracker", async () => {
const tracker = new TestRankTracker(INIT_STATE); const tracker = new TestRankTracker(INIT_STATE);
assertEquals(tracker.testGet(), { assertEquals(tracker.testGet(), {
@ -81,13 +134,13 @@ Deno.test("RankTracker", async () => {
rankPoint: 244, rankPoint: 244,
}); });
assertEquals(await tracker.getRankStateById(genId(1)), { assertEquals((await tracker.getRankStateById(genId(1)))?.after, {
gameId: await gameId(genId(1)), gameId: await gameId(genId(1)),
rank: "B-", rank: "B-",
rankPoint: 108, rankPoint: 108,
}); });
assertEquals(await tracker.getRankStateById(genId(17)), { assertEquals((await tracker.getRankStateById(genId(17)))?.after, {
gameId: await gameId(genId(17)), gameId: await gameId(genId(17)),
rank: "B-", rank: "B-",
rankPoint: 236, rankPoint: 236,
@ -121,7 +174,7 @@ Deno.test("RankTracker", async () => {
}, },
}]); }]);
assertEquals(await tracker.getRankStateById(genId(29)), { assertEquals((await tracker.getRankStateById(genId(29)))?.after, {
gameId: await gameId(genId(29)), gameId: await gameId(genId(29)),
rank: "B-", rank: "B-",
rankPoint: 332, rankPoint: 332,

View File

@ -250,7 +250,7 @@ export class RankTracker {
...delta, ...delta,
// TODO: rankAfter should be undefined in open battle // TODO: rankAfter should be undefined in open battle
rankAfter: i.detail.udemae, rankAfter: i.detail.udemae,
rankPoint: i.detail.bankaraMatch?.earnedUdemaePoint, rankPoint: i.detail.bankaraMatch?.earnedUdemaePoint ?? 0,
}; };
} }

View File

@ -52,7 +52,7 @@ export type BattleListNode = {
id: string; id: string;
}; };
bankaraMatch: null | { bankaraMatch: null | {
earnedUdemaePoint: number; earnedUdemaePoint: null | number;
}; };
}; };
export type CoopListNode = { export type CoopListNode = {