import test from 'node:test'; import assert from 'node:assert/strict'; import {dimensionChain as chain} from './bend-dimensions.mjs'; const example={centers:[4,12,20],tangents:[3.75,11.75,19.75]}; test('independently calculated tangent and center chains',()=>{ assert.deepEqual(chain(example).map(r=>r.inches),[4,8.25,8.25]); assert.deepEqual(chain({...example,mode:'center'}).map(r=>r.inches),[4,8,8]); }); test('translation leaves distances unchanged',()=>{ assert.deepEqual(chain({edge:100,centers:[104,112,120],tangents:[103.75,111.75,119.75]}).map(r=>r.inches),[4,8.25,8.25]); }); test('single bend and center mode without tangent data',()=>{ assert.equal(chain({centers:[4],mode:'center'})[0].inches,4); assert.equal(chain({centers:[4],tangents:[3.75]})[0].inches,4); }); test('reject malformed geometry instead of showing plausible distances',()=>{ for(const bad of [{centers:[]},{centers:[4,4],tangents:[3,3]}, {centers:[4],tangents:[4]},{centers:[4],tangents:[-1]}, {centers:[4],tangents:[NaN]},{centers:[Infinity],tangents:[3]}, {centers:[4,12],tangents:[3,2]},{...example,mode:'unknown'}, {...example,edge:NaN},{centers:['4'],tangents:[3]}]) assert.throws(()=>chain(bad),RangeError); });