0028428: BinMNaming_NamedShapeDriver fails if there are no nodes in NamedShape
authormpv <mpv@opencascade.com>
Thu, 2 Feb 2017 15:31:59 +0000 (18:31 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 2 Mar 2017 09:31:50 +0000 (12:31 +0300)
Unit test and additional parsing rule for tests are added as well as a minor fix of the draw command for bug24164_2 unit test (in reference array it was impossible to set only one value).

Added the exception for the checking in issue 2269, when bad document is read.

It checks that there is no crash, but just an error message. If crash is appeared, this test will not skipped anyway.

Correction of test for bug2269 and parse.rules

src/BinMNaming/BinMNaming_NamedShapeDriver.cxx
src/DDataStd/DDataStd_BasicCommands.cxx
src/QADNaming/QADNaming_BuilderCommands.cxx
tests/bugs/caf/bug2269
tests/bugs/caf/bug28428 [new file with mode: 0644]
tests/bugs/parse.rules

index 4f0a04a..f134517 100644 (file)
@@ -171,7 +171,6 @@ Standard_Boolean BinMNaming_NamedShapeDriver::Paste
   theSource >> aNbShapes;
   TDF_Label aLabel = theTarget->Label ();
   TNaming_Builder   aBuilder   (aLabel);
-  if (aNbShapes == 0) return Standard_False;
   Standard_Integer aVer;
   Standard_Boolean ok = theSource >> aVer;
   if(!ok) return Standard_False;
@@ -247,8 +246,6 @@ void BinMNaming_NamedShapeDriver::Paste (const Handle(TDF_Attribute)& theSource,
   for (TNaming_Iterator SItr (aSAtt); SItr.More (); SItr.Next ()) NbShapes++;
   //--------------------------------------------------------------
 
-  if (NbShapes == 0) return;
-
   BinTools_ShapeSet& aShapeSet = (BinTools_ShapeSet&) myShapeSet;
   TNaming_Evolution anEvol = aSAtt->Evolution();
   
@@ -317,4 +314,3 @@ void BinMNaming_NamedShapeDriver::ReadShapeSection (Standard_IStream& theIS)
   else
     theIS.seekg(aPos); // no shape section is present, try to return to initial point
 }
-
index 89f06e6..48b40a8 100644 (file)
@@ -3699,7 +3699,7 @@ static Standard_Integer DDataStd_SetRefArray (Draw_Interpretor& di,
 
   Handle(TDataStd_ReferenceArray) A = TDataStd_ReferenceArray::Set(label, From, To);
   
-  if (nb > 6) {
+  if (nb >= 6) {
     j = 5;
     for(Standard_Integer i = From; i<=To; i++) { 
       TDF_Label aRefLabel; 
index edd2bfa..e0d75e5 100644 (file)
@@ -23,7 +23,7 @@
 static Standard_Integer BuildNamedShape (Draw_Interpretor& di,
                                         Standard_Integer nb, 
                                         const char** arg) {
-  if (nb > 4) { 
+  if (nb >= 4) { 
     TDF_Label aLabel;
     if (!QADNaming::Entry(arg, aLabel)) return 1;
     char anEvolution = arg[3][0];
@@ -73,7 +73,7 @@ static Standard_Integer BuildNamedShape (Draw_Interpretor& di,
 //       OnlyModif = Draw::Atoi(arg[3]);
 //     }
   } else {
-    di<<"Usage: BuildName df entry evolution(P[RIMITIVE] G[ENERATED] M[ODIFY] D[ELETE] R[EPLACE] S[ELECTED]) shape1 [shape2 ...]\n";
+    di<<"Usage: BuildName df entry evolution(P[RIMITIVE] G[ENERATED] M[ODIFY] D[ELETE] R[EPLACE] S[ELECTED]) [shape1 shape2 ...]\n";
     return 1;
   }
   return 0;
@@ -89,6 +89,6 @@ void QADNaming::BuilderCommands(Draw_Interpretor& theCommands)
   const char* g = "Naming builder commands";
 
   theCommands.Add("BuildNamedShape",
-                 "BuildNamedShape df entry evolution(P[RIMITIVE] G[ENERATED] M[ODIFY] D[ELETE] R[EPLACE] S[ELECTED]) shape1 [shape2 ...]",
+                 "BuildNamedShape df entry evolution(P[RIMITIVE] G[ENERATED] M[ODIFY] D[ELETE] R[EPLACE] S[ELECTED]) [shape1 shape2 ...]",
                  __FILE__,BuildNamedShape,g);
 }
index be59091..a0cbe3f 100644 (file)
@@ -1,3 +1,5 @@
+puts "REQUIRED All: XmlDriver warning: failure reading attribute TDataStd_RealArray"
+
 puts "================"
 puts "OCC2269"
 puts "================"
diff --git a/tests/bugs/caf/bug28428 b/tests/bugs/caf/bug28428
new file mode 100644 (file)
index 0000000..eb6020a
--- /dev/null
@@ -0,0 +1,19 @@
+puts "==========="
+puts "OCC28428"
+puts "==========="
+puts ""
+########################################################################
+# BinMNaming_NamedShapeDriver fails if there are no nodes in NamedShape
+########################################################################
+
+pload QAcommands
+
+NewDocument D1 BinOcaf
+# Create TNaming_Builder on a label without putthing shapes
+BuildNamedShape D1 0:1 P
+SaveAs D1 $imagedir/bug28428_new.cbf
+Close D1
+# This produced a NamedShape driver failure with catching by general driver
+# and output a failure message (catched by parse.rules)
+Open $imagedir/bug28428_new.cbf D2
+Close D2
index 4450a29..9d0907f 100755 (executable)
@@ -1,3 +1,4 @@
 FAILED /\bFaulty\b/ bad shape
+FAILED /failure reading attribute/ attribute failure
 SKIPPED /Error: unsupported locale specification/ locale is unavailable on tested system
-OK /Relative error of mass computation/ message from vprops
\ No newline at end of file
+OK /Relative error of mass computation/ message from vprops