puts "================"
puts "OCC1722"
puts "================"
puts ""
#######################################################################################
# Wrong behaviour of the method CommitCommand of class TDocStd_MultiTransactionManager
#######################################################################################

proc OCC1722_Check_real_attribute {IsGood doc label good_real case} {
  global ${doc}
  # Check real attribute
  set percent_max 0.1
  if [catch { set real [GetReal ${doc} ${label}] } message] {
    set IsGood 0
    puts "OCC1722 Error (case ${case})"
  } else {
    set real_percent [expr abs(${real} - ${good_real}) / double(${good_real}) * 100.]
    if {${real_percent} > ${percent_max}} {
       puts "good_real = ${good_real}"
       puts "real = ${real}"
       puts "real_percent = ${real_percent}"
       puts "OCC1722 Error (case ${case}-2)"
    }
  }
  return ${IsGood}
}


set IsGood 1
set Case 0
set aLabel 0:1:1
set aReal1 1.1
set aReal2 2.1


NewDocument doc1
mtmCreate 4

mtmAdd doc1

SetReal doc1 ${aLabel} ${aReal1}
set IsGood [OCC1722_Check_real_attribute ${IsGood} ${doc1} ${aLabel} ${aReal1} [incr Case]]

OpenCommand doc1
SetReal doc1 ${aLabel} ${aReal2}
set IsGood [OCC1722_Check_real_attribute ${IsGood} ${doc1} ${aLabel} ${aReal2} [incr Case]]

set list [mtmDump]
################################################################################
# *** Dump of MTM ***
# There is one document ( "3095112" ) in the manager 
# Nested transaction mode is off
#  
# 
# ***     End     ***
################################################################################
set index1 [lsearch -exact ${list} "Undo:"]

# Check dump
set case [incr Case]
if { ${index1} != -1 } {
  set IsGood 0
  puts "OCC1722 Error (case ${case})"
}

mtmCommit Transaction1

set list [mtmDump]
################################################################################
# *** Dump of MTM ***
# There is one document ( "3095112" ) in the manager 
# Nested transaction mode is off
#  
#  Undo: 	Transaction1 - 1 documents  ( "3095112" )   < Last action
# 
# ***     End     ***
################################################################################
set index2 [lsearch -exact ${list} "Undo:"]

# Check dump
set case [incr Case]
if { ${index2} == -1 } {
  set IsGood 0
  puts "OCC1722 Error (case ${case})"
}

Undo doc1
set IsGood [OCC1722_Check_real_attribute ${IsGood} ${doc1} ${aLabel} ${aReal1} [incr Case]]

Redo doc1
set IsGood [OCC1722_Check_real_attribute ${IsGood} ${doc1} ${aLabel} ${aReal2} [incr Case]]


if { ${IsGood} == 1 } {
  puts "OCC1722 OK"
} else {
  puts "OCC1722 Error"
}
