From eac3d236269b56ea3a585fff43ec9f2edb9d3cf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Artur=20=C5=9Aleszy=C5=84ski?= Date: Wed, 14 Apr 2021 08:55:21 +0200 Subject: [PATCH] [EGD-6498] Do not perform calculations on empty input We do not produce an error when user calculates empty input. --- .../application-calculator/data/CalculatorUtility.cpp | 7 ++++++- .../tests/CalculatorUtility_tests.cpp | 10 +++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/module-apps/application-calculator/data/CalculatorUtility.cpp b/module-apps/application-calculator/data/CalculatorUtility.cpp index 584788b58d714e3fb3172b30e709e9fab4336ea1..b9461deb6b547d53f6ac73b6130b8adcd17c2c66 100644 --- a/module-apps/application-calculator/data/CalculatorUtility.cpp +++ b/module-apps/application-calculator/data/CalculatorUtility.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "CalculatorUtility.hpp" @@ -11,6 +11,11 @@ Result Calculator::calculate(std::string source) { source = prepareEquationForParser(source); + + if (source.empty()) { + return Result{source, {}, false}; + } + int error; double result = te_interp(source.c_str(), &error); if (error == 0 && !std::isinf(result) && !std::isnan(result)) { diff --git a/module-apps/application-calculator/tests/CalculatorUtility_tests.cpp b/module-apps/application-calculator/tests/CalculatorUtility_tests.cpp index 4b7d8ede5a817d18f285e20c3d2df6e8396c5aba..08bd902874433c9fdbb7ec14450dd14f1fc8d5e0 100644 --- a/module-apps/application-calculator/tests/CalculatorUtility_tests.cpp +++ b/module-apps/application-calculator/tests/CalculatorUtility_tests.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #define CATCH_CONFIG_MAIN @@ -13,6 +13,14 @@ TEST_CASE("Calculator utilities") auto calculator = Calculator(); utils::localize.setDisplayLanguage("English"); + SECTION("Empty input") + { + auto result = calculator.calculate(""); + REQUIRE(result.value == std::string{}); + REQUIRE(result.equation == ""); + REQUIRE(!result.isError); + } + SECTION("Addition") { auto result = calculator.calculate("5+4+8+6");