From 9e52256196f52ba58f107556f30cf70fdf5eeb5e Mon Sep 17 00:00:00 2001 From: dovisutu <40313014+dovisutu@users.noreply.github.com> Date: Fri, 3 Jan 2020 18:21:12 +0800 Subject: [PATCH] Fix prefix 0s after deleting decimal point (#825) --- src/CalcManager/CEngine/CalcInput.cpp | 4 ++++ src/CalculatorUITests/StandardModeFunctionalTests.cs | 11 +++++++++++ src/CalculatorUnitTests/CalcInputTest.cpp | 10 ++++++++++ 3 files changed, 25 insertions(+) diff --git a/src/CalcManager/CEngine/CalcInput.cpp b/src/CalcManager/CEngine/CalcInput.cpp index 0de37d5..5bbc140 100644 --- a/src/CalcManager/CEngine/CalcInput.cpp +++ b/src/CalcManager/CEngine/CalcInput.cpp @@ -231,6 +231,10 @@ void CalcInput::Backspace() if (!m_base.IsEmpty()) { m_base.value.pop_back(); + if (m_base.value == L"0") + { + m_base.value.pop_back(); + } } if (m_base.value.size() <= m_decPtIndex) diff --git a/src/CalculatorUITests/StandardModeFunctionalTests.cs b/src/CalculatorUITests/StandardModeFunctionalTests.cs index 2418dff..817f7f3 100644 --- a/src/CalculatorUITests/StandardModeFunctionalTests.cs +++ b/src/CalculatorUITests/StandardModeFunctionalTests.cs @@ -184,6 +184,17 @@ public void Operator_Delete() Assert.AreEqual("-1,234", page.GetCalculatorResultText()); } + // Issue #817: Prefixed multiple zeros + [TestMethod] + public void Operator_Delete_Prefix_Zeros() + { + page.StandardOperators.NumberPad.Input(0.1); // To enter decimal point + page.StandardOperators.BackSpaceButton.Click(); + page.StandardOperators.BackSpaceButton.Click(); + page.StandardOperators.NumberPad.Input(0); + Assert.AreEqual("0", page.GetCalculatorResultText()); + } + [TestMethod] public void Operator_ClearAll() { diff --git a/src/CalculatorUnitTests/CalcInputTest.cpp b/src/CalculatorUnitTests/CalcInputTest.cpp index d5cbaaf..377993e 100644 --- a/src/CalculatorUnitTests/CalcInputTest.cpp +++ b/src/CalculatorUnitTests/CalcInputTest.cpp @@ -252,6 +252,16 @@ namespace CalculatorEngineTests m_calcInput.Backspace(); VERIFY_ARE_EQUAL(L"1.2", m_calcInput.ToString(10), L"Verify input after backspace."); } + // Issue #817: Prefixed multiple zeros + TEST_METHOD(BackspaceZeroDecimalWithoutPrefixZeros) + { + m_calcInput.TryAddDigit(0, 10, false, L"999", 64, 32); + m_calcInput.TryAddDecimalPt(); + VERIFY_ARE_EQUAL(L"0.", m_calcInput.ToString(10), L"Verify input before backspace.") + m_calcInput.Backspace(); + m_calcInput.TryAddDigit(0, 10, false, L"999", 64, 32); + VERIFY_ARE_EQUAL(L"0", m_calcInput.ToString(10), L"Verify input after backspace.") + } TEST_METHOD(SetDecimalSymbol) {