summaryrefslogtreecommitdiff
path: root/src/unittests/utils/mathutils.cc
blob: 3f36c3f0c01c0502607ee2c3895d3c76d1aee619 (plain) (blame)
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
 *  The ManaPlus Client
 *  Copyright (C) 2013-2020  The ManaPlus Developers
 *  Copyright (C) 2020-2023  The ManaVerse Developers
 *
 *  This file is part of The ManaPlus Client.
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include "unittests/unittests.h"

#include "utils/mathutils.h"

#include "debug.h"

TEST_CASE("MathUtils powerOfTwo", "")
{
    REQUIRE(powerOfTwo(0) == 1);
    REQUIRE(powerOfTwo(1) == 1);
    REQUIRE(powerOfTwo(2) == 2);
    REQUIRE(powerOfTwo(3) == 4);
    REQUIRE(powerOfTwo(4) == 4);
    REQUIRE(powerOfTwo(5) == 8);
    REQUIRE(powerOfTwo(6) == 8);
    REQUIRE(powerOfTwo(7) == 8);
    REQUIRE(powerOfTwo(8) == 8);
    REQUIRE(powerOfTwo(9) == 16);
    REQUIRE(powerOfTwo(10) == 16);
    REQUIRE(powerOfTwo(11) == 16);
    REQUIRE(powerOfTwo(12) == 16);
    REQUIRE(powerOfTwo(13) == 16);
    REQUIRE(powerOfTwo(14) == 16);
    REQUIRE(powerOfTwo(15) == 16);
    REQUIRE(powerOfTwo(16) == 16);
    REQUIRE(powerOfTwo(17) == 32);
    REQUIRE(powerOfTwo(18) == 32);
    REQUIRE(powerOfTwo(19) == 32);
    REQUIRE(powerOfTwo(20) == 32);
    REQUIRE(powerOfTwo(21) == 32);
    REQUIRE(powerOfTwo(22) == 32);
    REQUIRE(powerOfTwo(23) == 32);
    REQUIRE(powerOfTwo(24) == 32);
    REQUIRE(powerOfTwo(25) == 32);
    REQUIRE(powerOfTwo(26) == 32);
    REQUIRE(powerOfTwo(27) == 32);
    REQUIRE(powerOfTwo(28) == 32);
    REQUIRE(powerOfTwo(29) == 32);
    REQUIRE(powerOfTwo(30) == 32);
    REQUIRE(powerOfTwo(31) == 32);
    REQUIRE(powerOfTwo(32) == 32);
    REQUIRE(powerOfTwo(33) == 64);
    REQUIRE(powerOfTwo(34) == 64);
    REQUIRE(powerOfTwo(35) == 64);
    REQUIRE(powerOfTwo(36) == 64);
    REQUIRE(powerOfTwo(37) == 64);
    REQUIRE(powerOfTwo(38) == 64);
    REQUIRE(powerOfTwo(39) == 64);
    REQUIRE(powerOfTwo(41) == 64);
    REQUIRE(powerOfTwo(42) == 64);
    REQUIRE(powerOfTwo(43) == 64);
    REQUIRE(powerOfTwo(44) == 64);
    REQUIRE(powerOfTwo(45) == 64);
    REQUIRE(powerOfTwo(46) == 64);
    REQUIRE(powerOfTwo(47) == 64);
    REQUIRE(powerOfTwo(48) == 64);
    REQUIRE(powerOfTwo(49) == 64);
    REQUIRE(powerOfTwo(50) == 64);
    REQUIRE(powerOfTwo(51) == 64);
    REQUIRE(powerOfTwo(52) == 64);
    REQUIRE(powerOfTwo(53) == 64);
    REQUIRE(powerOfTwo(54) == 64);
    REQUIRE(powerOfTwo(55) == 64);
    REQUIRE(powerOfTwo(56) == 64);
    REQUIRE(powerOfTwo(57) == 64);
    REQUIRE(powerOfTwo(58) == 64);
    REQUIRE(powerOfTwo(59) == 64);
    REQUIRE(powerOfTwo(60) == 64);
    REQUIRE(powerOfTwo(61) == 64);
    REQUIRE(powerOfTwo(62) == 64);
    REQUIRE(powerOfTwo(63) == 64);
    REQUIRE(powerOfTwo(64) == 64);
    REQUIRE(powerOfTwo(65) == 128);

    REQUIRE(powerOfTwo(1000000) == 1048576);
}

TEST_CASE("MathUtils tests fastSqrtInt", "")
{
    for (int f = 0; f < 1005; f ++)
        REQUIRE(fastSqrtInt(f) == CAST_S32(sqrt(f)));
}