@Test
public void testDateAllowedValues() {
final DMNRuntime runtime = DMNRuntimeUtil.createRuntime("date_allowed_values.dmn", this.getClass() );
final DMNModel dmnModel = runtime.getModel(
"http://www.trisotech.com/definitions/_fbf002a3-615b-4f02-98e4-c28d4676225a",
"Error with constraints verification" );
assertThat( dmnModel, notNullValue() );
assertThat( DMNRuntimeUtil.formatMessages( dmnModel.getMessages() ), dmnModel.hasErrors(), is( false ) );
final DMNContext ctx = runtime.newContext();
final Object duration = BuiltInType.DURATION.fromString("P20Y" );
ctx.set( "yearsMonth", duration );
final Object dateTime = BuiltInType.DATE_TIME.fromString("2017-05-16T17:58:00.000" );
ctx.set( "dateTime", dateTime );
final DMNResult dmnResult = runtime.evaluateAll(dmnModel, ctx );
final DMNContext result = dmnResult.getContext();
assertThat( DMNRuntimeUtil.formatMessages( dmnResult.getMessages() ), dmnResult.hasErrors(), is( false ) );
assertThat( (Map<String,Object>) result.get( "Decision Logic 1" ), hasEntry( "years and months", duration ) );
assertThat( (Map<String,Object>) result.get( "Decision Logic 1" ), hasEntry( "Date Time", dateTime ) );
}