From 7fd7ebf3193773a1c8070b7d0e8eef26b7739444 Mon Sep 17 00:00:00 2001 From: Hugh Sorby Date: Mon, 9 Nov 2026 15:33:00 +1300 Subject: [PATCH] Add test for import of non-standard units. --- tests/importer/model_flattening.cpp | 55 +++++++++++++++++++ ...ort_for_import_for_nestedimportofunits.xml | 9 +++ .../import_for_nestedimportofunits.xml | 22 ++++++++ .../modelflattening/nestedimportofunits.xml | 9 +++ .../units_for_nestedimportofunits.xml | 17 ++++++ 5 files changed, 112 insertions(+) create mode 100644 tests/resources/modelflattening/import_for_import_for_nestedimportofunits.xml create mode 100644 tests/resources/modelflattening/import_for_nestedimportofunits.xml create mode 100644 tests/resources/modelflattening/nestedimportofunits.xml create mode 100644 tests/resources/modelflattening/units_for_nestedimportofunits.xml 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 @@ + + + + + + + + + + + + + + + + +