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