Skip to content

Change the way encapsulations are handled. - #1504

Open
hsorby wants to merge 9 commits into
cellml:mainfrom
hsorby:1503-multiple-encapsulations
Open

hsorby wants to merge 9 commits into
cellml:mainfrom
hsorby:1503-multiple-encapsulations

Conversation

@hsorby

@hsorby hsorby commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

This work fixes #1503 (the handling of parsing encapsulations).
Now, multiple encapsulations are supported when parsing CellML 1.0/1.1 models.

@hsorby hsorby added the Parsing label Oct 14, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Conflicting parents across encapsulation groups silently overwrite earlier relationships without reporting an error.

2 open findings
What changed in this PR

Updates CellML 1.0/1.1 parsing to support multiple encapsulation groups, addressing #1503.

Changes:

  • Loads all encapsulation groups while retaining the CellML 2.0 multiple-encapsulation error.
  • Adjusts connection duplicate detection.
  • Adds regression tests and model fixtures.
File Description
tests/​resources/​cellml1X/​multiple_encapsulations.cellml Adds a two-group encapsulation fixture.
tests/​resources/​cellml1X/​map_components.cellml Adds reversed component mappings.
tests/​resources/​cellml1X/​connections.cellml Adds bidirectional variable mappings.
tests/​parser/​parser.cpp Updates expected encapsulation diagnostics.
tests/​parser/​cellml_1_1.cpp Tests multiple legacy encapsulation groups.
tests/​connection/​connection.cpp Tests connection mapping behavior.
src/​parser.cpp Processes all groups and adjusts duplicate detection.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/parser.cpp
Comment on lines +593 to +594
for (const auto &encapsulationNode : encapsulationNodes) {
loadEncapsulation(model, encapsulationNode);
Comment on lines +156 to +157
EXPECT_EQ_ISSUES(expectedIssues, parser);
EXPECT_EQ("Example_MassAction", model->name());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for CellML 1.0/1.1 models that define multiple encapsulation relationship groups

2 participants