~aleteoryx/muditaos

eac3d236269b56ea3a585fff43ec9f2edb9d3cf8 — Artur Śleszyński 5 years ago 6f2d77c
[EGD-6498] Do not perform calculations on empty input

We do not produce an error when user calculates empty input.
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");