0027775: Different behavior of GeomFill_BSplineCurves algorithm in DEBUG and RELEASE...
authornbv <nbv@opencascade.com>
Mon, 15 Aug 2016 15:06:34 +0000 (18:06 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 18 Aug 2016 11:46:27 +0000 (14:46 +0300)
Throw an exception in case of incorrect input data.

src/GeomFill/GeomFill_BSplineCurves.cxx
tests/bugs/modalg_6/bug27775 [new file with mode: 0644]

index e58ae86..882da4e 100644 (file)
@@ -285,10 +285,9 @@ void  GeomFill_BSplineCurves::Init
   Standard_Integer NbVPoles = SetSameDistribution(CC2,CC4);
 
   if(Type == GeomFill_CoonsStyle) {
-    Standard_ConstructionError_Raise_if 
-      (NbUPoles < 4 || NbVPoles < 4, " GeomFill_BSplineCurves: invalid filling style");
+    if(NbUPoles < 4 || NbVPoles < 4)
+      Standard_ConstructionError::Raise("GeomFill_BSplineCurves: invalid filling style");
   }
-     
 
   TColgp_Array1OfPnt P1(1,NbUPoles);
   TColgp_Array1OfPnt P2(1,NbVPoles);
diff --git a/tests/bugs/modalg_6/bug27775 b/tests/bugs/modalg_6/bug27775
new file mode 100644 (file)
index 0000000..2fba34c
--- /dev/null
@@ -0,0 +1,25 @@
+puts "REQUIRED All: Standard_ConstructionError\: GeomFill_BSplineCurves\: invalid filling style"
+
+puts "========"
+puts "OCC27704"
+puts "========"
+puts ""
+#################################################
+# Different behavior of GeomFill_BSplineCurves algorithm in DEBUG and RELEASE mode
+#################################################
+
+#Indeed, the input data are invalid here:
+#1. Algorithm requires B-Spline with 4+ poles. Source curves contains two pole only.
+#2. Four curves must comprise closed region. But it is not here.
+#Therefore, the normal behavior is to throw an exception.
+
+bsplinecurve c1 1 2 0 2 100.000001513789 2 -24033.3957701043 -6337.90755953146 -16577.8188547128 1 -23933.3957701044 -6337.90755953146 -16577.8362547128 1
+bsplinecurve c2 1 2 0 2 100.000001513789 2 -23933.3957701044 -6337.90755953146 -16577.8362547128 1 -24033.3957701043 -6337.90755953146 -16577.8188547128 1
+bsplinecurve c3 1 2 0 2 33.1099999999979 2 -24033.3957701043 -6371.01755953146 -16577.8188547128 1 -24033.3957701043 -6337.90755953146 -16577.8188547128 1
+bsplinecurve c4 1 2 0 2 100.000001513789 2 -24033.3957701043 -6371.01755953146 -16577.8188547128 1 -23933.3957701044 -6371.01755953146 -16577.8362547128 1
+
+if {[catch {fillcurves res c1 c2 c3 c4 2}]} {
+  puts "OK: The incorrect input data were processed correctly!"  
+} else {
+  puts "Error: The output result must be invalid because the input data are wrong!"
+}
\ No newline at end of file