syntaxai/tdd.md · main · content / games / string-calc / spec.ts

spec.ts 46 lines · 1424 bytes raw
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",
    },
  ],
};