js-on-sx: expanded Math + Number globals
Math gains sqrt/pow/trunc/sign/cbrt/hypot plus LN2/LN10/LOG2E/ LOG10E/SQRT2/SQRT1_2 constants and full-precision PI/E. Number global: isFinite/isNaN/isInteger/isSafeInteger plus MAX_VALUE/MIN_VALUE/MAX_SAFE_INTEGER/MIN_SAFE_INTEGER/EPSILON/ POSITIVE_INFINITY/NEGATIVE_INFINITY/NaN. Global isFinite, isNaN, Infinity, NaN. Wired into js-global. 329/331 unit (+21), 148/148 slice unchanged.
This commit is contained in:
@@ -829,6 +829,52 @@ cat > "$TMPFILE" << 'EPOCHS'
|
||||
(epoch 1061)
|
||||
(eval "(js-eval \"/zzz/.test('hello')\")")
|
||||
|
||||
;; ── Phase 11.math: expanded constants + functions ────────────────
|
||||
(epoch 1100)
|
||||
(eval "(js-eval \"Math.sqrt(16)\")")
|
||||
(epoch 1101)
|
||||
(eval "(js-eval \"Math.pow(2, 10)\")")
|
||||
(epoch 1102)
|
||||
(eval "(js-eval \"Math.trunc(3.7)\")")
|
||||
(epoch 1103)
|
||||
(eval "(js-eval \"Math.trunc(-3.7)\")")
|
||||
(epoch 1104)
|
||||
(eval "(js-eval \"Math.sign(5)\")")
|
||||
(epoch 1105)
|
||||
(eval "(js-eval \"Math.sign(-5)\")")
|
||||
(epoch 1106)
|
||||
(eval "(js-eval \"Math.sign(0)\")")
|
||||
(epoch 1107)
|
||||
(eval "(js-eval \"Math.hypot(3, 4)\")")
|
||||
(epoch 1108)
|
||||
(eval "(js-eval \"Math.cbrt(27)\")")
|
||||
(epoch 1109)
|
||||
(eval "(js-eval \"Math.PI > 3.14\")")
|
||||
(epoch 1110)
|
||||
(eval "(js-eval \"Math.E > 2.7\")")
|
||||
(epoch 1111)
|
||||
(eval "(js-eval \"Math.SQRT2 > 1.41\")")
|
||||
|
||||
;; ── Phase 11.number: Number builtin ─────────────────────────────
|
||||
(epoch 1200)
|
||||
(eval "(js-eval \"Number.isInteger(5)\")")
|
||||
(epoch 1201)
|
||||
(eval "(js-eval \"Number.isInteger(5.5)\")")
|
||||
(epoch 1202)
|
||||
(eval "(js-eval \"Number.isFinite(5)\")")
|
||||
(epoch 1203)
|
||||
(eval "(js-eval \"Number.isFinite(1/0)\")")
|
||||
(epoch 1204)
|
||||
(eval "(js-eval \"Number.isSafeInteger(1)\")")
|
||||
(epoch 1205)
|
||||
(eval "(js-eval \"Number.MAX_SAFE_INTEGER\")")
|
||||
(epoch 1206)
|
||||
(eval "(js-eval \"Number.EPSILON > 0\")")
|
||||
(epoch 1207)
|
||||
(eval "(js-eval \"isFinite(1)\")")
|
||||
(epoch 1208)
|
||||
(eval "(js-eval \"isFinite(1/0)\")")
|
||||
|
||||
EPOCHS
|
||||
|
||||
OUTPUT=$(timeout 180 "$SX_SERVER" < "$TMPFILE" 2>/dev/null)
|
||||
@@ -1270,6 +1316,30 @@ check 1053 "literal .ignoreCase" 'true'
|
||||
check 1060 "test match" 'true'
|
||||
check 1061 "test no match" 'false'
|
||||
|
||||
# ── Phase 11.math: expanded Math ────────────────────────────────
|
||||
check 1100 "Math.sqrt(16)" '4'
|
||||
check 1101 "Math.pow(2,10)" '1024'
|
||||
check 1102 "Math.trunc(3.7)" '3'
|
||||
check 1103 "Math.trunc(-3.7)" '-3'
|
||||
check 1104 "Math.sign(5)" '1'
|
||||
check 1105 "Math.sign(-5)" '-1'
|
||||
check 1106 "Math.sign(0)" '0'
|
||||
check 1107 "Math.hypot(3,4)" '5'
|
||||
check 1108 "Math.cbrt(27)" '3'
|
||||
check 1109 "Math.PI" 'true'
|
||||
check 1110 "Math.E" 'true'
|
||||
check 1111 "Math.SQRT2" 'true'
|
||||
|
||||
check 1200 "Number.isInteger(5)" 'true'
|
||||
check 1201 "Number.isInteger(5.5)" 'false'
|
||||
check 1202 "Number.isFinite(5)" 'true'
|
||||
check 1203 "Number.isFinite(Inf)" 'false'
|
||||
check 1204 "Number.isSafeInteger(1)" 'true'
|
||||
check 1205 "Number.MAX_SAFE_INTEGER" '9007199254740991'
|
||||
check 1206 "Number.EPSILON > 0" 'true'
|
||||
check 1207 "isFinite(1)" 'true'
|
||||
check 1208 "isFinite(Inf)" 'false'
|
||||
|
||||
TOTAL=$((PASS + FAIL))
|
||||
if [ $FAIL -eq 0 ]; then
|
||||
echo "✓ $PASS/$TOTAL JS-on-SX tests passed"
|
||||
|
||||
Reference in New Issue
Block a user