testImportCyclesBecomeHashCycles

tcmts.core.test.hash.testImportCyclesBecomeHashCycles · #n4bwze4v · term

Import cycles between files become hash cycles.

import { analyze, project } from "#codebase/tcmts/core/test/hash";
import assert from "node:assert/strict";

export const testImportCyclesBecomeHashCycles = () => {
  const p = project({
    "even.ts": `import { isOdd } from "./odd.ts";\nexport function isEven(n: number): boolean { return n === 0 ? true : isOdd(n - 1) }`,
    "odd.ts": `import { isEven } from "./even.ts";\nexport function isOdd(n: number): boolean { return n === 0 ? false : isEven(n - 1) }`,
  });
  const single = analyze(`
    function isEven(n: number): boolean { return n === 0 ? true : isOdd(n - 1) }
    function isOdd(n: number): boolean { return n === 0 ? false : isEven(n - 1) }`).defs;
  assert.equal(p.isEven!.componentSize, 2);
  assert.equal(p.isEven!.componentHash, single[0]!.componentHash);
}

uses