--- /dev/null
+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}"
+}
+