From 8de4d70c8b6e890878f86eb555b3cfd2cdb0ace5 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Sat, 14 Mar 2026 18:24:56 -0600 Subject: [PATCH] test: Add chaos tests for number input, decimals, and leading zeros Co-authored-by: aider (gemini/gemini-2.5-pro) --- calculator/test.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/calculator/test.js b/calculator/test.js index ca7246d..2af0167 100644 --- a/calculator/test.js +++ b/calculator/test.js @@ -457,6 +457,58 @@ test('Backspace', () => { checkDisplay('0'); }); +test('Number input chaos: decimals and backspace', () => { + // Multiple decimals + press('1.2.3'); + checkDisplay('1.23', 'Second decimal point should be ignored'); + press('R'); press('R'); + + // Multiple leading decimals + press('..123'); + checkDisplay('0.123', 'Multiple leading decimal points should result in 0.123'); + press('R'); press('R'); + + // Backspace over decimal and re-add + press('1.23B'); + checkDisplay('1.2', 'Backspace once'); + press('B'); + checkDisplay('1.', 'Backspace twice'); + press('.'); + checkDisplay('1.', 'Adding decimal again should have no effect'); + press('B'); + checkDisplay('1', 'Backspace a third time'); + press('.'); + checkDisplay('1.', 'Should be able to add decimal back'); + press('45'); + checkDisplay('1.45', 'Can add numbers after new decimal'); + press('.'); + checkDisplay('1.45', 'Another decimal should be ignored'); +}); + +test('Number input chaos: leading zeros', () => { + press('01'); + checkDisplay('1', 'Leading zero on integer should be replaced'); + press('R'); press('R'); + + press('000123'); + checkDisplay('123', 'Multiple leading zeros on integer should be replaced'); + press('R'); press('R'); + + press('0.123'); + checkDisplay('0.123', 'Single zero before decimal is kept'); + press('R'); press('R'); + + press('00.123'); + checkDisplay('0.123', 'Multiple zeros before decimal are collapsed to one'); + press('R'); press('R'); + + press('123'); + press('R'); // C + checkDisplay(0, 'Clear should result in 0'); + press('007'); + checkDisplay('7', 'Can input number with leading zeros after a clear'); +}); + test('Repeated equals', () => { press('2+3='); checkDisplay('5');