test: add encounter fixture and complex schema test case
This commit is contained in:
parent
721544e7b2
commit
585f33b856
|
|
@ -0,0 +1,7 @@
|
|||
# type EncounterType = 'minion'|'elite'|'event'|'shop'|'camp'|'curio'
|
||||
# type EnemyList = [name: string; hp: int; effects: [effect: string;stacks: int][]][]
|
||||
|
||||
id,type,name,description,enemies,dialogue
|
||||
string,EncounterType,string,string,EnemyList,string
|
||||
cactus_pair,minion,仙人掌怪,概念:防+强化。【尖刺X】:对攻击者造成X点伤害。,[仙人掌怪;12;[]];[仙人掌怪;12;[]],
|
||||
snake_pair,minion,蛇,概念:攻+强化。给玩家塞入蛇毒牌(1费:打出时移除此牌。弃掉时受到3点伤害)。,[蛇;10;[[poison;2];[quick;1]]],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { describe, it, expect } from "vitest";
|
||||
import { parseCsv } from "../loader";
|
||||
import * as path from "path";
|
||||
import { fixturesDir } from "../test-utils";
|
||||
import { fixturesDir, readFixture } from "../test-utils";
|
||||
|
||||
describe("parseCsv - references in combinatory schemas", () => {
|
||||
it("should resolve reference inside a tuple", () => {
|
||||
|
|
@ -161,4 +161,58 @@ describe("parseCsv - references in combinatory schemas", () => {
|
|||
});
|
||||
expect(details[1]).toBe(5);
|
||||
});
|
||||
|
||||
it("should parse encounter fixture with custom type aliases and nested tuples/arrays", () => {
|
||||
const encounterCsv = readFixture("encounter.csv");
|
||||
|
||||
const result = parseCsv(encounterCsv, {
|
||||
emitTypes: false,
|
||||
currentFilePath: path.join(fixturesDir, "encounter.csv"),
|
||||
});
|
||||
|
||||
expect(result.data).toHaveLength(2);
|
||||
|
||||
// First row: cactus_pair
|
||||
expect(result.data[0]).toMatchObject({
|
||||
id: "cactus_pair",
|
||||
type: "minion",
|
||||
name: "仙人掌怪",
|
||||
description: "概念:防+强化。【尖刺X】:对攻击者造成X点伤害。",
|
||||
dialogue: "",
|
||||
});
|
||||
|
||||
const cactusEnemies = result.data[0].enemies as unknown[];
|
||||
expect(cactusEnemies).toHaveLength(2);
|
||||
expect(cactusEnemies[0]).toEqual({
|
||||
name: "仙人掌怪",
|
||||
hp: 12,
|
||||
effects: [],
|
||||
});
|
||||
expect(cactusEnemies[1]).toEqual({
|
||||
name: "仙人掌怪",
|
||||
hp: 12,
|
||||
effects: [],
|
||||
});
|
||||
|
||||
// Second row: snake_pair
|
||||
expect(result.data[1]).toMatchObject({
|
||||
id: "snake_pair",
|
||||
type: "minion",
|
||||
name: "蛇",
|
||||
description:
|
||||
"概念:攻+强化。给玩家塞入蛇毒牌(1费:打出时移除此牌。弃掉时受到3点伤害)。",
|
||||
dialogue: "",
|
||||
});
|
||||
|
||||
const snakeEnemies = result.data[1].enemies as unknown[];
|
||||
expect(snakeEnemies).toHaveLength(1);
|
||||
expect(snakeEnemies[0]).toEqual({
|
||||
name: "蛇",
|
||||
hp: 10,
|
||||
effects: [
|
||||
{ effect: "poison", stacks: 2 },
|
||||
{ effect: "quick", stacks: 1 },
|
||||
],
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue