3792789c61d9e94275c1388dca45da7b6b0e4bbe
[occt.git] / tests / gdt / export / end
1 # Set flag dump_file to 1 in order to regenerate script files with actual data
2 # used as reference. In this mode all tests intentionaly report failure. 
3 set dump_file 0
4 ########################################################################
5 set mist 0;
6 # Dimensions
7 set nbDim_First 0; set nbDim_Second 0;
8 set nbDimSize_First 0; set nbDimSize_Second 0;
9 set nbDimLoc_First 0; set nbDimLoc_Second 0;
10 set nbAng_First 0; set nbAng_Second 0;
11 set nbDimWthPath_First 0; set nbDimWthPath_Second 0;
12 # Tolerances
13 set nbTol_First 0; set nbTol_Second 0;
14 set nbTolWthMod_First 0; set nbTolWthMod_Second 0;
15 set nbTolWthMax_First 0; set nbTolWthMax_Second 0;
16 set nbTolWthDat_First 0; set nbTolWthDat_Second 0;
17 # Datums
18 set nbDat_First 0;
19 set nbDatT_First 0;
20 set nbAttDat_First 0;
21 ###################################################################
22 set ref_Compare 0
23 set todo_msg ""
24 set todo_mask "puts \"TODO CR26859 ALL: "
25 set end_line "\" \n"
26 ##################################################################
27
28 # Read original file
29 if { [string length $filename] > 1} {
30   set path_file [locate_data_file $filename]
31   if { [catch { ReadStep D_First $path_file } catch_result] } {
32     set err_msg "Error: First - file was not read - exception "
33     puts $err_msg
34     append todo_msg $todo_mask $err_msg $end_line
35     set mist 1
36   }
37 } else {
38   set mist 1
39 }
40
41 # Get information about translation
42 if { $mist < 1} {           
43   puts ""
44   set xst [ XDumpNbDGTs D_First f] 
45
46   if { [llength $xst] > 0 } {
47     regexp {NbOfDimensions +: +([-0-9.+eE]+)} $xst full nbDim_First
48     regexp {NbOfDimensionalSize +: +([-0-9.+eE]+)} $xst full nbDimSize_First
49     regexp {NbOfDimensionalLocation +: +([-0-9.+eE]+)} $xst full nbDimLoc_First
50     regexp {NbOfAngular +: +([-0-9.+eE]+)} $xst full nbAng_First
51     regexp {NbOfWithPath +: +([-0-9.+eE]+)} $xst full nbWthPath_First
52     regexp {NbOfTolerances +: +([-0-9.+eE]+)} $xst full nbTol_First
53     regexp {NbOfGTWithModifiers +: +([-0-9.+eE]+)} $xst full nbTolWthMod_First
54     regexp {NbOfGTWithMaxTolerance +: +([-0-9.+eE]+)} $xst full nbTolWthMax_First
55     regexp {NbOfGTWithDatums +: +([-0-9.+eE]+)} $xst full nbTolWthDat_First
56     regexp {NbOfDatumFeature +: +([-0-9.+eE]+)} $xst full nbDat_First
57     regexp {NbOfAttachedDatum +: +([-0-9.+eE]+)} $xst full nbAttDat_First
58     regexp {NbOfDatumTarget +: +([-0-9.+eE]+)} $xst full nbDatT_First
59   } else {
60       puts " GDT information was NOT provided"
61     }
62 }
63
64 if { $mist != 1 } {  
65   puts "" 
66   set result ""
67   append result [format $xst]
68 }
69
70 # Writing file
71 if { $mist < 1} {
72   puts " "
73   puts "-----------------------------WRITING FILE ------------------------------"
74   if { [catch { WriteStep D_First $imagedir/${casename}_D_First.stp } catch_result] } {
75     set err_msg "Error: First - file was not written - exception"
76     puts $err_msg
77     append todo_msg $todo_mask $err_msg $end_line
78     set mist 1
79   }
80   if { $mist < 1 } {
81     if { [catch { ReadStep D_Second $imagedir/${casename}_D_First.stp } catch_result] } {
82       set err_msg "Error: Second - file was not read - exception"
83       puts $err_msg
84       append todo_msg $todo_mask $err_msg $end_line
85       set mist 1
86     }
87   }
88 }
89
90 catch {[file delete $imagedir/${casename}_D_First.stp]}
91 if { [catch { Close D_First } catch_result] } {
92   set err_msg "Error : cannot close a document D_First - exception"
93   puts $err_msg
94 }
95
96 # Get information about translation
97 if { $mist < 1} {           
98   puts ""
99   set xst2 [ XDumpNbDGTs D_Second f] 
100
101   if { [llength $xst2] > 0 } {
102     regexp {NbOfDimensions +: +([-0-9.+eE]+)} $xst2 full nbDim_Second
103     regexp {NbOfDimensionalSize +: +([-0-9.+eE]+)} $xst2 full nbDimSize_Second
104     regexp {NbOfDimensionalLocation +: +([-0-9.+eE]+)} $xst2 full nbDimLoc_Second
105     regexp {NbOfAngular +: +([-0-9.+eE]+)} $xst2 full nbAng_Second
106     regexp {NbOfWithPath +: +([-0-9.+eE]+)} $xst2 full nbWthPath_Second
107     regexp {NbOfTolerances +: +([-0-9.+eE]+)} $xst2 full nbTol_Second
108     regexp {NbOfGTWithModifiers +: +([-0-9.+eE]+)} $xst2 full nbTolWthMod_Second
109     regexp {NbOfGTWithMaxTolerance +: +([-0-9.+eE]+)} $xst2 full nbTolWthMax_Second
110     regexp {NbOfGTWithDatums +: +([-0-9.+eE]+)} $xst2 full nbTolWthDat_Second
111     regexp {NbOfDatumFeature +: +([-0-9.+eE]+)} $xst2 full nbDat_Second
112     regexp {NbOfAttachedDatum +: +([-0-9.+eE]+)} $xst2 full nbAttDat_Second
113     regexp {NbOfDatumTarget +: +([-0-9.+eE]+)} $xst2 full nbDatT_Second
114   } else {
115       puts " GDT information was NOT provided"
116     }
117   if { [catch { Close D_Second } catch_result] } {
118     set err_msg "Error : cannot close a document D_Second - exception"
119     puts $err_msg
120   }
121 }
122
123 if { $mist != 1 } {  
124   puts "" 
125   set result2 ""
126   append result2 [format $xst2]
127 }
128
129 set err_compare_ref ""
130 # Put reference data to the test script file if option "dump" is set
131 if { $dump_file == 1 } { 
132   set fd_stream  [open $dirname/$groupname/$gridname/$casename w] 
133   puts $fd_stream "# !!!! This file is generated automatically, do not edit manually! See end script"
134   puts $fd_stream "set filename $filename"
135   if { $mist != 1 } {
136     puts $fd_stream "" 
137     puts $fd_stream "set ref_data \{"
138     puts $fd_stream $result
139     puts $fd_stream "\}"
140   }
141   close $fd_stream 
142 } elseif { $mist != 1 } {
143   puts "========================== Comparision with reference data ========"
144   puts ""
145   # Comparision of reference data with obtained result
146   set ref_list [split $ref_data \n]
147   set cur_list [split $result \n]
148   set cur2_list [split $result2 \n]
149   set nb_ref [llength $ref_list]
150   for { set i 0 } { $i < $nb_ref } { incr i } {
151     set j [expr $i +1]
152     set refstr [lindex $ref_list $j]
153     set curstr [lindex $cur_list $i]
154     set cur2str [lindex $cur2_list $i]
155     set isOK 1; 
156
157     if {[string equal $refstr $curstr] == 0} {
158       set isOK 0 
159     }
160     
161     if {[string equal $curstr $cur2str] == 0} {
162       set isOK 0 
163     } 
164
165     if { $isOK == 0}  {
166       incr ref_Compare
167       append err_compare_ref " Reference data             - $refstr\n"
168       append err_compare_ref " Current data               - $curstr\n"
169       append err_compare_ref " Current data after writing - $cur2str\n"
170       append err_compare_ref "--------------------------------------------------------------------\n"
171     }
172   }
173 }
174
175 if { $dump_file != 0 } {
176     puts "Error : Running in regeneration mode, comparision was not performed!"
177     if { $mist != 1 } {
178          puts "Generation of test file $groupname/$gridname/$casename successful"
179     } else {
180          puts "Generation of reference data failed"
181     }
182 } else {
183     if { $ref_Compare > 0} {
184         puts "Error : $ref_Compare differences with reference data found :\n$err_compare_ref"
185     } else {
186         puts "Comparision of current result with reference data - OK\n"
187     }    
188 }
189
190 puts "--------------------------------------------------------------------"
191 puts ""
192
193 puts "TEST COMPLETED"