source: trunk/test/unit/build.cpp @ 2183

Last change on this file since 2183 was 2183, checked in by sam, 7 years ago

build: fix the WTFPL site URL in all code comments.

  • Property svn:keywords set to Id
File size: 4.8 KB
Line 
1//
2// Lol Engine
3//
4// Copyright: (c) 2010-2012 Sam Hocevar <sam@hocevar.net>
5//   This program is free software; you can redistribute it and/or
6//   modify it under the terms of the Do What The Fuck You Want To
7//   Public License, Version 2, as published by Sam Hocevar. See
8//   http://www.wtfpl.net/ for more details.
9//
10
11#if defined HAVE_CONFIG_H
12#   include "config.h"
13#endif
14
15#include "core.h"
16#include "lol/unit.h"
17
18namespace lol
19{
20
21LOLUNIT_FIXTURE(BuildTest)
22{
23    LOLUNIT_TEST(TypeSizeHalf)
24    {
25        LOLUNIT_ASSERT_EQUAL(sizeof(half), 2);
26
27        LOLUNIT_ASSERT_EQUAL(sizeof(f16vec2), 4);
28        LOLUNIT_ASSERT_EQUAL(sizeof(f16vec3), 6);
29        LOLUNIT_ASSERT_EQUAL(sizeof(f16vec4), 8);
30
31        LOLUNIT_ASSERT_EQUAL(sizeof(f16mat2), 8);
32        LOLUNIT_ASSERT_EQUAL(sizeof(f16mat3), 18);
33        LOLUNIT_ASSERT_EQUAL(sizeof(f16mat4), 32);
34    }
35
36    LOLUNIT_TEST(TypeSizeFloat)
37    {
38        LOLUNIT_ASSERT_EQUAL(sizeof(float), 4);
39
40        LOLUNIT_ASSERT_EQUAL(sizeof(vec2), 8);
41        LOLUNIT_ASSERT_EQUAL(sizeof(vec3), 12);
42        LOLUNIT_ASSERT_EQUAL(sizeof(vec4), 16);
43
44        LOLUNIT_ASSERT_EQUAL(sizeof(mat2), 16);
45        LOLUNIT_ASSERT_EQUAL(sizeof(mat3), 36);
46        LOLUNIT_ASSERT_EQUAL(sizeof(mat4), 64);
47    }
48
49    LOLUNIT_TEST(TypeSizeDouble)
50    {
51        LOLUNIT_ASSERT_EQUAL(sizeof(double), 8);
52
53        LOLUNIT_ASSERT_EQUAL(sizeof(dvec2), 16);
54        LOLUNIT_ASSERT_EQUAL(sizeof(dvec3), 24);
55        LOLUNIT_ASSERT_EQUAL(sizeof(dvec4), 32);
56
57        LOLUNIT_ASSERT_EQUAL(sizeof(dmat2), 32);
58        LOLUNIT_ASSERT_EQUAL(sizeof(dmat3), 72);
59        LOLUNIT_ASSERT_EQUAL(sizeof(dmat4), 128);
60    }
61
62    LOLUNIT_TEST(TypeSizeInt8)
63    {
64        LOLUNIT_ASSERT_EQUAL(sizeof(i8vec2), 2);
65        LOLUNIT_ASSERT_EQUAL(sizeof(u8vec2), 2);
66        LOLUNIT_ASSERT_EQUAL(sizeof(i8vec3), 3);
67        LOLUNIT_ASSERT_EQUAL(sizeof(u8vec3), 3);
68        LOLUNIT_ASSERT_EQUAL(sizeof(i8vec4), 4);
69        LOLUNIT_ASSERT_EQUAL(sizeof(u8vec4), 4);
70
71        LOLUNIT_ASSERT_EQUAL(sizeof(i8mat2), 4);
72        LOLUNIT_ASSERT_EQUAL(sizeof(u8mat2), 4);
73        LOLUNIT_ASSERT_EQUAL(sizeof(i8mat3), 9);
74        LOLUNIT_ASSERT_EQUAL(sizeof(u8mat3), 9);
75        LOLUNIT_ASSERT_EQUAL(sizeof(i8mat4), 16);
76        LOLUNIT_ASSERT_EQUAL(sizeof(u8mat4), 16);
77    }
78
79    LOLUNIT_TEST(TypeSizeInt16)
80    {
81        LOLUNIT_ASSERT_EQUAL(sizeof(i16vec2), 4);
82        LOLUNIT_ASSERT_EQUAL(sizeof(u16vec2), 4);
83        LOLUNIT_ASSERT_EQUAL(sizeof(i16vec3), 6);
84        LOLUNIT_ASSERT_EQUAL(sizeof(u16vec3), 6);
85        LOLUNIT_ASSERT_EQUAL(sizeof(i16vec4), 8);
86        LOLUNIT_ASSERT_EQUAL(sizeof(u16vec4), 8);
87
88        LOLUNIT_ASSERT_EQUAL(sizeof(i16mat2), 8);
89        LOLUNIT_ASSERT_EQUAL(sizeof(u16mat2), 8);
90        LOLUNIT_ASSERT_EQUAL(sizeof(i16mat3), 18);
91        LOLUNIT_ASSERT_EQUAL(sizeof(u16mat3), 18);
92        LOLUNIT_ASSERT_EQUAL(sizeof(i16mat4), 32);
93        LOLUNIT_ASSERT_EQUAL(sizeof(u16mat4), 32);
94    }
95
96    LOLUNIT_TEST(TypeSizeInt32)
97    {
98        LOLUNIT_ASSERT_EQUAL(sizeof(ivec2), 8);
99        LOLUNIT_ASSERT_EQUAL(sizeof(uvec2), 8);
100        LOLUNIT_ASSERT_EQUAL(sizeof(ivec3), 12);
101        LOLUNIT_ASSERT_EQUAL(sizeof(uvec3), 12);
102        LOLUNIT_ASSERT_EQUAL(sizeof(ivec4), 16);
103        LOLUNIT_ASSERT_EQUAL(sizeof(uvec4), 16);
104
105        LOLUNIT_ASSERT_EQUAL(sizeof(imat2), 16);
106        LOLUNIT_ASSERT_EQUAL(sizeof(umat2), 16);
107        LOLUNIT_ASSERT_EQUAL(sizeof(imat3), 36);
108        LOLUNIT_ASSERT_EQUAL(sizeof(umat3), 36);
109        LOLUNIT_ASSERT_EQUAL(sizeof(imat4), 64);
110        LOLUNIT_ASSERT_EQUAL(sizeof(umat4), 64);
111    }
112
113    LOLUNIT_TEST(TypeSizeInt64)
114    {
115        LOLUNIT_ASSERT_EQUAL(sizeof(i64vec2), 16);
116        LOLUNIT_ASSERT_EQUAL(sizeof(u64vec2), 16);
117        LOLUNIT_ASSERT_EQUAL(sizeof(i64vec3), 24);
118        LOLUNIT_ASSERT_EQUAL(sizeof(u64vec3), 24);
119        LOLUNIT_ASSERT_EQUAL(sizeof(i64vec4), 32);
120        LOLUNIT_ASSERT_EQUAL(sizeof(u64vec4), 32);
121
122        LOLUNIT_ASSERT_EQUAL(sizeof(i64mat2), 32);
123        LOLUNIT_ASSERT_EQUAL(sizeof(u64mat2), 32);
124        LOLUNIT_ASSERT_EQUAL(sizeof(i64mat3), 72);
125        LOLUNIT_ASSERT_EQUAL(sizeof(u64mat3), 72);
126        LOLUNIT_ASSERT_EQUAL(sizeof(i64mat4), 128);
127        LOLUNIT_ASSERT_EQUAL(sizeof(u64mat4), 128);
128    }
129
130#if !defined LOL_DEBUG
131    LOLUNIT_TEST(FastMath)
132    {
133        double x, y;
134
135        y = x = 1.0 + RandF(0.1f, 0.2f);
136        y += 4503599627370496.0;
137        /* The compiler should optimise this away */
138        y -= 4503599627370496.0;
139
140        LOLUNIT_ASSERT_EQUAL(x, y);
141    }
142#endif
143
144    LOLUNIT_TEST(FastMathOverride)
145    {
146        double x, y;
147
148        y = x = 1.0 + RandF(0.1f, 0.2f);
149        y += 4503599627370496.0;
150        FP_USE(y);
151        /* The compiler should not optimise this away */
152        y -= 4503599627370496.0;
153
154        LOLUNIT_ASSERT_EQUAL(1.0, y);
155    }
156
157    LOLUNIT_TEST(IsNaN)
158    {
159        union { float f; uint32_t x; } u;
160
161        u.x = 0x7fc00000u;
162        LOLUNIT_ASSERT(isnan(u.f));
163    }
164};
165
166} /* namespace lol */
167
Note: See TracBrowser for help on using the repository browser.