#INTERFACE CAF
# Basic attributes
#
# Testing attribute: TDataStd_Point
#
# Testing command:   SetPoint
# Testing command:   GetPoint
#

puts "caf001-G2"

set aTokList { :,}

# Add an attribute to a data framework
set aSetX1 10
set aSetY1 20
set aSetZ1 30
point aPoint1 ${aSetX1} ${aSetY1} ${aSetZ1}

set aDumpPoint1 [dump aPoint1]

# [llength ${aDumpPoint1}] = 10
# Format of ${aDumpPoint1}:
# *********** Dump of aPoint1 *************
# Point : 1.000000000000000e+01, 2.000000000000000e+01, 3.000000000000000e+01

set X_Point1 [lindex [split [lindex ${aDumpPoint1} 7] ${aTokList}] 0]
set Y_Point1 [lindex [split [lindex ${aDumpPoint1} 8] ${aTokList}] 0]
set Z_Point1 [lindex [split [lindex ${aDumpPoint1} 9] ${aTokList}] 0]

set aLabel 0:2
SetPoint D ${aLabel} aPoint1

# Close/Open the transaction
NewCommand D

# Set a new value of the attribute
set aSetX3 110
set aSetY3 120
set aSetZ3 130
point aPoint3 ${aSetX3} ${aSetY3} ${aSetZ3}
SetPoint D ${aLabel} aPoint3

# Close/Open the transaction
NewCommand D

# Undo
Undo D

# Get a value of the attribute
GetPoint D ${aLabel} aPoint4

set aDumpPoint4 [dump aPoint4]
set X_Point4 [lindex [split [lindex ${aDumpPoint4} 7] ${aTokList}] 0]
set Y_Point4 [lindex [split [lindex ${aDumpPoint4} 8] ${aTokList}] 0]
set Z_Point4 [lindex [split [lindex ${aDumpPoint4} 9] ${aTokList}] 0]

if { ${X_Point1} != ${X_Point4} || 
     ${Y_Point1} != ${Y_Point4} || 
     ${Z_Point1} != ${Z_Point4} } {
	puts "X_Point1=${X_Point1} X_Point4=${X_Point4}"
	puts "Y_Point1=${Y_Point1} Y_Point4=${Y_Point4}"
	puts "Z_Point1=${Z_Point1} Z_Point4=${Z_Point4}"
	puts "Set a value of TDataStd_Point attribute: Error"
	return
}
puts "Set a value of TDataStd_Point attribute: OK"