forked from PierreSenellart/matrix_tutorial
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_matrix.c
More file actions
94 lines (79 loc) · 2.13 KB
/
test_matrix.c
File metadata and controls
94 lines (79 loc) · 2.13 KB
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
#include "utest.h"
#include "matrix.h"
#include <math.h>
UTEST(matrix_create, simple) {
matrix m = matrix_create(3, 5, 0.);
ASSERT_TRUE(m.ok && m.n1==3 && m.n2==5);
}
UTEST(matrix_create, too_large) {
matrix m = matrix_create((unsigned)-1, (unsigned)-1, 0.);
ASSERT_FALSE(m.ok);
}
UTEST(matrix_create, zero) {
matrix m = matrix_create(0, 0, 0.);
ASSERT_TRUE(m.ok && m.n1==0 && m.n2==0);
}
UTEST(matrix_identity, simple) {
matrix m = matrix_identity(42);
ASSERT_TRUE(m.ok && m.n1==42 && m.n2==42);
}
UTEST(matrix_identity, too_large) {
matrix m = matrix_identity((unsigned) -1);
ASSERT_TRUE(!m.ok);
}
UTEST(matrix_identity, zero) {
matrix m = matrix_identity(0);
ASSERT_TRUE(m.ok && m.n1==0 && m.n2==0);
}
UTEST(scal_mul, simple) {
matrix m = matrix_identity(2);
matrix n = scal_mul(m, 3.);
ASSERT_TRUE(n.ok && n.n1==2 && n.n2==2 && *matrix_get(n, 0,0)==3.);
}
UTEST(fast_pow, simple) {
matrix m = matrix_identity(2);
matrix m2 = scal_mul(m, 3.);
matrix n = fast_pow(m2, 2);
ASSERT_TRUE(n.ok && n.n1==2 && n.n2==2);
}
UTEST(fast_pow, complexiefied) {
matrix m = matrix_identity(2);
matrix m2 = scal_mul(m, 3.);
matrix n = fast_pow(m2, 11);
ASSERT_TRUE(*matrix_get(n, 1,1)==pow(3.0, 11.0));
}
UTEST(matrix_destroy, simple) {
matrix m = matrix_create(2, 5, 0.);
matrix_destroy(m);
ASSERT_TRUE(1);
}
UTEST(matrix_destroy, wrong) {
matrix m;
m.ok=false;
m.data=(scalar*)0xdeadbeef;
matrix_destroy(m);
ASSERT_TRUE(1);
}
UTEST(matrix_get, simple) {
matrix m = matrix_identity(12);
ASSERT_TRUE(*matrix_get(m,3,3)==1.);
}
UTEST(matrix_get, wrong) {
matrix m;
m.ok=false;
ASSERT_TRUE(matrix_get(m, 0, 0)==NULL);
}
UTEST(mul_matrix , simple) {
matrix m = matrix_identity(3);
matrix n = matrix_identity(3);
matrix r = mul_matrix(m , n);
ASSERT_TRUE(m.ok && n.ok && r.ok && *matrix_get(r,0,0)==1.);
}
UTEST(mul_matrix , simple2){
matrix m = matrix_identity(3);
matrix n = scal_mul(m , 5);
m = scal_mul(m , 2);
matrix r = mul_matrix(m , n);
ASSERT_TRUE(m.ok && n.ok && r.ok && r.n1 == 3 && r.n2 == 3 && *matrix_get(r,0,0) == 10. && *matrix_get(r,0,1)==0.);
}
UTEST_MAIN()