Rebasely Beta: data may be purged

examples/MCP-tools Public

TypeScript · 58 lines · 2.4 KiB · at 9f4ffca

import assert from "node:assert/strict";import { test } from "node:test";import { convertUnits } from "../src/tools/convert-units.ts";import { ToolError } from "../src/tools/errors.ts";const now = new Date("2026-10-03T12:00:00Z");const convert = (value: number, from: string, to: string) => convertUnits.run({ value, from, to }, { now });test("converts length, mass and volume through the base unit", () => {  assert.equal(convert(10, "km", "mi").result, 6.21371192237);  assert.equal(convert(1, "mi", "ft").result, 5280);  assert.equal(convert(1, "lb", "g").result, 453.59237);  assert.equal(convert(1, "gal", "l").result, 3.785411784);  assert.equal(convert(3, "tsp", "tbsp").result, 1);});test("converts temperatures with their offsets", () => {  assert.equal(convert(100, "C", "F").result, 212);  assert.equal(convert(-40, "F", "C").result, -40);  assert.equal(convert(0, "K", "C").result, -273.15);  assert.equal(convert(98.6, "F", "K").result, 310.15);});test("reports the quantity and the canonical symbols", () => {  assert.deepEqual(convert(2.5, "KM", " m "), { quantity: "length", value: 2.5, from: "km", result: 2500, to: "m" });});test("accepts unit names, plurals and degree signs", () => {  assert.equal(convert(3, "Feet", "inches").result, 36);  assert.equal(convert(2, "kilometres", "meters").result, 2000);  assert.equal(convert(1, "pounds", "Kilos").result, 0.45359237);  assert.equal(convert(1, "fluid  ounces", "tablespoons").result, 2);  assert.equal(convert(212, "°F", "celsius").result, 100);  assert.deepEqual(convert(1, "gallon", "liters"), { quantity: "volume", value: 1, from: "gal", result: 3.785411784, to: "l" });});test("hides floating point noise", () => {  assert.equal(convert(0.1, "m", "cm").result, 10);  assert.equal(convert(0.3, "l", "ml").result, 300);});test("an unknown unit lists the units it knows", () => {  assert.throws(() => convert(1, "furlong", "m"), (err: unknown) => {    assert.ok(err instanceof ToolError);    assert.match(err.message, /Unknown unit "furlong"/);    assert.match(err.message, /length: mm, cm, m, km/);    return true;  });});test("refuses to convert between quantities", () => {  assert.throws(() => convert(1, "kg", "m"), /Cannot convert kg \(mass\) to m \(length\)/);});test("refuses temperatures below absolute zero", () => {  assert.throws(() => convert(-500, "F", "C"), /below absolute zero \(-459\.67 F\)/);  assert.equal(convert(-273.15, "C", "K").result, 0);});