Adding test cases from chl grid
[occt.git] / tests / bugs / moddata / bug22809_1
1 puts "============"
2 puts "OCC22809"
3 puts "============"
4 puts ""
5 ############################################################################################################
6 # BRepIntCS does not find intersections of an ellipsoid and a line passing through it's apex
7 ###########################################################################################################
8
9 # Test was corrected. See:
10
11 # http://tracker.dev.opencascade.org/view.php?id=23248
12 # pkv (developer)
13 # 2012-07-12 09:33
14 # The checking can not provide stable result because there is no guarantee that coordinates
15 # for brics_1 will always be {x1, y1, z1} but not {x2, y2, z2} and
16 # for brics_42 will always be {x2, y2, z2} but not {x1, y1, z1}.
17 # The coordinates of brics_1 can be both {x1, y1, z1} and {x2, y2, z2}
18 # The coordinates of brics_42 can be both {x1, y1, z1} and {x2, y2, z2} 
19
20 ###########################################################################################################
21
22 set BugNumber OCC22809
23
24 #
25 proc GetPercent {Value GoodValue} {
26     set Percent 0.
27     if {${GoodValue} != 0.} {
28         set Percent [expr abs(${Value} - ${GoodValue}) / abs(double(${GoodValue})) * 100.]
29     } elseif {${Value} != 0.} {
30         set Percent [expr abs(${GoodValue} - ${Value}) / abs(double(${Value})) * 100.]
31     } else {
32         set Percent 0.
33     }
34     return ${Percent}
35 }
36 set percent_max 0.1
37 #
38
39 psphere a 100
40 nurbsconvert r1 a
41 line l 0 0 -100 0 0 1
42 BRepIntCS l r1
43
44 regexp {.* is a ([A-Za-z0-9]*)} [ whatis brics_1 ] full info1
45
46 # N.B. multiple result points are to be processed by other algorithms
47 # Now there are 241 result points
48 regexp {.* is a ([A-Za-z0-9]*)} [ whatis brics_2 ] full info2
49 regexp {.* is a ([A-Za-z0-9]*)} [ whatis brics_41 ] full info2
50
51 set word1 [string compare $info1 "point"]
52 set word2 [string compare $info2 "point"]
53
54 set status_point 0
55
56 puts "ski $word1"
57 puts "ski $word2"
58 if { ${word1} == 0 && ${word2} == 0 } {
59     set status_point 0
60 } else {
61     set status_point 1
62 }
63
64 regexp {.* is a ([A-Za-z0-9]*)} [ whatis brics_3 ] full info3
65 set word3 [string compare $info3 "a"]
66
67 set status_nb 0
68 if { ${word3} == 0 } {
69     set status_nb 0
70 } else {
71     set status_nb 1
72     # N.B. multiple result points are to be processed by other algorithms
73     set status_nb 0
74 }
75
76 set good_x1 0.000000000000000e+00
77 set good_y1 0.000000000000000e+00
78 set good_z1 -1.000000000000000e+02
79
80 set good_x2 0.000000000000000e+00
81 set good_y2 0.000000000000000e+00
82 set good_z2 1.000000000000000e+02
83
84 set dump1 [ dump brics_1 ]
85 regexp {Point : ([-0-9.+eE]+), ([-0-9.+eE]+), ([-0-9.+eE]+)} $dump1 full x1 y1 z1
86
87 set status_xyz1 0
88 set x1_percent [GetPercent ${x1} ${good_x1}]
89 puts "x1_percent = ${x1_percent}"
90 if { ${x1_percent} > ${percent_max} } {
91    puts "x1: Faulty ${BugNumber}"
92    set status_xyz1 1
93 } else {
94    puts "x1: OK ${BugNumber}"
95 }
96
97 set y1_percent [GetPercent ${y1} ${good_y1}]
98 puts "y1_percent = ${y1_percent}"
99 if { ${y1_percent} > ${percent_max} } {
100    puts "y1: Faulty ${BugNumber}"
101    set status_xyz1 1
102 } else {
103    puts "y1: OK ${BugNumber}"
104 }
105
106 set z1_percent [GetPercent ${z1} ${good_z1}]
107 puts "z1_percent = ${z1_percent}"
108 if { ${z1_percent} > ${percent_max} } {
109    set z1_percent [GetPercent ${z1} ${good_z2}]
110    puts "z1_percent = ${z1_percent}"
111    if { ${z1_percent} > ${percent_max} } {
112       puts "z1: Faulty ${BugNumber}"
113       set status_xyz1 1
114    } else {
115       puts "z1: OK ${BugNumber}"
116    }
117 } else {
118    puts "z1: OK ${BugNumber}"
119 }
120
121 set dump2 [ dump brics_2 ]
122 # N.B. multiple result points are to be processed by other algorithms
123 set dump2 [ dump brics_41 ]
124 regexp {Point : ([-0-9.+eE]+), ([-0-9.+eE]+), ([-0-9.+eE]+)} $dump2 full x2 y2 z2
125
126 set status_xyz2 0
127 set x2_percent [GetPercent ${x2} ${good_x2}]
128 puts "x2_percent = ${x2_percent}"
129 if { ${x2_percent} > ${percent_max} } {
130    puts "x2: Faulty ${BugNumber}"
131    set status_xyz2 1
132 } else {
133    puts "x2: OK ${BugNumber}"
134 }
135
136 set y2_percent [GetPercent ${y2} ${good_y2}]
137 puts "y2_percent = ${y2_percent}"
138 if { ${y2_percent} > ${percent_max} } {
139    puts "y2: Faulty ${BugNumber}"
140    set status_xyz2 1
141 } else {
142    puts "y2: OK ${BugNumber}"
143 }
144
145 set z2_percent [GetPercent ${z2} ${good_z2}]
146 puts "z2_percent = ${z2_percent}"
147 if { ${z2_percent} > ${percent_max} } {
148    set z2_percent [GetPercent ${z2} ${good_z1}]
149    puts "z2_percent = ${z2_percent}"
150    if { ${z2_percent} > ${percent_max} } {
151       puts "z2: Faulty ${BugNumber}"
152       set status_xyz2 1
153    } else {
154       puts "z2: OK ${BugNumber}"
155    }
156 } else {
157    puts "z2: OK ${BugNumber}"
158 }
159
160 if { ${status_point} == 0 && ${status_nb} == 0 && ${status_xyz1} == 0 && ${status_xyz2} == 0 } {
161     puts "OK ${BugNumber}"
162 } else {
163     puts "Faulty ${BugNumber}"
164 }
165