def test_inheritance(self): import libcellml from libcellml import Importer # Test inheritance. x = Importer() self.assertIsInstance(x, libcellml.logger.Logger) # Test access to inherited methods. self.assertIsNone(x.issue(0)) self.assertIsNone(x.issue(-1)) self.assertEqual(x.issueCount(), 0) x.addIssue(libcellml.Issue()) self.assertEqual(x.issueCount(), 1)
def test_replace_model(self): from libcellml import Component, Importer, Model, Parser parser = Parser() model = parser.parseModel( file_contents('importer/generic_no_source.cellml')) importer = Importer() wrongSourceModel = Model('wrong') rightSourceModel = Model('right') rightSourceModel.addComponent(Component('a')) rightSourceModel.addComponent(Component('b')) rightSourceModel.addComponent(Component('c')) rightSourceModel.addComponent(Component('d')) self.assertTrue( importer.addModel(wrongSourceModel, 'i_dont_exist.cellml')) self.assertFalse( importer.replaceModel(rightSourceModel, 'not_in_library')) self.assertTrue( importer.replaceModel(rightSourceModel, 'i_dont_exist.cellml')) importer.resolveImports(model, '') self.assertEqual(0, importer.issueCount()) self.assertFalse(model.hasUnresolvedImports())
def test_replace_model(self): from libcellml import Component, Importer, Model, Parser parser = Parser() model = parser.parseModel( file_contents("importer/generic_no_source.cellml")) importer = Importer() wrongSourceModel = Model("wrong") rightSourceModel = Model("right") rightSourceModel.addComponent(Component("a")) rightSourceModel.addComponent(Component("b")) rightSourceModel.addComponent(Component("c")) rightSourceModel.addComponent(Component("d")) self.assertTrue( importer.addModel(wrongSourceModel, "i_dont_exist.cellml")) self.assertFalse( importer.replaceModel(rightSourceModel, "not_in_library")) self.assertTrue( importer.replaceModel(rightSourceModel, "i_dont_exist.cellml")) importer.resolveImports(model, "") self.assertEqual(0, importer.issueCount()) self.assertFalse(model.hasUnresolvedImports())
def test_is_resolved_component(self): from libcellml import Importer, Parser parser = Parser() importer = Importer() model = parser.parseModel( file_contents("importer/component_importer_unresolved.cellml")) self.assertEqual(0, parser.issueCount()) importer.resolveImports(model, resource_path("importer/")) self.assertEqual(1, importer.issueCount()) c = model.component(0) self.assertFalse(c.isResolved())
def test_is_resolved_units(self): from libcellml import Importer, Parser parser = Parser() importer = Importer() model = parser.parseModel( file_contents("importer/master_units.cellml")) self.assertEqual(0, parser.issueCount()) importer.resolveImports(model, resource_path("importer/")) self.assertEqual(0, importer.issueCount()) u = model.units(0) self.assertTrue(u.isResolved())
def test_clear_imports(self): from libcellml import Importer, Parser parser = Parser() importer = Importer() model = parser.parseModel( file_contents('importer/nested_components.cellml')) self.assertEqual(0, parser.issueCount()) importer.resolveImports(model, resource_path('importer/')) self.assertEqual(0, importer.issueCount()) self.assertFalse(model.hasUnresolvedImports()) importer.clearImports(model) self.assertTrue(model.hasUnresolvedImports())
def test_add_model(self): from libcellml import Component, Importer, Model, Parser parser = Parser() importer = Importer() model = parser.parseModel( file_contents('importer/generic_no_source.cellml')) sourceModel = Model('source') sourceModel.addComponent(Component('a')) sourceModel.addComponent(Component('b')) sourceModel.addComponent(Component('c')) sourceModel.addComponent(Component('d')) # Add a model manually to the library, including the URL that it will replace in future imports. self.assertTrue(importer.addModel(sourceModel, 'i_dont_exist.cellml')) self.assertFalse(importer.addModel(sourceModel, 'i_dont_exist.cellml')) importer.resolveImports(model, '') self.assertEqual(0, importer.issueCount()) self.assertFalse(model.hasUnresolvedImports())
if __name__ == '__main__': # STEP 1 # Parse an existing CellML model from a file. read_file = open('debugAnalysisExample.cellml', 'r') parser = Parser() model = parser.parseModel(read_file.read()) # STEP 2 # Resolve any imports and flatten the model for analysis. importer = Importer() # Resolve the imports. importer.resolveImports(model, '') # Check for issues. print('The importer found {} issues.'.format(importer.issueCount())) for i in range(0, importer.issueCount()): issue = importer.issue(i) print(issue.description()) # Flatten the model. model = importer.flattenModel(model) # STEP 3 # Create an Validator instance and pass the model to it for processing. validator = Validator() validator.validateModel(model) # Print any issues to the terminal. print('The validator found {} issues.'.format(validator.issueCount())) for i in range(0, validator.issueCount()):