0025722: Wrong implementation of SetFuzzyValue method
authoremv <emv@opencascade.com>
Thu, 22 Jan 2015 14:24:00 +0000 (17:24 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 22 Jan 2015 14:26:52 +0000 (17:26 +0300)
The following methods
  void BOPAlgo_ArgumentAnalyzer::SetFuzzyValue(const Standard_Real theFuzz)
  void BOPAlgo_Builder::SetFuzzyValue(const Standard_Real theFuzz)
  void BOPAlgo_PaveFiller::SetFuzzyValue(const Standard_Real theFuzz)
  void BOPDS_DS::SetFuzzyValue(const Standard_Real theFuzz)
  void BRepAlgoAPI_BuilderAlgo::SetFuzzyValue(const Standard_Real theFuzz)
  void BRepAlgoAPI_Check::SetFuzzyValue(const Standard_Real theFuzz)
have been corrected.

Added test case bugs/modalg_5/bug25722

src/BOPAlgo/BOPAlgo_ArgumentAnalyzer.lxx
src/BOPAlgo/BOPAlgo_Builder.cxx
src/BOPAlgo/BOPAlgo_PaveFiller.cxx
src/BOPDS/BOPDS_DS.lxx
src/BRepAlgoAPI/BRepAlgoAPI_BuilderAlgo.cxx
src/BRepAlgoAPI/BRepAlgoAPI_Check.cxx
tests/bugs/modalg_5/bug25722 [new file with mode: 0644]

index 846e296..8b3d304 100644 (file)
@@ -67,9 +67,7 @@ inline Standard_Boolean& BOPAlgo_ArgumentAnalyzer::CurveOnSurfaceMode()
 //=======================================================================
 inline void BOPAlgo_ArgumentAnalyzer::SetFuzzyValue(const Standard_Real theFuzz)
 {
 //=======================================================================
 inline void BOPAlgo_ArgumentAnalyzer::SetFuzzyValue(const Standard_Real theFuzz)
 {
-  if (theFuzz > 0.) {
-    myFuzzyValue = theFuzz;
-  }
+  myFuzzyValue = (theFuzz < 0.) ? 0. : theFuzz;
 }
 //=======================================================================
 //function : FuzzyValue
 }
 //=======================================================================
 //function : FuzzyValue
index 5307af8..8e7bb8f 100644 (file)
@@ -198,9 +198,7 @@ BOPDS_PDS BOPAlgo_Builder::PDS()
 //=======================================================================
 void BOPAlgo_Builder::SetFuzzyValue(const Standard_Real theFuzz)
 {
 //=======================================================================
 void BOPAlgo_Builder::SetFuzzyValue(const Standard_Real theFuzz)
 {
-  if (theFuzz > 0.) {
-    myFuzzyValue = theFuzz;
-  }
+  myFuzzyValue = (theFuzz < 0.) ? 0. : theFuzz;
 }
 //=======================================================================
 //function : FuzzyValue
 }
 //=======================================================================
 //function : FuzzyValue
index fa1b96c..b5fe4c6 100644 (file)
@@ -146,9 +146,7 @@ const BOPCol_ListOfShape& BOPAlgo_PaveFiller::Arguments()const
 //=======================================================================
 void BOPAlgo_PaveFiller::SetFuzzyValue(const Standard_Real theFuzz)
 {
 //=======================================================================
 void BOPAlgo_PaveFiller::SetFuzzyValue(const Standard_Real theFuzz)
 {
-  if (theFuzz > 0.) {
-    myFuzzyValue = theFuzz;
-  }
+  myFuzzyValue = (theFuzz < 0.) ? 0. : theFuzz;
 }
 //=======================================================================
 //function : FuzzyValue
 }
 //=======================================================================
 //function : FuzzyValue
index 61dbd2c..bf4ef9c 100644 (file)
@@ -139,9 +139,7 @@ inline const BOPDS_MapOfPassKey& BOPDS_DS::Interferences()const
 //=======================================================================
 inline void BOPDS_DS::SetFuzzyValue(const Standard_Real theFuzz)
 {
 //=======================================================================
 inline void BOPDS_DS::SetFuzzyValue(const Standard_Real theFuzz)
 {
-  if (theFuzz > 0.) {
-    myFuzzyValue = theFuzz;
-  }
+  myFuzzyValue = (theFuzz < 0.) ? 0. : theFuzz;
 }
 //=======================================================================
 //function : FuzzyValue
 }
 //=======================================================================
 //function : FuzzyValue
index 8deab8e..64ad14a 100644 (file)
@@ -58,9 +58,7 @@ BRepAlgoAPI_BuilderAlgo::~BRepAlgoAPI_BuilderAlgo()
 //=======================================================================
 void BRepAlgoAPI_BuilderAlgo::SetFuzzyValue(const Standard_Real theFuzz)
 {
 //=======================================================================
 void BRepAlgoAPI_BuilderAlgo::SetFuzzyValue(const Standard_Real theFuzz)
 {
-  if (theFuzz > 0.) {
-    myFuzzyValue = theFuzz;
-  }
+  myFuzzyValue = (theFuzz < 0.) ? 0. : theFuzz;
 }
 //=======================================================================
 //function : FuzzyValue
 }
 //=======================================================================
 //function : FuzzyValue
index 4c558a1..f3f7879 100644 (file)
@@ -80,9 +80,7 @@ BRepAlgoAPI_Check::~BRepAlgoAPI_Check()
 //=======================================================================
 void BRepAlgoAPI_Check::SetFuzzyValue(const Standard_Real theFuzz)
 {
 //=======================================================================
 void BRepAlgoAPI_Check::SetFuzzyValue(const Standard_Real theFuzz)
 {
-  if (theFuzz > 0.) {
-    myFuzzyValue = theFuzz;
-  }
+  myFuzzyValue = (theFuzz < 0.) ? 0. : theFuzz;
 }
 //=======================================================================
 //function : FuzzyValue
 }
 //=======================================================================
 //function : FuzzyValue
diff --git a/tests/bugs/modalg_5/bug25722 b/tests/bugs/modalg_5/bug25722
new file mode 100644 (file)
index 0000000..7f1c572
--- /dev/null
@@ -0,0 +1,41 @@
+puts "=========="
+puts "OCC25722"
+puts "=========="
+puts ""
+#################################################
+# Wrong implementation of SetFuzzyValue method
+#################################################
+
+box b1 10 10 10
+box b2 10.0001 0 0 10 10 10
+bfuzzyvalue 0.0001
+bclearobjects
+bcleartools
+baddobjects b1
+baddtools b2
+bfillds
+bbop r 1
+regexp {SOLID +: +([-0-9.+eE]+)} [nbshapes r] full nb_sol
+if { ${nb_sol} != 1 } {
+  puts "Error : Result shape is WRONG because it must contains 1 solid instead of ${nb_sol}"
+} else {
+  puts "Result shape contains ${nb_sol} solids"
+}
+
+bfuzzyvalue 0.
+box b1 10 10 10
+box b2 10.0001 0 0 10 10 10
+bclearobjects
+bcleartools
+baddobjects b1
+baddtools b2
+bfillds
+bbop result 1
+regexp {SOLID +: +([-0-9.+eE]+)} [nbshapes result] full nb_sol
+if { ${nb_sol} != 2 } {
+  puts "Error : Result shape is WRONG because it must contains 2 solids instead of ${nb_sol}"
+} else {
+  puts "Result shape contains ${nb_sol} solids"
+}
+
+set 2dviewer 1