From b03f4bca72a287afad8ddecffdb71285a006cddf Mon Sep 17 00:00:00 2001 From: Phuc Nguyen Date: Wed, 3 Jun 2026 17:33:04 +0700 Subject: [PATCH] Add fallback math function coverage --- test/fallback-functions.js | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 test/fallback-functions.js diff --git a/test/fallback-functions.js b/test/fallback-functions.js new file mode 100644 index 00000000..562db456 --- /dev/null +++ b/test/fallback-functions.js @@ -0,0 +1,38 @@ +/* global describe, it */ + +'use strict'; + +var assert = require('assert'); +var Parser = require('../dist/bundle').Parser; + +function assertCloseTo(actual, expected, delta) { + assert.ok(Math.abs(actual - expected) <= delta); +} + +function withMissingMathFunctions(names, callback) { + var originals = {}; + names.forEach(function (name) { + originals[name] = Math[name]; + Math[name] = undefined; + }); + + try { + callback(new Parser()); + } finally { + names.forEach(function (name) { + Math[name] = originals[name]; + }); + } +} + +describe('Fallback math functions', function () { + it('uses internal fallbacks for expm1, log1p, and log2', function () { + withMissingMathFunctions(['expm1', 'log1p', 'log2'], function (parser) { + var delta = 1e-15; + + assertCloseTo(parser.evaluate('expm1 2'), 6.38905609893065, delta); + assertCloseTo(parser.evaluate('log1p 9'), 2.302585092994046, delta); + assertCloseTo(parser.evaluate('log2 1024'), 10, delta); + }); + }); +});