1include <../std.scad>
2
3
4module test__is_edge_array() {
5 assert(_is_edge_array([[0,0,0,0],[0,0,0,0],[0,0,0,0]]));
6 assert(_is_edge_array([[1,1,1,1],[1,1,1,1],[1,1,1,1]]));
7 assert(!_is_edge_array([[1,1,1],[1,1,1],[1,1,1]]));
8 assert(!_is_edge_array([[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]]));
9 assert(!_is_edge_array([[1,1,1,1],[1,1,1,1]]));
10 assert(!_is_edge_array([1,1,1,1]));
11 assert(!_is_edge_array("foo"));
12 assert(!_is_edge_array(42));
13 assert(!_is_edge_array(true));
14 assert(_is_edge_array(_edges(["X","Y"])));
15}
16test__is_edge_array();
17
18
19module test__edge_set() {
20 // Edge set pass through
21 assert(_edge_set([[1,1,1,1],[0,1,0,1],[0,0,0,0]]) == [[1,1,1,1],[0,1,0,1],[0,0,0,0]]);
22
23 // Vectors towards corners
24 assert(_edge_set([-1,-1,-1]) == [[1,0,0,0],[1,0,0,0],[1,0,0,0]]);
25 assert(_edge_set([-1,-1, 1]) == [[0,0,1,0],[0,0,1,0],[1,0,0,0]]);
26 assert(_edge_set([-1, 1,-1]) == [[0,1,0,0],[1,0,0,0],[0,0,1,0]]);
27 assert(_edge_set([-1, 1, 1]) == [[0,0,0,1],[0,0,1,0],[0,0,1,0]]);
28 assert(_edge_set([ 1,-1,-1]) == [[1,0,0,0],[0,1,0,0],[0,1,0,0]]);
29 assert(_edge_set([ 1,-1, 1]) == [[0,0,1,0],[0,0,0,1],[0,1,0,0]]);
30 assert(_edge_set([ 1, 1,-1]) == [[0,1,0,0],[0,1,0,0],[0,0,0,1]]);
31 assert(_edge_set([ 1, 1, 1]) == [[0,0,0,1],[0,0,0,1],[0,0,0,1]]);
32
33 // Vectors towards edges
34 assert(_edge_set([ 0,-1,-1]) == [[1,0,0,0],[0,0,0,0],[0,0,0,0]]);
35 assert(_edge_set([ 0, 1,-1]) == [[0,1,0,0],[0,0,0,0],[0,0,0,0]]);
36 assert(_edge_set([ 0,-1, 1]) == [[0,0,1,0],[0,0,0,0],[0,0,0,0]]);
37 assert(_edge_set([ 0, 1, 1]) == [[0,0,0,1],[0,0,0,0],[0,0,0,0]]);
38 assert(_edge_set([-1, 0,-1]) == [[0,0,0,0],[1,0,0,0],[0,0,0,0]]);
39 assert(_edge_set([ 1, 0,-1]) == [[0,0,0,0],[0,1,0,0],[0,0,0,0]]);
40 assert(_edge_set([-1, 0, 1]) == [[0,0,0,0],[0,0,1,0],[0,0,0,0]]);
41 assert(_edge_set([ 1, 0, 1]) == [[0,0,0,0],[0,0,0,1],[0,0,0,0]]);
42 assert(_edge_set([-1,-1, 0]) == [[0,0,0,0],[0,0,0,0],[1,0,0,0]]);
43 assert(_edge_set([ 1,-1, 0]) == [[0,0,0,0],[0,0,0,0],[0,1,0,0]]);
44 assert(_edge_set([-1, 1, 0]) == [[0,0,0,0],[0,0,0,0],[0,0,1,0]]);
45 assert(_edge_set([ 1, 1, 0]) == [[0,0,0,0],[0,0,0,0],[0,0,0,1]]);
46
47 // Vectors towards faces
48 assert(_edge_set([ 0, 0,-1]) == [[1,1,0,0],[1,1,0,0],[0,0,0,0]]);
49 assert(_edge_set([ 0, 0, 1]) == [[0,0,1,1],[0,0,1,1],[0,0,0,0]]);
50 assert(_edge_set([ 0,-1, 0]) == [[1,0,1,0],[0,0,0,0],[1,1,0,0]]);
51 assert(_edge_set([ 0, 1, 0]) == [[0,1,0,1],[0,0,0,0],[0,0,1,1]]);
52 assert(_edge_set([-1, 0, 0]) == [[0,0,0,0],[1,0,1,0],[1,0,1,0]]);
53 assert(_edge_set([ 1, 0, 0]) == [[0,0,0,0],[0,1,0,1],[0,1,0,1]]);
54
55 // Named edge sets
56 assert(_edge_set("X") == [[1,1,1,1],[0,0,0,0],[0,0,0,0]]);
57 assert(_edge_set("Y") == [[0,0,0,0],[1,1,1,1],[0,0,0,0]]);
58 assert(_edge_set("Z") == [[0,0,0,0],[0,0,0,0],[1,1,1,1]]);
59 assert(_edge_set("NONE") == [[0,0,0,0],[0,0,0,0],[0,0,0,0]]);
60 assert(_edge_set("ALL") == [[1,1,1,1],[1,1,1,1],[1,1,1,1]]);
61}
62test__edge_set();
63
64
65module test__normalize_edges() {
66 assert(_normalize_edges([[-2,-2,-2,-2],[-2,-2,-2,-2],[-2,-2,-2,-2]]) == [[0,0,0,0],[0,0,0,0],[0,0,0,0]]);
67 assert(_normalize_edges([[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1]]) == [[0,0,0,0],[0,0,0,0],[0,0,0,0]]);
68 assert(_normalize_edges([[0,0,0,0],[0,0,0,0],[0,0,0,0]]) == [[0,0,0,0],[0,0,0,0],[0,0,0,0]]);
69 assert(_normalize_edges([[1,1,1,1],[1,1,1,1],[1,1,1,1]]) == [[1,1,1,1],[1,1,1,1],[1,1,1,1]]);
70 assert(_normalize_edges([[2,2,2,2],[2,2,2,2],[2,2,2,2]]) == [[1,1,1,1],[1,1,1,1],[1,1,1,1]]);
71}
72test__normalize_edges();
73
74
75module test__edges() {
76 assert(_edges("X")==[[1,1,1,1],[0,0,0,0],[0,0,0,0]]);
77 assert(_edges("Y")==[[0,0,0,0],[1,1,1,1],[0,0,0,0]]);
78 assert(_edges("Z")==[[0,0,0,0],[0,0,0,0],[1,1,1,1]]);
79 assert(_edges(["X"])==[[1,1,1,1],[0,0,0,0],[0,0,0,0]]);
80 assert(_edges(["Y"])==[[0,0,0,0],[1,1,1,1],[0,0,0,0]]);
81 assert(_edges(["Z"])==[[0,0,0,0],[0,0,0,0],[1,1,1,1]]);
82 assert(_edges(["X","Y"])==[[1,1,1,1],[1,1,1,1],[0,0,0,0]]);
83 assert(_edges(["X","Z"])==[[1,1,1,1],[0,0,0,0],[1,1,1,1]]);
84 assert(_edges(["Y","Z"])==[[0,0,0,0],[1,1,1,1],[1,1,1,1]]);
85 assert(_edges("ALL",except="X")==[[0,0,0,0],[1,1,1,1],[1,1,1,1]]);
86 assert(_edges("ALL",except="Y")==[[1,1,1,1],[0,0,0,0],[1,1,1,1]]);
87 assert(_edges("ALL",except="Z")==[[1,1,1,1],[1,1,1,1],[0,0,0,0]]);
88 assert(_edges(["Y","Z"],except=[FRONT+RIGHT,FRONT+LEFT])==[[0,0,0,0],[1,1,1,1],[0,0,1,1]]);
89}
90test__edges();
91
92
93module test__corner_edge_count() {
94 edges = _edges([TOP,FRONT+RIGHT]);
95 assert(_corner_edge_count(edges,TOP+FRONT+RIGHT) == 3);
96 assert(_corner_edge_count(edges,TOP+FRONT+LEFT) == 2);
97 assert(_corner_edge_count(edges,BOTTOM+FRONT+RIGHT) == 1);
98 assert(_corner_edge_count(edges,BOTTOM+FRONT+LEFT) == 0);
99}
100test__corner_edge_count();
101
102
103module test__corner_edges() {
104 edges = _edges([TOP,FRONT+RIGHT]);
105 assert_equal(_corner_edges(edges,TOP+FRONT+RIGHT), [1,1,1]);
106 assert_equal(_corner_edges(edges,TOP+FRONT+LEFT), [1,1,0]);
107 assert_equal(_corner_edges(edges,BOTTOM+FRONT+RIGHT), [0,0,1]);
108 assert_equal(_corner_edges(edges,BOTTOM+FRONT+LEFT), [0,0,0]);
109}
110test__corner_edges();
111
112
113module test__corners() {
114 assert_equal(_corners(BOT + FRONT + LEFT ), [1,0,0,0,0,0,0,0]);
115 assert_equal(_corners(BOT + FRONT + RIGHT), [0,1,0,0,0,0,0,0]);
116 assert_equal(_corners(BOT + BACK + LEFT ), [0,0,1,0,0,0,0,0]);
117 assert_equal(_corners(BOT + BACK + RIGHT), [0,0,0,1,0,0,0,0]);
118 assert_equal(_corners(TOP + FRONT + LEFT ), [0,0,0,0,1,0,0,0]);
119 assert_equal(_corners(TOP + FRONT + RIGHT), [0,0,0,0,0,1,0,0]);
120 assert_equal(_corners(TOP + BACK + LEFT ), [0,0,0,0,0,0,1,0]);
121 assert_equal(_corners(TOP + BACK + RIGHT), [0,0,0,0,0,0,0,1]);
122
123 assert_equal(_corners(BOT + FRONT), [1,1,0,0,0,0,0,0]);
124 assert_equal(_corners(BOT + BACK ), [0,0,1,1,0,0,0,0]);
125 assert_equal(_corners(TOP + FRONT), [0,0,0,0,1,1,0,0]);
126 assert_equal(_corners(TOP + BACK ), [0,0,0,0,0,0,1,1]);
127 assert_equal(_corners(BOT + LEFT ), [1,0,1,0,0,0,0,0]);
128 assert_equal(_corners(BOT + RIGHT), [0,1,0,1,0,0,0,0]);
129 assert_equal(_corners(TOP + LEFT ), [0,0,0,0,1,0,1,0]);
130 assert_equal(_corners(TOP + RIGHT), [0,0,0,0,0,1,0,1]);
131 assert_equal(_corners(FRONT + LEFT ), [1,0,0,0,1,0,0,0]);
132 assert_equal(_corners(FRONT + RIGHT), [0,1,0,0,0,1,0,0]);
133 assert_equal(_corners(BACK + LEFT ), [0,0,1,0,0,0,1,0]);
134 assert_equal(_corners(BACK + RIGHT), [0,0,0,1,0,0,0,1]);
135
136 assert_equal(_corners(LEFT), [1,0,1,0,1,0,1,0]);
137 assert_equal(_corners(RIGHT), [0,1,0,1,0,1,0,1]);
138 assert_equal(_corners(FRONT), [1,1,0,0,1,1,0,0]);
139 assert_equal(_corners(BACK), [0,0,1,1,0,0,1,1]);
140 assert_equal(_corners(BOT), [1,1,1,1,0,0,0,0]);
141 assert_equal(_corners(TOP), [0,0,0,0,1,1,1,1]);
142
143 assert_equal(_corners([BOT + FRONT + LEFT ]), [1,0,0,0,0,0,0,0]);
144 assert_equal(_corners([BOT + FRONT + RIGHT]), [0,1,0,0,0,0,0,0]);
145 assert_equal(_corners([BOT + BACK + LEFT ]), [0,0,1,0,0,0,0,0]);
146 assert_equal(_corners([BOT + BACK + RIGHT]), [0,0,0,1,0,0,0,0]);
147 assert_equal(_corners([TOP + FRONT + LEFT ]), [0,0,0,0,1,0,0,0]);
148 assert_equal(_corners([TOP + FRONT + RIGHT]), [0,0,0,0,0,1,0,0]);
149 assert_equal(_corners([TOP + BACK + LEFT ]), [0,0,0,0,0,0,1,0]);
150 assert_equal(_corners([TOP + BACK + RIGHT]), [0,0,0,0,0,0,0,1]);
151
152 assert_equal(_corners([BOT + FRONT]), [1,1,0,0,0,0,0,0]);
153 assert_equal(_corners([BOT + BACK ]), [0,0,1,1,0,0,0,0]);
154 assert_equal(_corners([TOP + FRONT]), [0,0,0,0,1,1,0,0]);
155 assert_equal(_corners([TOP + BACK ]), [0,0,0,0,0,0,1,1]);
156 assert_equal(_corners([BOT + LEFT ]), [1,0,1,0,0,0,0,0]);
157 assert_equal(_corners([BOT + RIGHT]), [0,1,0,1,0,0,0,0]);
158 assert_equal(_corners([TOP + LEFT ]), [0,0,0,0,1,0,1,0]);
159 assert_equal(_corners([TOP + RIGHT]), [0,0,0,0,0,1,0,1]);
160 assert_equal(_corners([FRONT + LEFT ]), [1,0,0,0,1,0,0,0]);
161 assert_equal(_corners([FRONT + RIGHT]), [0,1,0,0,0,1,0,0]);
162 assert_equal(_corners([BACK + LEFT ]), [0,0,1,0,0,0,1,0]);
163 assert_equal(_corners([BACK + RIGHT]), [0,0,0,1,0,0,0,1]);
164
165 assert_equal(_corners([LEFT]), [1,0,1,0,1,0,1,0]);
166 assert_equal(_corners([RIGHT]), [0,1,0,1,0,1,0,1]);
167 assert_equal(_corners([FRONT]), [1,1,0,0,1,1,0,0]);
168 assert_equal(_corners([BACK]), [0,0,1,1,0,0,1,1]);
169 assert_equal(_corners([BOT]), [1,1,1,1,0,0,0,0]);
170 assert_equal(_corners([TOP]), [0,0,0,0,1,1,1,1]);
171
172 assert_equal(_corners([TOP,FRONT+RIGHT]), [0,1,0,0,1,1,1,1]);
173}
174test__corners();
175
176
177module test__is_corner_array() {
178 edges = _edges([TOP,FRONT+RIGHT]);
179 corners = _corners([TOP,FRONT+RIGHT]);
180 assert(!_is_corner_array(undef));
181 assert(!_is_corner_array(true));
182 assert(!_is_corner_array(false));
183 assert(!_is_corner_array(INF));
184 assert(!_is_corner_array(-INF));
185 assert(!_is_corner_array(NAN));
186 assert(!_is_corner_array(-4));
187 assert(!_is_corner_array(0));
188 assert(!_is_corner_array(4));
189 assert(!_is_corner_array("foo"));
190 assert(!_is_corner_array([]));
191 assert(!_is_corner_array([4,5,6]));
192 assert(!_is_corner_array([2:3:9]));
193 assert(!_is_corner_array(edges));
194 assert(_is_corner_array(corners));
195}
196test__is_corner_array();
197
198
199module test__normalize_corners() {
200 assert_equal(_normalize_corners([-2,-2,-2,-2,-2,-2,-2,-2]), [0,0,0,0,0,0,0,0]);
201 assert_equal(_normalize_corners([-1,-1,-1,-1,-1,-1,-1,-1]), [0,0,0,0,0,0,0,0]);
202 assert_equal(_normalize_corners([0,0,0,0,0,0,0,0]), [0,0,0,0,0,0,0,0]);
203 assert_equal(_normalize_corners([1,1,1,1,1,1,1,1]), [1,1,1,1,1,1,1,1]);
204 assert_equal(_normalize_corners([2,2,2,2,2,2,2,2]), [1,1,1,1,1,1,1,1]);
205}
206test__normalize_corners();
207
208
209
210// vim: expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap