puts "========================"
puts "OCC14782"
puts "========================"
puts ""
#######################################################################
# Method segment works wrongly for periodical BSpline curve
#######################################################################

set BugNumber OCC14782

proc GetPercent {Value GoodValue} {
   set Percent 0.
   if {${GoodValue} != 0.} {
      set Percent [expr abs(${Value} - ${GoodValue}) / abs(double(${GoodValue})) * 100.]
   } elseif {${Value} != 0.} {
      set Percent [expr abs(${GoodValue} - ${Value}) / abs(double(${Value})) * 100.]
   } else {
      set Percent 0.
   }
   return ${Percent}
}


restore [locate_data_file OCC14782.draw] res

bounds res t1 t2
set bounds_list [dump res]

puts ""
if { [llength ${bounds_list}] < 7 } {
   puts "Bad bounds_list"
   puts "Faulty ${BugNumber}"
} else {
   set periodic_type [lindex ${bounds_list} 6]
   puts "periodic_type=${periodic_type}"
   if { ${periodic_type} != "periodic" } {
      puts "1. Faulty ${BugNumber}"
   } else {
      puts "1. OK ${BugNumber}"
   }
}

set ll1 [lindex [length res] end]
puts "length1=${ll1}"

segment res t3 t4
set segment_list [dump res]

puts ""
if { [llength ${segment_list}] < 7 } {
   puts "Bad segment_list"
   puts "Faulty ${BugNumber}"
} else {
   set periodic_type [lindex ${segment_list} 6]
   puts "periodic_type=${periodic_type}"
   if { ${periodic_type} != "periodic" } {
      puts "2. OK ${BugNumber}"
   } else {
      puts "2. Faulty ${BugNumber}"
   }
}

set ll2 [lindex [length res] end]
puts "length2=${ll2}"

set percent_max 0.1
set length_percent [GetPercent ${ll1} ${ll2}]
puts "length_percent = ${length_percent}"

puts ""
if { ${length_percent} > ${percent_max} } {
   puts "3. Faulty ${BugNumber}"
} else {
   puts "3. OK ${BugNumber}"
}

