import assert from 'node:assert/strict'; import { legacyDecimalToCents, MYSQL_UNSIGNED_INT_MAX } from '../dist/db/legacy-money.js'; assert.equal(legacyDecimalToCents('0'), 0); assert.equal(legacyDecimalToCents('0.01'), 1); assert.equal(legacyDecimalToCents('12.3'), 1230); assert.equal(legacyDecimalToCents('12.34'), 1234); assert.equal(legacyDecimalToCents(12.34), 1234); assert.equal(legacyDecimalToCents('42949672.95'), MYSQL_UNSIGNED_INT_MAX); assert.equal(legacyDecimalToCents(null, { nullable: true }), null); for (const invalidValue of [ '', ' 1.00', '1.00 ', '-0.01', '+1.00', '1.001', '1e2', 'NaN', Number.NaN, Number.POSITIVE_INFINITY, {}, null ]) { assert.throws( () => legacyDecimalToCents(invalidValue), /Legacy money/ ); } assert.throws( () => legacyDecimalToCents('42949672.96', { field: 'member_order_info.price' }), /member_order_info\.price.*exceeds/ ); assert.throws( () => legacyDecimalToCents('1.00', { maxCents: Number.MAX_SAFE_INTEGER + 1 }), /maxCents/ ); console.log('PASS: legacy DECIMAL money conversion is exact and bounded.');