package org.openehr.am.template; import org.openehr.am.archetype.constraintmodel.ArchetypeConstraint; public class SectionTemplateTest extends TemplateTestBase { public void testSingleSectionWithName() throws Exception { flattenTemplate("test_simple_section.oet"); expected = loadArchetype("openEHR-EHR-SECTION.simple_section_name.v1.adl"); assertCComplexObjectEquals("failed to flatten simple section template", expected.getDefinition(), flattened.getDefinition()); // verify node.path ac = flattened.node("/"); assertSectionConstraint(ac); ac = flattened.node("/name/value"); assertCStringWithSingleValue(ac, "single"); } public void testTwoNestedSections() throws Exception { flattenTemplate("test_nested_section.oet"); // verify node.path ac = flattened.node("/"); assertSectionConstraint(ac); ac = flattened.node("/name/value"); assertCStringWithSingleValue(ac, "one"); // use archetype_id instead of at0000 ac = flattened.node("/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='two']"); assertSectionConstraint(ac); ac = flattened.node("/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='two']/name/value"); assertCStringWithSingleValue(ac, "two"); } public void testFiveNestedSections() throws Exception { flattenTemplate("test_more_nested_section.oet"); // first object level, equivalent to "/[at0000]" ac = flattened.node("/"); assertSectionConstraint(ac); ac = flattened.node("/name/value"); assertCStringWithSingleValue(ac, "one"); // second object level ac = flattened.node("/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='two']"); assertSectionConstraint(ac); ac = flattened.node("/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='two']/name/value"); assertCStringWithSingleValue(ac, "two"); // third object level ac = flattened.node("/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='two']" + "/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='three']"); assertSectionConstraint(ac); ac = flattened.node("/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='two']" + "/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='three']/name/value"); assertCStringWithSingleValue(ac, "three"); // fourth object level ac = flattened.node("/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='two']" + "/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='three']" + "/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='four']"); assertSectionConstraint(ac); ac = flattened.node("/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='two']" + "/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='three']" + "/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='four']/name/value"); assertCStringWithSingleValue(ac, "four"); // fifth object level ac = flattened.node("/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='two']" + "/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='three']" + "/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='four']" + "/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='five']"); assertSectionConstraint(ac); ac = flattened.node("/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='two']" + "/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='three']" + "/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='four']" + "/items[openEHR-EHR-SECTION.ad_hoc_heading.v1" + " and name/value='five']/name/value"); assertCStringWithSingleValue(ac, "five"); } ArchetypeConstraint ac; }