package se.acode.openehr.parser;
import org.openehr.am.archetype.Archetype;
import org.openehr.rm.datatypes.quantity.datetime.DvDuration;
import org.openehr.rm.support.basic.Interval;
public class CDurationTest extends ParserTestBase {
/**
* Create new test case
*
* @param test
* @throws Exception
*/
public CDurationTest() throws Exception {
ADLParser parser = new ADLParser(
loadFromClasspath("adl-test-entry.durations.test.adl"));
archetype = parser.parse();
}
/**
* Tests duration constraints parsing
*
* @throws Exception
*/
public void testParseCDuration() throws Exception {
assertCDuration(archetype.node("/types[at0001]/items[at1001]/value"),
"PT0s", null);
assertCDuration(archetype.node("/types[at0001]/items[at1002]/value"),
"P1d", null);
assertCDuration(archetype.node("/types[at0001]/items[at1003]/value"),
"PT2h5m0s", null);
assertCDuration(archetype.node("/types[at0001]/items[at1004]/value"),
null,
new Interval<DvDuration>(DvDuration.getInstance("PT1h55m0s"),
DvDuration.getInstance("PT2h5m0s")));
assertCDuration(archetype.node("/types[at0001]/items[at1005]/value"),
null,
new Interval<DvDuration>(null, DvDuration.getInstance("PT1h"),
false, true));
assertCDuration(archetype.node("/types[at0001]/items[at1006]/value"),
"P1DT1H2M3S", null);
// bug fix for ISO durationg with weeks
assertCDuration(archetype.node("/types[at0001]/items[at1007]/value"),
"P1W2DT1H2M3S", null);
// bug fix for ISO duration with months
assertCDuration(archetype.node("/types[at0001]/items[at1008]/value"),
"P3M1W2DT1H2M3S", null);
// to supported newly added duration pattern
assertCDuration(archetype.node("/types[at0001]/items[at1009]/value"),
null, null, null, "PDTH");
}
/**
* Verifies the support for "|PT10M|", single duration interval
*/
public void testParseSingleDurationInverval() throws Exception {
Interval<DvDuration> interval = new Interval<DvDuration> (
DvDuration.getInstance("PT10M"),
DvDuration.getInstance("PT10M"));
assertCDuration(archetype.node("/types[at0001]/items[at1010]/value"),
null, interval, null, null);
// test with assumed value
assertCDuration(archetype.node("/types[at0002]/items[at1010]/value"),
null, interval, "PT12M", null);
}
/**
* Tests parsing CDurations with assumed values
*
* @throws Exception
*/
public void testParseCDurationWithAssumedValue() throws Exception {
assertCDuration(archetype.node("/types[at0002]/items[at1001]/value"),
"PT0s", null, "P1d");
assertCDuration(archetype.node("/types[at0002]/items[at1002]/value"),
"P1d", null, "P1d");
assertCDuration(archetype.node("/types[at0002]/items[at1003]/value"),
"PT2h5m0s", null, "P1d");
assertCDuration(archetype.node("/types[at0002]/items[at1004]/value"),
null,
new Interval<DvDuration>(DvDuration.getInstance("PT1h55m0s"),
DvDuration.getInstance("PT2h5m0s")), "P1d");
assertCDuration(archetype.node("/types[at0002]/items[at1005]/value"),
null,
new Interval<DvDuration>(null, DvDuration.getInstance("PT1h"),
false, true), "P1d");
// to supported newly added duration pattern
assertCDuration(archetype.node("/types[at0002]/items[at1006]/value"),
null, null, "P1d", "PDTH");
}
/**
* Tests parsing CDurations with assumed values
*
* @throws Exception
*/
public void testParseCDurationWithMixedPatternAndInterval() throws Exception {
Interval<DvDuration> interval = new Interval<DvDuration> (
DvDuration.getInstance("PT0S"),
DvDuration.getInstance("PT120S"));
assertCDuration(archetype.node("/types[at0001]/items[at1014]/value"),
null, interval, null, "PTS");
}
private Archetype archetype;
}