syntaxai/tdd.md · main · content / games / string-calc / spec.ts
import type { Game } from "../../../src/c31_games.ts";
export const spec: Game = {
id: "string-calc",
description: "Roy Osherove's String Calculator, judged. Build add(numbers) one rule at a time — seven red→green cycles from empty string to negatives-throw.",
signature: "add(numbers: string): number",
importPath: "./add",
steps: [
{
id: "empty",
requirement: "An empty string returns 0",
hiddenTestFile: "hidden/empty.ts",
},
{
id: "single-number",
requirement: "A single number returns its value",
hiddenTestFile: "hidden/single-number.ts",
},
{
id: "two-numbers",
requirement: "Two comma-separated numbers return their sum",
hiddenTestFile: "hidden/two-numbers.ts",
},
{
id: "n-numbers",
requirement: "Any count of comma-separated numbers",
hiddenTestFile: "hidden/n-numbers.ts",
},
{
id: "newline-separator",
requirement: "Newlines are valid separators alongside commas",
hiddenTestFile: "hidden/newline-separator.ts",
},
{
id: "custom-separator",
requirement: "//<sep>\\n header defines a single-character custom separator",
hiddenTestFile: "hidden/custom-separator.ts",
},
{
id: "negatives-throw",
requirement: "Negative inputs throw an error listing all negatives",
hiddenTestFile: "hidden/negatives-throw.ts",
},
],
};