+if { [info exists square] } {
+ set prop "square"
+ set mass $square
+ if { [info exists tol_square] } {
+ # tol_square - The epsilon defines relative precision of computation
+ regexp {Mass +: +([-0-9.+eE]+)} [sprops result $tol_square] full m
+ } else {
+ regexp {Mass +: +([-0-9.+eE]+)} [sprops result] full m
+ }
+}
+if { [info exists length] } {
+ set prop "length"
+ set mass $length
+ regexp {Mass +: +([-0-9.+eE]+)} [lprops result] full m
+
+ puts "checksection"
+ puts [checksection result]
+}
+
+#if mass (length or square) is empty in test case then result should be an empty shape.
+if { [info exists mass] } {
+ if { [string compare $subgroup "moddata"] != 0 } {
+ puts "checkshape"
+ checkshape result
+ }
+
+ if { [string compare "$mass" "empty"] != 0 } {
+ if { $m == 0 } {
+ puts "Error : The command is not valid. The $prop is 0."
+ }
+ if { $mass > 0 } {
+ puts "The expected $prop is $mass"
+ }
+ #check of change of square is < 1%
+ if { ($mass != 0 && [expr 1.*abs($mass - $m)/$mass] > 0.01) || ($mass == 0 && $m != 0) } {
+ puts "Error : The $prop of result shape is $m"
+ }
+ } else {
+ if { $m != 0 } {
+ puts "Error : The command is not valid. The $prop is $m"
+ }
+ }
+}
+
+set glob_inf [info global nb_*_good]
+if { [regexp "nb_.*_good" $glob_inf] == 1 } {
+ if { [info exists nbsh_t] } {
+ set nb_info [nbshapes result -t]
+ } else {
+ set nb_info [nbshapes result]
+ }
+}
+
+if { [info exists nb_v_good] } {
+ regexp {VERTEX +: +([-0-9.+eE]+)} $nb_info full nb_v
+ if { ${nb_v} != ${nb_v_good} } {
+ puts "Error : Result shape is WRONG because it must contains ${nb_v_good} vertices instead of ${nb_v}"
+ } else {
+ puts "Result shape contains ${nb_v} vertices"
+ }
+}
+
+if { [info exists nb_e_good] } {
+ regexp {EDGE +: +([-0-9.+eE]+)} $nb_info full nb_e
+ if { ${nb_e} != ${nb_e_good} } {
+ puts "Error : Result shape is WRONG because it must contains ${nb_e_good} edges instead of ${nb_e}"
+ } else {
+ puts "Result shape contains ${nb_e} edges"
+ }
+}
+
+if { [info exists nb_w_good] } {
+ regexp {WIRE +: +([-0-9.+eE]+)} $nb_info full nb_w
+ if { ${nb_w} != ${nb_w_good} } {
+ puts "Error : Result shape is WRONG because it must contains ${nb_w_good} wires instead of ${nb_w}"
+ } else {
+ puts "Result shape contains ${nb_w} wires"
+ }
+}
+
+if { [info exists nb_f_good] } {
+ regexp {FACE +: +([-0-9.+eE]+)} $nb_info full nb_f
+ if { ${nb_f} != ${nb_f_good} } {
+ puts "Error : Result shape is WRONG because it must contains ${nb_f_good} faces instead of ${nb_f}"
+ } else {
+ puts "Result shape contains ${nb_f} faces"
+ }
+}
+
+if { [info exists nb_sh_good] } {
+ regexp {SHELL +: +([-0-9.+eE]+)} $nb_info full nb_sh
+ if { ${nb_sh} != ${nb_sh_good} } {
+ puts "Error : Result shape is WRONG because it must contains ${nb_sh_good} shells instead of ${nb_sh}"
+ } else {
+ puts "Result shape contains ${nb_sh} shells"
+ }
+}
+
+if { [info exists nb_sol_good] } {
+ regexp {SOLID +: +([-0-9.+eE]+)} $nb_info full nb_sol
+ if { ${nb_sol} != ${nb_sol_good} } {
+ puts "Error : Result shape is WRONG because it must contains ${nb_sol_good} solids instead of ${nb_sol}"
+ } else {
+ puts "Result shape contains ${nb_sol} solids"
+ }
+}
+
+if { [info exists nb_compsol_good] } {
+ regexp {COMPSOLID +: +([-0-9.+eE]+)} $nb_info full nb_compsol
+ if { ${nb_compsol} != ${nb_compsol_good} } {
+ puts "Error : Result shape is WRONG because it must contains ${nb_compsol_good} compsolids instead of ${nb_compsol}"
+ } else {
+ puts "Result shape contains ${nb_compsol} compsolids"
+ }
+}
+
+if { [info exists nb_compound_good] } {
+ regexp {COMPOUND +: +([-0-9.+eE]+)} $nb_info full nb_compound
+ if { ${nb_compound} != ${nb_compound_good} } {
+ puts "Error : Result shape is WRONG because it must contains ${nb_compound_good} compounds instead of ${nb_compound}"
+ } else {
+ puts "Result shape contains ${nb_compound} compounds"
+ }
+}
+
+if { [info exists nb_shape_good] } {
+ regexp {SHAPE +: +([-0-9.+eE]+)} $nb_info full nb_shape
+ if { ${nb_shape} != ${nb_shape_good} } {
+ puts "Error : Result shape is WRONG because it must contains ${nb_shape_good} shapes instead of ${nb_shape}"
+ } else {
+ puts "Result shape contains ${nb_shape} shapes"
+ }
+}
+
+if { [info exists nb_fe_good] && [info exists nb_fe] } {
+ if { ${nb_fe} != ${nb_fe_good} } {
+ puts "Error : Result shape is WRONG because it must contains ${nb_shape_good} shapes instead of ${nb_shape}"
+ } else {
+ puts "Result shape contains ${nb_fe} free edges"
+ }
+}
+
+if { [info exists rel_tol] } {
+ puts "\nChecking triangulation area (triarea command)..."
+ set rel_err [expr abs([CheckTriArea result $area_eps])]
+ if { $rel_err > $rel_tol } {
+ puts "Error : area by triangles differs from the actual area by $rel_err %"
+ } else {
+ if { $rel_tol > 1 && $rel_tol < 100 } {
+ puts "Error: Improvement: The current area difference is $rel_err instead of $rel_tol"
+ }
+ }
+}
+
if { [isdraw result] } {
- if { [info exists 2dviewer] } {
- clear
- smallview
- donly result
- fit
- xwd $imagedir/${test_image}.png
- }
- if { [info exists 3dviewer] } {
- vinit
- vclear
- vdisplay result
- vsetdispmode 1
- vfit
- vdump $imagedir/${test_image}.png
- }
-} else {
- if { [info exists 3dviewer] } {
- if { ${3dviewer} == 2 } {
- vdump $imagedir/${test_image}.png
- }
- }
-}
- if { [info exist only_xwd] } {
- xwd $imagedir/${test_image}.png
- }
-#} else {
-# puts "Error : The command can not be build."
-#}
+ if { [info exists 2dviewer] } {
+ clear
+ smallview
+ donly result
+ fit
+ xwd $imagedir/${test_image}.png
+ }
+ if { [info exists 3dviewer] } {
+ #for multiview support: dump result from all opened views
+ set view_str [vviewlist long]
+ if { [llength ${view_str}] == 0 } {
+ vinit
+ set view_str [vviewlist long]
+ }
+ set view_list [regexp -all -inline {\S+} $view_str]
+ foreach {view_name} $view_list {
+ vactivate $view_name
+ vclear
+ vdisplay result
+ vsetdispmode 1
+ vfit
+ vzfit
+ vdump $imagedir/${test_image}_[regsub -all {/} $view_name {_}].png
+ }
+ }
+}
+
+if { [info exists only_screen] } {
+ #for multiview support: dump result from all opened views
+ set view_str [vviewlist long]
+ set view_list [regexp -all -inline {\S+} $view_str]
+ foreach {view_name} $view_list {
+ vactivate $view_name
+ vdump $imagedir/${test_image}_[regsub -all {/} $view_name {_}].png
+ }
+}
+
+if { [info exists only_screen_axo] } {
+ xwd $imagedir/${test_image}.png
+}
# to end a test script
puts "TEST COMPLETED"
-