diff --git a/src/parser.cpp b/src/parser.cpp index 3060c83f9..04f140841 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -1109,7 +1109,7 @@ void Parser::ParserImpl::loadConnection(const ModelPtr &model, const XmlNodePtr issue->mPimpl->setReferenceRule(Issue::ReferenceRule::CONNECTION_EXCLUDE_SELF); addIssue(issue); } else { - if (component1Name > component2Name) { + if (!mParsing1XVersion && (component1Name > component2Name)) { std::string tmp = component1Name; component1Name = component2Name; component2Name = tmp; diff --git a/tests/connection/connection.cpp b/tests/connection/connection.cpp index 76fda64dd..abefc260c 100644 --- a/tests/connection/connection.cpp +++ b/tests/connection/connection.cpp @@ -1588,3 +1588,11 @@ TEST(Connection, sameNamedVariablesInDifferentComponents) EXPECT_EQ(size_t(0), p->issueCount()); } + +TEST(Connection, mapComponentsAreOrderDependentInCellML1X) +{ + auto p = libcellml::Parser::create(false); + auto m = p->parseModel(fileContents("cellml1X/map_components.cellml")); + + EXPECT_EQ(size_t(0), p->errorCount()); +} diff --git a/tests/resources/cellml1X/map_components.cellml b/tests/resources/cellml1X/map_components.cellml new file mode 100644 index 000000000..7de46b31c --- /dev/null +++ b/tests/resources/cellml1X/map_components.cellml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +