1 if { [info exists square] } {
2     set prop "square"
3     set mass \$square
4     if { [info exists tol_square] } {
5       # tol_square - The epsilon defines relative precision of computation
6       regexp {Mass +: +([-0-9.+eE]+)} [sprops result \$tol_square] full m
7     } else {
8       regexp {Mass +: +([-0-9.+eE]+)} [sprops result] full m
9     }
10 }
11 if { [info exists length] } {
12     set prop "length"
13     set mass \$length
14     regexp {Mass +: +([-0-9.+eE]+)} [lprops result] full m
16     puts "checksection"
17     puts [checksection result]
18 }
20 #if mass (length or square) is empty in test case then result should be an empty shape.
21 if { [info exists mass] } {
22     if { [string compare \$subgroup "moddata"] != 0 } {
23       puts "checkshape"
24       checkshape result
25     }
27     if { [string compare "\$mass" "empty"] != 0 } {
28       if { \$m == 0 } {
29         puts "Error : The command is not valid. The \$prop is 0."
30       }
31       if { \$mass > 0 } {
32         puts "The expected \$prop is \$mass"
33       }
34       #check of change of square is < 1%
35       if { (\$mass != 0 && [expr 1.*abs(\$mass - \$m)/\$mass] > 0.01) || (\$mass == 0 && \$m != 0) } {
36         puts "Error : The \$prop of result shape is \$m"
37       }
38     } else {
39       if { \$m != 0 } {
40         puts "Error : The command is not valid. The \$prop is \$m"
41       }
42     }
43 }
45 set glob_inf [info global nb_*_good]
46 if { [regexp "nb_.*_good" \$glob_inf] == 1 } {
47     if { [info exists nbsh_t] } {
48       set nb_info [nbshapes result -t]
49     } else {
50       set nb_info [nbshapes result]
51     }
52 }
54 if { [info exists nb_v_good] } {
55     regexp {VERTEX +: +([-0-9.+eE]+)} \$nb_info full nb_v
56     if { \${nb_v} != \${nb_v_good} } {
57         puts "Error : Result shape is WRONG because it must contains \${nb_v_good} vertices instead of \${nb_v}"
58     } else {
59         puts "Result shape contains \${nb_v} vertices"
60     }
61 }
63 if { [info exists nb_e_good] } {
64     regexp {EDGE +: +([-0-9.+eE]+)} \$nb_info full nb_e
65     if { \${nb_e} != \${nb_e_good} } {
66         puts "Error : Result shape is WRONG because it must contains \${nb_e_good} edges instead of \${nb_e}"
67     } else {
68         puts "Result shape contains \${nb_e} edges"
69     }
70 }
72 if { [info exists nb_w_good] } {
73     regexp {WIRE +: +([-0-9.+eE]+)} \$nb_info full nb_w
74     if { \${nb_w} != \${nb_w_good} } {
75         puts "Error : Result shape is WRONG because it must contains \${nb_w_good} wires instead of \${nb_w}"
76     } else {
77         puts "Result shape contains \${nb_w} wires"
78     }
79 }
81 if { [info exists nb_f_good] } {
82     regexp {FACE +: +([-0-9.+eE]+)} \$nb_info full nb_f
83     if { \${nb_f} != \${nb_f_good} } {
84         puts "Error : Result shape is WRONG because it must contains \${nb_f_good} faces instead of \${nb_f}"
85     } else {
86         puts "Result shape contains \${nb_f} faces"
87     }
88 }
90 if { [info exists nb_sh_good] } {
91     regexp {SHELL +: +([-0-9.+eE]+)} \$nb_info full nb_sh
92     if { \${nb_sh} != \${nb_sh_good} } {
93         puts "Error : Result shape is WRONG because it must contains \${nb_sh_good} shells instead of \${nb_sh}"
94     } else {
95         puts "Result shape contains \${nb_sh} shells"
96     }
97 }
99 if { [info exists nb_sol_good] } {
100     regexp {SOLID +: +([-0-9.+eE]+)} \$nb_info full nb_sol
101     if { \${nb_sol} != \${nb_sol_good} } {
102         puts "Error : Result shape is WRONG because it must contains \${nb_sol_good} solids instead of \${nb_sol}"
103     } else {
104         puts "Result shape contains \${nb_sol} solids"
105     }
106 }
108 if { [info exists nb_compsol_good] } {
109     regexp {COMPSOLID +: +([-0-9.+eE]+)} \$nb_info full nb_compsol
110     if { \${nb_compsol} != \${nb_compsol_good} } {
111         puts "Error : Result shape is WRONG because it must contains \${nb_compsol_good} compsolids instead of \${nb_compsol}"
112     } else {
113         puts "Result shape contains \${nb_compsol} compsolids"
114     }
115 }
117 if { [info exists nb_compound_good] } {
118     regexp {COMPOUND +: +([-0-9.+eE]+)} \$nb_info full nb_compound
119     if { \${nb_compound} != \${nb_compound_good} } {
120         puts "Error : Result shape is WRONG because it must contains \${nb_compound_good} compounds instead of \${nb_compound}"
121     } else {
122         puts "Result shape contains \${nb_compound} compounds"
123     }
124 }
126 if { [info exists nb_shape_good] } {
127     regexp {SHAPE +: +([-0-9.+eE]+)} \$nb_info full nb_shape
128     if { \${nb_shape} != \${nb_shape_good} } {
129         puts "Error : Result shape is WRONG because it must contains \${nb_shape_good} shapes instead of \${nb_shape}"
130     } else {
131         puts "Result shape contains \${nb_shape} shapes"
132     }
133 }
135 if { [info exists nb_fe_good] && [info exists nb_fe] } {
136     if { \${nb_fe} != \${nb_fe_good} } {
137         puts "Error : Result shape is WRONG because it must contains \${nb_shape_good} shapes instead of \${nb_shape}"
138     } else {
139         puts "Result shape contains \${nb_fe} free edges"
140     }
141 }
143 if { [info exists rel_tol] } {
144    puts "\nChecking triangulation area (triarea command)..."
145    set rel_err [expr abs([CheckTriArea result \$area_eps])]
146    if { \$rel_err > \$rel_tol } {
147       puts "Error   : area by triangles differs from the actual area by \$rel_err %"
148    } else {
149       if { \$rel_tol > 1 && \$rel_tol < 100 } {
150         puts "Error: Improvement: The current area difference is \$rel_err instead of \$rel_tol"
151       }
152    }
153 }
155 if { [isdraw result] } {
156   if { [info exists 2dviewer] } {
157     clear
158     smallview
159     donly result
160     fit
161     xwd \$imagedir/\${test_image}.png
162   }
163   if { [info exists 3dviewer] } {
164     #for multiview support: dump result from all opened views
165     set view_str [vviewlist long]
166     if { [llength \${view_str}] == 0 } {
167        vinit
168        set view_str [vviewlist long]
169     }
170     set view_list [regexp -all -inline {\S+} \$view_str]
171     foreach {view_name} \$view_list {
172       vactivate \$view_name
173       vclear
174       vdisplay result
175       vsetdispmode 1
176       vfit
177       vzfit
178       vdump \$imagedir/\${test_image}_[regsub -all {/} \$view_name {_}].png
179     }
180   }
181 }
183 if { [info exists only_screen] } {
184   #for multiview support: dump result from all opened views
185   set view_str [vviewlist long]
186   set view_list [regexp -all -inline {\S+} \$view_str]
187   foreach {view_name} \$view_list {
188     vactivate \$view_name
189     vdump \$imagedir/\${test_image}_[regsub -all {/} \$view_name {_}].png
190   }
191 }
193 if { [info exists only_screen_axo] } {
194    xwd \$imagedir/\${test_image}.png
195 }
197 # to end a test script
198 puts "TEST COMPLETED"