# check write / read set of shapes with names to FSD archive and reading its back

# create 7 shapes
box b1 10 20 30
box b2 100 0 0 20 30 40
box b3 200 0 0 30 40 50
box b4 300 0 0 40 50 60
box b5 400 0 0 50 60 70
box b6 500 0 0 60 70 80
box b7 600 0 0 70 80 90

# calculate mass of each shape and keep to 'wb%' variable
regexp {Mass +: +([-0-9.+eE]+)} [vprops b1] full wb1
regexp {Mass +: +([-0-9.+eE]+)} [vprops b2] full wb2
regexp {Mass +: +([-0-9.+eE]+)} [vprops b3] full wb3
regexp {Mass +: +([-0-9.+eE]+)} [vprops b4] full wb4
regexp {Mass +: +([-0-9.+eE]+)} [vprops b5] full wb5
regexp {Mass +: +([-0-9.+eE]+)} [vprops b6] full wb6
regexp {Mass +: +([-0-9.+eE]+)} [vprops b7] full wb7

# remove old file if exist
catch {file delete ${imagedir}/test29402.cmp}

# write set of shapes to the file
fsdwrite b1 b2 b3 b4 b5 b6 b7 ${imagedir}/test29402.cmp cmp

# unset variables
unset b1 b2 b3 b4 b5 b6 b7

# read back the file
fsdread ${imagedir}/test29402.cmp restore_with_names

# calculate mass of each shape and keep to 'rb%' variable
regexp {Mass +: +([-0-9.+eE]+)} [vprops b1] full rb1
regexp {Mass +: +([-0-9.+eE]+)} [vprops b2] full rb2
regexp {Mass +: +([-0-9.+eE]+)} [vprops b3] full rb3
regexp {Mass +: +([-0-9.+eE]+)} [vprops b4] full rb4
regexp {Mass +: +([-0-9.+eE]+)} [vprops b5] full rb5
regexp {Mass +: +([-0-9.+eE]+)} [vprops b6] full rb6
regexp {Mass +: +([-0-9.+eE]+)} [vprops b7] full rb7

# compare mass property of old and new shapes
set NumBad 0
if { $wb1 != $rb1 } {
    puts " Faulty : incorrect shape $b1"; incr NumBad
} 
if { $wb2 != $rb2 } {
    puts " Faulty : incorrect shape $b2"; incr NumBad
}  
if { $wb3 != $rb3 } {
    puts " Faulty : incorrect shape $b3"; incr NumBad
} 
if { $wb4 != $rb4 } {
    puts " Faulty : incorrect shape $b4"; incr NumBad
}
if { $wb5 != $rb5 } {
    puts " Faulty : incorrect shape $b5"; incr NumBad
}
if { $wb6 != $rb6 } {
    puts " Faulty : incorrect shape $b6"; incr NumBad
}
if { $wb7 != $rb7 } {
    puts " Faulty : incorrect shape $b7"; incr NumBad
} 
if { $NumBad == 0} {
    puts " BUG29402 OK : All shapes kept properly"
} else {
    puts " Faulty : Found $NumBad bad shapes"
}

