diff --git a/tests/importer/model_flattening.cpp b/tests/importer/model_flattening.cpp index f0e25d902b..59cedc613b 100644 --- a/tests/importer/model_flattening.cpp +++ b/tests/importer/model_flattening.cpp @@ -1940,3 +1940,58 @@ TEST(ModelFlattening, multiLayeredImportOfNonStandardUnits) EXPECT_NE(nullptr, flattenModel); } + +TEST(ModelFlattening, nestedImportOfUnitsWithNonStandardChildren) +{ + const std::string e = + "\n" + "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "\n"; + + auto parser = libcellml::Parser::create(); + auto model = parser->parseModel(fileContents("modelflattening/nestedimportofunits.xml")); + auto importer = libcellml::Importer::create(); + + EXPECT_TRUE(model->hasUnresolvedImports()); + importer->resolveImports(model, resourcePath("modelflattening/")); + EXPECT_FALSE(model->hasUnresolvedImports()); + + model = importer->flattenModel(model); + EXPECT_EQ(size_t(0), importer->issueCount()); + + EXPECT_FALSE(model->hasUnits("rate_1")); + + auto printer = libcellml::Printer::create(); + + auto a = printer->printModel(model); + EXPECT_EQ(e, a); +} diff --git a/tests/resources/modelflattening/import_for_import_for_nestedimportofunits.xml b/tests/resources/modelflattening/import_for_import_for_nestedimportofunits.xml new file mode 100644 index 0000000000..3c3d5d2792 --- /dev/null +++ b/tests/resources/modelflattening/import_for_import_for_nestedimportofunits.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/resources/modelflattening/import_for_nestedimportofunits.xml b/tests/resources/modelflattening/import_for_nestedimportofunits.xml new file mode 100644 index 0000000000..2fe8ebbec9 --- /dev/null +++ b/tests/resources/modelflattening/import_for_nestedimportofunits.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/modelflattening/nestedimportofunits.xml b/tests/resources/modelflattening/nestedimportofunits.xml new file mode 100644 index 0000000000..644b5dfa65 --- /dev/null +++ b/tests/resources/modelflattening/nestedimportofunits.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/resources/modelflattening/units_for_nestedimportofunits.xml b/tests/resources/modelflattening/units_for_nestedimportofunits.xml new file mode 100644 index 0000000000..aa72bc4633 --- /dev/null +++ b/tests/resources/modelflattening/units_for_nestedimportofunits.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +