M module-apps/application-calculator/data/CalculatorUtility.cpp => module-apps/application-calculator/data/CalculatorUtility.cpp +6 -1
@@ 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)) {
M module-apps/application-calculator/tests/CalculatorUtility_tests.cpp => module-apps/application-calculator/tests/CalculatorUtility_tests.cpp +9 -1
@@ 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");