Skip to content

Commit

Permalink
Added a few simple tests for stat generation
Browse files Browse the repository at this point in the history
  • Loading branch information
brwarner committed Nov 16, 2024
1 parent 8ac230f commit 437d6ec
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions src/tests/specs/inkjs/compiler/Stats.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import { Stats } from "../../../../compiler/Stats";
import { Compiler } from "../../../../ink";

function getStats(inkSource: string): Stats {
const compiler = new Compiler(inkSource);
compiler.Compile();
const stats = compiler.GenerateStats();
expect(stats).not.toBeNull();
return stats!;
}

describe("Stat Generation", () => {
it("basic word count", () => {
const stats = getStats("this is an ink story.");
expect(stats.words).toBe(5);
});
it("word count doesn't include divert or variable names", () => {
const stats = getStats(
"VAR MyVariable = 3\n->start\n=== start\nthis is an ink story.\n->END"
);
expect(stats.words).toBe(5);
});
it("count functions, knots, and stitches", () => {
const stats = getStats(
"->start\n=== function myFunc()\n~ return 0\n=== start\n= stitch\nHello world!"
);
expect(stats.functions).toBe(1);
expect(stats.knots).toBe(2);
expect(stats.stitches).toBe(1);
});
it("count diverts", () => {
const stats = getStats("->go\n- (go)\n->next\n-(next)");
expect(stats.diverts).toBe(2);
});
it("end counts as a divert", () => {
const stats = getStats("->go\n- (go)\n->next\n-(next)\n->END");
expect(stats.diverts).toBe(3);
});
it("count gathers", () => {
const stats = getStats("->go\n- (go)\n->next\n-(next)");
expect(stats.gathers).toBe(2);
});
});

0 comments on commit 437d6ec

Please sign in to comment.