set aTestName "caf100-A1"
puts ${aTestName}

# Create a box
set aSetX1 10
set aSetY1 20
set aSetZ1 30
set aSetDX1 100
set aSetDY1 200
set aSetDZ1 300

box aBox1 ${aSetX1} ${aSetY1} ${aSetZ1} ${aSetDX1} ${aSetDY1} ${aSetDZ1}

# Create a label
set aLabel 0:2
Label D ${aLabel}

# Close/Open transaction
NewCommand D

# Set a shape to the label
SetShape D ${aLabel} aBox1

# Close/Open transaction
NewCommand D

# Set a real attribute
set aRLabel 0:1:1
Label D ${aRLabel}
SetReal D ${aRLabel} 123.456789

# Set a constraint
set aCLabel 0:3
Label D ${aCLabel}
SetConstraint D ${aCLabel} "tan" ${aLabel}
SetConstraint D ${aCLabel} "plane" ${aLabel}
SetConstraint D ${aCLabel} "value" ${aRLabel}

# Save dump before storing
set dump_before [GetConstraint D ${aCLabel}]
puts "dump_before = ${dump_before}"

# Save the document
set aFile $WorkDirectory/${aTestName}.${FileSuffix}

SaveToFile D $aFile

# Restore the document
Close D
Open ${aFile} DD

# Get a shape from the label
set IsDone [catch {GetConstraint DD ${aCLabel}} aResult]
if { ${IsDone} != 0 } {
    puts "Error : Get a value of TDataStd_Constraint attribute from restoring document"
} else {
    puts "aResult = ${aResult}"

    # Save dump after retrieving
    set dump_after [GetConstraint DD ${aCLabel}]
    puts "dump_after = ${dump_after}"

    if { ${dump_before} != ${dump_after} } {
	puts "dump_after = ${dump_after} while dump_before = ${dump_before}"
	puts "Error : Get a value of TDataStd_Constraint attribute from restoring document"
    }
}
