Skip to content

Commit 4dde0e4

Browse files
authored
Merge pull request #1039 from NativeScript/bektchiev/add-matrix-arg-tests
tests: Add tests for functions accepting SIMD matrices as args
2 parents 083ab40 + 5e57cab commit 4dde0e4

File tree

5 files changed

+238
-1
lines changed

5 files changed

+238
-1
lines changed

tests/TestFixtures/Marshalling/TNSRecords.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,26 @@ matrix_double3x4 getMatrixDouble3x4();
160160
matrix_double4x2 getMatrixDouble4x2();
161161
matrix_double4x3 getMatrixDouble4x3();
162162
matrix_double4x4 getMatrixDouble4x4();
163+
164+
matrix_float2x2 doubleMatrixFloat2x2(matrix_float2x2);
165+
matrix_float2x3 doubleMatrixFloat2x3(matrix_float2x3);
166+
matrix_float2x4 doubleMatrixFloat2x4(matrix_float2x4);
167+
matrix_float3x2 doubleMatrixFloat3x2(matrix_float3x2);
168+
matrix_float3x3 doubleMatrixFloat3x3(matrix_float3x3);
169+
matrix_float3x4 doubleMatrixFloat3x4(matrix_float3x4);
170+
matrix_float4x2 doubleMatrixFloat4x2(matrix_float4x2);
171+
matrix_float4x3 doubleMatrixFloat4x3(matrix_float4x3);
172+
matrix_float4x4 doubleMatrixFloat4x4(matrix_float4x4);
173+
matrix_double2x2 doubleMatrixDouble2x2(matrix_double2x2);
174+
matrix_double2x3 doubleMatrixDouble2x3(matrix_double2x3);
175+
matrix_double2x4 doubleMatrixDouble2x4(matrix_double2x4);
176+
matrix_double3x2 doubleMatrixDouble3x2(matrix_double3x2);
177+
matrix_double3x3 doubleMatrixDouble3x3(matrix_double3x3);
178+
matrix_double3x4 doubleMatrixDouble3x4(matrix_double3x4);
179+
matrix_double4x2 doubleMatrixDouble4x2(matrix_double4x2);
180+
matrix_double4x3 doubleMatrixDouble4x3(matrix_double4x3);
181+
matrix_double4x4 doubleMatrixDouble4x4(matrix_double4x4);
182+
163183
simd_float2 getFloat2();
164184
simd_float3 getFloat3();
165185
simd_float4 getFloat4();

tests/TestFixtures/Marshalling/TNSRecords.m

Lines changed: 126 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,132 @@ matrix_double4x4 getMatrixDouble4x4() {
268268
return result;
269269
}
270270

271+
matrix_float2x2 doubleMatrixFloat2x2(matrix_float2x2 m) {
272+
for (int i = 0; i < 4; i++) {
273+
m.columns[i % 2][i / 2] *= 2;
274+
}
275+
return m;
276+
}
277+
278+
matrix_float2x3 doubleMatrixFloat2x3(matrix_float2x3 m) {
279+
for (int i = 0; i < 6; i++) {
280+
m.columns[i % 2][i / 2] *= 2;
281+
}
282+
return m;
283+
}
284+
285+
matrix_float2x4 doubleMatrixFloat2x4(matrix_float2x4 m) {
286+
for (int i = 0; i < 8; i++) {
287+
m.columns[i % 2][i / 2] *= 2;
288+
}
289+
return m;
290+
}
291+
292+
matrix_float3x2 doubleMatrixFloat3x2(matrix_float3x2 m) {
293+
for (int i = 0; i < 6; i++) {
294+
m.columns[i % 3][i / 3] *= 2;
295+
}
296+
return m;
297+
}
298+
299+
matrix_float3x3 doubleMatrixFloat3x3(matrix_float3x3 m) {
300+
for (int i = 0; i < 9; i++) {
301+
m.columns[i % 3][i / 3] *= 2;
302+
}
303+
return m;
304+
}
305+
306+
matrix_float3x4 doubleMatrixFloat3x4(matrix_float3x4 m) {
307+
for (int i = 0; i < 12; i++) {
308+
m.columns[i % 3][i / 3] *= 2;
309+
}
310+
return m;
311+
}
312+
313+
matrix_float4x2 doubleMatrixFloat4x2(matrix_float4x2 m) {
314+
for (int i = 0; i < 8; i++) {
315+
m.columns[i % 4][i / 4] *= 2;
316+
}
317+
return m;
318+
}
319+
320+
matrix_float4x3 doubleMatrixFloat4x3(matrix_float4x3 m) {
321+
for (int i = 0; i < 12; i++) {
322+
m.columns[i % 4][i / 4] *= 2;
323+
}
324+
return m;
325+
}
326+
327+
matrix_float4x4 doubleMatrixFloat4x4(matrix_float4x4 m) {
328+
for (int i = 0; i < 16; i++) {
329+
m.columns[i % 4][i / 4] *= 2;
330+
}
331+
return m;
332+
}
333+
334+
matrix_double2x2 doubleMatrixDouble2x2(matrix_double2x2 m) {
335+
for (int i = 0; i < 4; i++) {
336+
m.columns[i % 2][i / 2] *= 2;
337+
}
338+
return m;
339+
}
340+
341+
matrix_double2x3 doubleMatrixDouble2x3(matrix_double2x3 m) {
342+
for (int i = 0; i < 6; i++) {
343+
m.columns[i % 2][i / 2] *= 2;
344+
}
345+
return m;
346+
}
347+
348+
matrix_double2x4 doubleMatrixDouble2x4(matrix_double2x4 m) {
349+
for (int i = 0; i < 8; i++) {
350+
m.columns[i % 2][i / 2] *= 2;
351+
}
352+
return m;
353+
}
354+
355+
matrix_double3x2 doubleMatrixDouble3x2(matrix_double3x2 m) {
356+
for (int i = 0; i < 6; i++) {
357+
m.columns[i % 3][i / 3] *= 2;
358+
}
359+
return m;
360+
}
361+
362+
matrix_double3x3 doubleMatrixDouble3x3(matrix_double3x3 m) {
363+
for (int i = 0; i < 9; i++) {
364+
m.columns[i % 3][i / 3] *= 2;
365+
}
366+
return m;
367+
}
368+
369+
matrix_double3x4 doubleMatrixDouble3x4(matrix_double3x4 m) {
370+
for (int i = 0; i < 12; i++) {
371+
m.columns[i % 3][i / 3] *= 2;
372+
}
373+
return m;
374+
}
375+
376+
matrix_double4x2 doubleMatrixDouble4x2(matrix_double4x2 m) {
377+
for (int i = 0; i < 8; i++) {
378+
m.columns[i % 4][i / 4] *= 2;
379+
}
380+
return m;
381+
}
382+
383+
matrix_double4x3 doubleMatrixDouble4x3(matrix_double4x3 m) {
384+
for (int i = 0; i < 12; i++) {
385+
m.columns[i % 4][i / 4] *= 2;
386+
}
387+
return m;
388+
}
389+
390+
matrix_double4x4 doubleMatrixDouble4x4(matrix_double4x4 m) {
391+
for (int i = 0; i < 16; i++) {
392+
m.columns[i % 4][i / 4] *= 2;
393+
}
394+
return m;
395+
}
396+
271397
simd_float2 getFloat2() {
272398
simd_float2 float2 = simd_make_float2(1.2345, 2.3456);
273399
return float2;
@@ -372,4 +498,3 @@ SCNVector4 _SCNVector4FromFloat4(simd_float4 v) {
372498
SCNMatrix4 _SCNMatrix4FromMat4(simd_float4x4 m) {
373499
return SCNMatrix4FromMat4(m);
374500
}
375-

tests/TestFixtures/exported-symbols.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,24 @@ _getMatrixDouble3x2
133133
_getMatrixDouble2x4
134134
_getMatrixDouble2x3
135135
_getMatrixDouble2x2
136+
_doubleMatrixFloat4x4
137+
_doubleMatrixFloat4x3
138+
_doubleMatrixFloat4x2
139+
_doubleMatrixFloat3x4
140+
_doubleMatrixFloat3x3
141+
_doubleMatrixFloat3x2
142+
_doubleMatrixFloat2x4
143+
_doubleMatrixFloat2x3
144+
_doubleMatrixFloat2x2
145+
_doubleMatrixDouble4x4
146+
_doubleMatrixDouble4x3
147+
_doubleMatrixDouble4x2
148+
_doubleMatrixDouble3x4
149+
_doubleMatrixDouble3x3
150+
_doubleMatrixDouble3x2
151+
_doubleMatrixDouble2x4
152+
_doubleMatrixDouble2x3
153+
_doubleMatrixDouble2x2
136154
_getNestedStruct
137155
_getFloat2
138156
_getFloat3

tests/TestRunner/app/Infrastructure/Jasmine/jasmine-2.0.1/jasmine.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1587,6 +1587,8 @@ getJasmineRequireObj().QueueRunner = function(j$) {
15871587

15881588
for(iterativeIndex = recursiveIndex; iterativeIndex < length; iterativeIndex++) {
15891589
var fn = fns[iterativeIndex];
1590+
// Uncomment the following line for easy identification of a failing/crashing test
1591+
// console.log("*** JASMINE *** RUNNING test function:\n", fn);
15901592
if (fn.length > 0) {
15911593
return attemptAsync(fn);
15921594
} else {

tests/TestRunner/app/Marshalling/MatrixTests.js

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,125 +4,197 @@ describe(module.id, function () {
44
for (var i = 0; i < 16; i++) {
55
expect(simdMatrix.columns[i%4][Math.floor(i/4)].toFixed(4)).toBe((i*3.1415).toFixed(4));
66
}
7+
simdMatrix = doubleMatrixFloat4x4(simdMatrix);
8+
for (var i = 0; i < 16; i++) {
9+
expect(simdMatrix.columns[i%4][Math.floor(i/4)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
10+
}
711
});
812

913
it("simd_float4x3Matrix", function(){
1014
var simdMatrix = getMatrixFloat4x3();
1115
for (var i = 0; i < 12; i++) {
1216
expect(simdMatrix.columns[i%4][Math.floor(i/4)].toFixed(4)).toBe((i*3.1415).toFixed(4));
1317
}
18+
simdMatrix = doubleMatrixFloat4x3(simdMatrix);
19+
for (var i = 0; i < 12; i++) {
20+
expect(simdMatrix.columns[i%4][Math.floor(i/4)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
21+
}
1422
});
1523

1624
it("simd_float4x2Matrix", function(){
1725
var simdMatrix = getMatrixFloat4x2();
1826
for (var i = 0; i < 8; i++) {
1927
expect(simdMatrix.columns[i%4][Math.floor(i/4)].toFixed(4)).toBe((i*3.1415).toFixed(4));
2028
}
29+
simdMatrix = doubleMatrixFloat4x2(simdMatrix);
30+
for (var i = 0; i < 8; i++) {
31+
expect(simdMatrix.columns[i%4][Math.floor(i/4)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
32+
}
2133
});
2234

2335
it("simd_float3x4Matrix", function(){
2436
var simdMatrix = getMatrixFloat3x4();
2537
for (var i = 0; i < 12; i++) {
2638
expect(simdMatrix.columns[i%3][Math.floor(i/3)].toFixed(4)).toBe((i*3.1415).toFixed(4));
2739
}
40+
simdMatrix = doubleMatrixFloat3x4(simdMatrix);
41+
for (var i = 0; i < 12; i++) {
42+
expect(simdMatrix.columns[i%3][Math.floor(i/3)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
43+
}
2844
});
2945

3046
it("simd_float3x3Matrix", function(){
3147
var simdMatrix = getMatrixFloat3x3();
3248
for (var i = 0; i < 9; i++) {
3349
expect(simdMatrix.columns[i%3][Math.floor(i/3)].toFixed(4)).toBe((i*3.1415).toFixed(4));
3450
}
51+
simdMatrix = doubleMatrixFloat3x3(simdMatrix);
52+
for (var i = 0; i < 9; i++) {
53+
expect(simdMatrix.columns[i%3][Math.floor(i/3)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
54+
}
3555
});
3656

3757
it("simd_float3x2Matrix", function(){
3858
var simdMatrix = getMatrixFloat3x2();
3959
for (var i = 0; i < 6; i++) {
4060
expect(simdMatrix.columns[i%3][Math.floor(i/3)].toFixed(4)).toBe((i*3.1415).toFixed(4));
4161
}
62+
simdMatrix = doubleMatrixFloat3x2(simdMatrix);
63+
for (var i = 0; i < 6; i++) {
64+
expect(simdMatrix.columns[i%3][Math.floor(i/3)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
65+
}
4266
});
4367

4468
it("simd_float2x4Matrix", function(){
4569
var simdMatrix = getMatrixFloat2x4();
4670
for (var i = 0; i < 8; i++) {
4771
expect(simdMatrix.columns[i%2][Math.floor(i/2)].toFixed(4)).toBe((i*3.1415).toFixed(4));
4872
}
73+
simdMatrix = doubleMatrixFloat2x4(simdMatrix);
74+
for (var i = 0; i < 8; i++) {
75+
expect(simdMatrix.columns[i%2][Math.floor(i/2)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
76+
}
4977
});
5078

5179
it("simd_float2x3Matrix", function(){
5280
var simdMatrix = getMatrixFloat2x3();
5381
for (var i = 0; i < 6; i++) {
5482
expect(simdMatrix.columns[i%2][Math.floor(i/2)].toFixed(4)).toBe((i*3.1415).toFixed(4));
5583
}
84+
simdMatrix = doubleMatrixFloat2x3(simdMatrix);
85+
for (var i = 0; i < 6; i++) {
86+
expect(simdMatrix.columns[i%2][Math.floor(i/2)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
87+
}
5688
});
5789

5890
it("simd_float2x2Matrix", function(){
5991
var simdMatrix = getMatrixFloat2x2();
6092
for (var i = 0; i < 4; i++) {
6193
expect(simdMatrix.columns[i%2][Math.floor(i/2)].toFixed(4)).toBe((i*3.1415).toFixed(4));
6294
}
95+
simdMatrix = doubleMatrixFloat2x2(simdMatrix);
96+
for (var i = 0; i < 4; i++) {
97+
expect(simdMatrix.columns[i%2][Math.floor(i/2)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
98+
}
6399
});
64100

65101
it("simd_double4x4Matrix", function(){
66102
var simdMatrix = getMatrixDouble4x4();
67103
for (var i = 0; i < 16; i++) {
68104
expect(simdMatrix.columns[i%4][Math.floor(i/4)].toFixed(4)).toBe((i*3.1415).toFixed(4));
69105
}
106+
simdMatrix = doubleMatrixDouble4x4(simdMatrix);
107+
for (var i = 0; i < 16; i++) {
108+
expect(simdMatrix.columns[i%4][Math.floor(i/4)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
109+
}
70110
});
71111

72112
it("simd_double4x3Matrix", function(){
73113
var simdMatrix = getMatrixDouble4x3();
74114
for (var i = 0; i < 12; i++) {
75115
expect(simdMatrix.columns[i%4][Math.floor(i/4)].toFixed(4)).toBe((i*3.1415).toFixed(4));
76116
}
117+
simdMatrix = doubleMatrixDouble4x3(simdMatrix);
118+
for (var i = 0; i < 12; i++) {
119+
expect(simdMatrix.columns[i%4][Math.floor(i/4)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
120+
}
77121
});
78122

79123
it("simd_double4x2Matrix", function(){
80124
var simdMatrix = getMatrixDouble4x2();
81125
for (var i = 0; i < 8; i++) {
82126
expect(simdMatrix.columns[i%4][Math.floor(i/4)].toFixed(4)).toBe((i*3.1415).toFixed(4));
83127
}
128+
simdMatrix = doubleMatrixDouble4x2(simdMatrix);
129+
for (var i = 0; i < 8; i++) {
130+
expect(simdMatrix.columns[i%4][Math.floor(i/4)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
131+
}
84132
});
85133

86134
it("simd_double3x4Matrix", function(){
87135
var simdMatrix = getMatrixDouble3x4();
88136
for (var i = 0; i < 12; i++) {
89137
expect(simdMatrix.columns[i%3][Math.floor(i/3)].toFixed(4)).toBe((i*3.1415).toFixed(4));
90138
}
139+
simdMatrix = doubleMatrixDouble3x4(simdMatrix);
140+
for (var i = 0; i < 12; i++) {
141+
expect(simdMatrix.columns[i%3][Math.floor(i/3)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
142+
}
91143
});
92144

93145
it("simd_double3x3Matrix", function(){
94146
var simdMatrix = getMatrixDouble3x3();
95147
for (var i = 0; i < 9; i++) {
96148
expect(simdMatrix.columns[i%3][Math.floor(i/3)].toFixed(4)).toBe((i*3.1415).toFixed(4));
97149
}
150+
simdMatrix = doubleMatrixDouble3x3(simdMatrix);
151+
for (var i = 0; i < 9; i++) {
152+
expect(simdMatrix.columns[i%3][Math.floor(i/3)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
153+
}
98154
});
99155

100156
it("simd_double3x2Matrix", function(){
101157
var simdMatrix = getMatrixDouble3x2();
102158
for (var i = 0; i < 6; i++) {
103159
expect(simdMatrix.columns[i%3][Math.floor(i/3)].toFixed(4)).toBe((i*3.1415).toFixed(4));
104160
}
161+
simdMatrix = doubleMatrixDouble3x2(simdMatrix);
162+
for (var i = 0; i < 6; i++) {
163+
expect(simdMatrix.columns[i%3][Math.floor(i/3)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
164+
}
105165
});
106166

107167
it("simd_double2x4Matrix", function(){
108168
var simdMatrix = getMatrixDouble2x4();
109169
for (var i = 0; i < 8; i++) {
110170
expect(simdMatrix.columns[i%2][Math.floor(i/2)].toFixed(4)).toBe((i*3.1415).toFixed(4));
111171
}
172+
simdMatrix = doubleMatrixDouble2x4(simdMatrix);
173+
for (var i = 0; i < 8; i++) {
174+
expect(simdMatrix.columns[i%2][Math.floor(i/2)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
175+
}
112176
});
113177

114178
it("simd_double2x3Matrix", function(){
115179
var simdMatrix = getMatrixDouble2x3();
116180
for (var i = 0; i < 6; i++) {
117181
expect(simdMatrix.columns[i%2][Math.floor(i/2)].toFixed(4)).toBe((i*3.1415).toFixed(4));
118182
}
183+
simdMatrix = doubleMatrixDouble2x3(simdMatrix);
184+
for (var i = 0; i < 6; i++) {
185+
expect(simdMatrix.columns[i%2][Math.floor(i/2)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
186+
}
119187
});
120188

121189
it("simd_double2x2Matrix", function(){
122190
var simdMatrix = getMatrixDouble2x2();
123191
for (var i = 0; i < 4; i++) {
124192
expect(simdMatrix.columns[i%2][Math.floor(i/2)].toFixed(4)).toBe((i*3.1415).toFixed(4));
125193
}
194+
simdMatrix = doubleMatrixDouble2x2(simdMatrix);
195+
for (var i = 0; i < 4; i++) {
196+
expect(simdMatrix.columns[i%2][Math.floor(i/2)].toFixed(4)).toBe((2*i*3.1415).toFixed(4));
197+
}
126198
});
127199

128200
it("SCNMatrix4FromMat4", function() {

0 commit comments

Comments
 (0)