1 USING: accessors euler.operators euler.modeling euler.b-rep
2 kernel tools.test game.models.half-edge combinators namespaces
4 FROM: euler.b-rep => has-rings? ;
5 IN: euler.operators.tests
7 { t } [ [ ] make-b-rep b-rep? ] unit-test
15 [ face-ccw vertex-pos { 1 0 0 } assert= ]
16 [ vertex-pos { 0 1 0 } assert= ]
17 [ vertex-valence 1 assert= ]
18 [ face-ccw vertex-valence 1 assert= ]
19 [ dup face-ccw assert-same-face ]
21 ] make-b-rep check-b-rep
30 ] make-b-rep assert-empty-b-rep
41 ] [ edges-not-incident? ] must-fail-with
49 [ vertex-pos 2 assert= ]
50 [ opposite-edge>> vertex-pos 1 assert= ]
52 ] make-b-rep check-b-rep
60 dup dup { 0 0 1 } make-ev kill-ev
62 ] make-b-rep assert-empty-b-rep
67 { 1 2 3 } smooth-smooth polygon>double-face
68 dup face-cw opposite-edge>>
69 2dup [ "a" set ] [ "b" set ] bi*
71 [ face-sides 4 assert= ]
72 [ vertex-pos 4 assert= ]
73 [ opposite-edge>> face-sides 4 assert= ]
74 [ face-ccw "b" get assert= ]
75 [ face-cw "a" get opposite-edge>> assert= ]
77 ] make-b-rep check-b-rep
82 { 1 2 3 4 } smooth-smooth polygon>double-face
83 [ face-ccw opposite-edge>> ]
85 [ dup face-ccw face-ccw make-ef drop ] tri
87 [ vertex-pos 5 assert= ]
88 [ face-sides 4 assert= ]
90 ] make-b-rep check-b-rep
100 [ face>> ] bi@ eq? f assert=
102 [ vertex-valence 3 assert= ]
104 ] make-b-rep check-b-rep
112 dup dup make-ef make-ef
114 ] [ edges-in-different-faces? ] must-fail-with
122 [ [ "a" set ] [ "b" set ] bi* ]
126 [ vertex-valence 2 assert= ]
127 [ opposite-edge>> vertex-valence 2 assert= ]
128 [ next-edge>> "a" get assert= ]
129 [ opposite-edge>> next-edge>> "b" get assert= ]
130 [ dup opposite-edge>> [ face>> ] bi@ eq? f assert= ]
133 ] make-b-rep check-b-rep
138 { 1 2 3 4 } smooth-smooth polygon>double-face
139 { 5 6 7 8 } smooth-smooth polygon>double-face
140 { 9 10 11 12 } smooth-smooth polygon>double-face
142 [ [ drop ] dip kill-f-make-rh ]
143 [ [ drop ] 2dip kill-f-make-rh ]
144 [ [ drop ] dip [ face>> ] bi@ [ base-face>> ] dip assert= ]
145 [ [ drop ] 2dip [ face>> ] bi@ [ base-face>> ] dip assert= ]
146 [ 2nip face>> has-rings? t assert= ]
147 [ drop drop make-f-kill-rh ]
148 [ drop nip make-f-kill-rh ]
149 [ drop drop face>> dup base-face>> assert= ]
150 [ drop nip face>> dup base-face>> assert= ]
151 [ 2nip face>> has-rings? f assert= ]
153 ] make-b-rep check-b-rep
168 [ [ vertex-pos ] bi@ ]
169 [ drop { 1 1 1 } move-e ]
170 [ [ vertex-pos ] bi@ ]
172 ] make-b-rep check-b-rep
183 { { 1 0 0 } { 0 1 0 } { 0 0 1 } } smooth-smooth polygon>double-face
185 [ [ [ vertex-pos , ] each-face-edge ] { } make ]
187 ] make-b-rep check-b-rep
190 ! Make sure we update the face's edge when killing an edge
193 { 1 2 3 4 } smooth-smooth polygon>double-face
195 ] make-b-rep check-b-rep
200 { 1 2 3 4 } smooth-smooth polygon>double-face
202 ] make-b-rep check-b-rep
207 { 1 2 3 4 } smooth-smooth polygon>double-face
208 face-ccw face-ccw kill-ev
209 ] make-b-rep check-b-rep
214 { 1 2 3 4 } smooth-smooth polygon>double-face
215 face-ccw face-ccw face-ccw kill-ev
216 ] make-b-rep check-b-rep