~aleteoryx/muditaos

ref: 7d7003d62639426be8eb00f4fc288b68139f5566 muditaos/module-utils/test/test_math.cpp -rw-r--r-- 1.8 KiB
7d7003d6 — Marcin Smoczyński Merge branch 'master' into stable 5 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one cpp file

#include <catch2/catch.hpp>

#include "math/Math.hpp"

using namespace trigonometry;

TEST_CASE("Math")
{
    SECTION("Trigonometry")
    {
        SECTION("Degrees to radians")
        {
            REQUIRE(toRadians(-720) == Approx(-4 * M_PI));
            REQUIRE(toRadians(-360) == Approx(-2 * M_PI));
            REQUIRE(toRadians(-180) == Approx(-M_PI));
            REQUIRE(toRadians(-30) == Approx(-M_PI / 6));
            REQUIRE(toRadians(-12) == Approx(-M_PI / 15));
            REQUIRE(toRadians(-1) == Approx(-M_PI / 180));
            REQUIRE(toRadians(1) == Approx(M_PI / 180));
            REQUIRE(toRadians(12) == Approx(M_PI / 15));
            REQUIRE(toRadians(30) == Approx(M_PI / 6));
            REQUIRE(toRadians(180) == Approx(M_PI));
            REQUIRE(toRadians(360) == Approx(2 * M_PI));
            REQUIRE(toRadians(720) == Approx(4 * M_PI));
        }

        SECTION("Adjacent side length calculation")
        {
            REQUIRE(AdjacentSide::fromAngle(toRadians(30), 6) == 5);
            REQUIRE(AdjacentSide::fromCosine(std::cos(toRadians(30)), 6) == 5);

            REQUIRE(AdjacentSide::fromAngle(toRadians(60), 6) == 3);
            REQUIRE(AdjacentSide::fromCosine(std::cos(toRadians(60)), 6) == 3);
        }

        SECTION("Opposite side length calculation")
        {
            REQUIRE(OppositeSide::fromAngle(toRadians(30), 6) == 3);
            REQUIRE(OppositeSide::fromSine(std::sin(toRadians(30)), 6) == 3);

            REQUIRE(OppositeSide::fromAngle(toRadians(60), 6) == 5);
            REQUIRE(OppositeSide::fromSine(std::sin(toRadians(60)), 6) == 5);
        }
    }
}