import assert from "node:assert/strict";
import test from "node:test";
import { buildClassFromBmi, computeBmi, parseHeightToInches } from "@/lib/mortgage/bmi";

test("parseHeightToInches feet and inches", () => {
  assert.equal(parseHeightToInches("5'10\""), 70);
  assert.equal(parseHeightToInches("6 ft 0"), 72);
});

test("parseHeightToInches raw inches", () => {
  assert.equal(parseHeightToInches("70"), 840);
  assert.equal(parseHeightToInches("abc"), null);
  assert.equal(parseHeightToInches(""), null);
});

test("computeBmi imperial formula", () => {
  assert.equal(computeBmi("5'10\"", 180), 25.8);
  assert.equal(computeBmi(undefined, 180), undefined);
  assert.equal(computeBmi("5'10\"", undefined), undefined);
  assert.equal(computeBmi("x", 180), undefined);
});

test("buildClassFromBmi bands", () => {
  assert.equal(buildClassFromBmi(undefined), undefined);
  assert.equal(buildClassFromBmi(17), "underweight_postpone");
  assert.equal(buildClassFromBmi(30), "si_level");
  assert.equal(buildClassFromBmi(40), "si_level");
  assert.equal(buildClassFromBmi(44), "graded");
  assert.equal(buildClassFromBmi(50), "gi_or_decline");
});
