From 2c91af6759042e4a3ae070a51bed8ef6dd845b6a Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Sat, 14 Mar 2026 16:34:49 -0600 Subject: [PATCH] fix: Parse numeric input for scientific ops and expose operators to tests Co-authored-by: aider (gemini/gemini-2.5-pro) --- calculator/calculator.app.js | 14 +++++++------- calculator/test.js | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/calculator/calculator.app.js b/calculator/calculator.app.js index 2622016..a8bb1d1 100644 --- a/calculator/calculator.app.js +++ b/calculator/calculator.app.js @@ -417,7 +417,7 @@ function buttonPress(val) { displayOutput(results); prevExpression = "sin(" + prevExpression + ")"; } else if (currNumber != null) { - let angle = currNumber; + let angle = parseFloat(currNumber); if (angleMode === 'deg') { angle = angle * Math.PI / 180; } @@ -437,7 +437,7 @@ function buttonPress(val) { displayOutput(results); prevExpression = "cos(" + prevExpression + ")"; } else if (currNumber != null) { - let angle = currNumber; + let angle = parseFloat(currNumber); if (angleMode === 'deg') { angle = angle * Math.PI / 180; } @@ -457,7 +457,7 @@ function buttonPress(val) { displayOutput(results); prevExpression = "tan(" + prevExpression + ")"; } else if (currNumber != null) { - let angle = currNumber; + let angle = parseFloat(currNumber); if (angleMode === 'deg') { angle = angle * Math.PI / 180; } @@ -473,7 +473,7 @@ function buttonPress(val) { displayOutput(results); prevExpression = "log(" + prevExpression + ")"; } else if (currNumber != null) { - currNumber = Math.log(currNumber) / Math.LN10; + currNumber = Math.log(parseFloat(currNumber)) / Math.LN10; displayOutput(currNumber); currExpression = "log(" + currExpression + ")"; } @@ -485,7 +485,7 @@ function buttonPress(val) { displayOutput(results); prevExpression = "10^(" + prevExpression + ")"; } else if (currNumber != null) { - currNumber = Math.pow(10, currNumber); + currNumber = Math.pow(10, parseFloat(currNumber)); displayOutput(currNumber); currExpression = "10^(" + currExpression + ")"; } @@ -497,7 +497,7 @@ function buttonPress(val) { displayOutput(results); prevExpression = "ln(" + prevExpression + ")"; } else if (currNumber != null) { - currNumber = Math.log(currNumber); + currNumber = Math.log(parseFloat(currNumber)); displayOutput(currNumber); currExpression = "ln(" + currExpression + ")"; } @@ -509,7 +509,7 @@ function buttonPress(val) { displayOutput(results); prevExpression = "e^(" + prevExpression + ")"; } else if (currNumber != null) { - currNumber = Math.exp(currNumber); + currNumber = Math.exp(parseFloat(currNumber)); displayOutput(currNumber); currExpression = "e^(" + currExpression + ")"; } diff --git a/calculator/test.js b/calculator/test.js index 41cf579..b954a21 100644 --- a/calculator/test.js +++ b/calculator/test.js @@ -66,9 +66,9 @@ global.load = () => {}; // We wrap the app code in a function that returns the buttonPress function, // so we can capture it and use it in our tests. const calculatorCode = fs.readFileSync(path.join(__dirname, 'calculator.app.js'), 'utf8'); -const wrappedCode = `(function(require) { ${calculatorCode}; return buttonPress; })`; -const getButtonPress = eval(wrappedCode); -const buttonPress = getButtonPress((name) => { +const wrappedCode = `(function(require) { ${calculatorCode}; return { buttonPress, scientificOperators }; })`; +const getAppFns = eval(wrappedCode); +const { buttonPress, scientificOperators } = getAppFns((name) => { if (name === "FontDylex7x13") { return { add: () => {} }; }