aboutsummaryrefslogtreecommitdiff
path: root/Client/ThirdParty/libfixmath/tests/tests_lerp.c
blob: b3a04f6352a3137b6509147d2d1abd1e26f3d473 (plain)
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
#include "tests_lerp.h"
#include "tests.h"

int test_lerp()
{
    ASSERT_EQ_INT(fix16_lerp8(0, 2, 0), 0);
    ASSERT_EQ_INT(fix16_lerp8(0, 2, 127), 0);
    ASSERT_EQ_INT(fix16_lerp8(0, 2, 128), 1);
    ASSERT_EQ_INT(fix16_lerp8(0, 2, 255), 1);
    ASSERT_EQ_INT(fix16_lerp8(fix16_minimum, fix16_maximum, 0), fix16_minimum);
    ASSERT_EQ_INT(fix16_lerp8(fix16_minimum, fix16_maximum, 255),
                  (fix16_maximum - (1 << 24)));
    ASSERT_EQ_INT(fix16_lerp8(-fix16_maximum, fix16_maximum, 128), 0);

    ASSERT_EQ_INT(fix16_lerp16(0, 2, 0), 0);
    ASSERT_EQ_INT(fix16_lerp16(0, 2, 0x7fff), 0);
    ASSERT_EQ_INT(fix16_lerp16(0, 2, 0x8000), 1);
    ASSERT_EQ_INT(fix16_lerp16(0, 2, 0xffff), 1);
    ASSERT_EQ_INT(fix16_lerp16(fix16_minimum, fix16_maximum, 0), fix16_minimum);
    ASSERT_EQ_INT(fix16_lerp16(fix16_minimum, fix16_maximum, 0xffff),
                  (fix16_maximum - (1 << 16)));
    ASSERT_EQ_INT(fix16_lerp16(-fix16_maximum, fix16_maximum, 0x8000), 0);

    ASSERT_EQ_INT(fix16_lerp32(0, 2, 0), 0);
    ASSERT_EQ_INT(fix16_lerp32(0, 2, 0x7fffffff), 0);
    ASSERT_EQ_INT(fix16_lerp32(0, 2, 0x80000000), 1);
    ASSERT_EQ_INT(fix16_lerp32(0, 2, 0xffffffff), 1);
    ASSERT_EQ_INT(fix16_lerp32(fix16_minimum, fix16_maximum, 0), fix16_minimum);
    ASSERT_EQ_INT(fix16_lerp32(fix16_minimum, fix16_maximum, 0xffffffff),
                  (fix16_maximum - 1));
    ASSERT_EQ_INT(fix16_lerp32(-fix16_maximum, fix16_maximum, 0x80000000), 0);
    return 0;
}