from GeomAlgoAPI import *
from GeomAPI import *
from GeomDataAPI import *
-from ModelAPI import ModelAPI_Feature, ModelAPI_Session
+from ModelAPI import ModelAPI_Feature, ModelAPI_Session, objectToFeature
from ModelHighAPI import *
import math
from salome.shaper.model import sketcher
assert aFiltersFactory.isValid(theFilter.feature(), parent, shape) == res, "Filter result for {} \"{}\" incorrect. Expected {}.".format(shapeType, shapeName, res)
if needUndo:
theModel.undo()
+
+def checkFeaturesValidity(thePartDoc):
+ """ Check that the features are not in error
+ """
+ aFactory = ModelAPI_Session.get().validators()
+
+ nbFeatures = thePartDoc.size("Features")
+
+ assert nbFeatures>0, "No features found in part doc"
+
+ for i in range(nbFeatures):
+ partObject = thePartDoc.object("Features", i)
+ # Check the data
+ partObjectData = partObject.data()
+ name = partObjectData.name()
+ error = partObjectData.error()
+ # raise the error message if there is one
+ assert error == '', "The feature data {0} is in error: {1}".format(name, error)
+ # raise an error if the the feature is not valid (without error message)
+ assert partObject.data().isValid(), "The feature data {0} is in error.".format(name)
+ # Same checks for the feature itself
+ feature = objectToFeature(partObject)
+ if feature is None:
+ # Folders are not real features
+ continue
+ # raise the error message if there is one
+ assert error == '', "The feature {0} is in error: {1}".format(name, error)
+ # raise an error if the the feature is not valid (without error message)
+ assert aFactory.validate(feature), "The feature {0} is in error.".format(name)
self.session.setActiveDocument(self.partSet)
self.session.finishOperation()
+ # Check that the features are not in error
+ Part_1_doc = aPart.partDoc()
+
+ model.checkFeaturesValidity(Part_1_doc)
# check reference data
exec(open(self.reffile, "rb").read(), globals(), aPartsList)
TestHDF.reffile = sys.argv[2]
if len(sys.argv) > 3:
errFile = open(sys.argv[3], 'w')
+ else:
+ # to ease debugging, display the log in embedded python console if no log file is provided
+ # when calling salome in command line for instance
+ # runSalome.py --splash 0 test_hdf.py args:BearingSeparator.hdf,BearingSeparator.py
+ errFile = None
aTest = unittest.TestLoader().loadTestsFromTestCase(TestHDF)
unittest.TextTestRunner(stream=errFile).run(aTest)
- errFile.close()
- #import qtsalome
- #qtsalome.qApp.closeAllWindows()
- import signal
- os.kill(os.getpid(),signal.SIGKILL)
+ if errFile:
+ errFile.close()
+
+ # Quit SALOME the clean way
+ sys.exit()