Correction of testing case for issue 24374
[occt.git] / tests / bugs / caf / bug1054_2
CommitLineData
61c421bf 1puts "================"
2puts "OCC1054"
3puts "================"
4puts ""
5#######################################################################################
6# Mechanism of transactions' synchronization and mechanizm of nested transactions
7#######################################################################################
8# Case 2 (nested mode OFF)
9#######################################################################################
10
11proc OCC1054_Check_dump {IsGood index good_index case} {
12 # Check dump
13 if { ${index} != ${good_index} } {
14 set IsGood 0
15 puts "OCC1054 Error (case ${case} : index = ${index} good_index = ${good_index})"
16 }
17 return ${IsGood}
18}
19
20proc OCC1054_Check_real_attribute {IsGood doc label good_real case} {
21 global ${doc}
22 # Check real attribute
23 set percent_max 0.1
24 if [catch { set real [GetReal ${doc} ${label}] } message] {
25 set IsGood 0
26 puts "OCC1054 Error (case ${case})"
27 } else {
28 set real_percent [expr abs(${real} - ${good_real}) / double(${good_real}) * 100.]
29 if {${real_percent} > ${percent_max}} {
30 puts "good_real = ${good_real}"
31 puts "real = ${real}"
32 puts "real_percent = ${real_percent}"
33 puts "OCC1054 Error (case ${case}-2)"
34 }
35 }
36 return ${IsGood}
37}
38
39
40set IsGood 1
41set Case 0
42
43NewDocument doc1
44NewDocument doc2
45NewDocument doc3
46mtmCreate 4
47
48mtmAdd doc1
49
50mtmOpen
51SetReal doc1 0:1 1
52mtmCommit tr1
53
54set list [mtmDump]
55################################################################################
56# *** Dump of MTM ***
57# There is one document ( "2809192" ) in the manager
58# Nested transaction mode is off
59#
60# Undo: tr1 - 1 documents ( "2809192" ) < Last action
61#
62# *** End ***
63################################################################################
64set docnum0 [lindex ${list} 7]
65set index1 [lsearch -exact ${list} "tr1"]
66set docnum1 [lindex ${list} [expr ${index1} + 2]]
67set index2 [lsearch -exact ${list} "Last"]
68
69# Check dump
70set IsGood [OCC1054_Check_dump ${IsGood} ${docnum0} "one" [incr Case]]
71set IsGood [OCC1054_Check_dump ${IsGood} ${index1} 21 [incr Case]]
72set IsGood [OCC1054_Check_dump ${IsGood} ${docnum1} 1 [incr Case]]
73set IsGood [OCC1054_Check_dump ${IsGood} ${index2} 29 [incr Case]]
74
75# Check real attributes
76set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc1} 0:1 1 [incr Case]]
77
78
79mtmAdd doc2
80
81set list [mtmDump]
82################################################################################
83# *** Dump of MTM ***
84# There are 2 documents ( "2809192" "2705536" ) in the manager
85# Nested transaction mode is off
86#
87# Undo: tr1 - 1 documents ( "2809192" ) < Last action
88#
89# *** End ***
90################################################################################
91set docnum0 [lindex ${list} 7]
92set index1 [lsearch -exact ${list} "tr1"]
93set docnum1 [lindex ${list} [expr ${index1} + 2]]
94set index2 [lsearch -exact ${list} "Last"]
95
96# Check dump
97set IsGood [OCC1054_Check_dump ${IsGood} ${docnum0} 2 [incr Case]]
98set IsGood [OCC1054_Check_dump ${IsGood} ${index1} 22 [incr Case]]
99set IsGood [OCC1054_Check_dump ${IsGood} ${docnum1} 1 [incr Case]]
100set IsGood [OCC1054_Check_dump ${IsGood} ${index2} 30 [incr Case]]
101
102# Check real attributes
103set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc1} 0:1 1 [incr Case]]
104
105mtmOpen
106SetReal doc2 0:1 2
107mtmCommit tr2
108
109set list [mtmDump]
110################################################################################
111# *** Dump of MTM ***
112# There are 2 documents ( "2809192" "2705536" ) in the manager
113# Nested transaction mode is off
114#
115# Undo: tr1 - 1 documents ( "2809192" )
116# Undo: tr2 - 1 documents ( "2705536" ) < Last action
117#
118# *** End ***
119################################################################################
120set docnum0 [lindex ${list} 7]
121set index1 [lsearch -exact ${list} "tr1"]
122set docnum1 [lindex ${list} [expr ${index1} + 2]]
123set index2 [lsearch -exact ${list} "tr2"]
124set docnum2 [lindex ${list} [expr ${index2} + 2]]
125set index3 [lsearch -exact ${list} "Last"]
126
127# Check dump
128set IsGood [OCC1054_Check_dump ${IsGood} ${docnum0} 2 [incr Case]]
129set IsGood [OCC1054_Check_dump ${IsGood} ${index1} 22 [incr Case]]
130set IsGood [OCC1054_Check_dump ${IsGood} ${docnum1} 1 [incr Case]]
131set IsGood [OCC1054_Check_dump ${IsGood} ${index2} 30 [incr Case]]
132set IsGood [OCC1054_Check_dump ${IsGood} ${docnum2} 1 [incr Case]]
133set IsGood [OCC1054_Check_dump ${IsGood} ${index3} 38 [incr Case]]
134
135# Check real attributes
136set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc1} 0:1 1 [incr Case]]
137set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc2} 0:1 2 [incr Case]]
138
139SetReal doc3 0:1 1
140mtmAdd doc3
141
142set list [mtmDump]
143################################################################################
144# *** Dump of MTM ***
145# There are 3 documents ( "2809192" "2705536" "3095112" ) in the manager
146# Nested transaction mode is off
147#
148# Undo: tr1 - 1 documents ( "2809192" )
149# Undo: tr2 - 1 documents ( "2705536" ) < Last action
150#
151# *** End ***
152################################################################################
153set docnum0 [lindex ${list} 7]
154set index1 [lsearch -exact ${list} "tr1"]
155set docnum1 [lindex ${list} [expr ${index1} + 2]]
156set index2 [lsearch -exact ${list} "tr2"]
157set docnum2 [lindex ${list} [expr ${index2} + 2]]
158set index3 [lsearch -exact ${list} "Last"]
159
160# Check dump
161set IsGood [OCC1054_Check_dump ${IsGood} ${docnum0} 3 [incr Case]]
162set IsGood [OCC1054_Check_dump ${IsGood} ${index1} 23 [incr Case]]
163set IsGood [OCC1054_Check_dump ${IsGood} ${docnum1} 1 [incr Case]]
164set IsGood [OCC1054_Check_dump ${IsGood} ${index2} 31 [incr Case]]
165set IsGood [OCC1054_Check_dump ${IsGood} ${docnum2} 1 [incr Case]]
166set IsGood [OCC1054_Check_dump ${IsGood} ${index3} 39 [incr Case]]
167
168# Check real attributes
169set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc1} 0:1 1 [incr Case]]
170set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc2} 0:1 2 [incr Case]]
171
172mtmOpen
173SetReal doc1 0:2 2
174SetReal doc3 0:2 2
175mtmCommit tr3
176
177set list [mtmDump]
178################################################################################
179# *** Dump of MTM ***
180# There are 3 documents ( "2809192" "2705536" "3095112" ) in the manager
181# Nested transaction mode is off
182#
183# Undo: tr1 - 1 documents ( "2809192" )
184# Undo: tr2 - 1 documents ( "2705536" )
185# Undo: tr3 - 2 documents ( "3095112" "2809192" ) < Last action
186#
187# *** End ***
188################################################################################
189set docnum0 [lindex ${list} 7]
190set index1 [lsearch -exact ${list} "tr1"]
191set docnum1 [lindex ${list} [expr ${index1} + 2]]
192set index2 [lsearch -exact ${list} "tr2"]
193set docnum2 [lindex ${list} [expr ${index2} + 2]]
194set index3 [lsearch -exact ${list} "tr3"]
195set docnum3 [lindex ${list} [expr ${index3} + 2]]
196set index4 [lsearch -exact ${list} "Last"]
197
198# Check dump
199set IsGood [OCC1054_Check_dump ${IsGood} ${docnum0} 3 [incr Case]]
200set IsGood [OCC1054_Check_dump ${IsGood} ${index1} 23 [incr Case]]
201set IsGood [OCC1054_Check_dump ${IsGood} ${docnum1} 1 [incr Case]]
202set IsGood [OCC1054_Check_dump ${IsGood} ${index2} 31 [incr Case]]
203set IsGood [OCC1054_Check_dump ${IsGood} ${docnum2} 1 [incr Case]]
204set IsGood [OCC1054_Check_dump ${IsGood} ${index3} 39 [incr Case]]
205set IsGood [OCC1054_Check_dump ${IsGood} ${docnum3} 2 [incr Case]]
206set IsGood [OCC1054_Check_dump ${IsGood} ${index4} 48 [incr Case]]
207
208# Check real attributes
209set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc1} 0:1 1 [incr Case]]
210set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc1} 0:2 2 [incr Case]]
211set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc2} 0:1 2 [incr Case]]
212set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc3} 0:2 2 [incr Case]]
213
214mtmOpen
215SetReal doc2 0:2 2
216SetReal doc3 0:3 3
217mtmCommit tr4
218
219set list [mtmDump]
220################################################################################
221# *** Dump of MTM ***
222# There are 3 documents ( "2809192" "2705536" "3095112" ) in the manager
223# Nested transaction mode is off
224#
225# Undo: tr1 - 1 documents ( "2809192" )
226# Undo: tr2 - 1 documents ( "2705536" )
227# Undo: tr3 - 2 documents ( "3095112" "2809192" )
228# Undo: tr4 - 2 documents ( "3095112" "2705536" ) < Last action
229#
230# *** End ***
231################################################################################
232set docnum0 [lindex ${list} 7]
233set index1 [lsearch -exact ${list} "tr1"]
234set docnum1 [lindex ${list} [expr ${index1} + 2]]
235set index2 [lsearch -exact ${list} "tr2"]
236set docnum2 [lindex ${list} [expr ${index2} + 2]]
237set index3 [lsearch -exact ${list} "tr3"]
238set docnum3 [lindex ${list} [expr ${index3} + 2]]
239set index4 [lsearch -exact ${list} "tr4"]
240set docnum4 [lindex ${list} [expr ${index4} + 2]]
241set index5 [lsearch -exact ${list} "Last"]
242
243# Check dump
244set IsGood [OCC1054_Check_dump ${IsGood} ${docnum0} 3 [incr Case]]
245set IsGood [OCC1054_Check_dump ${IsGood} ${index1} 23 [incr Case]]
246set IsGood [OCC1054_Check_dump ${IsGood} ${docnum1} 1 [incr Case]]
247set IsGood [OCC1054_Check_dump ${IsGood} ${index2} 31 [incr Case]]
248set IsGood [OCC1054_Check_dump ${IsGood} ${docnum2} 1 [incr Case]]
249set IsGood [OCC1054_Check_dump ${IsGood} ${index3} 39 [incr Case]]
250set IsGood [OCC1054_Check_dump ${IsGood} ${docnum3} 2 [incr Case]]
251set IsGood [OCC1054_Check_dump ${IsGood} ${index4} 48 [incr Case]]
252set IsGood [OCC1054_Check_dump ${IsGood} ${docnum4} 2 [incr Case]]
253set IsGood [OCC1054_Check_dump ${IsGood} ${index5} 57 [incr Case]]
254
255# Check real attributes
256set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc1} 0:1 1 [incr Case]]
257set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc1} 0:2 2 [incr Case]]
258set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc2} 0:1 2 [incr Case]]
259set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc2} 0:2 2 [incr Case]]
260set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc3} 0:2 2 [incr Case]]
261set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc3} 0:3 3 [incr Case]]
262
263mtmOpen
264SetReal doc1 0:3 3
265SetReal doc2 0:3 3
266mtmCommit tr5
267
268set list [mtmDump]
269################################################################################
270# *** Dump of MTM ***
271# There are 3 documents ( "2809192" "2705536" "3095112" ) in the manager
272# Nested transaction mode is off
273#
274# Undo: tr2 - 1 documents ( "2705536" )
275# Undo: tr3 - 2 documents ( "3095112" "2809192" )
276# Undo: tr4 - 2 documents ( "3095112" "2705536" )
277# Undo: tr5 - 2 documents ( "2705536" "2809192" ) < Last action
278#
279# *** End ***
280################################################################################
281set docnum0 [lindex ${list} 7]
282set index1 [lsearch -exact ${list} "tr2"]
283set docnum1 [lindex ${list} [expr ${index1} + 2]]
284set index2 [lsearch -exact ${list} "tr3"]
285set docnum2 [lindex ${list} [expr ${index2} + 2]]
286set index3 [lsearch -exact ${list} "tr4"]
287set docnum3 [lindex ${list} [expr ${index3} + 2]]
288set index4 [lsearch -exact ${list} "tr5"]
289set docnum4 [lindex ${list} [expr ${index4} + 2]]
290set index5 [lsearch -exact ${list} "Last"]
291
292# Check dump
293set IsGood [OCC1054_Check_dump ${IsGood} ${docnum0} 3 [incr Case]]
294set IsGood [OCC1054_Check_dump ${IsGood} ${index1} 23 [incr Case]]
295set IsGood [OCC1054_Check_dump ${IsGood} ${docnum1} 1 [incr Case]]
296set IsGood [OCC1054_Check_dump ${IsGood} ${index2} 31 [incr Case]]
297set IsGood [OCC1054_Check_dump ${IsGood} ${docnum2} 2 [incr Case]]
298set IsGood [OCC1054_Check_dump ${IsGood} ${index3} 40 [incr Case]]
299set IsGood [OCC1054_Check_dump ${IsGood} ${docnum3} 2 [incr Case]]
300set IsGood [OCC1054_Check_dump ${IsGood} ${index4} 49 [incr Case]]
301set IsGood [OCC1054_Check_dump ${IsGood} ${docnum4} 2 [incr Case]]
302set IsGood [OCC1054_Check_dump ${IsGood} ${index5} 58 [incr Case]]
303
304# Check real attributes
305set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc1} 0:1 1 [incr Case]]
306set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc1} 0:2 2 [incr Case]]
307set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc1} 0:3 3 [incr Case]]
308set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc2} 0:1 2 [incr Case]]
309set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc2} 0:2 2 [incr Case]]
310set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc2} 0:3 3 [incr Case]]
311set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc3} 0:2 2 [incr Case]]
312set IsGood [OCC1054_Check_real_attribute ${IsGood} ${doc3} 0:3 3 [incr Case]]
313
314if { ${IsGood} == 1 } {
315 puts "OCC1054 OK"
316} else {
317 puts "OCC1054 Error"
318}