Skip to content

Commit

Permalink
Merge pull request #2648 from FirelyTeam/bugfix/2647-source-node-comp…
Browse files Browse the repository at this point in the history
…arer-is-missing-returns

Add missing returns to SourceNodeComparator
  • Loading branch information
mmsmits authored Jan 3, 2024
2 parents 7d29828 + 69f52a9 commit ef4ab78
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/Hl7.Fhir.Base/ElementModel/SourceNodeComparator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,14 @@ public static TreeComparisonResult IsEqualTo(this ISourceNode expected, ISourceN
foreach (var exp in childrenExp)
{
if (!childrenActual.MoveNext())
TreeComparisonResult.Fail(actual.Location, $"number of children was different");
return TreeComparisonResult.Fail(actual.Location, $"number of children was different");

var result = exp.IsEqualTo(childrenActual.Current);
if (!result.Success)
return result;
}
if (childrenActual.MoveNext())
TreeComparisonResult.Fail(actual.Location, $"number of children was different");
return TreeComparisonResult.Fail(actual.Location, $"number of children was different");

return TreeComparisonResult.OK;
}
Expand Down
58 changes: 58 additions & 0 deletions src/Hl7.Fhir.ElementModel.Shared.Tests/SourceNodeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -175,5 +175,63 @@ void countInitializations(ISourceNode node)
if (fieldInfo.GetValue(node) is not null) nrOfCreatedObjects++;
}
}


[TestMethod]
public void CompareNodesTest()
{

var node1 = SourceNode.Node("Patient",
SourceNode.Node("name",
SourceNode.Node("family", SourceNode.Valued("family", "van de Heuvel")),
SourceNode.Node("given", SourceNode.Valued("given", "Pieter"))
));

//remove the given name
var node2 = SourceNode.Node("Patient",
SourceNode.Node("name",
SourceNode.Node("family", SourceNode.Valued("family", "van de Heuvel"))
));

var result = node1.IsEqualTo(node2);
result.Success.Should().BeFalse();
result.Details.Should().Be("number of children was different");

//change given name
node2 = SourceNode.Node("Patient",
SourceNode.Node("name",
SourceNode.Node("family", SourceNode.Valued("family", "van de Heuvel")),
SourceNode.Node("given", SourceNode.Valued("given", "Peter"))
));

result = node1.IsEqualTo(node2);
result.Success.Should().BeFalse();
result.Details.Should().Be("value: was 'Peter', expected 'Pieter'");

//change node name
node2 = SourceNode.Node("Patient",
SourceNode.Node("name",
SourceNode.Node("family", SourceNode.Valued("family", "van de Heuvel")),
SourceNode.Node("prefix", SourceNode.Valued("prefix", "Pieter"))
));

result = node1.IsEqualTo(node2);
result.Success.Should().BeFalse();
result.Details.Should().Be("name: was 'prefix', expected 'given'");

//add node
node2 = SourceNode.Node("Patient",
SourceNode.Node("name",
SourceNode.Node("family", SourceNode.Valued("family", "van de Heuvel")),
SourceNode.Node("given", SourceNode.Valued("given", "Pieter")),
SourceNode.Node("prefix", SourceNode.Valued("prefix", "Mr."))
));

result = node1.IsEqualTo(node2);
result.Success.Should().BeFalse();
result.Details.Should().Be("number of children was different");

}

}
}

0 comments on commit ef4ab78

Please sign in to comment.