vector.rs revision 648a1c137663ef7207684d0d7009dd5518942111
1#include "shared.rsh"
2
3// Testing vector types
4float2 f2 = { 1.0f, 2.0f };
5float3 f3 = { 1.0f, 2.0f, 3.0f };
6float4 f4 = { 1.0f, 2.0f, 3.0f, 4.0f };
7
8double2 d2 = { 1.0, 2.0 };
9double3 d3 = { 1.0, 2.0, 3.0 };
10double4 d4 = { 1.0, 2.0, 3.0, 4.0 };
11
12char2 i8_2 = { 1, 2 };
13char3 i8_3 = { 1, 2, 3 };
14char4 i8_4 = { 1, 2, 3, 4 };
15
16uchar2 u8_2 = { 1, 2 };
17uchar3 u8_3 = { 1, 2, 3 };
18uchar4 u8_4 = { 1, 2, 3, 4 };
19
20short2 i16_2 = { 1, 2 };
21short3 i16_3 = { 1, 2, 3 };
22short4 i16_4 = { 1, 2, 3, 4 };
23
24ushort2 u16_2 = { 1, 2 };
25ushort3 u16_3 = { 1, 2, 3 };
26ushort4 u16_4 = { 1, 2, 3, 4 };
27
28int2 i32_2 = { 1, 2 };
29int3 i32_3 = { 1, 2, 3 };
30int4 i32_4 = { 1, 2, 3, 4 };
31
32uint2 u32_2 = { 1, 2 };
33uint3 u32_3 = { 1, 2, 3 };
34uint4 u32_4 = { 1, 2, 3, 4 };
35
36long2 i64_2 = { 1, 2 };
37long3 i64_3 = { 1, 2, 3 };
38long4 i64_4 = { 1, 2, 3, 4 };
39
40ulong2 u64_2 = { 1, 2 };
41ulong3 u64_3 = { 1, 2, 3 };
42ulong4 u64_4 = { 1, 2, 3, 4 };
43
44static bool test_vector_types() {
45    bool failed = false;
46
47    rsDebug("Testing F32", 0);
48    _RS_ASSERT(f2.x == 2.99f);
49    _RS_ASSERT(f2.y == 3.99f);
50
51    _RS_ASSERT(f3.x == 2.99f);
52    _RS_ASSERT(f3.y == 3.99f);
53    _RS_ASSERT(f3.z == 4.99f);
54
55    _RS_ASSERT(f4.x == 2.99f);
56    _RS_ASSERT(f4.y == 3.99f);
57    _RS_ASSERT(f4.z == 4.99f);
58    _RS_ASSERT(f4.w == 5.99f);
59
60    rsDebug("Testing F64", 0);
61    _RS_ASSERT(d2.x == 2.99);
62    _RS_ASSERT(d2.y == 3.99);
63
64    _RS_ASSERT(d3.x == 2.99);
65    _RS_ASSERT(d3.y == 3.99);
66    _RS_ASSERT(d3.z == 4.99);
67
68    _RS_ASSERT(d4.x == 2.99);
69    _RS_ASSERT(d4.y == 3.99);
70    _RS_ASSERT(d4.z == 4.99);
71    _RS_ASSERT(d4.w == 5.99);
72
73    rsDebug("Testing I8", 0);
74    _RS_ASSERT(i8_2.x == 2);
75    _RS_ASSERT(i8_2.y == 3);
76
77    _RS_ASSERT(i8_3.x == 2);
78    _RS_ASSERT(i8_3.y == 3);
79    _RS_ASSERT(i8_3.z == 4);
80
81    _RS_ASSERT(i8_4.x == 2);
82    _RS_ASSERT(i8_4.y == 3);
83    _RS_ASSERT(i8_4.z == 4);
84    _RS_ASSERT(i8_4.w == 5);
85
86    rsDebug("Testing U8", 0);
87    _RS_ASSERT(u8_2.x == 2);
88    _RS_ASSERT(u8_2.y == 3);
89
90    _RS_ASSERT(u8_3.x == 2);
91    _RS_ASSERT(u8_3.y == 3);
92    _RS_ASSERT(u8_3.z == 4);
93
94    _RS_ASSERT(u8_4.x == 2);
95    _RS_ASSERT(u8_4.y == 3);
96    _RS_ASSERT(u8_4.z == 4);
97    _RS_ASSERT(u8_4.w == 5);
98
99    rsDebug("Testing I16", 0);
100    _RS_ASSERT(i16_2.x == 2);
101    _RS_ASSERT(i16_2.y == 3);
102
103    _RS_ASSERT(i16_3.x == 2);
104    _RS_ASSERT(i16_3.y == 3);
105    _RS_ASSERT(i16_3.z == 4);
106
107    _RS_ASSERT(i16_4.x == 2);
108    _RS_ASSERT(i16_4.y == 3);
109    _RS_ASSERT(i16_4.z == 4);
110    _RS_ASSERT(i16_4.w == 5);
111
112    rsDebug("Testing U16", 0);
113    _RS_ASSERT(u16_2.x == 2);
114    _RS_ASSERT(u16_2.y == 3);
115
116    _RS_ASSERT(u16_3.x == 2);
117    _RS_ASSERT(u16_3.y == 3);
118    _RS_ASSERT(u16_3.z == 4);
119
120    _RS_ASSERT(u16_4.x == 2);
121    _RS_ASSERT(u16_4.y == 3);
122    _RS_ASSERT(u16_4.z == 4);
123    _RS_ASSERT(u16_4.w == 5);
124
125    rsDebug("Testing I32", 0);
126    _RS_ASSERT(i32_2.x == 2);
127    _RS_ASSERT(i32_2.y == 3);
128
129    _RS_ASSERT(i32_3.x == 2);
130    _RS_ASSERT(i32_3.y == 3);
131    _RS_ASSERT(i32_3.z == 4);
132
133    _RS_ASSERT(i32_4.x == 2);
134    _RS_ASSERT(i32_4.y == 3);
135    _RS_ASSERT(i32_4.z == 4);
136    _RS_ASSERT(i32_4.w == 5);
137
138    rsDebug("Testing U32", 0);
139    _RS_ASSERT(u32_2.x == 2);
140    _RS_ASSERT(u32_2.y == 3);
141
142    _RS_ASSERT(u32_3.x == 2);
143    _RS_ASSERT(u32_3.y == 3);
144    _RS_ASSERT(u32_3.z == 4);
145
146    _RS_ASSERT(u32_4.x == 2);
147    _RS_ASSERT(u32_4.y == 3);
148    _RS_ASSERT(u32_4.z == 4);
149    _RS_ASSERT(u32_4.w == 5);
150
151    rsDebug("Testing I64", 0);
152    _RS_ASSERT(i64_2.x == 2);
153    _RS_ASSERT(i64_2.y == 3);
154
155    _RS_ASSERT(i64_3.x == 2);
156    _RS_ASSERT(i64_3.y == 3);
157    _RS_ASSERT(i64_3.z == 4);
158
159    _RS_ASSERT(i64_4.x == 2);
160    _RS_ASSERT(i64_4.y == 3);
161    _RS_ASSERT(i64_4.z == 4);
162    _RS_ASSERT(i64_4.w == 5);
163
164    rsDebug("Testing U64", 0);
165    _RS_ASSERT(u64_2.x == 2);
166    _RS_ASSERT(u64_2.y == 3);
167
168    _RS_ASSERT(u64_3.x == 2);
169    _RS_ASSERT(u64_3.y == 3);
170    _RS_ASSERT(u64_3.z == 4);
171
172    _RS_ASSERT(u64_4.x == 2);
173    _RS_ASSERT(u64_4.y == 3);
174    _RS_ASSERT(u64_4.z == 4);
175    _RS_ASSERT(u64_4.w == 5);
176
177    if (failed) {
178        rsDebug("test_vector FAILED", 0);
179    }
180    else {
181        rsDebug("test_vector PASSED", 0);
182    }
183
184    return failed;
185}
186
187void vector_test() {
188    bool failed = false;
189    failed |= test_vector_types();
190
191    if (failed) {
192        rsSendToClientBlocking(RS_MSG_TEST_FAILED);
193    }
194    else {
195        rsSendToClientBlocking(RS_MSG_TEST_PASSED);
196    }
197}
198
199