diff --git a/dmn-core/src/main/java/com/gs/dmn/dialect/JavaTimePythonStandardDMNDialectDefinition.java b/dmn-core/src/main/java/com/gs/dmn/dialect/JavaTimePythonStandardDMNDialectDefinition.java index 0f2042e20..c7888a8cb 100644 --- a/dmn-core/src/main/java/com/gs/dmn/dialect/JavaTimePythonStandardDMNDialectDefinition.java +++ b/dmn-core/src/main/java/com/gs/dmn/dialect/JavaTimePythonStandardDMNDialectDefinition.java @@ -19,7 +19,7 @@ import com.gs.dmn.feel.synthesis.type.NativeTypeFactory; import com.gs.dmn.feel.synthesis.type.StandardNativeTypeToPythonFactory; import com.gs.dmn.log.BuildLogger; -import com.gs.dmn.runtime.DefaultDMNBaseDecision; +import com.gs.dmn.runtime.JavaTimeDMNBaseDecision; import com.gs.dmn.serialization.TypeDeserializationConfigurer; import com.gs.dmn.tck.ast.TestCases; import com.gs.dmn.transformation.DMNToNativeTransformer; @@ -66,7 +66,7 @@ public FEELLib cls) { diff --git a/dmn-core/src/main/java/com/gs/dmn/dialect/StandardDMNDialectDefinition.java b/dmn-core/src/main/java/com/gs/dmn/dialect/StandardDMNDialectDefinition.java deleted file mode 100644 index 8e080d8ef..000000000 --- a/dmn-core/src/main/java/com/gs/dmn/dialect/StandardDMNDialectDefinition.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.dialect; - -import com.gs.dmn.DMNModelRepository; -import com.gs.dmn.context.environment.EnvironmentFactory; -import com.gs.dmn.feel.lib.DefaultFEELLib; -import com.gs.dmn.feel.lib.FEELLib; -import com.gs.dmn.feel.synthesis.type.NativeTypeFactory; -import com.gs.dmn.feel.synthesis.type.StandardNativeTypeFactory; -import com.gs.dmn.log.BuildLogger; -import com.gs.dmn.runtime.DefaultDMNBaseDecision; -import com.gs.dmn.serialization.TypeDeserializationConfigurer; -import com.gs.dmn.tck.ast.TestCases; -import com.gs.dmn.transformation.DMNToJavaTransformer; -import com.gs.dmn.transformation.DMNToNativeTransformer; -import com.gs.dmn.transformation.DMNTransformer; -import com.gs.dmn.transformation.InputParameters; -import com.gs.dmn.transformation.basic.BasicDMNToJavaTransformer; -import com.gs.dmn.transformation.lazy.LazyEvaluationDetector; -import com.gs.dmn.transformation.template.TemplateProvider; -import com.gs.dmn.validation.DMNValidator; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -/** - * @deprecated As of release 8.3.0, replaced by {@link JavaTimeDMNDialectDefinition} - */ -@Deprecated -public class StandardDMNDialectDefinition extends AbstractStandardDMNDialectDefinition { - // - // DMN Processors - // - @Override - public DMNToNativeTransformer createDMNToNativeTransformer(DMNValidator dmnValidator, DMNTransformer dmnTransformer, TemplateProvider templateProvider, LazyEvaluationDetector lazyEvaluationDetector, TypeDeserializationConfigurer typeDeserializationConfigurer, InputParameters inputParameters, BuildLogger logger) { - return new DMNToJavaTransformer<>(this, dmnValidator, dmnTransformer, templateProvider, lazyEvaluationDetector, typeDeserializationConfigurer, inputParameters, logger); - } - - @Override - public BasicDMNToJavaTransformer createBasicTransformer(DMNModelRepository repository, LazyEvaluationDetector lazyEvaluationDetector, InputParameters inputParameters) { - EnvironmentFactory environmentFactory = createEnvironmentFactory(); - return new BasicDMNToJavaTransformer(this, repository, environmentFactory, createNativeTypeFactory(), lazyEvaluationDetector, inputParameters); - } - - // - // DMN execution - // - @Override - public NativeTypeFactory createNativeTypeFactory() { - return new StandardNativeTypeFactory(); - } - - @Override - public FEELLib createFEELLib() { - return new DefaultFEELLib(); - } - - @Override - public String getDecisionBaseClass() { - return DefaultDMNBaseDecision.class.getName(); - } -} diff --git a/dmn-core/src/main/java/com/gs/dmn/feel/synthesis/type/StandardNativeTypeFactory.java b/dmn-core/src/main/java/com/gs/dmn/feel/synthesis/type/StandardNativeTypeFactory.java deleted file mode 100644 index 61d3aa5f4..000000000 --- a/dmn-core/src/main/java/com/gs/dmn/feel/synthesis/type/StandardNativeTypeFactory.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.synthesis.type; - -import java.util.LinkedHashMap; -import java.util.Map; - -import static com.gs.dmn.el.analysis.semantics.type.AnyType.ANY; -import static com.gs.dmn.el.analysis.semantics.type.NullType.NULL; -import static com.gs.dmn.feel.analysis.semantics.type.BooleanType.BOOLEAN; -import static com.gs.dmn.feel.analysis.semantics.type.DateTimeType.DATE_AND_TIME; -import static com.gs.dmn.feel.analysis.semantics.type.DateType.DATE; -import static com.gs.dmn.feel.analysis.semantics.type.DaysAndTimeDurationType.DAYS_AND_TIME_DURATION; -import static com.gs.dmn.feel.analysis.semantics.type.YearsAndMonthsDurationType.YEARS_AND_MONTHS_DURATION; -import static com.gs.dmn.feel.analysis.semantics.type.EnumerationType.ENUMERATION; -import static com.gs.dmn.feel.analysis.semantics.type.NumberType.NUMBER; -import static com.gs.dmn.feel.analysis.semantics.type.StringType.STRING; -import static com.gs.dmn.feel.analysis.semantics.type.TimeType.TIME; - -public class StandardNativeTypeFactory extends JavaTypeFactory { - private static final Map FEEL_TYPE_TO_JAVA_TYPE = new LinkedHashMap<>(); - static { - FEEL_TYPE_TO_JAVA_TYPE.put(ENUMERATION.getName(), String.class.getSimpleName()); - FEEL_TYPE_TO_JAVA_TYPE.put(YEARS_AND_MONTHS_DURATION.getName(), javax.xml.datatype.Duration.class.getName()); - FEEL_TYPE_TO_JAVA_TYPE.put(DAYS_AND_TIME_DURATION.getName(), javax.xml.datatype.Duration.class.getName()); - FEEL_TYPE_TO_JAVA_TYPE.put(DATE_AND_TIME.getName(), javax.xml.datatype.XMLGregorianCalendar.class.getName()); - FEEL_TYPE_TO_JAVA_TYPE.put(TIME.getName(), javax.xml.datatype.XMLGregorianCalendar.class.getName()); - FEEL_TYPE_TO_JAVA_TYPE.put(DATE.getName(), javax.xml.datatype.XMLGregorianCalendar.class.getName()); - FEEL_TYPE_TO_JAVA_TYPE.put(STRING.getName(), String.class.getSimpleName()); - FEEL_TYPE_TO_JAVA_TYPE.put(BOOLEAN.getName(), Boolean.class.getSimpleName()); - FEEL_TYPE_TO_JAVA_TYPE.put(NUMBER.getName(), java.math.BigDecimal.class.getName()); - FEEL_TYPE_TO_JAVA_TYPE.put(ANY.getName(), Object.class.getSimpleName()); - FEEL_TYPE_TO_JAVA_TYPE.put(NULL.getName(), Object.class.getSimpleName()); - } - - private static final Map FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE = new LinkedHashMap<>(); - static { - FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(ENUMERATION.getName(), String.class.getName()); - FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(YEARS_AND_MONTHS_DURATION.getName(), javax.xml.datatype.Duration.class.getName()); - FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(DAYS_AND_TIME_DURATION.getName(), javax.xml.datatype.Duration.class.getName()); - FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(DATE_AND_TIME.getName(), javax.xml.datatype.XMLGregorianCalendar.class.getName()); - FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(TIME.getName(), javax.xml.datatype.XMLGregorianCalendar.class.getName()); - FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(DATE.getName(), javax.xml.datatype.XMLGregorianCalendar.class.getName()); - FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(STRING.getName(), String.class.getName()); - FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(BOOLEAN.getName(), Boolean.class.getName()); - FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(NUMBER.getName(), java.math.BigDecimal.class.getName()); - FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(ANY.getName(), Object.class.getName()); - FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.put(NULL.getName(), Object.class.getName()); - } - - @Override - public String toNativeType(String feelType) { - return FEEL_TYPE_TO_JAVA_TYPE.get(feelType); - } - - @Override - public String toQualifiedNativeType(String feelType) { - return FEEL_TYPE_TO_QUALIFIED_JAVA_TYPE.get(feelType); - } -} diff --git a/dmn-core/src/main/java/com/gs/dmn/runtime/interpreter/TypeChecker.java b/dmn-core/src/main/java/com/gs/dmn/runtime/interpreter/TypeChecker.java index 8ff40e2c1..ad2401ec6 100644 --- a/dmn-core/src/main/java/com/gs/dmn/runtime/interpreter/TypeChecker.java +++ b/dmn-core/src/main/java/com/gs/dmn/runtime/interpreter/TypeChecker.java @@ -34,7 +34,6 @@ import com.gs.dmn.transformation.basic.BasicDMNToNativeTransformer; import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.namespace.QName; import java.time.*; import java.time.temporal.TemporalAmount; @@ -145,15 +144,15 @@ private static boolean isDuration(Object value) { } private static boolean isDateTime(Object value) { - return value instanceof XMLGregorianCalendar || value instanceof LocalDateTime || value instanceof OffsetDateTime || value instanceof ZonedDateTime; + return value instanceof LocalDateTime || value instanceof OffsetDateTime || value instanceof ZonedDateTime; } private static boolean isTime(Object value) { - return value instanceof XMLGregorianCalendar || value instanceof OffsetTime || value instanceof LocalTime; + return value instanceof OffsetTime || value instanceof LocalTime; } private static boolean isDate(Object value) { - return value instanceof XMLGregorianCalendar || value instanceof LocalDate; + return value instanceof LocalDate; } private static boolean isComparable(Object value) { diff --git a/dmn-core/src/test/java/com/gs/dmn/dialect/StandardDMNDialectDefinitionTest.java b/dmn-core/src/test/java/com/gs/dmn/dialect/StandardDMNDialectDefinitionTest.java deleted file mode 100644 index 9766b8e70..000000000 --- a/dmn-core/src/test/java/com/gs/dmn/dialect/StandardDMNDialectDefinitionTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.dialect; - -import com.gs.dmn.feel.lib.DefaultFEELLib; -import com.gs.dmn.feel.synthesis.type.StandardNativeTypeFactory; -import com.gs.dmn.runtime.DefaultDMNBaseDecision; -import com.gs.dmn.runtime.interpreter.StandardDMNInterpreter; -import com.gs.dmn.tck.ast.TestCases; -import com.gs.dmn.transformation.DMNToJavaTransformer; -import com.gs.dmn.transformation.basic.BasicDMNToJavaTransformer; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -public class StandardDMNDialectDefinitionTest extends AbstractStandardDMNDialectDefinitionTest { - @Override - protected DMNDialectDefinition makeDialect() { - return new StandardDMNDialectDefinition(); - } - - @Override - protected String getExpectedDMNInterpreterClass() { - return StandardDMNInterpreter.class.getName(); - } - - @Override - protected String getExpectedDMNToNativeTransformerClass() { - return DMNToJavaTransformer.class.getName(); - } - - @Override - protected String getBasicTransformerClass() { - return BasicDMNToJavaTransformer.class.getName(); - } - - @Override - protected String getExpectedNativeTypeFactoryClass() { - return StandardNativeTypeFactory.class.getName(); - } - - @Override - protected String getExpectedFEELLibClass() { - return DefaultFEELLib.class.getName(); - } - - @Override - protected String getExpectedDecisionBaseClass() { - return DefaultDMNBaseDecision.class.getName(); - } -} \ No newline at end of file diff --git a/dmn-core/src/test/java/com/gs/dmn/feel/DefaultStandardFEELProcessorTest.java b/dmn-core/src/test/java/com/gs/dmn/feel/DefaultStandardFEELProcessorTest.java deleted file mode 100644 index b390905c7..000000000 --- a/dmn-core/src/test/java/com/gs/dmn/feel/DefaultStandardFEELProcessorTest.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel; - -import com.gs.dmn.dialect.DMNDialectDefinition; -import com.gs.dmn.dialect.StandardDMNDialectDefinition; -import com.gs.dmn.tck.ast.TestCases; -import org.junit.jupiter.api.Test; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -public class DefaultStandardFEELProcessorTest extends AbstractStandardFEELProcessorTest { - @Override - protected DMNDialectDefinition makeDialect() { - return new StandardDMNDialectDefinition(); - } - - @Override - protected String numberType() { - return BigDecimal.class.getName(); - } - - @Override - @Test - public void testConversionFunctions() { - super.testConversionFunctions(); - - List entries = Collections.emptyList(); - - doExpressionTest(entries, "", "date and time(date and time(\"2012-03-01T13:14:15Z\"), time(\"10:11:12Z\"))", - "FunctionInvocation(Name(date and time) -> PositionalParameters(DateTimeLiteral(date and time, \"2012-03-01T13:14:15Z\"), DateTimeLiteral(time, \"10:11:12Z\")))", - "date and time", - "dateAndTime(dateAndTime(\"2012-03-01T13:14:15Z\"), time(\"10:11:12Z\"))", - this.lib.dateAndTime(this.lib.dateAndTime("2012-03-01T13:14:15Z"), this.lib.time("10:11:12Z")), - this.lib.dateAndTime("2012-03-01T10:11:12Z")); - - doExpressionTest(entries, "", "years and months duration(date and time(\"2012-03-01T10:12:00Z\"), date and time(\"2012-03-01T10:12:00Z\"))", - "FunctionInvocation(Name(years and months duration) -> PositionalParameters(DateTimeLiteral(date and time, \"2012-03-01T10:12:00Z\"), DateTimeLiteral(date and time, \"2012-03-01T10:12:00Z\")))", - "years and months duration", - "yearsAndMonthsDuration(dateAndTime(\"2012-03-01T10:12:00Z\"), dateAndTime(\"2012-03-01T10:12:00Z\"))", - this.lib.yearsAndMonthsDuration(this.lib.dateAndTime("2012-03-01T10:12:00Z"), this.lib.dateAndTime("2012-03-01T10:12:00Z")), - this.lib.duration("P0Y0M")); - doExpressionTest(entries, "", "years and months duration(date and time(\"2012-03-01T10:12:00Z\"), date(\"2013-05-01\"))", - "FunctionInvocation(Name(years and months duration) -> PositionalParameters(DateTimeLiteral(date and time, \"2012-03-01T10:12:00Z\"), DateTimeLiteral(date, \"2013-05-01\")))", - "years and months duration", - "yearsAndMonthsDuration(dateAndTime(\"2012-03-01T10:12:00Z\"), date(\"2013-05-01\"))", - this.lib.yearsAndMonthsDuration(this.lib.dateAndTime("2012-03-01T10:12:00Z"), this.lib.date("2013-05-01")), - this.lib.duration("P1Y2M")); - doExpressionTest(entries, "", "years and months duration(date(\"2013-05-01\"), date and time(\"2012-03-01T10:12:00Z\"))", - "FunctionInvocation(Name(years and months duration) -> PositionalParameters(DateTimeLiteral(date, \"2013-05-01\"), DateTimeLiteral(date and time, \"2012-03-01T10:12:00Z\")))", - "years and months duration", - "yearsAndMonthsDuration(date(\"2013-05-01\"), dateAndTime(\"2012-03-01T10:12:00Z\"))", - this.lib.yearsAndMonthsDuration(this.lib.date("2013-05-01"), this.lib.dateAndTime("2012-03-01T10:12:00Z")), - this.lib.duration("-P1Y2M")); - } - - @Test - @Override - public void testDateTimeFunctions() { - super.testDateTimeFunctions(); - - List entries = new ArrayList<>(); - - doExpressionTest(entries, "", "is(@\"23:00:50Z\", @\"23:00:50\")", - "FunctionInvocation(Name(is) -> PositionalParameters(DateTimeLiteral(time, \"23:00:50Z\"), DateTimeLiteral(time, \"23:00:50\")))", - "boolean", - "is(time(\"23:00:50Z\"), time(\"23:00:50\"))", - this.lib.is(this.lib.time("23:00:50Z"), this.lib.time("23:00:50")), - false); - } - - @Test - @Override - public void testDateAndTimeProperties() { - List entries = Collections.emptyList(); - - doExpressionTest(entries, "", "date and time(\"2018-12-10T10:30:00\").time offset", - "PathExpression(DateTimeLiteral(date and time, \"2018-12-10T10:30:00\"), time offset)", - "days and time duration", - "timeOffset(dateAndTime(\"2018-12-10T10:30:00\"))", - this.lib.timeOffset(this.lib.dateAndTime("2018-12-10T10:30:00")), - null - ); - doExpressionTest(entries, "", "date and time(\"2018-12-10T10:30:00@Etc/UTC\").timezone", - "PathExpression(DateTimeLiteral(date and time, \"2018-12-10T10:30:00@Etc/UTC\"), timezone)", - "string", - "timezone(dateAndTime(\"2018-12-10T10:30:00@Etc/UTC\"))", - this.lib.timezone(this.lib.dateAndTime("2018-12-10T10:30:00@Etc/UTC")), - "Etc/UTC" - ); - doExpressionTest(entries, "", "date and time(\"2018-12-10T10:30:00\").timezone", - "PathExpression(DateTimeLiteral(date and time, \"2018-12-10T10:30:00\"), timezone)", - "string", - "timezone(dateAndTime(\"2018-12-10T10:30:00\"))", - this.lib.timezone(this.lib.dateAndTime("2018-12-10T10:30:00")), - null - ); - doExpressionTest(entries, "", "time(\"10:30:00\").time offset", - "PathExpression(DateTimeLiteral(time, \"10:30:00\"), time offset)", - "days and time duration", - "timeOffset(time(\"10:30:00\"))", - this.lib.timeOffset(this.lib.time("10:30:00")), - null - ); - doExpressionTest(entries, "", "time(\"10:30:00@Etc/UTC\").timezone", - "PathExpression(DateTimeLiteral(time, \"10:30:00@Etc/UTC\"), timezone)", - "string", - "timezone(time(\"10:30:00@Etc/UTC\"))", - this.lib.timezone(this.lib.time("10:30:00@Etc/UTC")), - "Etc/UTC" - ); - doExpressionTest(entries, "", "time(\"10:30:00\").timezone", - "PathExpression(DateTimeLiteral(time, \"10:30:00\"), timezone)", - "string", - "timezone(time(\"10:30:00\"))", - this.lib.timezone(this.lib.time("10:30:00")), - null - ); - } -} \ No newline at end of file diff --git a/dmn-core/src/test/java/com/gs/dmn/feel/MixedJavaFEELProcessorTest.java b/dmn-core/src/test/java/com/gs/dmn/feel/MixedJavaTimeFEELProcessorTest.java similarity index 97% rename from dmn-core/src/test/java/com/gs/dmn/feel/MixedJavaFEELProcessorTest.java rename to dmn-core/src/test/java/com/gs/dmn/feel/MixedJavaTimeFEELProcessorTest.java index ff48dc045..569272a74 100644 --- a/dmn-core/src/test/java/com/gs/dmn/feel/MixedJavaFEELProcessorTest.java +++ b/dmn-core/src/test/java/com/gs/dmn/feel/MixedJavaTimeFEELProcessorTest.java @@ -27,7 +27,7 @@ import java.util.Collections; import java.util.List; -public class MixedJavaFEELProcessorTest extends AbstractStandardFEELProcessorTest { +public class MixedJavaTimeFEELProcessorTest extends AbstractStandardFEELProcessorTest { @Override protected DMNDialectDefinition makeDialect() { return new MixedJavaTimeDMNDialectDefinition(); diff --git a/dmn-core/src/test/java/com/gs/dmn/runtime/interpreter/StandardCL2DMNInterpreterTest.java b/dmn-core/src/test/java/com/gs/dmn/runtime/interpreter/StandardCL2DMNInterpreterTest.java deleted file mode 100644 index 05d9f61d1..000000000 --- a/dmn-core/src/test/java/com/gs/dmn/runtime/interpreter/StandardCL2DMNInterpreterTest.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.runtime.interpreter; - -import com.gs.dmn.dialect.DMNDialectDefinition; -import com.gs.dmn.dialect.StandardDMNDialectDefinition; -import com.gs.dmn.tck.ast.TestCases; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -public class StandardCL2DMNInterpreterTest extends AbstractCL2SDMNInterpreterTest { - @Override - protected DMNDialectDefinition getDialectDefinition() { - return new StandardDMNDialectDefinition(); - } -} diff --git a/dmn-core/src/test/java/com/gs/dmn/runtime/interpreter/StandardCL3DMNInterpreterTest.java b/dmn-core/src/test/java/com/gs/dmn/runtime/interpreter/StandardCL3DMNInterpreterTest.java deleted file mode 100644 index dde6fe825..000000000 --- a/dmn-core/src/test/java/com/gs/dmn/runtime/interpreter/StandardCL3DMNInterpreterTest.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.runtime.interpreter; - -import com.gs.dmn.dialect.DMNDialectDefinition; -import com.gs.dmn.dialect.StandardDMNDialectDefinition; -import com.gs.dmn.tck.ast.TestCases; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -public class StandardCL3DMNInterpreterTest extends AbstractCL3DMNInterpreterTest { - @Override - protected DMNDialectDefinition getDialectDefinition() { - return new StandardDMNDialectDefinition(); - } - - @Override - protected String getTestCasesInputPath() { - return getDMNInputPath() + "/standard"; - } -} diff --git a/dmn-core/src/test/java/com/gs/dmn/tck/CL3TestCasesToJavaJUnitTransformerTest.java b/dmn-core/src/test/java/com/gs/dmn/tck/CL3TestCasesToJavaJUnitTransformerTest.java index d962f4af3..5dbd9d79c 100644 --- a/dmn-core/src/test/java/com/gs/dmn/tck/CL3TestCasesToJavaJUnitTransformerTest.java +++ b/dmn-core/src/test/java/com/gs/dmn/tck/CL3TestCasesToJavaJUnitTransformerTest.java @@ -23,7 +23,7 @@ protected String getDMNInputPath() { @Override protected String getTestCasesInputPath() { - return getDMNInputPath() + "/standard"; + return getDMNInputPath() + "/pure"; } @Override diff --git a/dmn-core/src/test/java/com/gs/dmn/tck/CL3TestCasesToPythonJUnitTransformerTest.java b/dmn-core/src/test/java/com/gs/dmn/tck/CL3TestCasesToPythonJUnitTransformerTest.java index 24428518b..a52e37e7f 100644 --- a/dmn-core/src/test/java/com/gs/dmn/tck/CL3TestCasesToPythonJUnitTransformerTest.java +++ b/dmn-core/src/test/java/com/gs/dmn/tck/CL3TestCasesToPythonJUnitTransformerTest.java @@ -23,7 +23,7 @@ protected String getDMNInputPath() { @Override protected String getTestCasesInputPath() { - return getDMNInputPath() + "/standard"; + return getDMNInputPath() + "/pure"; } @Override diff --git a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/DefaultFEELLib.java b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/DefaultFEELLib.java deleted file mode 100644 index 0eebd49e3..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/DefaultFEELLib.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.lib; - -import com.gs.dmn.feel.lib.type.bool.BooleanLib; -import com.gs.dmn.feel.lib.type.bool.BooleanType; -import com.gs.dmn.feel.lib.type.bool.DefaultBooleanLib; -import com.gs.dmn.feel.lib.type.bool.DefaultBooleanType; -import com.gs.dmn.feel.lib.type.context.ContextType; -import com.gs.dmn.feel.lib.type.context.DefaultContextType; -import com.gs.dmn.feel.lib.type.function.DefaultFunctionType; -import com.gs.dmn.feel.lib.type.function.FunctionType; -import com.gs.dmn.feel.lib.type.list.DefaultListLib; -import com.gs.dmn.feel.lib.type.list.DefaultListType; -import com.gs.dmn.feel.lib.type.list.ListLib; -import com.gs.dmn.feel.lib.type.list.ListType; -import com.gs.dmn.feel.lib.type.numeric.DecimalNumericLib; -import com.gs.dmn.feel.lib.type.numeric.DecimalNumericType; -import com.gs.dmn.feel.lib.type.numeric.NumericLib; -import com.gs.dmn.feel.lib.type.numeric.NumericType; -import com.gs.dmn.feel.lib.type.range.DefaultRangeLib; -import com.gs.dmn.feel.lib.type.range.DefaultRangeType; -import com.gs.dmn.feel.lib.type.range.RangeLib; -import com.gs.dmn.feel.lib.type.range.RangeType; -import com.gs.dmn.feel.lib.type.string.DefaultStringLib; -import com.gs.dmn.feel.lib.type.string.DefaultStringType; -import com.gs.dmn.feel.lib.type.string.StringLib; -import com.gs.dmn.feel.lib.type.string.StringType; -import com.gs.dmn.feel.lib.type.time.*; -import com.gs.dmn.feel.lib.type.time.xml.*; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -/** - * @deprecated As of release 8.3.0, replaced by {@link JavaTimeFEELLib} - */ -@Deprecated -public class DefaultFEELLib extends BaseStandardFEELLib { - private static final NumericType NUMERIC_TYPE = new DecimalNumericType(); - private static final BooleanType BOOLEAN_TYPE = new DefaultBooleanType(); - private static final StringType STRING_TYPE = new DefaultStringType(); - private static final DateType DATE_TYPE = new DefaultDateType(); - private static final TimeType TIME_TYPE = new DefaultTimeType(); - private static final DateTimeType DATE_TIME_TYPE = new DefaultDateTimeType(); - private static final DurationType DURATION_TYPE = new DefaultDurationType(); - private static final ListType LIST_TYPE = new DefaultListType(); - private static final ContextType CONTEXT_TYPE = new DefaultContextType(); - private static final RangeType RANGE_TYPE = new DefaultRangeType(); - private static final FunctionType FUNCTION_TYPE = new DefaultFunctionType(); - - private static final NumericLib NUMERIC_LIB = new DecimalNumericLib(); - private static final StringLib STRING_LIB = new DefaultStringLib(); - private static final BooleanLib BOOLEAN_LIB = new DefaultBooleanLib(); - private static final DateTimeLib DATE_TIME_LIB = new DefaultDateTimeLib(); - private static final DurationLib DURATION_LIB = new DefaultDurationLib(); - private static final ListLib LIST_LIB = new DefaultListLib(); - private static final RangeLib RANGE_LIB = new DefaultRangeLib(); - - public static final DefaultFEELLib INSTANCE = new DefaultFEELLib(); - - public DefaultFEELLib() { - this(NUMERIC_TYPE, - BOOLEAN_TYPE, - STRING_TYPE, - DATE_TYPE, - TIME_TYPE, - DATE_TIME_TYPE, - DURATION_TYPE, - LIST_TYPE, - CONTEXT_TYPE, - RANGE_TYPE, - FUNCTION_TYPE, - NUMERIC_LIB, - STRING_LIB, - BOOLEAN_LIB, - DATE_TIME_LIB, - DURATION_LIB, - LIST_LIB, - RANGE_LIB - ); - } - - protected DefaultFEELLib( - NumericType numericType, - BooleanType booleanType, - StringType stringType, - DateType dateType, - TimeType timeType, - DateTimeType dateTimeType, - DurationType durationType, - ListType listType, - ContextType contextType, - RangeType rangeType, - FunctionType functionType, - NumericLib numericLib, - StringLib stringLib, - BooleanLib booleanLib, - DateTimeLib dateTimeLib, - DurationLib durationLib, - ListLib listLib, - RangeLib rangeLib) { - super(numericType, booleanType, stringType, - dateType, timeType, dateTimeType, durationType, - listType, contextType, rangeType, functionType, - numericLib, stringLib, booleanLib, dateTimeLib, durationLib, listLib, rangeLib - ); - } - - // - // Extra conversion functions - // - @Override - protected BigDecimal valueOf(long number) { - return BigDecimal.valueOf(number); - } - - @Override - protected int intValue(BigDecimal number) { - return number.intValue(); - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/FormatUtils.java b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/FormatUtils.java index 654eb39d4..61e92f16f 100644 --- a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/FormatUtils.java +++ b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/FormatUtils.java @@ -14,7 +14,6 @@ import com.gs.dmn.feel.lib.type.time.BaseDateTimeLib; -import javax.xml.datatype.XMLGregorianCalendar; import java.math.BigDecimal; import java.text.DecimalFormat; import java.time.*; @@ -68,8 +67,6 @@ public static String formatTemporal(Object from) { } else if (from instanceof TemporalAccessor) { // Its time with zone ID return BaseDateTimeLib.FEEL_TIME.format((TemporalAccessor) from); - } else if (from instanceof XMLGregorianCalendar) { - return from.toString(); } else if (from instanceof javax.xml.datatype.Duration) { return from.toString(); } else if (from instanceof java.time.Period) { diff --git a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/range/DefaultRangeLib.java b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/range/DefaultRangeLib.java index dbd723faf..d5d703cf7 100644 --- a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/range/DefaultRangeLib.java +++ b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/range/DefaultRangeLib.java @@ -23,11 +23,9 @@ import com.gs.dmn.feel.lib.type.time.pure.TemporalAmountComparator; import com.gs.dmn.feel.lib.type.time.pure.TemporalComparator; import com.gs.dmn.feel.lib.type.time.xml.DefaultDurationComparator; -import com.gs.dmn.feel.lib.type.time.xml.DefaultXMLCalendarComparator; import com.gs.dmn.runtime.Range; import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; import java.math.BigDecimal; import java.time.LocalDate; import java.time.OffsetTime; @@ -57,7 +55,6 @@ public class DefaultRangeLib implements RangeLib { COMPARATOR_MAP.put(Temporal.class, TemporalComparator.COMPARATOR); COMPARATOR_MAP.put(TemporalAmount.class, TemporalAmountComparator.COMPARATOR); - COMPARATOR_MAP.put(XMLGregorianCalendar.class, DefaultXMLCalendarComparator.COMPARATOR); COMPARATOR_MAP.put(Duration.class, DefaultDurationComparator.COMPARATOR); } diff --git a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/string/DefaultStringLib.java b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/string/DefaultStringLib.java index b8e7374de..3cea4d969 100644 --- a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/string/DefaultStringLib.java +++ b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/string/DefaultStringLib.java @@ -19,7 +19,6 @@ import org.w3c.dom.Document; import org.xml.sax.SAXException; -import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPath; @@ -46,7 +45,7 @@ public String string(Object from) { return "null"; } else if (from instanceof Number) { return FormatUtils.formatNumber((Number) from); - } else if (from instanceof XMLGregorianCalendar || from instanceof Duration) { + } else if (from instanceof Duration) { return FormatUtils.formatTemporal(from); } else if (from instanceof TemporalAccessor || from instanceof TemporalAmount) { return FormatUtils.formatTemporal(from); @@ -284,13 +283,13 @@ private boolean evaluateMatches(String input, String pattern, String flags) thro return input.equals(value); } - private String evaluateXPath(String input, String expression) throws ParserConfigurationException, SAXException, IOException, XPathExpressionException { + private String evaluateXPath(String input, String expression) throws SAXException, IOException, XPathExpressionException { // Read document String xml = "" + input + ""; - DocumentBuilder builder = new DocumentBuilderImpl(); + DocumentBuilderImpl builder = new DocumentBuilderImpl(); InputStream inputStream = new ByteArrayInputStream(xml.getBytes()); Document document = builder.parse(inputStream); - Configuration configuration = ((DocumentBuilderImpl) builder).getConfiguration(); + Configuration configuration = builder.getConfiguration(); // Evaluate xpath XPathFactory xPathFactory = new XPathFactoryImpl(configuration); diff --git a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultDateTimeLib.java b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultDateTimeLib.java deleted file mode 100644 index 13079c9c3..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultDateTimeLib.java +++ /dev/null @@ -1,479 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.lib.type.time.xml; - -import com.gs.dmn.feel.lib.type.time.BaseDateTimeLib; -import com.gs.dmn.feel.lib.type.time.DateTimeLib; -import com.gs.dmn.runtime.DMNRuntimeException; -import org.apache.commons.lang3.StringUtils; - -import javax.xml.datatype.DatatypeConstants; -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.time.*; -import java.time.format.DateTimeFormatter; -import java.time.temporal.IsoFields; -import java.time.temporal.TemporalAccessor; -import java.time.temporal.TemporalQueries; -import java.util.Calendar; -import java.util.List; -import java.util.function.Predicate; - -public class DefaultDateTimeLib extends BaseDateTimeLib implements DateTimeLib { - // - // Conversion functions - // - @Override - public XMLGregorianCalendar date(String literal) { - if (StringUtils.isBlank(literal)) { - return null; - } - - XMLGregorianCalendar calendar = FEELXMLGregorianCalendar.makeXMLCalendar(this.dateTemporalAccessor(literal)); - return this.isValidDate(calendar) ? calendar : null; - } - - @Override - public XMLGregorianCalendar date(BigDecimal year, BigDecimal month, BigDecimal day) { - if (year == null || month == null || day == null) { - return null; - } - - XMLGregorianCalendar calendar = FEELXMLGregorianCalendar.makeDate(year.toBigInteger(), month.intValue(), day.intValue()); - return this.isValidDate(calendar) ? calendar : null; - } - - @Override - public XMLGregorianCalendar date(Object fromObj) { - if (fromObj == null) { - return null; - } - - XMLGregorianCalendar from = (XMLGregorianCalendar) fromObj; - FEELXMLGregorianCalendar calendar = (FEELXMLGregorianCalendar) from.clone(); - calendar.setTime(DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED); - calendar.setZoneID(null); - return this.isValidDate(calendar) ? calendar : null; - } - - @Override - public XMLGregorianCalendar time(String literal) { - if (literal == null) { - return null; - } - - literal = this.fixDateTimeFormat(literal); - XMLGregorianCalendar calendar = FEELXMLGregorianCalendar.makeXMLCalendar(this.timeTemporalAccessor(literal)); - return this.isValidTime(calendar) ? calendar : null; - } - - @Override - public XMLGregorianCalendar time(BigDecimal hour, BigDecimal minute, BigDecimal second, Duration offset) { - if (hour == null || minute == null || second == null) { - return null; - } - - XMLGregorianCalendar calendar; - BigDecimal secondFraction = second.subtract(BigDecimal.valueOf(second.intValue())); - if (offset != null) { - String sign = offset.getSign() < 0 ? "-" : "+"; - int seconds = offset.getSeconds(); - String zoneId; - if (seconds == 0) { - zoneId = String.format("%s%02d:%02d", sign, offset.getHours(), offset.getMinutes()); - } else { - zoneId = String.format("%s%02d:%02d:%02d", sign, offset.getHours(), offset.getMinutes(), seconds); - } - calendar = FEELXMLGregorianCalendar.makeTime(hour.intValue(), minute.intValue(), second.intValue(), secondFraction, zoneId); - } else { - calendar = FEELXMLGregorianCalendar.makeTime(hour.intValue(), minute.intValue(), second.intValue(), secondFraction, null); - } - return this.isValidTime(calendar) ? calendar : null; - } - - @Override - public XMLGregorianCalendar time(Object fromObj) { - if (fromObj == null) { - return null; - } - - XMLGregorianCalendar from = (XMLGregorianCalendar) fromObj; - FEELXMLGregorianCalendar calendar = (FEELXMLGregorianCalendar) from.clone(); - if (from.getXMLSchemaType() == DatatypeConstants.DATE) { - calendar.setYear(DatatypeConstants.FIELD_UNDEFINED); - calendar.setMonth(DatatypeConstants.FIELD_UNDEFINED); - calendar.setDay(DatatypeConstants.FIELD_UNDEFINED); - calendar.setHour(0); - calendar.setMinute(0); - calendar.setSecond(0); - calendar.setZoneID("Z"); - } else if (from.getXMLSchemaType() == DatatypeConstants.DATETIME) { - calendar.setYear(DatatypeConstants.FIELD_UNDEFINED); - calendar.setMonth(DatatypeConstants.FIELD_UNDEFINED); - calendar.setDay(DatatypeConstants.FIELD_UNDEFINED); - } - return this.isValidTime(calendar) ? calendar : null; - } - - @Override - public XMLGregorianCalendar dateAndTime(String literal) { - if (literal == null) { - return null; - } - - literal = this.fixDateTimeFormat(literal); - XMLGregorianCalendar calendar = FEELXMLGregorianCalendar.makeXMLCalendar(this.dateTimeTemporalAccessor(literal)); - return this.isValidDateTime(calendar) ? calendar : null; - } - - @Override - public XMLGregorianCalendar dateAndTime(Object dateObj, Object timeObj) { - if (dateObj == null || timeObj == null) { - return null; - } - - XMLGregorianCalendar date = (XMLGregorianCalendar) dateObj; - XMLGregorianCalendar time = (XMLGregorianCalendar) timeObj; - XMLGregorianCalendar calendar = FEELXMLGregorianCalendar.makeDateTime( - BigInteger.valueOf(date.getYear()), date.getMonth(), date.getDay(), - time.getHour(), time.getMinute(), time.getSecond(), time.getFractionalSecond(), - ((FEELXMLGregorianCalendar) time).getZoneID() - ); - return this.isValidDateTime(calendar) ? calendar : null; - } - - // - // Date properties - // - @Override - public Integer year(Object date) { - if (date == null) { - return null; - } - - return ((XMLGregorianCalendar) date).getYear(); - } - - @Override - public Integer month(Object date) { - if (date == null) { - return null; - } - - return ((XMLGregorianCalendar) date).getMonth(); - } - - @Override - public Integer day(Object date) { - if (date == null) { - return null; - } - - return ((XMLGregorianCalendar) date).getDay(); - } - - @Override - public Integer weekday(Object date) { - if (date == null) { - return null; - } - - return ((XMLGregorianCalendar) date).toGregorianCalendar().get(Calendar.DAY_OF_WEEK) - 1; - } - - // - // Time properties - // - @Override - public Integer hour(Object date) { - if (date == null) { - return null; - } - - return ((XMLGregorianCalendar) date).getHour(); - } - - @Override - public Integer minute(Object date) { - if (date == null) { - return null; - } - - return ((XMLGregorianCalendar) date).getMinute(); - } - - @Override - public Integer second(Object date) { - if (date == null) { - return null; - } - - return ((XMLGregorianCalendar) date).getSecond(); - } - - @Override - public Duration timeOffset(Object date) { - if (date == null) { - return null; - } - - int secondsOffset = ((XMLGregorianCalendar) date).getTimezone(); - if (secondsOffset == DatatypeConstants.FIELD_UNDEFINED) { - return null; - } else { - return XMLDurationFactory.INSTANCE.dayTimeFromValue(secondsOffset); - } - } - - @Override - public String timezone(Object date) { - if (date == null) { - return null; - } - - return ((FEELXMLGregorianCalendar) date).getZoneID(); - } - - @Override - public XMLGregorianCalendar now() { - return FEELXMLGregorianCalendar.makeXMLCalendar(ZonedDateTime.now()); - } - - @Override - public XMLGregorianCalendar today() { - return FEELXMLGregorianCalendar.makeXMLCalendar(LocalDate.now()); - } - - // - // Temporal functions - // - @Override - public Integer dayOfYear(Object date) { - if (date == null) { - return null; - } - - return ((XMLGregorianCalendar) date).toGregorianCalendar().get(Calendar.DAY_OF_YEAR); - } - - @Override - public String dayOfWeek(Object date) { - if (date == null) { - return null; - } - - int dow = ((XMLGregorianCalendar) date).toGregorianCalendar().get(Calendar.DAY_OF_WEEK); - return DAY_NAMES[dow]; - } - - @Override - public Integer weekOfYear(Object date) { - if (date == null) { - return null; - } - - XMLGregorianCalendar xmlDate = ((XMLGregorianCalendar) date); - LocalDate localDate = LocalDate.of(xmlDate.getYear(), xmlDate.getMonth(), xmlDate.getDay()); - return localDate.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR); - } - - @Override - public String monthOfYear(Object date) { - if (date == null) { - return null; - } - - int moy = ((XMLGregorianCalendar) date).getMonth(); - return MONTH_NAMES[moy - 1]; - } - - // - // Extra conversion functions - // - @Override - public XMLGregorianCalendar toDate(Object from) { - if (!(from instanceof XMLGregorianCalendar)) { - return null; - } - - XMLGregorianCalendar calendar = (XMLGregorianCalendar) from; - return date(calendar); - } - - @Override - public XMLGregorianCalendar toTime(Object from) { - if (!(from instanceof XMLGregorianCalendar)) { - return null; - } - - return time(from); - } - - @Override - public XMLGregorianCalendar toDateTime(Object from) { - if (!(from instanceof XMLGregorianCalendar)) { - return null; - } - - return dateAndTime(toDate(from), toTime(from)); - } - - @Override - public T min(List list) { - return minMax(list, DefaultXMLCalendarComparator.COMPARATOR, DefaultDurationComparator.COMPARATOR, x -> x > 0); - } - - @Override - public T max(List list) { - return minMax(list, DefaultXMLCalendarComparator.COMPARATOR, DefaultDurationComparator.COMPARATOR, x -> x < 0); - } - - private T minMax(List list, DefaultXMLCalendarComparator dateTimeComparator, DefaultDurationComparator durationComparator, Predicate condition) { - if (list == null || list.isEmpty()) { - return null; - } - - T result = list.get(0); - for (int i = 1; i < list.size(); i++) { - T x = list.get(i); - if (dateTimeComparator.isDate(result) && dateTimeComparator.isDate(x)) { - if (condition.test(dateTimeComparator.compareTo((XMLGregorianCalendar) result, (XMLGregorianCalendar) x))) { - result = x; - } - } else if (dateTimeComparator.isTime(result) && dateTimeComparator.isTime(x)) { - if (condition.test(dateTimeComparator.compareTo((XMLGregorianCalendar) result, (XMLGregorianCalendar) x))) { - result = x; - } - } else if (dateTimeComparator.isDateTime(result) && dateTimeComparator.isDateTime(x)) { - if (condition.test(dateTimeComparator.compareTo((XMLGregorianCalendar) result, (XMLGregorianCalendar) x))) { - result = x; - } - } else if (durationComparator.isYearsAndMonthsDuration(result) && durationComparator.isYearsAndMonthsDuration(x)) { - if (condition.test(durationComparator.compareTo((Duration) result, (Duration) x))) { - result = x; - } - } else if (durationComparator.isDaysAndTimeDuration(result) && durationComparator.isDaysAndTimeDuration(x)) { - if (condition.test(durationComparator.compareTo((Duration) result, (Duration) x))) { - result = x; - } - } else { - throw new DMNRuntimeException(String.format("Cannot compare '%s' and '%s'", result, x)); - } - } - return result; - } - - public TemporalAccessor dateTemporalAccessor(String literal) { - if (literal == null) { - return null; - } - - if (!BEGIN_YEAR.matcher(literal).find()) { - throw new DMNRuntimeException(String.format("Illegal year in '%s'", literal)); - } - try { - return LocalDate.from(FEEL_DATE.parse(literal)); - } catch (DateTimeException e) { - throw new RuntimeException("Parsing exception in date literal", e); - } - } - - public TemporalAccessor timeTemporalAccessor(String literal) { - if (literal == null) { - return null; - } - - if (this.hasZoneOffset(literal) && this.hasZoneId(literal)) { - throw new DMNRuntimeException(String.format("Time literal '%s' has both a zone offset and zone id", literal)); - } - try { - TemporalAccessor parsed = FEEL_TIME.parse(literal); - - if (parsed.query(TemporalQueries.offset()) != null) { - return parsed.query(OffsetTime::from); - } else if (parsed.query(TemporalQueries.zone()) == null) { - return parsed.query(LocalTime::from); - } - - return parsed; - } catch (DateTimeException e) { - throw new DMNRuntimeException("Parsing exception in time literal", e); - } - } - - public TemporalAccessor dateTimeTemporalAccessor(String literal) { - if (literal == null) { - return null; - } - - if (!BaseDateTimeLib.BEGIN_YEAR.matcher(literal).find()) { - throw new DMNRuntimeException(String.format("Illegal year in '%s'", literal)); - } - if (this.hasZoneOffset(literal) && this.hasZoneId(literal)) { - throw new DMNRuntimeException(String.format("Time literal '%s' has both a zone offset and zone id", literal)); - } - try { - if (literal.contains("T")) { - return FEEL_DATE_TIME.parseBest(literal, ZonedDateTime::from, OffsetDateTime::from, LocalDateTime::from); - } else { - LocalDate value = DateTimeFormatter.ISO_DATE.parse(literal, LocalDate::from); - return LocalDateTime.of(value, LocalTime.of(0, 0)); - } - } catch (Exception e) { - throw new RuntimeException("Parsing exception in date and time literal", e); - } - } - - private boolean isValidDate(XMLGregorianCalendar calendar) { - if (calendar == null) { - return false; - } - - long year = calendar.getYear(); - BigInteger eonAndYear = calendar.getEonAndYear(); - if (eonAndYear != null) { - year = eonAndYear.intValue(); - } - return - isValidDate(year, calendar.getMonth(), calendar.getDay()) - && isUndefined(calendar.getHour()) - && isUndefined(calendar.getMinute()) - && isUndefined(calendar.getSecond()) - ; - } - - private boolean isValidTime(XMLGregorianCalendar calendar) { - if (calendar == null) { - return false; - } - - return - isValidTime(calendar.getHour(), calendar.getMinute(), calendar.getSecond(), calendar.getTimezone()) - && isUndefined(calendar.getYear()) - && isUndefined(calendar.getMonth()) - && isUndefined(calendar.getDay()) - ; - } - - private boolean isValidDateTime(XMLGregorianCalendar calendar) { - if (calendar == null) { - return false; - } - - return isValidDateTime( - calendar.getYear(), calendar.getMonth(), calendar.getDay(), - calendar.getHour(), calendar.getMinute(), calendar.getSecond(), calendar.getTimezone()); - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultDateTimeType.java b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultDateTimeType.java deleted file mode 100644 index bfb48feb8..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultDateTimeType.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.lib.type.time.xml; - -import com.gs.dmn.feel.lib.type.bool.BooleanType; -import com.gs.dmn.feel.lib.type.bool.DefaultBooleanType; -import com.gs.dmn.feel.lib.type.time.DateTimeType; -import com.gs.dmn.runtime.DMNRuntimeException; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; - -import static com.gs.dmn.feel.lib.type.time.xml.DefaultTimeType.hasTimezone; - -public class DefaultDateTimeType extends XMLCalendarType implements DateTimeType { - private final DefaultXMLCalendarComparator comparator; - private final BooleanType booleanType; - - public DefaultDateTimeType() { - this(DefaultXMLCalendarComparator.COMPARATOR); - } - - public DefaultDateTimeType(DefaultXMLCalendarComparator comparator) { - this.comparator = comparator; - this.booleanType = new DefaultBooleanType(); - } - - // - // Date and time operators - // - - @Override - public Boolean dateTimeIs(XMLGregorianCalendar first, XMLGregorianCalendar second) { - if (first == null || second == null) { - return first == second; - } - - return ((FEELXMLGregorianCalendar) first).same(second); - } - - @Override - public Boolean dateTimeEqual(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.equalTo(first, second); - } - - @Override - public Boolean dateTimeNotEqual(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.booleanType.booleanNot(dateTimeEqual(first, second)); - } - - @Override - public Boolean dateTimeLessThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.lessThan(first, second); - } - - @Override - public Boolean dateTimeGreaterThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.greaterThan(first, second); - } - - @Override - public Boolean dateTimeLessEqualThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.lessEqualThan(first, second); - } - - @Override - public Boolean dateTimeGreaterEqualThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.greaterEqualThan(first, second); - } - - @Override - public Duration dateTimeSubtract(XMLGregorianCalendar first, Object secondObj) { - XMLGregorianCalendar second = (XMLGregorianCalendar) secondObj; - if (first == null || second == null) { - return null; - } - if (isDate(first)) { - first = toDateTime(first); - } - if (isDate(second)) { - second = toDateTime(second); - } - // Subtraction is undefined for the case where only one of the values has a timezone - if (hasTimezone(first) && !hasTimezone(second) || !hasTimezone(first) && hasTimezone(second)) { - return null; - } - - long durationInSeconds = getDurationInSeconds(first, second); - return XMLDurationFactory.INSTANCE.dayTimeFromValue(durationInSeconds); - } - - @Override - public XMLGregorianCalendar dateTimeAddDuration(XMLGregorianCalendar dateTime, Duration duration) { - if (dateTime == null || duration == null) { - return null; - } - if (!(isYearsAndMonthsDuration(duration) || isDaysAndTimeDuration(duration))) { - throw new DMNRuntimeException(String.format("Cannot add '%s' and '%s'", dateTime, duration)); - } - - XMLGregorianCalendar clone = (XMLGregorianCalendar) dateTime.clone(); - clone.add(duration); - return clone; - } - - @Override - public XMLGregorianCalendar dateTimeSubtractDuration(XMLGregorianCalendar dateTime, Duration duration) { - if (dateTime == null || duration == null) { - return null; - } - - return dateTimeAddDuration(dateTime, duration.negate()); - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultDateType.java b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultDateType.java deleted file mode 100644 index 1c138a7b9..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultDateType.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.lib.type.time.xml; - -import com.gs.dmn.feel.lib.type.bool.BooleanType; -import com.gs.dmn.feel.lib.type.bool.DefaultBooleanType; -import com.gs.dmn.feel.lib.type.time.DateType; -import com.gs.dmn.runtime.DMNRuntimeException; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigInteger; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.Period; -import java.time.ZoneOffset; - -import static com.gs.dmn.feel.lib.type.time.xml.DefaultTimeType.hasTimezone; - -public class DefaultDateType extends XMLCalendarType implements DateType { - private final DefaultXMLCalendarComparator comparator; - private final BooleanType booleanType; - - public DefaultDateType() { - this(DefaultXMLCalendarComparator.COMPARATOR); - } - - public DefaultDateType(DefaultXMLCalendarComparator comparator) { - this.comparator = comparator; - this.booleanType = new DefaultBooleanType(); - } - - // - // Date operators - // - @Override - public Boolean dateIs(XMLGregorianCalendar first, XMLGregorianCalendar second) { - if (first == null || second == null) { - return first == second; - } - - return ((FEELXMLGregorianCalendar) first).same(second); - } - - @Override - public Boolean dateEqual(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.equalTo(first, second); - } - - @Override - public Boolean dateNotEqual(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.booleanType.booleanNot(dateEqual(first, second)); - } - - @Override - public Boolean dateLessThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.lessThan(first, second); - } - - @Override - public Boolean dateGreaterThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.greaterThan(first, second); - } - - @Override - public Boolean dateLessEqualThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.lessEqualThan(first, second); - } - - @Override - public Boolean dateGreaterEqualThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.greaterEqualThan(first, second); - } - - @Override - public Duration dateSubtract(XMLGregorianCalendar first, Object secondObj) { - XMLGregorianCalendar second = (XMLGregorianCalendar) secondObj; - if (first == null || second == null) { - return null; - } - if (isDate(first)) { - first = toDateTime(first); - } - if (isDate(second)) { - second = toDateTime(second); - } - // Subtraction is undefined for the case where only one of the values has a timezone - if (hasTimezone(first) && !hasTimezone(second) || !hasTimezone(first) && hasTimezone(second)) { - return null; - } - - long durationInSeconds = getDurationInSeconds(first, second); - return XMLDurationFactory.INSTANCE.dayTimeFromValue(durationInSeconds); - } - - @Override - public XMLGregorianCalendar dateAddDuration(XMLGregorianCalendar date, Duration duration) { - if (date == null || duration == null) { - return null; - } - - if (isYearsAndMonthsDuration(duration)) { - LocalDate localDate = LocalDate.of(date.getYear(), date.getMonth(), date.getDay()); - Long totalMonths = monthsValue(duration); - Period period = Period.ofMonths(totalMonths.intValue()); - LocalDate newLocalDate = localDate.plus(period); - // Convert to XML type - return FEELXMLGregorianCalendar.makeDate(BigInteger.valueOf(newLocalDate.getYear()), newLocalDate.getMonthValue(), newLocalDate.getDayOfMonth()); - } else if (isDaysAndTimeDuration(duration)) { - // Calculate with Java 8 types - Long value1 = value(date); - Long value2 = secondsValue(duration); - LocalDate localDate = LocalDateTime.ofEpochSecond(value1 + value2, 0, ZoneOffset.UTC).toLocalDate(); - // Convert to XML type - return FEELXMLGregorianCalendar.makeDate(BigInteger.valueOf(localDate.getYear()), localDate.getMonthValue(), localDate.getDayOfMonth()); - } else { - throw new DMNRuntimeException(String.format("Cannot add '%s' and '%s'", date, duration)); - } - } - - @Override - public XMLGregorianCalendar dateSubtractDuration(XMLGregorianCalendar date, Duration duration) { - if (date == null || duration == null) { - return null; - } - - return dateAddDuration(date, duration.negate()); - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultDurationLib.java b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultDurationLib.java deleted file mode 100644 index 174f95ab6..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultDurationLib.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.lib.type.time.xml; - -import com.gs.dmn.feel.lib.type.time.DurationLib; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.time.LocalDate; -import java.time.Period; - -public class DefaultDurationLib implements DurationLib { - - public DefaultDurationLib() { - } - - @Override - public Duration duration(String from) { - Duration duration = XMLDurationFactory.INSTANCE.parse(from); - if (XMLCalendarType.isYearMonthDuration(duration) || XMLCalendarType.isDayTimeDuration(duration)) { - return duration; - } else { - return null; - } - } - - @Override - public Duration yearsAndMonthsDuration(Object fromObj, Object toObj) { - if (fromObj == null || toObj == null) { - return null; - } - - XMLGregorianCalendar from = (XMLGregorianCalendar) fromObj; - XMLGregorianCalendar to = (XMLGregorianCalendar) toObj; - LocalDate fromLocalDate = LocalDate.of(from.getYear(), from.getMonth(), from.getDay()); - LocalDate toLocalDate = LocalDate.of(to.getYear(), to.getMonth(), to.getDay()); - Period period = Period.between(fromLocalDate, toLocalDate); - return XMLDurationFactory.INSTANCE.yearMonthFrom(period); - } - - @Override - public Long years(Duration duration) { - if (duration == null) { - return null; - } - - if (XMLCalendarType.isYearMonthDuration(duration)) { - return duration.getSign() * (long) duration.getYears(); - } else { - return null; - } - } - - @Override - public Long months(Duration duration) { - if (duration == null) { - return null; - } - - if (XMLCalendarType.isYearMonthDuration(duration)) { - return duration.getSign() * (long) duration.getMonths(); - } else { - return null; - } - } - - @Override - public Long days(Duration duration) { - if (duration == null) { - return null; - } - - if (XMLCalendarType.isDayTimeDuration(duration)) { - return duration.getSign() * (long) duration.getDays(); - } else { - return null; - } - } - - @Override - public Long hours(Duration duration) { - if (duration == null) { - return null; - } - - if (XMLCalendarType.isDayTimeDuration(duration)) { - return duration.getSign() * (long) duration.getHours(); - } else { - return null; - } - } - - @Override - public Long minutes(Duration duration) { - if (duration == null) { - return null; - } - - if (XMLCalendarType.isDayTimeDuration(duration)) { - return duration.getSign() * (long) duration.getMinutes(); - } else { - return null; - } - } - - @Override - public Long seconds(Duration duration) { - if (duration == null) { - return null; - } - - if (XMLCalendarType.isDayTimeDuration(duration)) { - return duration.getSign() * (long) duration.getSeconds(); - } else { - return null; - } - } - - @Override - public Duration abs(Duration duration) { - if (duration == null) { - return null; - } - - return duration.getSign() == -1 ? duration.negate() : duration; - } - -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultTimeType.java b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultTimeType.java deleted file mode 100644 index 1de3ae348..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultTimeType.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.lib.type.time.xml; - -import com.gs.dmn.feel.lib.type.bool.BooleanType; -import com.gs.dmn.feel.lib.type.bool.DefaultBooleanType; -import com.gs.dmn.feel.lib.type.time.TimeType; -import com.gs.dmn.runtime.DMNRuntimeException; - -import javax.xml.datatype.DatatypeConstants; -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; - -public class DefaultTimeType extends XMLCalendarType implements TimeType { - public static boolean hasTimezone(XMLGregorianCalendar calendar) { - return calendar.getTimezone() != DatatypeConstants.FIELD_UNDEFINED; - } - - private final BooleanType booleanType; - protected final DefaultXMLCalendarComparator comparator; - - public DefaultTimeType() { - this(DefaultXMLCalendarComparator.COMPARATOR); - } - - public DefaultTimeType(DefaultXMLCalendarComparator comparator) { - this.comparator = comparator; - this.booleanType = new DefaultBooleanType(); - } - - @Override - public Boolean timeIs(XMLGregorianCalendar first, XMLGregorianCalendar second) { - if (first == null || second == null) { - return first == second; - } - - return ((FEELXMLGregorianCalendar) first).same(second); - } - - // - // Time operators - // - @Override - public Boolean timeEqual(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.equalTo(first, second); - } - - @Override - public Boolean timeNotEqual(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.booleanType.booleanNot(timeEqual(first, second)); - } - - @Override - public Boolean timeLessThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.lessThan(first, second); - } - - @Override - public Boolean timeGreaterThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.greaterThan(first, second); - } - - @Override - public Boolean timeLessEqualThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.lessEqualThan(first, second); - } - - @Override - public Boolean timeGreaterEqualThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return this.comparator.greaterEqualThan(first, second); - } - - @Override - public Duration timeSubtract(XMLGregorianCalendar first, XMLGregorianCalendar second) { - if (first == null || second == null) { - return null; - } - - long durationInSeconds = getDurationInSeconds(first, second); - return XMLDurationFactory.INSTANCE.dayTimeFromValue(durationInSeconds); - } - - @Override - public XMLGregorianCalendar timeAddDuration(XMLGregorianCalendar time, Duration duration) { - if (time == null || duration == null) { - return null; - } - if (!isDaysAndTimeDuration(duration)) { - throw new DMNRuntimeException(String.format("Cannot add '%s' and '%s'", time, duration)); - } - - XMLGregorianCalendar clone = (XMLGregorianCalendar) time.clone(); - clone.add(duration); - return clone; - } - - @Override - public XMLGregorianCalendar timeSubtractDuration(XMLGregorianCalendar time, Duration duration) { - if (time == null || duration == null) { - return null; - } - - return timeAddDuration(time, duration.negate()); - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultXMLCalendarComparator.java b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultXMLCalendarComparator.java deleted file mode 100644 index ad3c9d4de..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/DefaultXMLCalendarComparator.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.lib.type.time.xml; - -import javax.xml.datatype.XMLGregorianCalendar; - -public class DefaultXMLCalendarComparator extends XMLCalendarType implements XMLDateTimeComparator { - public static final DefaultXMLCalendarComparator COMPARATOR = new DefaultXMLCalendarComparator(); - - protected DefaultXMLCalendarComparator() { - } - - @Override - public Integer compareTo(XMLGregorianCalendar first, XMLGregorianCalendar second) { - Long firstValue = value(first); - Long secondValue = value(second); - return firstValue.compareTo(secondValue); - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/FEELXMLGregorianCalendar.java b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/FEELXMLGregorianCalendar.java deleted file mode 100644 index e5e8dae85..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/FEELXMLGregorianCalendar.java +++ /dev/null @@ -1,1520 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.lib.type.time.xml; - -import com.gs.dmn.runtime.DMNRuntimeException; - -import javax.xml.datatype.DatatypeConstants; -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import javax.xml.namespace.QName; -import java.io.Serializable; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.math.RoundingMode; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.ZoneOffset; -import java.time.temporal.ChronoField; -import java.time.temporal.TemporalAccessor; -import java.time.temporal.TemporalQueries; -import java.util.*; - -public class FEELXMLGregorianCalendar extends XMLGregorianCalendar implements Serializable, Cloneable { - private static final long serialVersionUID = 1L; - - private static final String[] FIELD_NAME = { - "Year", - "Month", - "Day", - "Hour", - "Minute", - "Second", - "Millisecond", - "Timezone" - }; - private static final int YEAR = 0; - private static final int MONTH = 1; - private static final int DAY = 2; - private static final int HOUR = 3; - private static final int MINUTE = 4; - private static final int SECOND = 5; - private static final int MILLISECOND = 6; - private static final int TIMEZONE = 7; - - private static final BigInteger FOUR = BigInteger.valueOf(4); - private static final BigInteger HUNDRED = BigInteger.valueOf(100); - private static final BigInteger FOUR_HUNDRED = BigInteger.valueOf(400); - private static final BigInteger SIXTY = BigInteger.valueOf(60); - private static final BigInteger TWENTY_FOUR = BigInteger.valueOf(24); - private static final BigInteger TWELVE = BigInteger.valueOf(12); - private static final BigDecimal DECIMAL_ZERO = BigDecimal.ZERO; - private static final BigDecimal DECIMAL_ONE = BigDecimal.ONE; - private static final BigDecimal DECIMAL_SIXTY = BigDecimal.valueOf(60); - public static final String MIN_OFFSET = "+14:00"; - public static final String MAX_OFFSET = "-14:00"; - - private static final int[] daysInMonth = {0, // XML Schema months start at 1. - 31, 28, 31, 30, 31, 30, - 31, 31, 30, 31, 30, 31}; - - private static int maximumDayInMonthFor(BigInteger year, int month) { - if (month != DatatypeConstants.FEBRUARY) { - return daysInMonth[month]; - } else { - if (year.mod(FOUR_HUNDRED).equals(BigInteger.ZERO) || - (!year.mod(HUNDRED).equals(BigInteger.ZERO) && - year.mod(FOUR).equals(BigInteger.ZERO))) { - // is a leap year. - return 29; - } else { - return daysInMonth[month]; - } - } - } - - private static int maximumDayInMonthFor(int year, int month) { - if (month != DatatypeConstants.FEBRUARY) { - return daysInMonth[month]; - } else { - if (((year % 400) == 0) || - (((year % 100) != 0) && ((year % 4) == 0))) { - // is a leap year. - return 29; - } else { - return daysInMonth[DatatypeConstants.FEBRUARY]; - } - } - } - - /** - * Implement Step B from - * http://www.w3.org/TR/xmlschema-2/#dateTime-order.

- */ - private static int compareField(int field1, int field2) { - if (field1 == field2) { - //fields are either equal in value or both undefined. - // Step B. 1.1 AND optimized result of performing 1.1-1.4. - return DatatypeConstants.EQUAL; - } else { - if (field1 == DatatypeConstants.FIELD_UNDEFINED || field2 == DatatypeConstants.FIELD_UNDEFINED) { - // Step B. 1.2 - return DatatypeConstants.INDETERMINATE; - } else { - // Step B. 1.3-4. - return field1 < field2 ? DatatypeConstants.LESSER : DatatypeConstants.GREATER; - } - } - } - - private static int compareField(BigInteger field1, BigInteger field2) { - if (field1 == null) { - return field2 == null ? DatatypeConstants.EQUAL : DatatypeConstants.INDETERMINATE; - } - if (field2 == null) { - return DatatypeConstants.INDETERMINATE; - } - return field1.compareTo(field2); - } - - private static int compareField(BigDecimal field1, BigDecimal field2) { - // optimization. especially when both arguments are null. - if (field1 == field2) { - return DatatypeConstants.EQUAL; - } - if (field1 == null) { - field1 = DECIMAL_ZERO; - } - if (field2 == null) { - field2 = DECIMAL_ZERO; - } - return field1.compareTo(field2); - } - - public static XMLGregorianCalendar makeDate(BigInteger year, int month, int day) { - return new FEELXMLGregorianCalendar( - year, month, day, - DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED, null, - null); - } - - public static XMLGregorianCalendar makeTime(int hour, int minute, int second, BigDecimal fractionalSecond, String zoneID) { - return new FEELXMLGregorianCalendar( - null, DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED, - hour, minute, second, fractionalSecond, - zoneID); - } - - public static XMLGregorianCalendar makeDateTime(BigInteger year, int month, int day, int hour, int minute, int second, BigDecimal fractionalSecond, String zoneID) { - return new FEELXMLGregorianCalendar( - year, month, day, - hour, minute, second, fractionalSecond, - zoneID); - } - - public static XMLGregorianCalendar makeXMLCalendar(TemporalAccessor accessor) { - return new FEELXMLGregorianCalendar(accessor); - } - - private BigInteger eon = null; - private int year = DatatypeConstants.FIELD_UNDEFINED; - private int month = DatatypeConstants.FIELD_UNDEFINED; - private int day = DatatypeConstants.FIELD_UNDEFINED; - private int hour = DatatypeConstants.FIELD_UNDEFINED; - private int minute = DatatypeConstants.FIELD_UNDEFINED; - private int second = DatatypeConstants.FIELD_UNDEFINED; - private BigDecimal fractionalSecond = null; - private int secondsOffset = DatatypeConstants.FIELD_UNDEFINED; - private String zoneID; - - private static final BigInteger BILLION = new BigInteger("1000000000"); - private static final Date PURE_GREGORIAN_CHANGE = new Date(Long.MIN_VALUE); - - public FEELXMLGregorianCalendar() { - } - - private FEELXMLGregorianCalendar(TemporalAccessor accessor) throws IllegalArgumentException { - setEon(null); - try { - setYear(accessor.get(ChronoField.YEAR)); - } catch (Exception e) { - setYear(DatatypeConstants.FIELD_UNDEFINED); - } - try { - setMonth(accessor.get(ChronoField.MONTH_OF_YEAR)); - } catch (Exception e) { - setMonth(DatatypeConstants.FIELD_UNDEFINED); - } - try { - setDay(accessor.get(ChronoField.DAY_OF_MONTH)); - } catch (Exception e) { - setDay(DatatypeConstants.FIELD_UNDEFINED); - } - try { - setHour(accessor.get(ChronoField.HOUR_OF_DAY)); - } catch (Exception e) { - setHour(DatatypeConstants.FIELD_UNDEFINED); - } - try { - setMinute(accessor.get(ChronoField.MINUTE_OF_HOUR)); - } catch (Exception e) { - setMinute(DatatypeConstants.FIELD_UNDEFINED); - } - try { - setSecond(accessor.get(ChronoField.SECOND_OF_MINUTE)); - } catch (Exception e) { - setSecond(DatatypeConstants.FIELD_UNDEFINED); - } - try { - BigDecimal fractional = BigDecimal.valueOf(accessor.get(ChronoField.NANO_OF_SECOND) / (double) 1000000000); - setFractionalSecond(fractional); - } catch (Exception e) { - setFractionalSecond(null); - } - - ZoneId zone = accessor.query(TemporalQueries.zone()); - setZoneID(zone == null ? null : zone.getId()); - } - - private FEELXMLGregorianCalendar(BigInteger year, int month, int day, int hour, int minute, int second, BigDecimal fractionalSecond, String zoneID) { - setYear(year); - setMonth(month); - setDay(day); - setTime(hour, minute, second, fractionalSecond); - setZoneID(zoneID); - // check for validity - if (!isValid()) { - Object[] arguments = {year, month, day, hour, minute, second, fractionalSecond, zoneID}; - throw new IllegalArgumentException(errorMessage("InvalidXGCValue-fractional", arguments)); - } - } - - public FEELXMLGregorianCalendar(GregorianCalendar cal) { - - int year1 = cal.get(Calendar.YEAR); - if (cal.get(Calendar.ERA) == GregorianCalendar.BC) { - year1 = -year1; - } - this.setYear(year1); - - // Calendar.MONTH is zero based, XSD Date datatype's month field starts - // with JANUARY as 1. - this.setMonth(cal.get(Calendar.MONTH) + 1); - this.setDay(cal.get(Calendar.DAY_OF_MONTH)); - this.setTime( - cal.get(Calendar.HOUR_OF_DAY), - cal.get(Calendar.MINUTE), - cal.get(Calendar.SECOND), - cal.get(Calendar.MILLISECOND)); - - // Calendar ZONE_OFFSET and DST_OFFSET fields are in milliseconds. - int offsetInMinutes = (cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET)) / (60 * 1000); - this.secondsOffset = offsetInMinutes * 60; - } - - @Override - public BigInteger getEon() { - return eon; - } - - @Override - public int getYear() { - return year; - } - - @Override - public BigInteger getEonAndYear() { - // both are defined - if (year != DatatypeConstants.FIELD_UNDEFINED && eon != null) { - return eon.add(BigInteger.valueOf(year)); - } - // only year is defined - if (year != DatatypeConstants.FIELD_UNDEFINED && eon == null) { - return BigInteger.valueOf(year); - } - // neither are defined - // or only eon is defined which is not valid without a year - return null; - } - - @Override - public void setYear(BigInteger year) { - if (year == null) { - this.eon = null; - this.year = DatatypeConstants.FIELD_UNDEFINED; - } else { - BigInteger temp = year.remainder(BILLION); - this.year = temp.intValue(); - setEon(year.subtract(temp)); - } - } - - @Override - public void setYear(int year) { - if (year == DatatypeConstants.FIELD_UNDEFINED) { - this.year = DatatypeConstants.FIELD_UNDEFINED; - this.eon = null; - } else if (Math.abs(year) < BILLION.intValue()) { - this.year = year; - this.eon = null; - } else { - BigInteger theYear = BigInteger.valueOf(year); - BigInteger remainder = theYear.remainder(BILLION); - this.year = remainder.intValue(); - setEon(theYear.subtract(remainder)); - } - } - - void setEon(BigInteger eon) { - if (eon != null && eon.compareTo(BigInteger.ZERO) == 0) { - // Treat ZERO as field being undefined. - this.eon = null; - } else { - this.eon = eon; - } - } - - @Override - public int getMonth() { - return month; - } - - @Override - public void setMonth(int month) { - if (month < DatatypeConstants.JANUARY || DatatypeConstants.DECEMBER < month) - if (month != DatatypeConstants.FIELD_UNDEFINED) - invalidFieldValue(MONTH, month); - this.month = month; - } - - @Override - public int getDay() { - return day; - } - - @Override - public void setDay(int day) { - if (day < 1 || 31 < day) - if (day != DatatypeConstants.FIELD_UNDEFINED) - invalidFieldValue(DAY, day); - this.day = day; - } - - @Override - public int getHour() { - return hour; - } - - @Override - public void setHour(int hour) { - setHour(hour, true); - } - - void setHour(int hour, boolean validate) { - if (hour < 0 || hour > 24) { - if (hour != DatatypeConstants.FIELD_UNDEFINED) { - invalidFieldValue(HOUR, hour); - } - } - this.hour = hour; - if (validate) { - fixHour(); - } - } - - void fixHour() { - if (getHour() == 24) { - if (getMinute() != 0 || getSecond() != 0) { - invalidFieldValue(HOUR, getHour()); - } - setHour(0, false); - add(XMLDurationFactory.INSTANCE.dayTimeWithDays(1)); - } - } - - @Override - public int getMinute() { - return minute; - } - - @Override - public void setMinute(int minute) { - if (minute < 0 || 59 < minute) - if (minute != DatatypeConstants.FIELD_UNDEFINED) - invalidFieldValue(MINUTE, minute); - this.minute = minute; - } - - @Override - public int getSecond() { - return second; - } - - @Override - public BigDecimal getFractionalSecond() { - return fractionalSecond; - } - - /** - * @return result of adding second and fractional second field - */ - private BigDecimal getSeconds() { - if (second == DatatypeConstants.FIELD_UNDEFINED) { - return DECIMAL_ZERO; - } - BigDecimal result = BigDecimal.valueOf(second); - if (fractionalSecond != null) { - return result.add(fractionalSecond); - } else { - return result; - } - } - - @Override - public int getMillisecond() { - if (fractionalSecond == null) { - return DatatypeConstants.FIELD_UNDEFINED; - } else { - return fractionalSecond.movePointRight(3).intValue(); - } - } - - @Override - public void setSecond(int second) { - if (second < 0 || 60 < second) // leap second allows for 60 - if (second != DatatypeConstants.FIELD_UNDEFINED) - invalidFieldValue(SECOND, second); - this.second = second; - } - - @Override - public void setMillisecond(int millisecond) { - if (millisecond == DatatypeConstants.FIELD_UNDEFINED) { - fractionalSecond = null; - } else { - if (millisecond < 0 || 999 < millisecond) - if (millisecond != DatatypeConstants.FIELD_UNDEFINED) - invalidFieldValue(MILLISECOND, millisecond); - fractionalSecond = new BigDecimal((long) millisecond).movePointLeft(3); - } - } - - @Override - public void setFractionalSecond(BigDecimal fractional) { - if (fractional != null && fractional.compareTo(BigDecimal.ZERO) == 0) { - fractional = null; - } - if (fractional != null) { - if ((fractional.compareTo(DECIMAL_ZERO) < 0) || - (fractional.compareTo(DECIMAL_ONE) > 0)) { - throw new IllegalArgumentException(errorMessage("InvalidFractional", new Object[]{fractional})); - } - } - this.fractionalSecond = fractional; - } - - @Override - public int getTimezone() { - return this.secondsOffset; - } - - @Override - public void setTimezone(int offset) { - throw new DMNRuntimeException("Not supported"); - } - - private void setSecondsOffset(String zoneID) { - int offset = secondsOffset(zoneID); - if (offset < -18 * 3600 || 18 * 3600 < offset) { - if (offset != DatatypeConstants.FIELD_UNDEFINED) { - invalidFieldValue(TIMEZONE, offset); - } - } - this.secondsOffset = offset; - } - - public String getZoneID() { - return zoneID; - } - - public void setZoneID(String zoneID) { - this.zoneID = zoneID; - // Derive offset from zoneId - this.setSecondsOffset(zoneID); - } - - private int secondsOffset(String zoneID) { - if (zoneID != null) { - if (year != DatatypeConstants.FIELD_UNDEFINED) { - LocalDateTime ldt = LocalDateTime.of(year, month, day, hour, minute, second); - ZoneOffset offset = ldt.atZone(ZoneId.of(zoneID)).getOffset(); - return offset.get(ChronoField.OFFSET_SECONDS); - } else { - // milliseconds to seconds - return TimeZone.getTimeZone(ZoneId.of(zoneID)).getRawOffset() / 1000; - } - } - return DatatypeConstants.FIELD_UNDEFINED; - } - - @Override - public void setTime(int hour, int minute, int second) { - setTime(hour, minute, second, null); - } - - @Override - public void setTime(int hour, int minute, int second, BigDecimal fractional) { - setHour(hour, false); - setMinute(minute); - if (second != 60) { - setSecond(second); - } else if ((hour == 23 && minute == 59) || (hour == 0 && minute == 0)) { - setSecond(second); - } else { - invalidFieldValue(SECOND, second); - } - setFractionalSecond(fractional); - fixHour(); - } - - @Override - public void setTime(int hour, int minute, int second, int millisecond) { - setHour(hour, false); - setMinute(minute); - if (second != 60) { - setSecond(second); - } else if ((hour == 23 && minute == 59) || (hour == 0 && minute == 0)) { - setSecond(second); - } else { - invalidFieldValue(SECOND, second); - } - setMillisecond(millisecond); - // must test hour after setting seconds - fixHour(); - } - - private void invalidFieldValue(int field, int value) { - throw new IllegalArgumentException(errorMessage("InvalidFieldValue", new Object[]{value, FIELD_NAME[field]})); - } - - @Override - public int compare(XMLGregorianCalendar other) { - FEELXMLGregorianCalendar lhs = this; - FEELXMLGregorianCalendar rhs = (FEELXMLGregorianCalendar) other; - - int result; - if (lhs.getTimezone() == rhs.getTimezone()) { - // Optimization: - // both instances are in same timezone or - // both are FIELD_UNDEFINED. - // Avoid costly normalization of timezone to 'Z' time. - return internalCompare(lhs, rhs); - } else if (lhs.getTimezone() != DatatypeConstants.FIELD_UNDEFINED && - rhs.getTimezone() != DatatypeConstants.FIELD_UNDEFINED) { - // Both instances have different timezones. - // Normalize to UTC time and compare. - lhs = (FEELXMLGregorianCalendar) lhs.normalize(); - rhs = (FEELXMLGregorianCalendar) rhs.normalize(); - return internalCompare(lhs, rhs); - } else if (lhs.getTimezone() != DatatypeConstants.FIELD_UNDEFINED) { - if (lhs.getTimezone() != 0) { - lhs = (FEELXMLGregorianCalendar) lhs.normalize(); - } - // C. step 1 - XMLGregorianCalendar minQ = rhs.normalizeToTimezone(MIN_OFFSET); - result = internalCompare(lhs, minQ); - if (result == DatatypeConstants.LESSER) { - return result; - } - // C. step 2 - XMLGregorianCalendar maxQ = rhs.normalizeToTimezone(MAX_OFFSET); - result = internalCompare(lhs, maxQ); - if (result == DatatypeConstants.GREATER) { - return result; - } else { - // C. step 3 - return DatatypeConstants.INDETERMINATE; - } - } else { - // rhs.getTimezone() != DatatypeConstants.FIELD_UNDEFINED - // lhs has no timezone and rhs does. - if (rhs.getTimezone() != 0) { - rhs = (FEELXMLGregorianCalendar) rhs.normalizeToTimezone(rhs.zoneID); - } - // D. step 1 - XMLGregorianCalendar maxP = lhs.normalizeToTimezone(MAX_OFFSET); - result = internalCompare(maxP, rhs); - if (result == DatatypeConstants.LESSER) { - return result; - } - // D. step 2 - XMLGregorianCalendar minP = lhs.normalizeToTimezone(MIN_OFFSET); - result = internalCompare(minP, rhs); - if (result == DatatypeConstants.GREATER) { - return result; - } else { - // D. step 3 - return DatatypeConstants.INDETERMINATE; - } - } - } - - @Override - public XMLGregorianCalendar normalize() { - XMLGregorianCalendar normalized = normalizeToTimezone(zoneID); - // if timezone was undefined, leave it undefined - if (getTimezone() == DatatypeConstants.FIELD_UNDEFINED) { - normalized.setTimezone(DatatypeConstants.FIELD_UNDEFINED); - } - // if milliseconds was undefined, leave it undefined - if (getMillisecond() == DatatypeConstants.FIELD_UNDEFINED) { - normalized.setMillisecond(DatatypeConstants.FIELD_UNDEFINED); - } - return normalized; - } - - public XMLGregorianCalendar normalizeToTimezone(String zoneID) { - int seconds = secondsOffset(zoneID); - FEELXMLGregorianCalendar result = (FEELXMLGregorianCalendar) this.clone(); - // normalizing to UTC time negates the timezone offset before addition. - seconds = -seconds; - Duration d = XMLDurationFactory.INSTANCE.dayTimeFromValue(seconds); - result.add(d); - // set to zulu UTC time. - result.setZoneID("Z"); - return result; - } - - private static int internalCompare(XMLGregorianCalendar lhs, XMLGregorianCalendar rhs) { - int result; - // compare Year. - if (lhs.getEon() == rhs.getEon()) { - // Eon field is only equal when null. - // optimized case for comparing year not requiring eon field. - result = compareField(lhs.getYear(), rhs.getYear()); - if (result != DatatypeConstants.EQUAL) { - return result; - } - } else { - result = compareField(lhs.getEonAndYear(), rhs.getEonAndYear()); - if (result != DatatypeConstants.EQUAL) { - return result; - } - } - // compare month - result = compareField(lhs.getMonth(), rhs.getMonth()); - if (result != DatatypeConstants.EQUAL) { - return result; - } - // compare day - result = compareField(lhs.getDay(), rhs.getDay()); - if (result != DatatypeConstants.EQUAL) { - return result; - } - // compare hour - result = compareField(lhs.getHour(), rhs.getHour()); - if (result != DatatypeConstants.EQUAL) { - return result; - } - // compare minute - result = compareField(lhs.getMinute(), rhs.getMinute()); - if (result != DatatypeConstants.EQUAL) { - return result; - } - // compare rhs - result = compareField(lhs.getSecond(), rhs.getSecond()); - if (result != DatatypeConstants.EQUAL) { - return result; - } - // compare fractional rhs - result = compareField(lhs.getFractionalSecond(), rhs.getFractionalSecond()); - return result; - } - - public boolean same(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) { - return false; - } - FEELXMLGregorianCalendar calendar = (FEELXMLGregorianCalendar) o; - return year == calendar.year && - month == calendar.month && - day == calendar.day && - hour == calendar.hour && - minute == calendar.minute && - second == calendar.second && - Objects.equals(eon, calendar.eon) && - Objects.equals(zoneID, calendar.zoneID); - } - - @Override - public boolean equals(Object obj) { - if (obj == null || !(obj instanceof XMLGregorianCalendar)) { - return false; - } - return compare((XMLGregorianCalendar) obj) == DatatypeConstants.EQUAL; - } - - @Override - public int hashCode() { - // Following two dates compare to EQUALS since in different timezones. - // 2000-01-15T12:00:00-05:00 == 2000-01-15T13:00:00-04:00 - // - // Must ensure both instances generate same hashcode by normalizing this to UTC timezone. - int timezone = getTimezone(); - if (timezone == DatatypeConstants.FIELD_UNDEFINED) { - timezone = 0; - } - XMLGregorianCalendar gc = this; - if (timezone != 0) { - gc = this.normalizeToTimezone(getZoneID()); - } - return gc.getYear() + gc.getMonth() + gc.getDay() + gc.getHour() + gc.getMinute() + gc.getSecond(); - } - - @Override - public String toXMLFormat() { - QName kind = getXMLSchemaType(); - String formatString = null; - // Fix 4971612: invalid SCCS macro substitution in data string - // no %{alpha}% to avoid SCCS macro substitution - if (kind == DatatypeConstants.DATETIME) { - formatString = "%Y-%M-%DT%h:%m:%s" + "%z"; - } else if (kind == DatatypeConstants.DATE) { - formatString = "%Y-%M-%D" + "%z"; - } else if (kind == DatatypeConstants.TIME) { - formatString = "%h:%m:%s" + "%z"; - } - return format(formatString); - } - - @Override - public QName getXMLSchemaType() { - int mask = - (year != DatatypeConstants.FIELD_UNDEFINED ? 0x20 : 0) | - (month != DatatypeConstants.FIELD_UNDEFINED ? 0x10 : 0) | - (day != DatatypeConstants.FIELD_UNDEFINED ? 0x08 : 0) | - (hour != DatatypeConstants.FIELD_UNDEFINED ? 0x04 : 0) | - (minute != DatatypeConstants.FIELD_UNDEFINED ? 0x02 : 0) | - (second != DatatypeConstants.FIELD_UNDEFINED ? 0x01 : 0); - switch (mask) { - case 0x3F: - return DatatypeConstants.DATETIME; - case 0x38: - return DatatypeConstants.DATE; - case 0x07: - return DatatypeConstants.TIME; - default: - throw new IllegalStateException( - errorMessage("InvalidXGCFields", new Object[] {this.getClass().getName() + "#getXMLSchemaType() :"}) - ); - } - } - - @Override - public boolean isValid() { - // check if days in month is valid. Can be dependent on leap year. - if (getMonth() == DatatypeConstants.FEBRUARY) { - // years could not be set - int maxDays = 29; - if (eon == null) { - if (year != DatatypeConstants.FIELD_UNDEFINED) { - maxDays = maximumDayInMonthFor(year, getMonth()); - } - } else { - BigInteger years = getEonAndYear(); - if (years != null) { - maxDays = maximumDayInMonthFor(getEonAndYear(), DatatypeConstants.FEBRUARY); - } - } - if (getDay() > maxDays) { - return false; - } - } - - // http://www.w3.org/2001/05/xmlschema-errata#e2-45 - if (getHour() == 24) { - if (getMinute() != 0 || getSecond() != 0) { - return false; - } - } - - // XML Schema 1.0 specification defines year value of zero as - // invalid. Allow this class to set year field to zero - // since XML Schema 1.0 errata states that lexical zero will - // be allowed in next version and treated as 1 B.C.E. - if (eon == null) { - // optimize check. - return year != 0; - } else { - BigInteger yearField = getEonAndYear(); - if (yearField != null) { - int result = compareField(yearField, BigInteger.ZERO); - return result != DatatypeConstants.EQUAL; - } - } - return true; - } - - @Override - public void add(Duration duration) { - /* - * Extracted from - * http://www.w3.org/TR/xmlschema-2/#adding-durations-to-dateTimes - * to ensure implemented properly. See spec for definitions of methods - * used in algorithm. - * - * Given a dateTime S and a duration D, specifies how to compute a - * dateTime E where E is the end of the time period with start S and - * duration D i.e. E = S + D. - * - * The following is the precise specification. - * These steps must be followed in the same order. - * If a field in D is not specified, it is treated as if it were zero. - * If a field in S is not specified, it is treated in the calculation - * as if it were the minimum allowed value in that field, however, - * after the calculation is concluded, the corresponding field in - * E is removed (set to unspecified). - * - * Months (may be modified additionally below) - * temp := S[month] + D[month] - * E[month] := modulo(temp, 1, 13) - * carry := fQuotient(temp, 1, 13) - */ - - boolean[] fieldUndefined = { - false, - false, - false, - false, - false, - false - }; - - int signum = duration.getSign(); - - int startMonth = getMonth(); - if (startMonth == DatatypeConstants.FIELD_UNDEFINED) { - startMonth = DatatypeConstants.JANUARY; - fieldUndefined[MONTH] = true; - } - - BigInteger dMonths = sanitize(duration.getField(DatatypeConstants.MONTHS), signum); - BigInteger temp = BigInteger.valueOf(startMonth).add(dMonths); - setMonth(temp.subtract(BigInteger.ONE).mod(TWELVE).intValue() + 1); - BigInteger carry = - new BigDecimal(temp.subtract(BigInteger.ONE)).divide(new BigDecimal(TWELVE), RoundingMode.FLOOR).toBigInteger(); - - - // Years (may be modified additionally below) - // E[year] := S[year] + D[year] + carry - BigInteger startYear = getEonAndYear(); - if (startYear == null) { - fieldUndefined[YEAR] = true; - startYear = BigInteger.ZERO; - } - BigInteger dYears = sanitize(duration.getField(DatatypeConstants.YEARS), signum); - BigInteger endYear = startYear.add(dYears).add(carry); - setYear(endYear); - - // Zone - // E[zone] := S[zone] - // no-op since adding to this, not to a new end point. - // Seconds - // temp := S[second] + D[second] - // E[second] := modulo(temp, 60) - // carry := fQuotient(temp, 60) - BigDecimal startSeconds; - if (getSecond() == DatatypeConstants.FIELD_UNDEFINED) { - fieldUndefined[SECOND] = true; - startSeconds = DECIMAL_ZERO; - } else { - // seconds + fractionalSeconds - startSeconds = getSeconds(); - } - - // Duration seconds is SECONDS + FRACTIONALSECONDS. - BigDecimal dSeconds = sanitize((BigDecimal) duration.getField(DatatypeConstants.SECONDS), signum); - BigDecimal tempBD = startSeconds.add(dSeconds); - BigDecimal fQuotient = new BigDecimal(new BigDecimal(tempBD.toBigInteger()).divide(DECIMAL_SIXTY, RoundingMode.FLOOR).toBigInteger()); - BigDecimal endSeconds = tempBD.subtract(fQuotient.multiply(DECIMAL_SIXTY)); - - carry = fQuotient.toBigInteger(); - setSecond(endSeconds.intValue()); - BigDecimal tempFracSeconds = endSeconds.subtract(new BigDecimal(BigInteger.valueOf(getSecond()))); - if (tempFracSeconds.compareTo(DECIMAL_ZERO) < 0) { - setFractionalSecond(DECIMAL_ONE.add(tempFracSeconds)); - if (getSecond() == 0) { - setSecond(59); - carry = carry.subtract(BigInteger.ONE); - } else { - setSecond(getSecond() - 1); - } - } else { - setFractionalSecond(tempFracSeconds); - } - - // Minutes - // temp := S[minute] + D[minute] + carry - // E[minute] := modulo(temp, 60) - // carry := fQuotient(temp, 60) - int startMinutes = getMinute(); - if (startMinutes == DatatypeConstants.FIELD_UNDEFINED) { - fieldUndefined[MINUTE] = true; - startMinutes = 0; - } - BigInteger dMinutes = sanitize(duration.getField(DatatypeConstants.MINUTES), signum); - - temp = BigInteger.valueOf(startMinutes).add(dMinutes).add(carry); - setMinute(temp.mod(SIXTY).intValue()); - carry = new BigDecimal(temp).divide(DECIMAL_SIXTY, RoundingMode.FLOOR).toBigInteger(); - - // Hours - // temp := S[hour] + D[hour] + carry - // E[hour] := modulo(temp, 24) - // carry := fQuotient(temp, 24) - int startHours = getHour(); - if (startHours == DatatypeConstants.FIELD_UNDEFINED) { - fieldUndefined[HOUR] = true; - startHours = 0; - } - BigInteger dHours = sanitize(duration.getField(DatatypeConstants.HOURS), signum); - - temp = BigInteger.valueOf(startHours).add(dHours).add(carry); - setHour(temp.mod(TWENTY_FOUR).intValue(), false); - carry = new BigDecimal(temp).divide(new BigDecimal(TWENTY_FOUR), RoundingMode.FLOOR).toBigInteger(); - - // Days - // if S[day] > maximumDayInMonthFor(E[year], E[month]) - // + tempDays := maximumDayInMonthFor(E[year], E[month]) - // else if S[day] < 1 - // + tempDays := 1 - // else - // + tempDays := S[day] - // E[day] := tempDays + D[day] + carry - // START LOOP - // + IF E[day] < 1 - // # E[day] := E[day] + - // maximumDayInMonthFor(E[year], E[month] - 1) - // # carry := -1 - // + ELSE IF E[day] > maximumDayInMonthFor(E[year], E[month]) - // # E[day] := - // E[day] - maximumDayInMonthFor(E[year], E[month]) - // # carry := 1 - // + ELSE EXIT LOOP - // + temp := E[month] + carry - // + E[month] := modulo(temp, 1, 13) - // + E[year] := E[year] + fQuotient(temp, 1, 13) - // + GOTO START LOOP - BigInteger tempDays; - int startDay = getDay(); - if (startDay == DatatypeConstants.FIELD_UNDEFINED) { - fieldUndefined[DAY] = true; - startDay = 1; - } - BigInteger dDays = sanitize(duration.getField(DatatypeConstants.DAYS), signum); - int maxDayInMonth = maximumDayInMonthFor(getEonAndYear(), getMonth()); - if (startDay > maxDayInMonth) { - tempDays = BigInteger.valueOf(maxDayInMonth); - } else if (startDay < 1) { - tempDays = BigInteger.ONE; - } else { - tempDays = BigInteger.valueOf(startDay); - } - BigInteger endDays = tempDays.add(dDays).add(carry); - int monthCarry; - int intTemp; - while (true) { - if (endDays.compareTo(BigInteger.ONE) < 0) { - // calculate days in previous month, watch for month roll over - BigInteger mdimf; - if (month >= 2) { - mdimf = BigInteger.valueOf(maximumDayInMonthFor(getEonAndYear(), getMonth() - 1)); - } else { - // roll over to December of previous year - mdimf = BigInteger.valueOf(maximumDayInMonthFor(getEonAndYear().subtract(BigInteger.valueOf(1)), 12)); - } - endDays = endDays.add(mdimf); - monthCarry = -1; - } else if (endDays.compareTo(BigInteger.valueOf(maximumDayInMonthFor(getEonAndYear(), getMonth()))) > 0) { - endDays = endDays.add(BigInteger.valueOf(-maximumDayInMonthFor(getEonAndYear(), getMonth()))); - monthCarry = 1; - } else { - break; - } - - intTemp = getMonth() + monthCarry; - int endMonth = (intTemp - 1) % (13 - 1); - int quotient; - if (endMonth < 0) { - endMonth = (13 - 1) + endMonth + 1; - quotient = new BigDecimal(intTemp - 1).divide(new BigDecimal(TWELVE), RoundingMode.UP).intValue(); - } else { - quotient = (intTemp - 1) / (13 - 1); - endMonth += 1; - } - setMonth(endMonth); - if (quotient != 0) { - setYear(getEonAndYear().add(BigInteger.valueOf(quotient))); - } - } - setDay(endDays.intValue()); - - // set fields that where undefined before this addition, back to undefined. - for (int i = YEAR; i <= SECOND; i++) { - if (fieldUndefined[i]) { - switch (i) { - case YEAR: - setYear(DatatypeConstants.FIELD_UNDEFINED); - break; - case MONTH: - setMonth(DatatypeConstants.FIELD_UNDEFINED); - break; - case DAY: - setDay(DatatypeConstants.FIELD_UNDEFINED); - break; - case HOUR: - setHour(DatatypeConstants.FIELD_UNDEFINED, false); - break; - case MINUTE: - setMinute(DatatypeConstants.FIELD_UNDEFINED); - break; - case SECOND: - setSecond(DatatypeConstants.FIELD_UNDEFINED); - setFractionalSecond(null); - break; - } - } - } - } - - @Override - public java.util.GregorianCalendar toGregorianCalendar() { - GregorianCalendar result; - final int DEFAULT_TIMEZONE_OFFSET = DatatypeConstants.FIELD_UNDEFINED; - TimeZone tz = getTimeZone(DEFAULT_TIMEZONE_OFFSET); - // Use the following instead for JDK7 only: - // Locale locale = Locale.getDefault(Locale.Category.FORMAT); - Locale locale = getDefaultLocale(); - - result = new GregorianCalendar(tz, locale); - result.clear(); - result.setGregorianChange(PURE_GREGORIAN_CHANGE); - - // if year( and eon) are undefined, leave default Calendar values - BigInteger year = getEonAndYear(); - if (year != null) { - result.set(Calendar.ERA, year.signum() == -1 ? GregorianCalendar.BC : GregorianCalendar.AD); - result.set(Calendar.YEAR, year.abs().intValue()); - } - - // only set month if it is set - if (month != DatatypeConstants.FIELD_UNDEFINED) { - // Calendar.MONTH is zero based while XMLGregorianCalendar month field is not. - result.set(Calendar.MONTH, month - 1); - } - - // only set day if it is set - if (day != DatatypeConstants.FIELD_UNDEFINED) { - result.set(Calendar.DAY_OF_MONTH, day); - } - - // only set hour if it is set - if (hour != DatatypeConstants.FIELD_UNDEFINED) { - result.set(Calendar.HOUR_OF_DAY, hour); - } - - // only set minute if it is set - if (minute != DatatypeConstants.FIELD_UNDEFINED) { - result.set(Calendar.MINUTE, minute); - } - - // only set second if it is set - if (second != DatatypeConstants.FIELD_UNDEFINED) { - result.set(Calendar.SECOND, second); - } - - // only set millisend if it is set - if (fractionalSecond != null) { - result.set(Calendar.MILLISECOND, getMillisecond()); - } - - return result; - } - - private Locale getDefaultLocale() { - return Locale.getDefault(); - } - - @Override - public GregorianCalendar toGregorianCalendar(TimeZone timezone, Locale aLocale, XMLGregorianCalendar defaults) { - GregorianCalendar result; - TimeZone tz = timezone; - if (tz == null) { - int defaultZoneoffset = DatatypeConstants.FIELD_UNDEFINED; - if (defaults != null) { - defaultZoneoffset = defaults.getTimezone(); - } - tz = getTimeZone(defaultZoneoffset); - } - if (aLocale == null) { - aLocale = Locale.getDefault(); - } - result = new GregorianCalendar(tz, aLocale); - result.clear(); - result.setGregorianChange(PURE_GREGORIAN_CHANGE); - - // if year( and eon) are undefined, leave default Calendar values - BigInteger year = getEonAndYear(); - if (year != null) { - result.set(Calendar.ERA, year.signum() == -1 ? GregorianCalendar.BC : GregorianCalendar.AD); - result.set(Calendar.YEAR, year.abs().intValue()); - } else { - // use default if set - BigInteger defaultYear = (defaults != null) ? defaults.getEonAndYear() : null; - if (defaultYear != null) { - result.set(Calendar.ERA, defaultYear.signum() == -1 ? GregorianCalendar.BC : GregorianCalendar.AD); - result.set(Calendar.YEAR, defaultYear.abs().intValue()); - } - } - - // only set month if it is set - if (month != DatatypeConstants.FIELD_UNDEFINED) { - // Calendar.MONTH is zero based while XMLGregorianCalendar month field is not. - result.set(Calendar.MONTH, month - 1); - } else { - // use default if set - int defaultMonth = (defaults != null) ? defaults.getMonth() : DatatypeConstants.FIELD_UNDEFINED; - if (defaultMonth != DatatypeConstants.FIELD_UNDEFINED) { - // Calendar.MONTH is zero based while XMLGregorianCalendar month field is not. - result.set(Calendar.MONTH, defaultMonth - 1); - } - } - - // only set day if it is set - if (day != DatatypeConstants.FIELD_UNDEFINED) { - result.set(Calendar.DAY_OF_MONTH, day); - } else { - // use default if set - int defaultDay = (defaults != null) ? defaults.getDay() : DatatypeConstants.FIELD_UNDEFINED; - if (defaultDay != DatatypeConstants.FIELD_UNDEFINED) { - result.set(Calendar.DAY_OF_MONTH, defaultDay); - } - } - - // only set hour if it is set - if (hour != DatatypeConstants.FIELD_UNDEFINED) { - result.set(Calendar.HOUR_OF_DAY, hour); - } else { - // use default if set - int defaultHour = (defaults != null) ? defaults.getHour() : DatatypeConstants.FIELD_UNDEFINED; - if (defaultHour != DatatypeConstants.FIELD_UNDEFINED) { - result.set(Calendar.HOUR_OF_DAY, defaultHour); - } - } - - // only set minute if it is set - if (minute != DatatypeConstants.FIELD_UNDEFINED) { - result.set(Calendar.MINUTE, minute); - } else { - // use default if set - int defaultMinute = (defaults != null) ? defaults.getMinute() : DatatypeConstants.FIELD_UNDEFINED; - if (defaultMinute != DatatypeConstants.FIELD_UNDEFINED) { - result.set(Calendar.MINUTE, defaultMinute); - } - } - - // only set second if it is set - if (second != DatatypeConstants.FIELD_UNDEFINED) { - result.set(Calendar.SECOND, second); - } else { - // use default if set - int defaultSecond = (defaults != null) ? defaults.getSecond() : DatatypeConstants.FIELD_UNDEFINED; - if (defaultSecond != DatatypeConstants.FIELD_UNDEFINED) { - result.set(Calendar.SECOND, defaultSecond); - } - } - - // only set millisend if it is set - if (fractionalSecond != null) { - result.set(Calendar.MILLISECOND, getMillisecond()); - } else { - // use default if set - BigDecimal defaultFractionalSecond = (defaults != null) ? defaults.getFractionalSecond() : null; - if (defaultFractionalSecond != null) { - result.set(Calendar.MILLISECOND, defaults.getMillisecond()); - } - } - - return result; - } - - @Override - public TimeZone getTimeZone(int defaultZoneoffset) { - TimeZone result; - int zoneoffset = getTimezone(); - - if (zoneoffset == DatatypeConstants.FIELD_UNDEFINED) { - zoneoffset = defaultZoneoffset; - } - if (zoneoffset == DatatypeConstants.FIELD_UNDEFINED) { - result = TimeZone.getDefault(); - } else { - // zoneoffset is in seconds. Convert to custom timezone id format. - char sign = zoneoffset < 0 ? '-' : '+'; - if (sign == '-') { - zoneoffset = -zoneoffset; - } - int hour = zoneoffset / 3600; - int seconds = zoneoffset % 3600; - int minutes = seconds / 60; - - // Javadoc for java.util.TimeZone documents max length - // for customTimezoneId is 8 when optional ':' is not used. - // Format is - // "GMT" ('-'|'+') (digit digit?) (digit digit)? - // hour minutes - StringBuffer customTimezoneId = new StringBuffer(8); - customTimezoneId.append("GMT"); - customTimezoneId.append(sign); - customTimezoneId.append(hour); - if (minutes != 0) { - customTimezoneId.append(minutes); - } - result = TimeZone.getTimeZone(customTimezoneId.toString()); - } - return result; - } - - @Override - public Object clone() { - // Both this.eon and this.fractionalSecond are instances - // of immutable classes, so they do not need to be cloned. - return new FEELXMLGregorianCalendar( - getEonAndYear(), this.month, this.day, - this.hour, this.minute, this.second, this.fractionalSecond, - this.zoneID); - } - - @Override - public void clear() { - eon = null; - year = DatatypeConstants.FIELD_UNDEFINED; - month = DatatypeConstants.FIELD_UNDEFINED; - day = DatatypeConstants.FIELD_UNDEFINED; - hour = DatatypeConstants.FIELD_UNDEFINED; - minute = DatatypeConstants.FIELD_UNDEFINED; - second = DatatypeConstants.FIELD_UNDEFINED; - fractionalSecond = null; - secondsOffset = DatatypeConstants.FIELD_UNDEFINED; - zoneID = null; - } - - /** - * Prints this object according to the format specification. - *

- *

- * I wrote a custom format method for a particular format string to - * see if it improves the performance, but it didn't. So this interpreting - * approach isn't too bad. - *

- *

- * StringBuffer -> StringBuilder change had a very visible impact. - * It almost cut the execution time to half, but unfortunately we can't use it - * because we need to run on JDK 1.3 - */ - private String format(String format) { - char[] buf = new char[32]; - int bufPtr = 0; - - int fidx = 0, flen = format.length(); - - while (fidx < flen) { - char fch = format.charAt(fidx++); - if (fch != '%') {// not a meta char - buf[bufPtr++] = fch; - continue; - } - - switch (format.charAt(fidx++)) { - case 'Y': - if (eon == null) { - // optimized path - int y = getYear(); - if (y < 0) { - buf[bufPtr++] = '-'; - y = -y; - } - bufPtr = print4Number(buf, bufPtr, y); - } else { - String s = getEonAndYear().toString(); - // reallocate the buffer now so that it has enough space - char[] n = new char[buf.length + s.length()]; - System.arraycopy(buf, 0, n, 0, bufPtr); - buf = n; - for (int i = s.length(); i < 4; i++) - buf[bufPtr++] = '0'; - s.getChars(0, s.length(), buf, bufPtr); - bufPtr += s.length(); - } - break; - case 'M': - bufPtr = print2Number(buf, bufPtr, getMonth()); - break; - case 'D': - bufPtr = print2Number(buf, bufPtr, getDay()); - break; - case 'h': - bufPtr = print2Number(buf, bufPtr, getHour()); - break; - case 'm': - bufPtr = print2Number(buf, bufPtr, getMinute()); - break; - case 's': - bufPtr = print2Number(buf, bufPtr, getSecond()); - if (getFractionalSecond() != null) { - // Note: toPlainString() isn't available before Java 1.5 - String frac = getFractionalSecond().toString(); - - int pos = frac.indexOf("E-"); - if (pos >= 0) { - String zeros = frac.substring(pos + 2); - frac = frac.substring(0, pos); - pos = frac.indexOf("."); - if (pos >= 0) { - frac = frac.substring(0, pos) + frac.substring(pos + 1); - } - int count = Integer.parseInt(zeros); - if (count < 40) { - frac = "00000000000000000000000000000000000000000".substring(0, count - 1) + frac; - } else { - // do it the hard way - while (count > 1) { - frac = "0" + frac; - count--; - } - } - frac = "0." + frac; - } - - // reallocate the buffer now so that it has enough space - char[] n = new char[buf.length + frac.length()]; - System.arraycopy(buf, 0, n, 0, bufPtr); - buf = n; - //skip leading zero. - frac.getChars(1, frac.length(), buf, bufPtr); - bufPtr += frac.length() - 1; - } - break; - case 'z': - int offset = getTimezone(); - if (offset == 0) { - buf[bufPtr++] = 'Z'; - } else if (offset != DatatypeConstants.FIELD_UNDEFINED) { - if (offset < 0) { - buf[bufPtr++] = '-'; - offset *= -1; - } else { - buf[bufPtr++] = '+'; - } - int min = offset / 60; - bufPtr = print2Number(buf, bufPtr, min / 60); - buf[bufPtr++] = ':'; - bufPtr = print2Number(buf, bufPtr, min % 60); - } - break; - default: - throw new InternalError(); // impossible - } - } - - return new String(buf, 0, bufPtr); - } - - /** - * Prints an int as two digits into the buffer. - * - * @param number Number to be printed. Must be positive. - */ - private int print2Number(char[] out, int bufptr, int number) { - out[bufptr++] = (char) ('0' + (number / 10)); - out[bufptr++] = (char) ('0' + (number % 10)); - return bufptr; - } - - /** - * Prints an int as four digits into the buffer. - * - * @param number Number to be printed. Must be positive. - */ - private int print4Number(char[] out, int bufptr, int number) { - out[bufptr + 3] = (char) ('0' + (number % 10)); - number /= 10; - out[bufptr + 2] = (char) ('0' + (number % 10)); - number /= 10; - out[bufptr + 1] = (char) ('0' + (number % 10)); - number /= 10; - out[bufptr] = (char) ('0' + (number % 10)); - return bufptr + 4; - } - - /** - * Compute value*signum where value==null is treated as - * value==0. - * - * @return non-null {@link BigInteger}. - */ - static BigInteger sanitize(Number value, int signum) { - if (signum == 0 || value == null) { - return BigInteger.ZERO; - } - return (signum < 0) ? ((BigInteger) value).negate() : (BigInteger) value; - } - - static BigDecimal sanitize(BigDecimal value, int signum) { - if (signum == 0 || value == null) { - return DECIMAL_ZERO; - } - if (signum > 0) { - return value; - } - return value.negate(); - } - - /** - *

reset() is designed to allow the reuse of existing - * XMLGregorianCalendars thus saving resources associated - * with the creation of new XMLGregorianCalendars.

- */ - @Override - public void reset() { - //PENDING : Implementation of reset method - } - - @Override - public String toString() { - QName kind = this.getXMLSchemaType(); - if (kind == DatatypeConstants.DATE) { - int year = this.getYear(); - int month = this.getMonth(); - int day = this.getDay(); - return String.format("%d-%02d-%02d", year, month, day); - } else if (kind == DatatypeConstants.TIME) { - String result; - int hour = this.getHour(); - int minute = this.getMinute(); - int second = this.getSecond(); - String nanoseconds = getNanoSeconds(this.getFractionalSecond()); - if (nanoseconds == null) { - result = String.format("%02d:%02d:%02d", hour, minute, second); - } else { - result = String.format("%02d:%02d:%02d%s", hour, minute, second, nanoseconds); - } - if (zoneID != null) { - if (isZoneOffset(zoneID)) { - result += zoneID; - } else { - result += "@" + zoneID; - } - } - return result; - - } else if (kind == DatatypeConstants.DATETIME) { - String result; - int year = this.getYear(); - int month = this.getMonth(); - int day = this.getDay(); - int hour = this.getHour(); - int minute = this.getMinute(); - int second = this.getSecond(); - String nanoseconds = getNanoSeconds(this.getFractionalSecond()); - if (nanoseconds == null) { - result = String.format("%d-%02d-%02dT%02d:%02d:%02d", year, month, day, hour, minute, second); - } else { - result = String.format("%d-%02d-%02dT%02d:%02d:%02d%s", year, month, day, hour, minute, second, nanoseconds); - } - if (zoneID != null) { - if (isZoneOffset(zoneID)) { - result += zoneID; - } else { - result += "@" + zoneID; - } - } - return result; - } else { - return super.toString(); - } - } - - private boolean isZoneOffset(String zoneID) { - return zoneID != null && - ( zoneID.equalsIgnoreCase("Z") || zoneID.startsWith("+") || zoneID.startsWith("-") ) - ; - } - - private String getNanoSeconds(BigDecimal fractionalSeconds) { - if (fractionalSeconds == null) { - return null; - } - return fractionalSeconds.stripTrailingZeros().toPlainString().substring(1); - } - - private String errorMessage(String text, Object[] arguments) { - StringBuilder builder = new StringBuilder(); - builder.append(text); - for(Object arg: arguments) { - builder.append(arg.toString()); - } - return builder.toString(); - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/XMLCalendarType.java b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/XMLCalendarType.java index 9640a7ae3..b9dadd329 100644 --- a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/XMLCalendarType.java +++ b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/XMLCalendarType.java @@ -16,14 +16,9 @@ import javax.xml.datatype.DatatypeConstants; import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.namespace.QName; -import java.time.LocalDateTime; -import java.time.OffsetDateTime; -import java.time.ZoneOffset; import java.util.Calendar; import java.util.GregorianCalendar; -import java.util.Objects; public abstract class XMLCalendarType extends BaseType { protected static final ThreadLocal GREGORIAN = ThreadLocal.withInitial(() -> new GregorianCalendar( @@ -55,10 +50,6 @@ protected static QName getXMLSchemaType(Duration duration) { } } - public static boolean isXMLDuration(Object duration) { - return isYearMonthDuration(duration) || isDayTimeDuration(duration); - } - public static boolean isYearMonthDuration(Object duration) { return duration instanceof Duration && getXMLSchemaType((Duration) duration) == DatatypeConstants.DURATION_YEARMONTH; } @@ -67,21 +58,6 @@ public static boolean isDayTimeDuration(Object duration) { return duration instanceof Duration && getXMLSchemaType((Duration) duration) == DatatypeConstants.DURATION_DAYTIME; } - public boolean isDate(Object value) { - return value instanceof XMLGregorianCalendar - && ((XMLGregorianCalendar) value).getXMLSchemaType() == DatatypeConstants.DATE; - } - - public boolean isTime(Object value) { - return value instanceof XMLGregorianCalendar - && ((XMLGregorianCalendar) value).getXMLSchemaType() == DatatypeConstants.TIME; - } - - public boolean isDateTime(Object value) { - return value instanceof XMLGregorianCalendar - && ((XMLGregorianCalendar) value).getXMLSchemaType() == DatatypeConstants.DATETIME; - } - public boolean isYearsAndMonthsDuration(Object value) { return value instanceof Duration && isYearMonthDuration(value); @@ -92,62 +68,6 @@ public boolean isDaysAndTimeDuration(Object value) { && isDayTimeDuration(value); } - public Long dateValue(XMLGregorianCalendar date) { - if (date == null) { - return null; - } - - XMLGregorianCalendar dateTime = toDateTime(date); - return dateTimeValue(dateTime); - } - - public Long timeValue(XMLGregorianCalendar time) { - if (time == null) { - return null; - } - - long value = time.getHour() * 3600L + time.getMinute() * 60L + time.getSecond(); - if (time.getTimezone() != DatatypeConstants.FIELD_UNDEFINED) { - value -= time.getTimezone(); - } - return value; - } - - public Long dateTimeValue(XMLGregorianCalendar dateTime) { - if (dateTime == null) { - return null; - } - - int nanoSeconds = dateTime.getMillisecond() * 1000_000; - LocalDateTime localDateTime = LocalDateTime.of( - dateTime.getYear(), dateTime.getMonth(), dateTime.getDay(), - dateTime.getHour(), dateTime.getMinute(), dateTime.getSecond(), nanoSeconds); - int timezone = dateTime.getTimezone(); - if (timezone == DatatypeConstants.FIELD_UNDEFINED) { - timezone = 0; - } - ZoneOffset offset = ZoneOffset.ofTotalSeconds(timezone); - OffsetDateTime offsetDateTime = OffsetDateTime.of(localDateTime, offset); - return offsetDateTime.toEpochSecond(); - } - - public Long value(XMLGregorianCalendar calendar) { - if (isDate(calendar)) { - return dateValue(calendar); - } else if (isTime(calendar)) { - return timeValue(calendar); - } else if (isDateTime(calendar)) { - return dateTimeValue(calendar); - } else { - return null; - } - } - - protected Long toEpochSeconds(XMLGregorianCalendar calendar) { - Objects.requireNonNull(calendar, "calendar"); - return Math.floorDiv(calendar.toGregorianCalendar().getTimeInMillis(), 1000L); - } - public Long durationValue(Duration duration) { if (duration == null) { return null; @@ -191,21 +111,4 @@ protected Long secondsValue(Duration duration) { long totalSeconds = 60L * totalMinutes + seconds; return isNegative ? - totalSeconds : totalSeconds; } - - protected long getDurationInSeconds(XMLGregorianCalendar first, XMLGregorianCalendar second) { - return toEpochSeconds(first) - toEpochSeconds(second); - } - - protected XMLGregorianCalendar toDateTime(XMLGregorianCalendar date) { - if (date == null) { - return null; - } - - FEELXMLGregorianCalendar clone = (FEELXMLGregorianCalendar) date.clone(); - clone.setHour(0); - clone.setMinute(0); - clone.setSecond(0); - clone.setZoneID("Z"); - return clone; - } } diff --git a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/XMLDurationFactory.java b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/XMLDurationFactory.java index d4254d6f7..f16daf409 100644 --- a/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/XMLDurationFactory.java +++ b/dmn-runtime/src/main/java/com/gs/dmn/feel/lib/type/time/xml/XMLDurationFactory.java @@ -18,9 +18,7 @@ import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; import java.time.Period; -import java.util.GregorianCalendar; public class XMLDurationFactory { public static final XMLDurationFactory INSTANCE = new XMLDurationFactory(); diff --git a/dmn-runtime/src/main/java/com/gs/dmn/runtime/Assert.java b/dmn-runtime/src/main/java/com/gs/dmn/runtime/Assert.java index 4807d2f45..7d9a3b050 100644 --- a/dmn-runtime/src/main/java/com/gs/dmn/runtime/Assert.java +++ b/dmn-runtime/src/main/java/com/gs/dmn/runtime/Assert.java @@ -17,10 +17,13 @@ import org.junit.jupiter.api.Assertions; import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; import java.lang.reflect.Method; import java.math.BigDecimal; -import java.time.*; +import java.time.OffsetTime; +import java.time.Period; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; +import java.time.temporal.TemporalAccessor; import java.util.ArrayList; import java.util.List; @@ -109,12 +112,10 @@ private static boolean isBoolean(Object object) { } private static boolean isDateTime(Object object) { - return object instanceof XMLGregorianCalendar - || object instanceof java.time.Duration + return object instanceof TemporalAccessor || object instanceof Duration - || object instanceof ZonedDateTime - || object instanceof LocalDate - || object instanceof OffsetTime; + || object instanceof java.time.Duration + ; } private static boolean isList(Object actual) { diff --git a/dmn-runtime/src/main/java/com/gs/dmn/runtime/DefaultDMNBaseDecision.java b/dmn-runtime/src/main/java/com/gs/dmn/runtime/DefaultDMNBaseDecision.java deleted file mode 100644 index b1a61c491..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/runtime/DefaultDMNBaseDecision.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.runtime; - -import com.gs.dmn.feel.lib.DefaultFEELLib; -import com.gs.dmn.runtime.annotation.AnnotationTarget; -import com.gs.dmn.runtime.annotation.DRGElement; -import com.gs.dmn.runtime.annotation.Rule; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.lang.reflect.Method; -import java.math.BigDecimal; -import java.util.Map; - -/** - * @deprecated As of release 8.3.0, replaced by {@link JavaTimeDMNBaseDecision} - */ -@Deprecated -public class DefaultDMNBaseDecision extends DefaultFEELLib implements DMNDecision, AnnotationTarget { - @Override - public Object applyMap(Map input_, ExecutionContext context_) { - return null; - } - - @Override - public DRGElement getDRGElementAnnotation() { - return this.getClass().getAnnotation(DRGElement.class); - } - - @Override - public Rule getRuleAnnotation(int ruleIndex) { - String methodName = String.format("rule%d", ruleIndex); - Class cls = this.getClass(); - Method[] declaredMethods = cls.getDeclaredMethods(); - for (Method method : declaredMethods) { - if (methodName.equals(method.getName())) { - return method.getAnnotation(Rule.class); - } - } - return null; - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/runtime/serialization/XMLGregorianCalendarDeserializer.java b/dmn-runtime/src/main/java/com/gs/dmn/runtime/serialization/XMLGregorianCalendarDeserializer.java deleted file mode 100644 index 88e3f5d91..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/runtime/serialization/XMLGregorianCalendarDeserializer.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.runtime.serialization; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.ObjectCodec; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.JsonNode; -import com.gs.dmn.feel.lib.type.time.xml.DefaultDateTimeLib; -import com.gs.dmn.feel.lib.type.time.xml.FEELXMLGregorianCalendar; -import com.gs.dmn.runtime.DMNRuntimeException; - -import javax.xml.datatype.XMLGregorianCalendar; -import java.io.IOException; - -public class XMLGregorianCalendarDeserializer extends JsonDeserializer { - private final DefaultDateTimeLib dateTimeLib = new DefaultDateTimeLib(); - - public XMLGregorianCalendarDeserializer() { - } - - @Override - public XMLGregorianCalendar deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { - ObjectCodec oc = jp.getCodec(); - JsonNode node = oc.readTree(jp); - - try { - String literal = node.asText(); - if (literal == null) { - return null; - } else { - if (literal.contains("T")) { - return FEELXMLGregorianCalendar.makeXMLCalendar(this.dateTimeLib.dateTimeTemporalAccessor(literal)); - } else { - try { - return FEELXMLGregorianCalendar.makeXMLCalendar(this.dateTimeLib.dateTemporalAccessor(literal)); - } catch (Exception e) { - } - return FEELXMLGregorianCalendar.makeXMLCalendar(this.dateTimeLib.timeTemporalAccessor(literal)); - } - } - } catch (Exception e) { - throw new DMNRuntimeException(String.format("Error deserializing '%s' ", node), e); - } - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/runtime/serialization/XMLGregorianCalendarSerializer.java b/dmn-runtime/src/main/java/com/gs/dmn/runtime/serialization/XMLGregorianCalendarSerializer.java deleted file mode 100644 index facaa66b2..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/runtime/serialization/XMLGregorianCalendarSerializer.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.runtime.serialization; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; - -import javax.xml.datatype.XMLGregorianCalendar; -import java.io.IOException; - -public class XMLGregorianCalendarSerializer extends JsonSerializer { - @Override - public void serialize(XMLGregorianCalendar value, JsonGenerator gen, SerializerProvider serializers) throws IOException { - gen.writeString(value.toXMLFormat()); - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/serialization/JsonSerializer.java b/dmn-runtime/src/main/java/com/gs/dmn/serialization/JsonSerializer.java index 2bcc9bc57..e52b4922a 100644 --- a/dmn-runtime/src/main/java/com/gs/dmn/serialization/JsonSerializer.java +++ b/dmn-runtime/src/main/java/com/gs/dmn/serialization/JsonSerializer.java @@ -22,7 +22,6 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.gs.dmn.runtime.serialization.*; -import javax.xml.datatype.XMLGregorianCalendar; import java.time.LocalDate; import java.time.OffsetTime; import java.time.ZonedDateTime; @@ -35,10 +34,6 @@ public class JsonSerializer { static { SimpleModule module = new SimpleModule(); - // XML dialects - module.addSerializer(XMLGregorianCalendar.class, new XMLGregorianCalendarSerializer()); - module.addDeserializer(XMLGregorianCalendar.class, new XMLGregorianCalendarDeserializer()); - // java.time dialects module.addSerializer(LocalDate.class, new LocalDateSerializer()); module.addDeserializer(LocalDate.class, new LocalDateDeserializer()); diff --git a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/DefaultSignavioLib.java b/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/DefaultSignavioLib.java deleted file mode 100644 index 88c191830..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/DefaultSignavioLib.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.signavio.feel.lib; - -import com.gs.dmn.feel.lib.type.bool.BooleanLib; -import com.gs.dmn.feel.lib.type.bool.BooleanType; -import com.gs.dmn.feel.lib.type.bool.DefaultBooleanLib; -import com.gs.dmn.feel.lib.type.bool.DefaultBooleanType; -import com.gs.dmn.feel.lib.type.context.ContextType; -import com.gs.dmn.feel.lib.type.context.DefaultContextType; -import com.gs.dmn.feel.lib.type.function.DefaultFunctionType; -import com.gs.dmn.feel.lib.type.function.FunctionType; -import com.gs.dmn.feel.lib.type.list.DefaultListType; -import com.gs.dmn.feel.lib.type.list.ListType; -import com.gs.dmn.feel.lib.type.numeric.NumericType; -import com.gs.dmn.feel.lib.type.range.DefaultRangeType; -import com.gs.dmn.feel.lib.type.range.RangeType; -import com.gs.dmn.feel.lib.type.string.StringType; -import com.gs.dmn.feel.lib.type.time.*; -import com.gs.dmn.feel.lib.type.time.xml.DefaultDurationLib; -import com.gs.dmn.signavio.feel.lib.type.list.DefaultSignavioListLib; -import com.gs.dmn.signavio.feel.lib.type.list.SignavioListLib; -import com.gs.dmn.signavio.feel.lib.type.numeric.DecimalSignavioNumberLib; -import com.gs.dmn.signavio.feel.lib.type.numeric.DecimalSignavioNumericType; -import com.gs.dmn.signavio.feel.lib.type.numeric.SignavioNumberLib; -import com.gs.dmn.signavio.feel.lib.type.string.DefaultSignavioStringLib; -import com.gs.dmn.signavio.feel.lib.type.string.DefaultSignavioStringType; -import com.gs.dmn.signavio.feel.lib.type.string.SignavioStringLib; -import com.gs.dmn.signavio.feel.lib.type.time.SignavioDateTimeLib; -import com.gs.dmn.signavio.feel.lib.type.time.xml.*; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -/** - * @deprecated As of release 8.3.0, replaced by {@link JavaTimeSignavioLib} - */ -@Deprecated -public class DefaultSignavioLib extends BaseSignavioLib { - private static final NumericType NUMERIC_TYPE = new DecimalSignavioNumericType(); - private static final BooleanType BOOLEAN_TYPE = new DefaultBooleanType(); - private static final StringType STRING_TYPE = new DefaultSignavioStringType(); - private static final DateType DATE_TYPE = new DefaultSignavioDateType(); - private static final TimeType TIME_TYPE = new DefaultSignavioTimeType(); - private static final DateTimeType DATE_TIME_TYPE = new DefaultSignavioDateTimeType(); - private static final DurationType DURATION_TYPE = new DefaultSignavioDurationType(); - private static final ListType LIST_TYPE = new DefaultListType(); - private static final ContextType CONTEXT_TYPE = new DefaultContextType(); - private static final RangeType RANGE_TYPE = new DefaultRangeType(); - private static final FunctionType FUNCTION_TYPE = new DefaultFunctionType(); - - private static final SignavioNumberLib NUMBER_LIB = new DecimalSignavioNumberLib(); - private static final SignavioStringLib STRING_LIB = new DefaultSignavioStringLib(); - private static final BooleanLib BOOLEAN_LIB = new DefaultBooleanLib(); - private static final DurationLib DURATION_LIB = new DefaultDurationLib(); - private static final SignavioDateTimeLib DATE_TIME_LIB = new DefaultSignavioDateTimeLib(); - private static final SignavioListLib LIST_LIB = new DefaultSignavioListLib(); - - public static final DefaultSignavioLib INSTANCE = new DefaultSignavioLib(); - - public DefaultSignavioLib() { - this(NUMERIC_TYPE, - BOOLEAN_TYPE, - STRING_TYPE, - DATE_TYPE, - TIME_TYPE, - DATE_TIME_TYPE, - DURATION_TYPE, - LIST_TYPE, - CONTEXT_TYPE, - RANGE_TYPE, - FUNCTION_TYPE, - - NUMBER_LIB, - STRING_LIB, - BOOLEAN_LIB, - DATE_TIME_LIB, - DURATION_LIB, - LIST_LIB - ); - } - - protected DefaultSignavioLib( - NumericType numericType, BooleanType booleanType, StringType stringType, - DateType dateType, TimeType timeType, DateTimeType dateTimeType, DurationType durationType, - ListType listType, ContextType contextType, RangeType rangeType, FunctionType functionType, - SignavioNumberLib numberLib, - SignavioStringLib stringLib, - BooleanLib booleanLib, - SignavioDateTimeLib dateTimeLib, - DurationLib durationLib, - SignavioListLib listLib) { - super(numericType, booleanType, stringType, - dateType, timeType, dateTimeType, durationType, - listType, contextType, rangeType, functionType, - numberLib, stringLib, booleanLib, dateTimeLib, durationLib, listLib); - } - - // - // Extra conversion functions - // - @Override - protected BigDecimal valueOf(long number) { - return BigDecimal.valueOf(number); - } - - @Override - protected int intValue(BigDecimal number) { - return number.intValue(); - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/string/DefaultSignavioStringLib.java b/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/string/DefaultSignavioStringLib.java index 6b1fb7197..e0f65d2d5 100644 --- a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/string/DefaultSignavioStringLib.java +++ b/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/string/DefaultSignavioStringLib.java @@ -16,13 +16,10 @@ import com.gs.dmn.signavio.feel.lib.SignavioUtil; import org.apache.commons.lang3.StringUtils; -import javax.xml.datatype.XMLGregorianCalendar; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; -import java.time.LocalDate; -import java.time.OffsetTime; -import java.time.ZonedDateTime; +import java.time.*; import java.util.List; import java.util.Locale; import java.util.regex.Matcher; @@ -223,12 +220,16 @@ public String string(Object from) { return ((BigDecimal) from).toPlainString(); } else if (from instanceof LocalDate) { return ((LocalDate) from).format(BaseDateTimeLib.FEEL_DATE); + } else if (from instanceof LocalTime) { + return ((LocalTime) from).format(BaseDateTimeLib.FEEL_TIME); } else if (from instanceof OffsetTime) { return ((OffsetTime) from).format(BaseDateTimeLib.FEEL_TIME); + } else if (from instanceof LocalDateTime) { + return ((LocalDateTime) from).format(BaseDateTimeLib.FEEL_DATE_TIME); + } else if (from instanceof OffsetDateTime) { + return ((OffsetDateTime) from).format(BaseDateTimeLib.FEEL_DATE_TIME); } else if (from instanceof ZonedDateTime) { return ((ZonedDateTime) from).format(BaseDateTimeLib.FEEL_DATE_TIME); - } else if (from instanceof XMLGregorianCalendar) { - return from.toString(); } else { return from.toString(); } diff --git a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/SignavioBaseDateTimeLib.java b/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/SignavioBaseDateTimeLib.java index 8b9f6ca90..184dd5c34 100644 --- a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/SignavioBaseDateTimeLib.java +++ b/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/SignavioBaseDateTimeLib.java @@ -12,76 +12,5 @@ */ package com.gs.dmn.signavio.feel.lib.type.time; -import com.gs.dmn.feel.lib.type.BaseType; - -import javax.xml.datatype.XMLGregorianCalendar; -import java.time.*; - public class SignavioBaseDateTimeLib { - protected Period periodBetween(XMLGregorianCalendar dateTime1, XMLGregorianCalendar dateTime2) { - LocalDate localDate1 = LocalDate.of(dateTime1.getYear(), dateTime1.getMonth(), dateTime1.getDay()); - LocalDate localDate2 = LocalDate.of(dateTime2.getYear(), dateTime2.getMonth(), dateTime2.getDay()); - return Period.between(localDate1, localDate2); - } - - protected java.time.Duration durationBetween(XMLGregorianCalendar dateTime1, XMLGregorianCalendar dateTime2) { - if (isDate(dateTime1) && isDate(dateTime2)) { - LocalDateTime localDateTime1 = LocalDateTime.of( - dateTime1.getYear(), dateTime1.getMonth(), dateTime1.getDay(), - 0, 0, 0); - LocalDateTime localDateTime2 = LocalDateTime.of( - dateTime2.getYear(), dateTime2.getMonth(), dateTime2.getDay(), - 0, 0, 0); - return java.time.Duration.between(localDateTime1, localDateTime2); - - } else if (isTime(dateTime1) && isTime(dateTime2)) { - LocalDateTime localDateTime1 = LocalDateTime.of(1972, 1, 1, dateTime1.getHour(), dateTime1.getMinute(), dateTime1.getSecond()); - LocalDateTime localDateTime2 = LocalDateTime.of(1972, 1, 1, dateTime2.getHour(), dateTime2.getMinute(), dateTime2.getSecond()); - return java.time.Duration.between(localDateTime1, localDateTime2); - } else if (isDateTime(dateTime1) && isDateTime(dateTime2)) { - LocalDateTime localDateTime1 = LocalDateTime.of( - dateTime1.getYear(), dateTime1.getMonth(), dateTime1.getDay(), - dateTime1.getHour(), dateTime1.getMinute(), dateTime1.getSecond()); - LocalDateTime localDateTime2 = LocalDateTime.of( - dateTime2.getYear(), dateTime2.getMonth(), dateTime2.getDay(), - dateTime2.getHour(), dateTime2.getMinute(), dateTime2.getSecond()); - return java.time.Duration.between(localDateTime1, localDateTime2); - } else { - return null; - } - } - - protected Period periodBetween(LocalDate date1, LocalDate date2) { - return Period.between(date1, date2); - } - - protected Period periodBetween(ZonedDateTime dateTime1, ZonedDateTime dateTime2) { - LocalDate localDate1 = LocalDate.of(dateTime1.getYear(), dateTime1.getMonth(), dateTime1.getDayOfMonth()); - LocalDate localDate2 = LocalDate.of(dateTime2.getYear(), dateTime2.getMonth(), dateTime2.getDayOfMonth()); - return Period.between(localDate1, localDate2); - } - - protected java.time.Duration durationBetween(LocalDate date1, LocalDate date2) { - return java.time.Duration.between(date1.atStartOfDay(BaseType.UTC), date2.atStartOfDay(BaseType.UTC)); - } - - protected java.time.Duration durationBetween(OffsetTime time1, OffsetTime time2) { - return java.time.Duration.between(time1, time2); - } - - protected java.time.Duration durationBetween(ZonedDateTime dateTime1, ZonedDateTime dateTime2) { - return java.time.Duration.between(dateTime1, dateTime2); - } - - protected boolean isDate(XMLGregorianCalendar dateTime) { - return dateTime.getYear() >= 0 && dateTime.getHour() < 0; - } - - protected boolean isTime(XMLGregorianCalendar dateTime1) { - return dateTime1.getYear() < 0 && dateTime1.getHour() >= 0; - } - - protected boolean isDateTime(XMLGregorianCalendar dateTime1) { - return dateTime1.getYear() >= 0 && dateTime1.getHour() >= 0; - } } diff --git a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioDateTimeLib.java b/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioDateTimeLib.java deleted file mode 100644 index e4ca3cdbb..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioDateTimeLib.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.signavio.feel.lib.type.time.xml; - -import com.gs.dmn.feel.lib.type.time.xml.DefaultDateTimeLib; -import com.gs.dmn.feel.lib.type.time.xml.FEELXMLGregorianCalendar; -import com.gs.dmn.feel.lib.type.time.xml.XMLDurationFactory; -import com.gs.dmn.signavio.feel.lib.type.time.SignavioBaseDateTimeLib; -import com.gs.dmn.signavio.feel.lib.type.time.SignavioDateTimeLib; - -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; -import java.time.Duration; -import java.time.LocalDate; -import java.time.Period; -import java.time.ZonedDateTime; -import java.util.Calendar; - -public class DefaultSignavioDateTimeLib extends SignavioBaseDateTimeLib implements SignavioDateTimeLib { - private static final DefaultDateTimeLib DEFAULT_DATE_TIME_LIB = new DefaultDateTimeLib(); - - // - // Common methods - // - @Override - public XMLGregorianCalendar date(String literal) { - return DEFAULT_DATE_TIME_LIB.date(literal); - } - - @Override - public XMLGregorianCalendar time(String literal) { - return DEFAULT_DATE_TIME_LIB.time(literal); - } - - @Override - public XMLGregorianCalendar dateAndTime(String literal) { - return DEFAULT_DATE_TIME_LIB.dateAndTime(literal); - } - - @Override - public Integer year(Object date) { - return DEFAULT_DATE_TIME_LIB.year(date); - } - - @Override - public Integer month(Object date) { - return DEFAULT_DATE_TIME_LIB.month(date); - } - - @Override - public Integer day(Object date) { - return DEFAULT_DATE_TIME_LIB.day(date); - } - - @Override - public Integer hour(Object date) { - return DEFAULT_DATE_TIME_LIB.hour(date); - } - - @Override - public Integer minute(Object date) { - return DEFAULT_DATE_TIME_LIB.minute(date); - } - - @Override - public XMLGregorianCalendar toDate(Object from) { - return DEFAULT_DATE_TIME_LIB.toDate(from); - } - - @Override - public XMLGregorianCalendar toTime(Object from) { - return DEFAULT_DATE_TIME_LIB.toTime(from); - } - - @Override - public XMLGregorianCalendar toDateTime(Object from) { - return DEFAULT_DATE_TIME_LIB.toDateTime(from); - } - - // - // Specific methods - // - @Override - public XMLGregorianCalendar yearAdd(XMLGregorianCalendar date, BigDecimal yearsToAdd) { - XMLGregorianCalendar result = (XMLGregorianCalendar) date.clone(); - javax.xml.datatype.Duration duration = XMLDurationFactory.INSTANCE.yearMonthWithYears(yearsToAdd.intValue()); - result.add(duration); - return result; - } - - @Override - public XMLGregorianCalendar yearAddDateTime(XMLGregorianCalendar dateTime, BigDecimal yearsToAdd) { - return yearAdd(dateTime, yearsToAdd); - } - - @Override - public Long yearDiff(Object date1, Object date2) { - Period period = periodBetween((XMLGregorianCalendar) date1, (XMLGregorianCalendar) date2); - return (long) period.getYears(); - } - - @Override - public XMLGregorianCalendar monthAdd(XMLGregorianCalendar date, BigDecimal monthsToAdd) { - XMLGregorianCalendar result = (XMLGregorianCalendar) date.clone(); - javax.xml.datatype.Duration duration = XMLDurationFactory.INSTANCE.yearMonthWithMonths(monthsToAdd.intValue()); - result.add(duration); - return result; - } - - @Override - public XMLGregorianCalendar monthAddDateTime(XMLGregorianCalendar dateTime, BigDecimal monthsToAdd) { - return monthAdd(dateTime, monthsToAdd); - } - - @Override - public Long monthDiff(Object date1, Object date2) { - Period period = periodBetween((XMLGregorianCalendar) date1, (XMLGregorianCalendar) date2); - return period.toTotalMonths(); - } - - @Override - public XMLGregorianCalendar dayAdd(XMLGregorianCalendar date, BigDecimal daysToAdd) { - XMLGregorianCalendar result = (XMLGregorianCalendar) date.clone(); - javax.xml.datatype.Duration duration = XMLDurationFactory.INSTANCE.dayTimeWithDays(daysToAdd.intValue()); - result.add(duration); - return result; - } - - @Override - public XMLGregorianCalendar dayAddDateTime(XMLGregorianCalendar dateTime, BigDecimal daysToAdd) { - return dayAdd(dateTime, daysToAdd); - } - - @Override - public Long dayDiff(Object date1, Object date2) { - java.time.Duration duration = durationBetween((XMLGregorianCalendar) date1, (XMLGregorianCalendar) date2); - return duration == null ? null : duration.getSeconds() / (60 * 60 * 24); - } - - @Override - public Integer weekday(Object date) { - if (date == null) { - return null; - } - - XMLGregorianCalendar xmlDate = (XMLGregorianCalendar) date; - int weekDay = xmlDate.toGregorianCalendar().get(Calendar.DAY_OF_WEEK); - weekDay--; - if (weekDay == 0) { - weekDay = 7; - } - return weekDay; - } - - @Override - public Long hourDiff(Object time1, Object time2) { - Duration duration = durationBetween((XMLGregorianCalendar) time1, (XMLGregorianCalendar) time2); - return duration == null ? null : duration.getSeconds() / (60 * 60); - } - - @Override - public Long minutesDiff(Object time1, Object time2) { - Duration duration = durationBetween((XMLGregorianCalendar) time1, (XMLGregorianCalendar) time2); - return duration == null ? null : duration.getSeconds() / 60; - } - - @Override - public XMLGregorianCalendar today() { - return FEELXMLGregorianCalendar.makeXMLCalendar(LocalDate.now()); - } - - @Override - public XMLGregorianCalendar now() { - return FEELXMLGregorianCalendar.makeXMLCalendar(ZonedDateTime.now()); - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioDateTimeType.java b/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioDateTimeType.java deleted file mode 100644 index a38f234d2..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioDateTimeType.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.signavio.feel.lib.type.time.xml; - -import com.gs.dmn.feel.lib.type.time.xml.DefaultDateTimeType; - -public class DefaultSignavioDateTimeType extends DefaultDateTimeType { - public DefaultSignavioDateTimeType() { - super(DefaultSignavioXMLCalendarComparator.COMPARATOR); - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioDateType.java b/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioDateType.java deleted file mode 100644 index 0090d7e43..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioDateType.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.signavio.feel.lib.type.time.xml; - -import com.gs.dmn.feel.lib.type.time.xml.DefaultDateType; - -public class DefaultSignavioDateType extends DefaultDateType { - public DefaultSignavioDateType() { - super(new DefaultSignavioXMLCalendarComparator()); - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioTimeType.java b/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioTimeType.java deleted file mode 100644 index 7f734c67b..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioTimeType.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.signavio.feel.lib.type.time.xml; - -import com.gs.dmn.feel.lib.type.time.xml.DefaultTimeType; - -public class DefaultSignavioTimeType extends DefaultTimeType { - public DefaultSignavioTimeType() { - super(new DefaultSignavioXMLCalendarComparator()); - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioXMLCalendarComparator.java b/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioXMLCalendarComparator.java deleted file mode 100644 index d5096dcfe..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DefaultSignavioXMLCalendarComparator.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.signavio.feel.lib.type.time.xml; - -import com.gs.dmn.feel.lib.type.time.xml.DefaultXMLCalendarComparator; - -import javax.xml.datatype.XMLGregorianCalendar; - -public class DefaultSignavioXMLCalendarComparator extends DefaultXMLCalendarComparator { - public static final DefaultSignavioXMLCalendarComparator COMPARATOR = new DefaultSignavioXMLCalendarComparator(); - - protected DefaultSignavioXMLCalendarComparator() { - } - - @Override - public Boolean lessEqualThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - if (first == null && second == null) { - return null; - } else { - return super.lessEqualThan(first, second); - } - } - - @Override - public Boolean greaterEqualThan(XMLGregorianCalendar first, XMLGregorianCalendar second) { - if (first == null && second == null) { - return null; - } else { - return super.greaterEqualThan(first, second); - } - } -} diff --git a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DoubleSignavioDurationType.java b/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DoubleSignavioDurationType.java deleted file mode 100644 index ec64ff5c7..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/signavio/feel/lib/type/time/xml/DoubleSignavioDurationType.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.signavio.feel.lib.type.time.xml; - -import com.gs.dmn.feel.lib.type.time.xml.DoubleDurationType; - -public class DoubleSignavioDurationType extends DoubleDurationType { - public DoubleSignavioDurationType() { - super(DefaultSignavioDurationComparator.COMPARATOR); - } - } diff --git a/dmn-runtime/src/main/java/com/gs/dmn/signavio/runtime/DefaultSignavioBaseDecision.java b/dmn-runtime/src/main/java/com/gs/dmn/signavio/runtime/DefaultSignavioBaseDecision.java deleted file mode 100644 index 1ba1c5fc2..000000000 --- a/dmn-runtime/src/main/java/com/gs/dmn/signavio/runtime/DefaultSignavioBaseDecision.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.signavio.runtime; - -import com.gs.dmn.runtime.ExecutionContext; -import com.gs.dmn.runtime.annotation.AnnotationTarget; -import com.gs.dmn.runtime.annotation.DRGElement; -import com.gs.dmn.runtime.annotation.Rule; -import com.gs.dmn.signavio.feel.lib.DefaultSignavioLib; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.lang.reflect.Method; -import java.math.BigDecimal; -import java.util.Map; - -/** - * @deprecated As of release 8.3.0, replaced by {@link JavaTimeSignavioBaseDecision} - */ -@Deprecated -public class DefaultSignavioBaseDecision extends DefaultSignavioLib - implements SignavioDecision, - AnnotationTarget -{ - @Override - public Object applyMap(Map input_, ExecutionContext context_) { - return null; - } - - @Override - public DRGElement getDRGElementAnnotation() { - return this.getClass().getAnnotation(DRGElement.class); - } - - @Override - public Rule getRuleAnnotation(int ruleIndex) { - String methodName = String.format("rule%d", ruleIndex); - Class cls = this.getClass(); - Method[] declaredMethods = cls.getDeclaredMethods(); - for (Method method : declaredMethods) { - if (methodName.equals(method.getName())) { - return method.getAnnotation(Rule.class); - } - } - return null; - } -} diff --git a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/DefaultFEELLibExceptionsTest.java b/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/DefaultFEELLibExceptionsTest.java deleted file mode 100644 index 4565444e7..000000000 --- a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/DefaultFEELLibExceptionsTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.lib; - -import com.gs.dmn.feel.lib.stub.*; -import com.gs.dmn.feel.lib.type.bool.BooleanLib; -import com.gs.dmn.feel.lib.type.bool.BooleanType; -import com.gs.dmn.feel.lib.type.context.ContextType; -import com.gs.dmn.feel.lib.type.function.FunctionType; -import com.gs.dmn.feel.lib.type.list.ListLib; -import com.gs.dmn.feel.lib.type.list.ListType; -import com.gs.dmn.feel.lib.type.numeric.NumericLib; -import com.gs.dmn.feel.lib.type.numeric.NumericType; -import com.gs.dmn.feel.lib.type.range.RangeLib; -import com.gs.dmn.feel.lib.type.range.RangeType; -import com.gs.dmn.feel.lib.type.string.StringLib; -import com.gs.dmn.feel.lib.type.string.StringType; -import com.gs.dmn.feel.lib.type.time.*; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -public class DefaultFEELLibExceptionsTest extends BaseStandardFEELLibExceptionsTest { - @Override - protected DefaultFEELLib getLib() { - NumericType numericType = new NumericTypeStub<>(); - BooleanType booleanType = new BooleanTypeStub(); - StringType stringType = new StringTypeStub(); - DateType dateType = new DateTypeStub<>(); - TimeType timeType = new TimeTypeStub<>(); - DateTimeType dateTimeType = new DateTimeTypeStub<>(); - DurationType durationType = new DurationTypeStub<>(); - ListType listType = new ListTypeStub(); - ContextType contextType = new ContextTypeStub(); - RangeType rangeType = new RangeTypeStub(); - FunctionType functionType = new FunctionTypeStub(); - NumericLib numericLib = new NumericLibStub<>(); - StringLib stringLib = new StringLibStub(); - BooleanLib booleanLib = new BooleanLibStub(); - DateTimeLib dateTimeLib = new DateTimeLibStub<>(); - DurationLib durationLib = new DurationLibStub<>(); - ListLib listLib = new ListLibStub(); - RangeLib rangeLib = new RangeLibStub(); - return new DefaultFEELLib( - numericType, booleanType, stringType, - dateType, timeType, dateTimeType, durationType, - listType, contextType, rangeType, functionType, - numericLib, stringLib, booleanLib, dateTimeLib, durationLib, listLib, rangeLib - ); - } -} \ No newline at end of file diff --git a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/DefaultFEELLibTest.java b/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/DefaultFEELLibTest.java deleted file mode 100644 index f5456481a..000000000 --- a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/DefaultFEELLibTest.java +++ /dev/null @@ -1,368 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.lib; - -import org.junit.jupiter.api.Test; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -import static org.junit.jupiter.api.Assertions.*; - -public class DefaultFEELLibTest extends BaseStandardFEELLibTest { - @Override - protected DefaultFEELLib getLib() { - return new DefaultFEELLib(); - } - - // - // Date operators - // - @Test - @Override - public void testDateSubtract() { - super.testDateSubtract(); - - // Subtraction is undefined for the case where only one of the values has a timezone. - assertNull(getLib().dateSubtract(makeDate("2021-01-02"), makeDateAndTime("2021-01-01T00:00:00"))); - } - - @Test - @Override - public void testDateAddDuration() { - super.testDateAddDuration(); - - assertEqualsDateTime("2016-08-02", getLib().dateAddDuration(makeDate("2016-08-01"), makeDuration("P1D"))); - assertEqualsDateTime("2016-09-01", getLib().dateAddDuration(makeDate("2016-08-31"), makeDuration("P1D"))); - - assertEqualsDateTime("2021-01-02", getLib().dateAddDuration(makeDate("2021-01-01"), makeDuration("PT36H"))); - assertEqualsDateTime("2021-01-01", getLib().dateAddDuration(makeDate("2021-01-01"), makeDuration("PT1H"))); - assertEqualsDateTime("2021-01-01", getLib().dateAddDuration(makeDate("2021-01-01"), makeDuration("PT1M"))); - assertEqualsDateTime("2021-01-01", getLib().dateAddDuration(makeDate("2021-01-01"), makeDuration("PT1S"))); - } - - @Test - @Override - public void testDateSubtractDuration() { - super.testDateSubtractDuration(); - - assertEqualsDateTime("2016-08-01", getLib().dateSubtractDuration(makeDate("2016-08-02"), makeDuration("P1D"))); - assertEqualsDateTime("2016-07-31", getLib().dateSubtractDuration(makeDate("2016-08-01"), makeDuration("P1D"))); - - assertEqualsDateTime("2020-12-30", getLib().dateSubtractDuration(makeDate("2021-01-01"), makeDuration("PT36H"))); - assertEqualsDateTime("2021-01-01", getLib().dateSubtractDuration(makeDate("2021-01-02"), makeDuration("PT1H"))); - assertEqualsDateTime("2021-01-01", getLib().dateSubtractDuration(makeDate("2021-01-02"), makeDuration("PT1M"))); - assertEqualsDateTime("2021-01-01", getLib().dateSubtractDuration(makeDate("2021-01-02"), makeDuration("PT1S"))); - assertEqualsDateTime("2020-12-31", getLib().dateSubtractDuration(makeDate("2021-01-02"), makeDuration("PT25H"))); - } - - // - // Time operators - // - @Override - @Test - public void testTimeIs() { - super.testTimeIs(); - - // times with equivalent offset and zone id are not is() - assertFalse(getLib().timeIs(makeTime("12:00:00"), makeTime("12:00:00Z"))); - assertFalse(getLib().timeIs(makeTime("12:00:00"), makeTime("12:00:00+00:00"))); - assertFalse(getLib().timeIs(makeTime("00:00:00+00:00"), makeTime("00:00:00@Etc/UTC"))); - assertTrue(getLib().timeIs(makeTime("00:00:00Z"), makeTime("00:00:00+00:00"))); - assertFalse(getLib().timeIs(makeTime("00:00:00Z"), makeTime("00:00:00@Etc/UTC"))); - assertFalse(getLib().timeIs(makeTime("00:00:00Etc/UTC"), makeTime("00:00:00@Europe/Paris"))); - } - - @Test - @Override - public void testTimeSubtract() { - super.testTimeSubtract(); - - assertEqualsDateTime("-PT1H", getLib().timeSubtract(makeTime("10:10:10@Australia/Melbourne"), makeTime("11:10:10@Australia/Melbourne"))); - assertEqualsDateTime("PT1H", getLib().timeSubtract(makeTime("10:10:10@Australia/Melbourne"), makeTime("09:10:10@Australia/Melbourne"))); - } - - @Test - @Override - public void testTimeAddDuration() { - super.testTimeAddDuration(); - - assertEqualsDateTime("10:15:00@Australia/Melbourne", getLib().timeAddDuration(makeTime("10:15:00@Australia/Melbourne"), makeDuration("P1D"))); - assertEqualsDateTime("11:15:00@Australia/Melbourne", getLib().timeAddDuration(makeTime("10:15:00@Australia/Melbourne"), makeDuration("PT1H"))); - } - - // - // Date time operators - // - @Override - @Test - public void testDateTimeIs() { - super.testDateTimeIs(); - - // datetime with equivalent offset and zone id are not is() - assertFalse(getLib().dateTimeIs(makeDateAndTime("2018-12-08T12:00:00"), makeDateAndTime("2018-12-08T12:00:00+00:00"))); - assertFalse(getLib().dateTimeIs(makeDateAndTime("2018-12-08T00:00:00+00:00"), makeDateAndTime("2018-12-08T00:00:00@Etc/UTC"))); - assertTrue(getLib().dateTimeIs(makeDateAndTime("2018-12-08T12:00:00Z"), makeDateAndTime("2018-12-08T12:00:00+00:00"))); - assertFalse(getLib().dateTimeIs(makeDateAndTime("2018-12-08T00:00:00Z"), makeDateAndTime("2018-12-08T00:00:00@Etc/UTC"))); - } - - @Test - @Override - public void testDateTimeSubtract() { - super.testDateTimeSubtract(); - - // Subtraction is undefined for the case where only one of the values has a timezone. - assertNull(getLib().dateTimeSubtract(makeDateAndTime("2021-01-02T10:10:10@Europe/Paris"), makeDateAndTime("2021-01-01T10:10:10"))); - assertNull(getLib().dateTimeSubtract(makeDateAndTime("2021-01-01T10:10:10"), makeDateAndTime("2021-01-02T10:10:10@Europe/Paris"))); - assertNull(getLib().dateTimeSubtract(makeDateAndTime("2021-01-02T10:10:10+02:00"), makeDateAndTime("2021-01-01T10:10:10"))); - assertNull(getLib().dateTimeSubtract(makeDateAndTime("2021-01-01T10:10:10"), makeDateAndTime("2021-01-02T10:10:10+02:00"))); - assertNull(getLib().dateTimeSubtract(makeDateAndTime("2021-01-02T10:10:10+01:00"), makeDateAndTime("2021-01-01T10:10:10"))); - - // Subtraction is undefined for the case where only one of the values has a timezone. - assertNull(getLib().dateTimeSubtract(makeDateAndTime("2021-01-01T00:00:00"), makeDate("2021-01-02"))); - } - - // - // Conversion functions - // - @Override - @Test - public void testDate() { - super.testDate(); - - assertEqualsDateTime("2016-08-01", getLib().date(makeDateAndTime("2016-08-01T12:00:00Z"))); - } - - @Override - @Test - public void testTime() { - super.testTime(); - - // - // conversion from time, date and date time - // - assertEqualsDateTime("12:00:00Z", getLib().time(makeTime("12:00:00Z"))); - assertEqualsDateTime("00:00:00Z", getLib().time(makeDate("2017-08-10"))); - assertEqualsDateTime("11:00:00Z", getLib().time(makeDateAndTime("2016-08-01T11:00:00Z"))); - - // - // conversion from numbers - // - assertEqualsDateTime("12:00:00", getLib().time(makeNumber("12"), makeNumber("00"), makeNumber("00"), null)); - - // - // conversion from date, time and date time - // - assertEqualsDateTime("00:00:00Z", getLib().time(makeDate("2017-08-10"))); - assertEqualsDateTime("12:00:00Z", getLib().time(makeTime("12:00:00Z"))); - assertEqualsDateTime("11:00:00Z", getLib().time(makeDateAndTime("2016-08-01T11:00:00Z"))); - } - - @Override - @Test - public void testDateAndTime() { - super.testDateAndTime(); - - // - // conversion from string - // - assertEqualsDateTime("2016-08-01T00:00:00", getLib().dateAndTime("2016-08-01")); - - // missing Z - assertEqualsDateTime("-2016-01-30T09:05:00", getLib().dateAndTime("-2016-01-30T09:05:00")); - assertEqualsDateTime("-2017-02-28T02:02:02", getLib().dateAndTime("-2017-02-28T02:02:02")); - - // with zone id - assertEqualsDateTime("2011-12-03T10:15:30@Europe/Paris", getLib().dateAndTime("2011-12-03T10:15:30@Europe/Paris")); - - // year must be in the range [-999,999,999..999,999,999] - assertEqualsDateTime("-999999999-12-31T11:22:33", getLib().dateAndTime("-999999999-12-31T11:22:33")); - assertEqualsDateTime("999999999-12-31T11:22:33", getLib().dateAndTime("999999999-12-31T11:22:33")); - assertNull(getLib().dateAndTime("-9999999991-12-31T11:22:33")); - assertNull(getLib().dateAndTime("9999999991-12-31T11:22:33")); - } - - @Override - @Test - public void testDuration() { - super.testDuration(); - - assertEqualsDateTime("P1Y8M", getLib().duration("P1Y8M")); - assertEqualsDateTime("P999999999M", getLib().duration("P999999999M")); - assertEqualsDateTime("-P999999999M", getLib().duration("-P999999999M")); - - assertEqualsDateTime("P2DT20H", getLib().duration("P2DT20H")); - assertEqualsDateTime("-PT2H", getLib().duration("-PT2H")); - assertEqualsDateTime("PT0S", getLib().duration("PT0.S")); - - assertNull(getLib().duration("P1Y0M2DT6H58M59.000S")); - - // Overflow in duration(from) - assertEquals("P11999999988M", getLib().duration("P11999999988M").toString()); - assertEquals("P2129706043D", getLib().duration("P2129706043D").toString()); - } - - @Override - @Test - public void testYearsAndMonthsDuration() { - super.testYearsAndMonthsDuration(); - - assertEqualsDateTime("P0M", getLib().yearsAndMonthsDuration(makeDateAndTime("2015-12-24T12:15:00.000+01:00"), makeDateAndTime("2015-12-24T12:15:00.000+01:00"))); - assertEqualsDateTime("P1Y0M", getLib().yearsAndMonthsDuration(makeDateAndTime("2015-12-24T00:00:01-01:00"), makeDateAndTime("2016-12-24T23:59:00-08:00"))); - assertEqualsDateTime("P1Y2M", getLib().yearsAndMonthsDuration(makeDateAndTime("2016-09-30T23:25:00"), makeDateAndTime("2017-12-28T12:12:12"))); - assertEqualsDateTime("P7Y6M", getLib().yearsAndMonthsDuration(makeDateAndTime("2010-05-30T03:55:58"), makeDateAndTime("2017-12-15T00:59:59"))); - assertEqualsDateTime("-P4033Y2M", getLib().yearsAndMonthsDuration(makeDateAndTime("2014-12-31T23:59:59"), makeDateAndTime("-2019-10-01T12:32:59"))); - assertEqualsDateTime("-P4035Y11M", getLib().yearsAndMonthsDuration(makeDateAndTime("2017-09-05T10:20:00-01:00"), makeDateAndTime("-2019-10-01T12:32:59+02:00"))); - - assertEqualsDateTime("-P11M", getLib().yearsAndMonthsDuration(makeDateAndTime("-2016-01-30T09:05:00"), makeDateAndTime("-2017-02-28T02:02:02"))); - assertEqualsDateTime("-P4033Y2M", getLib().yearsAndMonthsDuration(makeDateAndTime("2014-12-31T23:59:59"), makeDateAndTime("-2019-10-01T12:32:59"))); - assertEqualsDateTime("-P4035Y11M", getLib().yearsAndMonthsDuration(makeDateAndTime("2017-09-05T10:20:00-01:00"), makeDateAndTime("-2019-10-01T12:32:59+02:00"))); - assertEqualsDateTime("P2Y0M", getLib().yearsAndMonthsDuration(makeDateAndTime("2017-09-05T10:20:00+05:00"), makeDateAndTime("2019-10-01T12:32:59"))); - assertEqualsDateTime("P1Y0M", getLib().yearsAndMonthsDuration(makeDateAndTime("2017-09-05T10:20:00@Etc/UTC"), makeDateAndTime("2018-10-01T23:59:59"))); - assertEqualsDateTime("P4Y0M", getLib().yearsAndMonthsDuration(makeDateAndTime("2011-08-25T15:59:59@Europe/Paris"), makeDateAndTime("2015-08-25T15:20:59+02:00"))); - assertEqualsDateTime("P2Y9M", getLib().yearsAndMonthsDuration(makeDateAndTime("2015-12-31T23:59:59.9999999"), makeDateAndTime("2018-10-01T12:32:59.111111"))); - assertEqualsDateTime("P3Y0M", getLib().yearsAndMonthsDuration(makeDateAndTime("2016-09-05T22:20:55.123456+05:00"), makeDateAndTime("2019-10-01T12:32:59.32415645"))); - assertEqualsDateTime("P2Y0M", getLib().yearsAndMonthsDuration(makeDateAndTime("2014-12-31T23:59:59"), makeDateAndTime("2016-12-31T00:00:01"))); - } - - @Test - public void testString() { - assertEquals("null", getLib().string(null)); - - // test number - assertEquals("123.45", getLib().string(makeNumber("123.45"))); - - // test string - assertEquals("true", getLib().string(true)); - - // test date - assertEquals("2016-08-01", getLib().string(makeDate("2016-08-01"))); - assertEquals("999999999-12-31", getLib().string(makeDate("999999999-12-31"))); - assertEquals("-999999999-12-31", getLib().string(makeDate("-999999999-12-31"))); - assertEquals("999999999-12-31", getLib().string(getLib().date(makeNumber(999999999), makeNumber(12), makeNumber(31)))); - assertEquals("-999999999-12-31", getLib().string(getLib().date(makeNumber(-999999999), makeNumber(12), makeNumber(31)))); - - // test time - assertEquals("11:00:01", getLib().string(makeTime("11:00:01"))); - assertEquals("11:00:01Z", getLib().string(makeTime("11:00:01Z"))); - assertEquals("00:01:00@Etc/UTC", getLib().string(makeTime("00:01:00@Etc/UTC"))); - assertEquals("00:01:00@Europe/Paris", getLib().string(makeTime("00:01:00@Europe/Paris"))); - assertEquals("10:20:00@Europe/Paris", getLib().string(getLib().time(makeDateAndTime("2017-08-10T10:20:00@Europe/Paris")))); - assertEquals("11:20:00@Asia/Dhaka", getLib().string(getLib().time(makeDateAndTime("2017-09-04T11:20:00@Asia/Dhaka")))); - assertEquals("11:59:45+02:45:55", getLib().string(getLib().time(makeNumber(11), makeNumber(59), makeNumber(45), getLib().duration("PT2H45M55S")))); - assertEquals("11:59:45-02:45:55", getLib().string(getLib().time(makeNumber(11), makeNumber(59), makeNumber(45), getLib().duration("-PT2H45M55S")))); - assertEquals("00:00:00Z", getLib().string(getLib().time(makeDate("2017-08-10")))); - - // test date time - assertEquals("2016-08-01T11:00:01", getLib().string(makeDateAndTime("2016-08-01T11:00:01"))); - assertEquals("2016-08-01T11:00:01Z", getLib().string(makeDateAndTime("2016-08-01T11:00:01Z"))); - assertEquals("99999-12-31T11:22:33", getLib().string(makeDateAndTime("99999-12-31T11:22:33"))); - assertEquals("-99999-12-31T11:22:33", getLib().string(makeDateAndTime("-99999-12-31T11:22:33"))); - assertEquals("2011-12-31T10:15:30@Europe/Paris", getLib().string(makeDateAndTime("2011-12-31T10:15:30@Europe/Paris"))); - assertEquals("2011-12-31T10:15:30@Etc/UTC", getLib().string(makeDateAndTime("2011-12-31T10:15:30@Etc/UTC"))); - assertEquals("2011-12-31T10:15:30.987@Europe/Paris", getLib().string(makeDateAndTime("2011-12-31T10:15:30.987@Europe/Paris"))); - assertEquals("2011-12-31T10:15:30.123456789@Europe/Paris", getLib().string(makeDateAndTime("2011-12-31T10:15:30.123456789@Europe/Paris"))); - assertEquals("999999999-12-31T23:59:59.999999999@Europe/Paris", getLib().string(makeDateAndTime("999999999-12-31T23:59:59.999999999@Europe/Paris"))); - assertEquals("-999999999-12-31T23:59:59.999999999+02:00", getLib().string(makeDateAndTime("-999999999-12-31T23:59:59.999999999+02:00"))); - assertEquals("2017-01-01T23:59:01@Europe/Paris", getLib().string(getLib().dateAndTime(makeDate("2017-01-01"), makeTime("23:59:01@Europe/Paris")))); - assertEquals("2017-01-01T23:59:01.123456789@Europe/Paris", getLib().string(getLib().dateAndTime(makeDate("2017-01-01"), makeTime("23:59:01.123456789@Europe/Paris")))); - assertEquals("2017-09-05T09:15:30.987654321@Europe/Paris", getLib().string(getLib().dateAndTime(makeDateAndTime("2017-09-05T10:20:00"), makeTime("09:15:30.987654321@Europe/Paris")))); - assertEquals("2017-09-05T09:15:30.987654321@Europe/Paris", getLib().string(getLib().dateAndTime(makeDateAndTime("2017-09-05T10:20:00-01:00"), makeTime("09:15:30.987654321@Europe/Paris")))); - assertEquals("2017-09-05T09:15:30.987654321@Europe/Paris", getLib().string(getLib().dateAndTime(makeDateAndTime("2017-09-05T10:20:00@Europe/Paris"), makeTime("09:15:30.987654321@Europe/Paris")))); - } - - // - // Extra conversion functions - // - @Override - @Test - public void testToDateTime() { - super.testToDateTime(); - - assertEqualsDateTime("2016-08-01T00:00:00Z", getLib().toDateTime(makeDate("2016-08-01"))); - assertEqualsDateTime("2016-08-01T12:00:00Z", getLib().toDateTime(makeDateAndTime("2016-08-01T12:00:00Z"))); - } - - // - // Time properties - // - @Override - @Test - public void testTimeProperties() { - assertNull(getLib().hour(null)); - assertEqualsNumber(makeNumber("12"), getLib().hour(makeTime("12:01:02Z"))); - - assertNull(getLib().minute(null)); - assertEqualsNumber(makeNumber("1"), getLib().minute(makeTime("12:01:02Z"))); - - assertNull(getLib().second(null)); - assertEqualsNumber(makeNumber("2"), getLib().second(makeTime("12:01:02Z"))); - - assertNull(getLib().timeOffset(null)); - assertNull(getLib().timeOffset(makeTime("12:01:02"))); - assertEqualsDateTime("PT1H", getLib().timeOffset(makeTime("12:01:02+01:00"))); - assertEqualsDateTime("PT0S", getLib().timeOffset(makeTime("12:01:02Z"))); - assertEqualsDateTime("PT0S", getLib().timeOffset(makeTime("12:01:02@Etc/UTC"))); - assertEqualsDateTime("PT1H", getLib().timeOffset(makeTime("12:01:02@Europe/Paris"))); - - assertNull(getLib().timezone(null)); - assertNull(getLib().timezone(makeTime("12:01:02"))); - assertEquals("+01:00", getLib().timezone(makeTime("12:01:02+01:00"))); - assertEquals("Z", getLib().timezone(makeTime("12:01:02Z"))); - assertEquals("Etc/UTC", getLib().timezone(makeTime("12:01:02@Etc/UTC"))); - assertEquals("Europe/Paris", getLib().timezone(makeTime("12:01:02@Europe/Paris"))); - } - - // - // Date and time properties - // - @Override - @Test - public void testDateAndTimeProperties() { - assertNull(getLib().year(null)); - assertEqualsNumber(makeNumber("2018"), getLib().year(makeDateAndTime("2018-12-10T12:01:02Z"))); - - assertNull(getLib().month(null)); - assertEqualsNumber(makeNumber("12"), getLib().month(makeDateAndTime("2018-12-10T12:01:02Z"))); - - assertNull(getLib().day(null)); - assertEqualsNumber(makeNumber("10"), getLib().day(makeDateAndTime("2018-12-10T12:01:02Z"))); - - assertNull(getLib().weekday(null)); - assertEqualsNumber(makeNumber("1"), getLib().weekday(makeDateAndTime("2018-12-10T12:01:02Z"))); - - assertNull(getLib().hour(null)); - assertEqualsNumber(makeNumber("12"), getLib().hour(makeDateAndTime("2018-12-10T12:01:02Z"))); - - assertNull(getLib().minute(null)); - assertEqualsNumber(makeNumber("1"), getLib().minute(makeDateAndTime("2018-12-10T12:01:02Z"))); - - assertNull(getLib().second(null)); - assertEqualsNumber(makeNumber("2"), getLib().second(makeDateAndTime("2018-12-10T12:01:02Z"))); - - assertNull(getLib().timeOffset(null)); - assertNull(getLib().timeOffset(makeDateAndTime("2018-12-10T12:01:02"))); - assertEquals(makeDuration("PT1H"), getLib().timeOffset(makeDateAndTime("2018-12-10T12:01:02+01:00"))); - assertEquals(makeDuration("PT0S"), getLib().timeOffset(makeDateAndTime("2018-12-10T12:01:02Z"))); - assertEquals(makeDuration("PT0S"), getLib().timeOffset(makeDateAndTime("2018-12-10T12:01:02@Etc/UTC"))); - assertEquals(makeDuration("PT1H"), getLib().timeOffset(makeDateAndTime("2018-12-10T12:01:02@Europe/Paris"))); - - assertNull(getLib().timezone(null)); - assertNull(getLib().timezone(makeDateAndTime("2018-12-10T12:01:02"))); - assertEquals("+01:00", getLib().timezone(makeDateAndTime("2018-12-10T12:01:02+01:00"))); - assertEquals("Z", getLib().timezone(makeDateAndTime("2018-12-10T12:01:02Z"))); - assertEquals("Etc/UTC", getLib().timezone(makeDateAndTime("2018-12-10T12:01:02@Etc/UTC"))); - assertEquals("Europe/Paris", getLib().timezone(makeDateAndTime("2018-12-10T12:01:02@Europe/Paris"))); - } -} diff --git a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/FEELOperatorsTest.java b/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/FEELOperatorsTest.java index ce61bf26d..fefdd9115 100644 --- a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/FEELOperatorsTest.java +++ b/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/FEELOperatorsTest.java @@ -19,7 +19,6 @@ import org.junit.jupiter.api.Test; import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; import java.math.BigDecimal; import java.time.temporal.TemporalAccessor; import java.util.ArrayList; @@ -1469,9 +1468,7 @@ protected void assertEqualsNumber(double expected, Object actual, double precisi } protected void assertEqualsDateTime(String expected, Object actual) { - if (actual instanceof XMLGregorianCalendar) { - assertEquals(expected, actual.toString()); - } else if (actual instanceof TemporalAccessor) { + if (actual instanceof TemporalAccessor) { String actualText = FormatUtils.formatTemporal(actual); assertEquals(expected, actualText); } else if (actual instanceof Duration) { diff --git a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/NumberDefaultRangeLibTest.java b/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/NumberDefaultRangeLibTest.java index 0b41b2521..e4c8232fb 100644 --- a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/NumberDefaultRangeLibTest.java +++ b/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/NumberDefaultRangeLibTest.java @@ -12,21 +12,19 @@ */ package com.gs.dmn.feel.lib.type.range; -import com.gs.dmn.feel.lib.DefaultFEELLib; import com.gs.dmn.feel.lib.MixedJavaTimeFEELLib; import com.gs.dmn.feel.lib.StandardFEELLib; import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; import java.math.BigDecimal; import java.time.LocalDate; import java.time.OffsetTime; import java.time.ZonedDateTime; -public class NumberDefaultRangeLibTest extends AbstractDefaultRangeLibTest { +public class NumberDefaultRangeLibTest extends AbstractDefaultRangeLibTest { @Override - protected final StandardFEELLib getLib() { - return new DefaultFEELLib(); + protected final StandardFEELLib getLib() { + return new MixedJavaTimeFEELLib(); } @Override diff --git a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/StringDefaultRangeLibTest.java b/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/StringDefaultRangeLibTest.java index be0a0f6af..783a4d54f 100644 --- a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/StringDefaultRangeLibTest.java +++ b/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/StringDefaultRangeLibTest.java @@ -12,17 +12,19 @@ */ package com.gs.dmn.feel.lib.type.range; -import com.gs.dmn.feel.lib.DefaultFEELLib; +import com.gs.dmn.feel.lib.MixedJavaTimeFEELLib; import com.gs.dmn.feel.lib.StandardFEELLib; import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.OffsetTime; +import java.time.ZonedDateTime; -public class StringDefaultRangeLibTest extends AbstractDefaultRangeLibTest { +public class StringDefaultRangeLibTest extends AbstractDefaultRangeLibTest { @Override - protected final StandardFEELLib getLib() { - return new DefaultFEELLib(); + protected final StandardFEELLib getLib() { + return new MixedJavaTimeFEELLib(); } @Override protected String makePoint(int number) { diff --git a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/XMLDateDefaultRangeLibTest.java b/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/XMLDateDefaultRangeLibTest.java deleted file mode 100644 index e5b1271bf..000000000 --- a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/XMLDateDefaultRangeLibTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright makeNumber(makeRange(""", "2", "6", """)) Goldman Sachs. - * - * Licensed under the Apache License, Version makeNumber("2").makeNumber("0") (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-makeNumber("2").makeNumber("0") - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.lib.type.range; - -import com.gs.dmn.feel.lib.DefaultFEELLib; -import com.gs.dmn.feel.lib.StandardFEELLib; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -public class XMLDateDefaultRangeLibTest extends AbstractDefaultRangeLibTest { - @Override - protected final StandardFEELLib getLib() { - return new DefaultFEELLib(); - } - - @Override - protected XMLGregorianCalendar makePoint(int number) { - if (number < 1 || number > 31) { - throw new IllegalArgumentException("Illegal day"); - } - return this.getLib().date(String.format("2010-01-%02d", number)); - } -} \ No newline at end of file diff --git a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/XMLDateTimeDefaultRangeLibTest.java b/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/XMLDateTimeDefaultRangeLibTest.java deleted file mode 100644 index 0277bc4f9..000000000 --- a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/XMLDateTimeDefaultRangeLibTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright makeNumber(makeRange(""", "2", "6", """)) Goldman Sachs. - * - * Licensed under the Apache License, Version makeNumber("2").makeNumber("0") (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-makeNumber("2").makeNumber("0") - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.lib.type.range; - -import com.gs.dmn.feel.lib.DefaultFEELLib; -import com.gs.dmn.feel.lib.StandardFEELLib; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -public class XMLDateTimeDefaultRangeLibTest extends AbstractDefaultRangeLibTest { - @Override - protected final StandardFEELLib getLib() { - return new DefaultFEELLib(); - } - - @Override - protected XMLGregorianCalendar makePoint(int number) { - if (number < 0 || number > 60) { - throw new IllegalArgumentException("Illegal second"); - } - return this.getLib().dateAndTime(String.format("2020-01-01T12:00:%02d", number)); - } -} \ No newline at end of file diff --git a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/XMLDurationDefaultRangeLibTest.java b/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/XMLDurationDefaultRangeLibTest.java index ce75dd188..391b7e743 100644 --- a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/XMLDurationDefaultRangeLibTest.java +++ b/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/XMLDurationDefaultRangeLibTest.java @@ -12,17 +12,19 @@ */ package com.gs.dmn.feel.lib.type.range; -import com.gs.dmn.feel.lib.DefaultFEELLib; +import com.gs.dmn.feel.lib.MixedJavaTimeFEELLib; import com.gs.dmn.feel.lib.StandardFEELLib; import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.OffsetTime; +import java.time.ZonedDateTime; -public class XMLDurationDefaultRangeLibTest extends AbstractDefaultRangeLibTest { +public class XMLDurationDefaultRangeLibTest extends AbstractDefaultRangeLibTest { @Override - protected final StandardFEELLib getLib() { - return new DefaultFEELLib(); + protected final StandardFEELLib getLib() { + return new MixedJavaTimeFEELLib(); } @Override diff --git a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/XMLTimeDefaultRangeLibTest.java b/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/XMLTimeDefaultRangeLibTest.java deleted file mode 100644 index 1eed43443..000000000 --- a/dmn-runtime/src/test/java/com/gs/dmn/feel/lib/type/range/XMLTimeDefaultRangeLibTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright makeNumber(makeRange(""", "2", "6", """)) Goldman Sachs. - * - * Licensed under the Apache License, Version makeNumber("2").makeNumber("0") (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-makeNumber("2").makeNumber("0") - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.feel.lib.type.range; - -import com.gs.dmn.feel.lib.DefaultFEELLib; -import com.gs.dmn.feel.lib.StandardFEELLib; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -public class XMLTimeDefaultRangeLibTest extends AbstractDefaultRangeLibTest { - @Override - protected final StandardFEELLib getLib() { - return new DefaultFEELLib(); - } - - @Override - protected XMLGregorianCalendar makePoint(int number) { - if (number < 0 || number > 60) { - throw new IllegalArgumentException("Illegal second"); - } - return this.getLib().time(String.format("12:00:%02d", number)); - } -} \ No newline at end of file diff --git a/dmn-runtime/src/test/java/com/gs/dmn/runtime/DefaultDMNBaseDecisionTest.java b/dmn-runtime/src/test/java/com/gs/dmn/runtime/DefaultDMNBaseDecisionTest.java deleted file mode 100644 index 6db4de234..000000000 --- a/dmn-runtime/src/test/java/com/gs/dmn/runtime/DefaultDMNBaseDecisionTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.runtime; - -import com.gs.dmn.runtime.annotation.DRGElement; -import com.gs.dmn.runtime.annotation.Rule; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertNull; - -public class DefaultDMNBaseDecisionTest { - private final DefaultDMNBaseDecision baseDecision = new DefaultDMNBaseDecision(); - - @Test - public void testGetDRGElementAnnotation() { - DRGElement drgElementAnnotation = this.baseDecision.getDRGElementAnnotation(); - assertNull(drgElementAnnotation); - } - - @Test - public void testGetRuleAnnotation() { - Rule ruleAnnotation = this.baseDecision.getRuleAnnotation(0); - assertNull(ruleAnnotation); - } - -} \ No newline at end of file diff --git a/dmn-runtime/src/test/java/com/gs/dmn/serialization/DefaultStandardJsonSerializerTest.java b/dmn-runtime/src/test/java/com/gs/dmn/serialization/DefaultStandardJsonSerializerTest.java deleted file mode 100644 index d658e2960..000000000 --- a/dmn-runtime/src/test/java/com/gs/dmn/serialization/DefaultStandardJsonSerializerTest.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.serialization; - -import com.gs.dmn.feel.lib.DefaultFEELLib; -import com.gs.dmn.feel.lib.FEELLib; -import com.gs.dmn.runtime.Pair; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; -import java.util.Arrays; -import java.util.List; - -import static com.gs.dmn.serialization.JsonSerializer.OBJECT_MAPPER; - -public class DefaultStandardJsonSerializerTest extends AbstractJsonSerializerTest { - static final List> TIME_TEST_DATA = Arrays.asList( - new Pair<>("04:20:20", "04:20:20"), - new Pair<>("04:20:20Z", "04:20:20Z"), - new Pair<>("04:20:20.004", "04:20:20.004"), - new Pair<>("04:20:20.004Z", "04:20:20.004Z"), - new Pair<>("04:20:20.00421", "04:20:20.00421"), - new Pair<>("04:20:20.00421Z", "04:20:20.00421Z"), - new Pair<>("04:20:20.00421+01:00", "04:20:20.00421+01:00"), - new Pair<>("04:20:20.004Z", "04:20:20.004Z"), - new Pair<>("04:20:20.00421@Europe/Paris", "04:20:20.00421+01:00") - ); - static final List> DATE_TIME_TEST_DATA = Arrays.asList( - new Pair<>("2019-03-11T04:20:20", "2019-03-11T04:20:20"), - new Pair<>("2019-03-11T04:20:20Z", "2019-03-11T04:20:20Z"), - new Pair<>("2019-03-11T04:20:20.004", "2019-03-11T04:20:20.004"), - new Pair<>("2019-03-11T04:20:20.004Z", "2019-03-11T04:20:20.004Z"), - new Pair<>("2019-03-11T04:20:20.00421", "2019-03-11T04:20:20.00421"), - new Pair<>("2019-03-11T04:20:20.00421Z", "2019-03-11T04:20:20.00421Z"), - new Pair<>("2019-03-11T04:20:20.00421+01:00", "2019-03-11T04:20:20.00421+01:00"), - new Pair<>("2019-03-11T04:20:20.004@UTC", "2019-03-11T04:20:20.004Z"), - new Pair<>("2019-03-11T04:20:20.00421@Europe/Paris", "2019-03-11T04:20:20.00421+01:00"), - - new Pair<>("9999-03-11T04:20:20", "9999-03-11T04:20:20") - ); - - @Override - protected FEELLib makeFEELLib() { - return new DefaultFEELLib(); - } - - @Override - protected BigDecimal readNumber(String literal) throws Exception { - return OBJECT_MAPPER.readValue(literal, BigDecimal.class); - } - - @Override - protected XMLGregorianCalendar readDate(String literal) throws Exception { - return OBJECT_MAPPER.readValue(literal, XMLGregorianCalendar.class); - } - - @Override - protected XMLGregorianCalendar readTime(String literal) throws Exception { - return OBJECT_MAPPER.readValue(literal, XMLGregorianCalendar.class); - } - - @Override - protected XMLGregorianCalendar readDateTime(String literal) throws Exception { - return OBJECT_MAPPER.readValue(literal, XMLGregorianCalendar.class); - } - - @Override - protected Duration readDuration(String literal) throws Exception { - return OBJECT_MAPPER.readValue(literal, Duration.class); - } - - @Override - protected List> getTimeTestData() { - return TIME_TEST_DATA; - } - - @Override - protected List> getDateTimeTestData() { - return DATE_TIME_TEST_DATA; - } -} - diff --git a/dmn-runtime/src/test/java/com/gs/dmn/signavio/feel/lib/DefaultSignavioLibExceptionsTest.java b/dmn-runtime/src/test/java/com/gs/dmn/signavio/feel/lib/DefaultSignavioLibExceptionsTest.java deleted file mode 100644 index fb88fbf74..000000000 --- a/dmn-runtime/src/test/java/com/gs/dmn/signavio/feel/lib/DefaultSignavioLibExceptionsTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.signavio.feel.lib; - -import com.gs.dmn.feel.lib.stub.*; -import com.gs.dmn.feel.lib.type.bool.BooleanLib; -import com.gs.dmn.feel.lib.type.bool.BooleanType; -import com.gs.dmn.feel.lib.type.context.ContextType; -import com.gs.dmn.feel.lib.type.function.FunctionType; -import com.gs.dmn.feel.lib.type.list.ListType; -import com.gs.dmn.feel.lib.type.numeric.NumericType; -import com.gs.dmn.feel.lib.type.range.RangeType; -import com.gs.dmn.feel.lib.type.string.StringType; -import com.gs.dmn.feel.lib.type.time.*; -import com.gs.dmn.signavio.feel.lib.stub.SignavioDateTimeLibStub; -import com.gs.dmn.signavio.feel.lib.stub.SignavioListLibStub; -import com.gs.dmn.signavio.feel.lib.stub.SignavioNumberLibStub; -import com.gs.dmn.signavio.feel.lib.stub.SignavioStringLibStub; -import com.gs.dmn.signavio.feel.lib.type.list.SignavioListLib; -import com.gs.dmn.signavio.feel.lib.type.numeric.SignavioNumberLib; -import com.gs.dmn.signavio.feel.lib.type.string.SignavioStringLib; -import com.gs.dmn.signavio.feel.lib.type.time.SignavioDateTimeLib; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -public class DefaultSignavioLibExceptionsTest extends BaseSignavioLibExceptionsTest { - @Override - protected DefaultSignavioLib getLib() { - NumericType numericType = new NumericTypeStub<>(); - BooleanType booleanType = new BooleanTypeStub(); - StringType stringType = new StringTypeStub(); - DateType dateType = new DateTypeStub<>(); - TimeType timeType = new TimeTypeStub<>(); - DateTimeType dateTimeType = new DateTimeTypeStub<>(); - DurationType durationType = new DurationTypeStub<>(); - ListType listType = new ListTypeStub(); - ContextType contextType = new ContextTypeStub(); - RangeType rangeType = new RangeTypeStub(); - FunctionType functionType = new FunctionTypeStub(); - SignavioNumberLib numberLib = new SignavioNumberLibStub<>(); - SignavioStringLib stringLib = new SignavioStringLibStub(); - BooleanLib booleanLib = new BooleanLibStub(); - SignavioDateTimeLib dateTimeLib = new SignavioDateTimeLibStub<>(); - DurationLib durationLib = new DurationLibStub<>(); - SignavioListLib listLib = new SignavioListLibStub(); - return new DefaultSignavioLib( - numericType, booleanType, stringType, - dateType, timeType, dateTimeType, durationType, - listType, contextType, rangeType, functionType, - numberLib, stringLib, booleanLib, dateTimeLib, durationLib, listLib - ); - } -} \ No newline at end of file diff --git a/dmn-runtime/src/test/java/com/gs/dmn/signavio/feel/lib/DefaultSignavioLibTest.java b/dmn-runtime/src/test/java/com/gs/dmn/signavio/feel/lib/DefaultSignavioLibTest.java deleted file mode 100644 index 50e21eaea..000000000 --- a/dmn-runtime/src/test/java/com/gs/dmn/signavio/feel/lib/DefaultSignavioLibTest.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.signavio.feel.lib; - -import org.junit.jupiter.api.Test; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; -import java.time.LocalDate; -import java.util.Calendar; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; - -public class DefaultSignavioLibTest extends BaseSignavioLibTest { - @Override - protected DefaultSignavioLib getLib() { - return new DefaultSignavioLib(); - } - - // - // Date & time functions - // - @Test - public void testDay() { - assertNull(getLib().day(null)); - - assertEqualsNumber(makeNumber("10"), getLib().day(makeDate("2015-12-10"))); - assertNull(getLib().day(makeDate("xxx"))); - } - - @Test - public void testDayAdd() { - assertNull(getLib().dayAdd(null, null)); - assertNull(getLib().dayAdd(null, makeNumber("360"))); - assertNull(getLib().dayAdd(makeDateAndTime("2015-12-24T12:15:00.000+01:00"), null)); - - assertEqualsDateTime("2015-12-25T12:15:00.001+01:00", getLib().dayAdd(makeDateAndTime("2015-12-24T12:15:00.001+01:00"), makeNumber("1"))); - assertEqualsDateTime("2016-12-18T12:15:00.001+01:00", getLib().dayAdd(makeDateAndTime("2015-12-24T12:15:00.001+01:00"), makeNumber("360"))); - assertEqualsDateTime("2015-12-25", getLib().dayAdd(makeDate("2015-12-24"), makeNumber("1"))); - assertEqualsDateTime("2016-12-18", getLib().dayAdd(makeDate("2015-12-24"), makeNumber("360"))); - assertEqualsDateTime("2015-12-23", getLib().dayAdd(makeDate("2015-12-24"), makeNumber("-1"))); - assertNull(getLib().dayAdd(makeDateAndTime("x"), makeNumber("360"))); - } - - @Test - public void testDayDiff() { - assertNull(getLib().dayDiff(null, null)); - assertNull(getLib().dayDiff(null, makeDate("2015-12-25"))); - assertNull(getLib().dayDiff(makeDate("2015-12-25"), null)); - assertNull(getLib().dayDiff(null, makeDateAndTime("2015-12-25T00:00:00"))); - assertNull(getLib().dayDiff(makeDateAndTime("2015-12-24T00:00:00"), null)); - - assertEquals(makeNumber("1"), getLib().dayDiff(makeDate("2015-12-24"), makeDate("2015-12-25"))); - assertEquals(makeNumber("0"), getLib().dayDiff(makeDate("2015-12-24"), makeDate("2015-12-24"))); - assertEquals(makeNumber("-1"), getLib().dayDiff(makeDate("2015-12-24"), makeDate("2015-12-23"))); - - assertEquals(makeNumber("1"), getLib().dayDiff(makeDateAndTime("2015-12-24T00:00:00"), makeDateAndTime("2015-12-25T00:00:00"))); - assertEquals(makeNumber("0"), getLib().dayDiff(makeDateAndTime("2015-12-24T12:25:00"), makeDateAndTime("2015-12-24T00:00:00"))); - assertEquals(makeNumber("-1"), getLib().dayDiff(makeDateAndTime("2015-12-24T00:00:00"), makeDateAndTime("2015-12-23T00:00:00"))); - } - - @Test - public void testHour() { - assertNull(getLib().hour(makeDateAndTime(null))); - - assertEquals(makeNumber("12"), getLib().hour(makeTime("12:15:00.000+01:00"))); - assertEquals(makeNumber("12"), getLib().hour(makeDateAndTime("2015-12-24T12:15:00.000+01:00"))); - assertNull(getLib().hour(makeDateAndTime("xxx"))); - } - - @Test - public void testHourDiff() { - assertNull(getLib().hourDiff(null, null)); - assertNull(getLib().hourDiff(null, makeTime("12:15:00.000+01:00"))); - assertNull(getLib().hourDiff(makeTime("12:15:00.000+01:00"), null)); - - assertEquals(makeNumber("0"), getLib().hourDiff(makeTime("12:15:00.000+01:00"), makeTime("12:15:00.000+01:00"))); - assertEquals(makeNumber("3"), getLib().hourDiff(makeDateAndTime("2015-12-24T12:15:00.000+01:00"), makeDateAndTime("2015-12-24T15:15:00.000+01:00"))); - assertEquals(makeNumber("27"), getLib().hourDiff(makeDateAndTime("2015-12-24T12:15:00.000+01:00"), makeDateAndTime("2015-12-25T15:15:00.000+01:00"))); - assertEquals(makeNumber("-24"), getLib().hourDiff(makeDateAndTime("2015-12-25T12:15:00.000+01:00"), makeDateAndTime("2015-12-24T12:15:00.000+01:00"))); - assertEquals(makeNumber("-27"), getLib().hourDiff(makeDateAndTime("2015-12-25T15:15:00.000+01:00"), makeDateAndTime("2015-12-24T12:15:00.000+01:00"))); - assertEquals(makeNumber("8757"), getLib().hourDiff(makeDateAndTime("2015-12-25T15:15:00.000+01:00"), makeDateAndTime("2016-12-24T12:15:00.000+01:00"))); - } - - @Test - public void testMinute() { - assertNull(getLib().minute(null)); - - assertEquals(makeNumber("15"), getLib().minute(makeTime("12:15:00.000+01:00"))); - assertEquals(makeNumber("15"), getLib().minute(makeDateAndTime("2015-12-24T12:15:00.000+01:00"))); - } - - @Test - public void testMinuteDiff() { - assertNull(getLib().minutesDiff(null, null)); - assertNull(getLib().minutesDiff(null, makeTime("12:15:00.000+01:00"))); - assertNull(getLib().minutesDiff(makeTime("12:15:00.000+01:00"), null)); - - assertEquals(makeNumber("0"), getLib().minutesDiff(makeTime("12:15:00.000+01:00"), makeTime("12:15:00.000+01:00"))); - assertEquals(makeNumber("5"), getLib().minutesDiff(makeDateAndTime("2015-12-24T12:15:00.000+01:00"), makeDateAndTime("2015-12-24T12:20:00.000+01:00"))); - assertEquals(makeNumber("65"), getLib().minutesDiff(makeDateAndTime("2015-12-24T12:15:00.000+01:00"), makeDateAndTime("2015-12-24T13:20:00.000+01:00"))); - assertEquals(makeNumber("-65"), getLib().minutesDiff(makeDateAndTime("2015-12-24T13:20:00.000+01:00"), makeDateAndTime("2015-12-24T12:15:00.000+01:00"))); - assertEquals(makeNumber("525420"), getLib().minutesDiff(makeDateAndTime("2015-12-25T15:15:00.000+01:00"), makeDateAndTime("2016-12-24T12:15:00.000+01:00"))); - } - - @Test - public void testMonth() { - assertNull(getLib().month(null)); - - assertEquals(makeNumber("12"), getLib().month(makeDate("2015-12-02"))); - assertEquals(makeNumber("12"), getLib().month(makeDateAndTime("2015-12-24T12:15:00.000+01:00"))); - } - - @Test - public void testMonthAdd() { - assertNull(getLib().monthAdd(null, null)); - assertNull(getLib().monthAdd(null, makeNumber("1"))); - assertNull(getLib().monthAdd(makeDate("2015-01-05"), null)); - - assertEqualsDateTime("2015-02-05", getLib().monthAdd(makeDate("2015-01-05"), makeNumber("1"))); - assertEqualsDateTime("2016-01-05", getLib().monthAdd(makeDate("2015-01-05"), makeNumber("12"))); - assertEqualsDateTime("2014-11-05", getLib().monthAdd(makeDate("2015-01-05"), makeNumber("-2"))); - assertEqualsDateTime("2015-02-05T12:15:00.001+01:00", getLib().monthAdd(makeDateAndTime("2015-01-05T12:15:00.001+01:00"), makeNumber("1"))); - assertEqualsDateTime("2016-01-05T12:15:00.001+01:00", getLib().monthAdd(makeDateAndTime("2015-01-05T12:15:00.001+01:00"), makeNumber("12"))); - assertEqualsDateTime("2014-11-05T12:15:00.001+01:00", getLib().monthAdd(makeDateAndTime("2015-01-05T12:15:00.001+01:00"), makeNumber("-2"))); - assertNull(getLib().monthAdd(makeDateAndTime("xxx"), makeNumber("12"))); - assertNull(getLib().monthAdd(null, makeNumber("12"))); - } - - @Test - public void testMonthDiff() { - assertNull(getLib().monthDiff(null, null)); - assertNull(getLib().monthDiff(null, makeDate("2015-01-05"))); - assertNull(getLib().monthDiff(makeDate("2015-01-05"), null)); - - assertEquals(makeNumber("0"), getLib().monthDiff(makeDate("2015-01-05"), makeDate("2015-01-05"))); - assertEquals(makeNumber("4"), getLib().monthDiff(makeDate("2015-01-05"), makeDate("2015-05-05"))); - assertEquals(makeNumber("16"), getLib().monthDiff(makeDate("2015-01-05"), makeDate("2016-05-05"))); - assertEquals(makeNumber("-4"), getLib().monthDiff(makeDate("2015-05-05"), makeDate("2015-01-05"))); - - assertEquals(makeNumber("0"), getLib().monthDiff(makeDateAndTime("2015-01-05T12:15:00.000+01:00"), makeDateAndTime("2015-01-05T12:15:00.000+01:00"))); - assertEquals(makeNumber("4"), getLib().monthDiff(makeDateAndTime("2015-01-05T12:15:00.000+01:00"), makeDateAndTime("2015-05-05T12:15:00.000+01:00"))); - assertEquals(makeNumber("16"), getLib().monthDiff(makeDateAndTime("2015-01-05T12:15:00.000+01:00"), makeDateAndTime("2016-05-05T12:15:00.000+01:00"))); - assertEquals(makeNumber("-4"), getLib().monthDiff(makeDateAndTime("2015-05-05T12:15:00.000+01:00"), makeDateAndTime("2015-01-05T12:15:00.000+01:00"))); - } - - @Test - public void testNow() { - XMLGregorianCalendar actual = getLib().now(); - Calendar expected = Calendar.getInstance(); - assertEquals(expected.get(Calendar.YEAR), actual.getYear()); - assertEquals(expected.get(Calendar.MONTH) + 1, actual.getMonth()); - assertEquals(expected.get(Calendar.DAY_OF_MONTH), actual.getDay()); - } - - @Test - public void testToday() { - XMLGregorianCalendar actual = getLib().today(); - LocalDate expected = LocalDate.now(); - assertEquals(expected.getYear(), actual.getYear()); - assertEquals(expected.getMonthValue(), actual.getMonth()); - assertEquals(expected.getDayOfMonth(), actual.getDay()); - } - - - @Test - public void testWeekday() { - assertNull(getLib().weekday(null)); - - assertEquals(makeNumber("7"), getLib().weekday(makeDate("2016-12-25"))); - assertEquals(makeNumber("6"), getLib().weekday(makeDate("0003-02-01"))); - assertEquals(makeNumber("2"), getLib().weekday(makeDate("2016-11-01"))); - assertEquals(makeNumber("7"), getLib().weekday(makeDateAndTime("2016-11-20T12:15:00.000+01:00"))); - } - - @Test - public void testYear() { - assertNull(getLib().year(null)); - - assertEquals(makeNumber("2016"), getLib().year(makeDate("2016-11-01"))); - assertEquals(makeNumber("2015"), getLib().year(makeDateAndTime("2015-11-20T12:15:00.000+01:00"))); - } - - @Test - public void testYearAdd() { - assertNull(getLib().yearAdd(null, null)); - assertNull(getLib().yearAdd(null, makeNumber("1"))); - assertNull(getLib().yearAdd(makeDate("2015-01-05"), null)); - - assertEqualsDateTime("2016-01-05", getLib().yearAdd(makeDate("2015-01-05"), makeNumber("1"))); - assertEqualsDateTime("2027-01-05", getLib().yearAdd(makeDate("2015-01-05"), makeNumber("12"))); - assertEqualsDateTime("2016-01-05T12:15:00.001+01:00", getLib().yearAdd(makeDateAndTime("2015-01-05T12:15:00.001+01:00"), makeNumber("1"))); - assertEqualsDateTime("2027-01-05T12:15:00.001+01:00", getLib().yearAdd(makeDateAndTime("2015-01-05T12:15:00.001+01:00"), makeNumber("12"))); - assertNull(getLib().yearAdd(makeDateAndTime("xxx"), makeNumber("12"))); - assertNull(getLib().yearAdd(null, makeNumber("12"))); - } - - @Test - public void testYearDiff() { - assertNull(getLib().yearDiff(null, null)); - assertNull(getLib().yearDiff(null, makeDate("2015-01-05"))); - assertNull(getLib().yearDiff(makeDate("2015-01-05"), null)); - - assertEquals(makeNumber("0"), getLib().yearDiff(makeDate("2015-01-05"), makeDate("2015-01-05"))); - assertEquals(makeNumber("1"), getLib().yearDiff(makeDate("2015-01-05"), makeDate("2016-05-05"))); - assertEquals(makeNumber("1"), getLib().yearDiff(makeDate("2015-01-05"), makeDate("2016-01-05"))); - assertEquals(makeNumber("-1"), getLib().yearDiff(makeDate("2016-01-05"), makeDate("2015-01-05"))); - assertEquals(makeNumber("0"), getLib().yearDiff(makeDate("2016-01-05"), makeDate("2015-05-05"))); - - assertEquals(makeNumber("0"), getLib().yearDiff(makeDateAndTime("2015-01-01T12:15:00.000+01:00"), makeDateAndTime("2015-01-05T15:15:00.000+01:00"))); - assertEquals(makeNumber("1"), getLib().yearDiff(makeDateAndTime("2015-01-05T12:15:00.000+01:00"), makeDateAndTime("2016-05-05T15:15:00.000+01:00"))); - assertEquals(makeNumber("1"), getLib().yearDiff(makeDateAndTime("2015-01-05T12:15:00.000+01:00"), makeDateAndTime("2016-01-05T15:15:00.000+01:00"))); - assertEquals(makeNumber("-1"), getLib().yearDiff(makeDateAndTime("2016-01-05T12:15:00.000+01:00"), makeDateAndTime("2015-01-05T15:15:00.000+01:00"))); - assertEquals(makeNumber("0"), getLib().yearDiff(makeDateAndTime("2016-01-05T12:15:00.000+01:00"), makeDateAndTime("2015-05-05T15:15:00.000+01:00"))); - } - - // - // Time properties - // - @Override - @Test - public void testTimeProperties() { - assertNull(getLib().hour(null)); - assertEqualsNumber(makeNumber("12"), getLib().hour(getLib().time("12:01:02Z"))); - - assertNull(getLib().minute(null)); - assertEqualsNumber(makeNumber("1"), getLib().minute(getLib().time("12:01:02Z"))); - } - - // - // Date and time properties - // - @Override - @Test - public void testDateAndTimeProperties() { - assertNull(getLib().year(null)); - assertEqualsNumber(makeNumber("2018"), getLib().year(getLib().dateAndTime("2018-12-10T12:01:02Z"))); - - assertNull(getLib().month(null)); - assertEqualsNumber(makeNumber("12"), getLib().month(getLib().dateAndTime("2018-12-10T12:01:02Z"))); - - assertNull(getLib().day(null)); - assertEqualsNumber(makeNumber("10"), getLib().day(getLib().dateAndTime("2018-12-10T12:01:02Z"))); - - assertNull(getLib().weekday(null)); - assertEqualsNumber(makeNumber("1"), getLib().weekday(getLib().dateAndTime("2018-12-10T12:01:02Z"))); - - assertNull(getLib().hour(null)); - assertEqualsNumber(makeNumber("12"), getLib().hour(getLib().dateAndTime("2018-12-10T12:01:02Z"))); - - assertNull(getLib().minute(null)); - assertEqualsNumber(makeNumber("1"), getLib().minute(getLib().dateAndTime("2018-12-10T12:01:02Z"))); - } -} diff --git a/dmn-runtime/src/test/java/com/gs/dmn/signavio/feel/lib/FEELOperatorsTest.java b/dmn-runtime/src/test/java/com/gs/dmn/signavio/feel/lib/FEELOperatorsTest.java index 0e97997c3..4bb6b3cd0 100644 --- a/dmn-runtime/src/test/java/com/gs/dmn/signavio/feel/lib/FEELOperatorsTest.java +++ b/dmn-runtime/src/test/java/com/gs/dmn/signavio/feel/lib/FEELOperatorsTest.java @@ -19,12 +19,8 @@ import org.junit.jupiter.api.Test; import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; import java.math.BigDecimal; -import java.time.LocalDate; -import java.time.OffsetDateTime; -import java.time.OffsetTime; -import java.time.ZonedDateTime; +import java.time.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -1418,14 +1414,18 @@ protected void assertEqualsNumber(double expected, Object actual, double precisi } protected void assertEqualsDateTime(String expected, Object actual) { - if (actual instanceof XMLGregorianCalendar) { - assertEquals(expected, actual.toString()); - } else if (actual instanceof LocalDate) { + if (actual instanceof LocalDate) { String actualText = ((LocalDate) actual).format(BaseDateTimeLib.FEEL_DATE); assertEquals(expected, actualText); } else if (actual instanceof OffsetTime) { String actualText = ((OffsetTime) actual).format(BaseDateTimeLib.FEEL_TIME); assertEquals(expected, actualText); + } else if (actual instanceof LocalTime) { + String actualText = ((LocalTime) actual).format(BaseDateTimeLib.FEEL_TIME); + assertEquals(expected, actualText); + } else if (actual instanceof LocalDateTime) { + String actualText = ((LocalDateTime) actual).format(BaseDateTimeLib.FEEL_DATE_TIME); + assertEquals(expected, actualText); } else if (actual instanceof OffsetDateTime) { String actualText = ((OffsetDateTime) actual).format(BaseDateTimeLib.FEEL_DATE_TIME); assertEquals(expected, actualText); diff --git a/dmn-runtime/src/test/java/com/gs/dmn/signavio/runtime/DefaultSignavioBaseDecisionTest.java b/dmn-runtime/src/test/java/com/gs/dmn/signavio/runtime/DefaultSignavioBaseDecisionTest.java deleted file mode 100644 index c042cbc1a..000000000 --- a/dmn-runtime/src/test/java/com/gs/dmn/signavio/runtime/DefaultSignavioBaseDecisionTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.signavio.runtime; - -import com.gs.dmn.runtime.annotation.DRGElement; -import com.gs.dmn.runtime.annotation.Rule; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertNull; - -public class DefaultSignavioBaseDecisionTest { - private final DefaultSignavioBaseDecision baseDecision = new DefaultSignavioBaseDecision(); - - @Test - public void testGetDRGElementAnnotation() throws Exception { - DRGElement drgElementAnnotation = baseDecision.getDRGElementAnnotation(); - assertNull(drgElementAnnotation); - } - - @Test - public void testGetRuleAnnotation() throws Exception { - Rule ruleAnnotation = baseDecision.getRuleAnnotation(0); - assertNull(ruleAnnotation); - } - -} \ No newline at end of file diff --git a/dmn-signavio/src/main/java/com/gs/dmn/signavio/dialect/SignavioDMNDialectDefinition.java b/dmn-signavio/src/main/java/com/gs/dmn/signavio/dialect/SignavioDMNDialectDefinition.java deleted file mode 100644 index 099d19f50..000000000 --- a/dmn-signavio/src/main/java/com/gs/dmn/signavio/dialect/SignavioDMNDialectDefinition.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.signavio.dialect; - -import com.gs.dmn.DMNModelRepository; -import com.gs.dmn.context.environment.EnvironmentFactory; -import com.gs.dmn.feel.lib.FEELLib; -import com.gs.dmn.feel.synthesis.type.NativeTypeFactory; -import com.gs.dmn.feel.synthesis.type.StandardNativeTypeFactory; -import com.gs.dmn.log.BuildLogger; -import com.gs.dmn.serialization.TypeDeserializationConfigurer; -import com.gs.dmn.signavio.feel.lib.DefaultSignavioLib; -import com.gs.dmn.signavio.runtime.DefaultSignavioBaseDecision; -import com.gs.dmn.signavio.testlab.TestLab; -import com.gs.dmn.signavio.transformation.SignavioDMNToJavaTransformer; -import com.gs.dmn.signavio.transformation.basic.BasicSignavioDMNToJavaTransformer; -import com.gs.dmn.transformation.DMNToNativeTransformer; -import com.gs.dmn.transformation.DMNTransformer; -import com.gs.dmn.transformation.InputParameters; -import com.gs.dmn.transformation.basic.BasicDMNToJavaTransformer; -import com.gs.dmn.transformation.lazy.LazyEvaluationDetector; -import com.gs.dmn.transformation.template.TemplateProvider; -import com.gs.dmn.validation.DMNValidator; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -/** - * @deprecated As of release 8.3.0, replaced by {@link JavaTimeSignavioDMNDialectDefinition} - */ -@Deprecated -public class SignavioDMNDialectDefinition extends AbstractSignavioDMNDialectDefinition { - // - // DMN processors - // - @Override - public DMNToNativeTransformer createDMNToNativeTransformer(DMNValidator dmnValidator, DMNTransformer dmnTransformer, TemplateProvider templateProvider, LazyEvaluationDetector lazyEvaluationDetector, TypeDeserializationConfigurer typeDeserializationConfigurer, InputParameters inputParameters, BuildLogger logger) { - return new SignavioDMNToJavaTransformer<>(this, dmnValidator, dmnTransformer, templateProvider, lazyEvaluationDetector, typeDeserializationConfigurer, inputParameters, logger); - } - - @Override - public BasicDMNToJavaTransformer createBasicTransformer(DMNModelRepository repository, LazyEvaluationDetector lazyEvaluationDetector, InputParameters inputParameters) { - EnvironmentFactory environmentFactory = createEnvironmentFactory(); - return new BasicSignavioDMNToJavaTransformer(this, repository, environmentFactory, createNativeTypeFactory(), lazyEvaluationDetector, inputParameters); - } - - // - // Execution engine - // - @Override - public NativeTypeFactory createNativeTypeFactory() { - return new StandardNativeTypeFactory(); - } - - @Override - public FEELLib createFEELLib() { - return new DefaultSignavioLib(); - } - - @Override - public String getDecisionBaseClass() { - return DefaultSignavioBaseDecision.class.getName(); - } -} diff --git a/dmn-signavio/src/test/java/com/gs/dmn/signavio/dialect/SignavioDMNDialectDefinitionTest.java b/dmn-signavio/src/test/java/com/gs/dmn/signavio/dialect/SignavioDMNDialectDefinitionTest.java deleted file mode 100644 index 3b7d22e38..000000000 --- a/dmn-signavio/src/test/java/com/gs/dmn/signavio/dialect/SignavioDMNDialectDefinitionTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2016 Goldman Sachs. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.gs.dmn.signavio.dialect; - -import com.gs.dmn.dialect.DMNDialectDefinition; -import com.gs.dmn.feel.synthesis.type.StandardNativeTypeFactory; -import com.gs.dmn.signavio.feel.lib.DefaultSignavioLib; -import com.gs.dmn.signavio.runtime.DefaultSignavioBaseDecision; -import com.gs.dmn.signavio.runtime.interpreter.SignavioDMNInterpreter; -import com.gs.dmn.signavio.testlab.TestLab; -import com.gs.dmn.signavio.transformation.SignavioDMNToJavaTransformer; -import com.gs.dmn.signavio.transformation.basic.BasicSignavioDMNToJavaTransformer; - -import javax.xml.datatype.Duration; -import javax.xml.datatype.XMLGregorianCalendar; -import java.math.BigDecimal; - -public class SignavioDMNDialectDefinitionTest extends AbstractSignavioDMNDialectDefinitionTest { - @Override - protected DMNDialectDefinition makeDialect() { - return new SignavioDMNDialectDefinition(); - } - - @Override - protected String getExpectedDMNInterpreterClass() { - return SignavioDMNInterpreter.class.getName(); - } - - @Override - protected String getExpectedDMNToNativeTransformerClass() { - return SignavioDMNToJavaTransformer.class.getName(); - } - - @Override - protected String getBasicTransformerClass() { - return BasicSignavioDMNToJavaTransformer.class.getName(); - } - - @Override - protected String getExpectedNativeTypeFactoryClass() { - return StandardNativeTypeFactory.class.getName(); - } - - @Override - protected String getExpectedFEELLibClass() { - return DefaultSignavioLib.class.getName(); - } - - @Override - protected String getExpectedDecisionBaseClass() { - return DefaultSignavioBaseDecision.class.getName(); - } -} \ No newline at end of file diff --git a/dmn-signavio/src/test/java/com/gs/dmn/signavio/feel/SignavioFEELProcessorTest.java b/dmn-signavio/src/test/java/com/gs/dmn/signavio/feel/JavaTimeSignavioFEELProcessorTest.java similarity index 88% rename from dmn-signavio/src/test/java/com/gs/dmn/signavio/feel/SignavioFEELProcessorTest.java rename to dmn-signavio/src/test/java/com/gs/dmn/signavio/feel/JavaTimeSignavioFEELProcessorTest.java index 92a354175..a9d787b26 100644 --- a/dmn-signavio/src/test/java/com/gs/dmn/signavio/feel/SignavioFEELProcessorTest.java +++ b/dmn-signavio/src/test/java/com/gs/dmn/signavio/feel/JavaTimeSignavioFEELProcessorTest.java @@ -20,7 +20,7 @@ import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalAmount; -public class SignavioFEELProcessorTest extends AbstractSignavioFEELProcessorTest { +public class JavaTimeSignavioFEELProcessorTest extends AbstractSignavioFEELProcessorTest { @Override protected String numberType() { return Number.class.getName(); diff --git a/dmn-signavio/src/test/java/com/gs/dmn/signavio/feel/MixedSignavioFEELProcessorTest.java b/dmn-signavio/src/test/java/com/gs/dmn/signavio/feel/MixedJavaTimeSignavioFEELProcessorTest.java similarity index 98% rename from dmn-signavio/src/test/java/com/gs/dmn/signavio/feel/MixedSignavioFEELProcessorTest.java rename to dmn-signavio/src/test/java/com/gs/dmn/signavio/feel/MixedJavaTimeSignavioFEELProcessorTest.java index c69a4ffd6..1539610ee 100644 --- a/dmn-signavio/src/test/java/com/gs/dmn/signavio/feel/MixedSignavioFEELProcessorTest.java +++ b/dmn-signavio/src/test/java/com/gs/dmn/signavio/feel/MixedJavaTimeSignavioFEELProcessorTest.java @@ -30,7 +30,7 @@ import static com.gs.dmn.feel.analysis.semantics.type.DateType.DATE; import static com.gs.dmn.feel.analysis.semantics.type.TimeType.TIME; -public class MixedSignavioFEELProcessorTest extends AbstractSignavioFEELProcessorTest { +public class MixedJavaTimeSignavioFEELProcessorTest extends AbstractSignavioFEELProcessorTest { @Override protected String numberType() { return BigDecimal.class.getName(); diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0001-filter/translator/standard/0001-filter-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0001-filter/translator/standard/0001-filter-test-01.xml deleted file mode 100644 index 07f780c29..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0001-filter/translator/standard/0001-filter-test-01.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - 0001-filter.dmn - - - - - - - - - - - - - - - - - - - - 7792 - - - 10 - - - Clark - - - - - 7934 - - - 10 - - - Miller - - - - - 7976 - - - 20 - - - Adams - - - - - 7902 - - - 20 - - - Ford - - - - - 7900 - - - 30 - - - James - - - - - - - - - Adams - - - Ford - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0002-string-functions/translator/standard/0002-string-functions-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0002-string-functions/translator/standard/0002-string-functions-test-01.xml deleted file mode 100644 index 1b41f6f04..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0002-string-functions/translator/standard/0002-string-functions-test-01.xml +++ /dev/null @@ -1,112 +0,0 @@ - - - 0002-string-functions.dmn - - - - - - - - - - - - - - - - - Tests FEEL built-in functions on string literals (starts_with, ends_with, contains, substring, string_length, upper_case, lower_case, substring_before, substring_after) - - banana - - - a - - - 2 - - - - - false - - - false - - - false - - - true - - - false - - - true - - - a - - - 6 - - - BANANA - - - a - - - b - - - nana - - - - - - Tests FEEL built-in function for regular expresssion matching (matches) - - banana - - - - true - - - - - Tests FEEL built-in function 'replace' on string literals - - banana - - - - - bonono - - - b**a - - - b[a]n[a]n[a] - - - - - - Tests FEEL built-in function for converting a number to a string - - 2 - - - - 2 - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0003-iteration/translator/standard/0003-iteration-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0003-iteration/translator/standard/0003-iteration-test-01.xml deleted file mode 100644 index 85fa022dd..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0003-iteration/translator/standard/0003-iteration-test-01.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - 0003-iteration.dmn - - - - - - - - - - - - - - - - - 200000 - - - .041 - - - 360 - - - - - 20000 - - - .049 - - - 60 - - - - - - - - - 966.396742204988 - - - 376.509070632494 - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0004-lending/translator/standard/0004-lending-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0004-lending/translator/standard/0004-lending-test-01.xml deleted file mode 100644 index 1778d7f8b..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0004-lending/translator/standard/0004-lending-test-01.xml +++ /dev/null @@ -1,129 +0,0 @@ - - - 0004-lending.dmn - - - - - - - - - - - - - - - - - - - - - - - 6000 - - - 2000 - - - 0 - - - - 35 - - - true - - - M - - - EMPLOYED - - - - - STANDARD LOAN - - - 350000 - - - 0.0395 - - - 360 - - - - - 649 - - - false - - - - YES - - - - ACCEPT - - - - - 130 - - - - - LOW - - - - - MINI - - - - - LOW - - - - - 1680.880325608555 - - - - - true - - - - - ELIGIBLE - - - - - BUREAU - - - - - true - - - - - ACCEPT - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0005-literal-invocation/translator/standard/0005-literal-invocation-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0005-literal-invocation/translator/standard/0005-literal-invocation-test-01.xml deleted file mode 100644 index b97cf8d91..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0005-literal-invocation/translator/standard/0005-literal-invocation-test-01.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - 0005-literal-invocation.dmn - - - - - - - - - - - - - - 600000 - - - 0.0375 - - - 360 - - - - 100 - - - - 2878.69354943277 - - - - - - - 30000 - - - 0.0475 - - - 60 - - - - 100 - - - - 662.707359373292 - - - - - - - 600000 - - - 0.0399 - - - 360 - - - - 100 - - - - 2961.03377700389 - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0006-join/translator/standard/0006-join-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0006-join/translator/standard/0006-join-test-01.xml deleted file mode 100644 index d0ea2398d..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0006-join/translator/standard/0006-join-test-01.xml +++ /dev/null @@ -1,122 +0,0 @@ - - - 0006-join.dmn - - - - - - - - - - - - - - - - - - 7792 - - - 10 - - - Clark - - - - - 7934 - - - 10 - - - Miller - - - - - 7976 - - - 20 - - - Adams - - - - - 7902 - - - 20 - - - Ford - - - - - 7900 - - - 30 - - - James - - - - - - - - - 10 - - - Sales - - - Smith - - - - - 20 - - - Finance - - - Jones - - - - - 30 - - - Engineering - - - King - - - - - - Clark - - - - Smith - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0007-date-time/translator/standard/0007-date-time-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0007-date-time/translator/standard/0007-date-time-test-01.xml deleted file mode 100644 index de129a020..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0007-date-time/translator/standard/0007-date-time-test-01.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - 0007-date-time.dmn - - - - - - - - - - - - - - - - - 2015-12-24 - - - 00:00:01-01:00 - - - 2016-12-24T23:59:00-08:00 - - - 12 - - - 59 - - - 01.3 - - - -PT1H - - - 1999 - - - 11 - - - 22 - - - PT1H - - - P13DT2H14S - - - - 2016-12-24T23:59:00-08:00 - - - - - - 2015-12-24 - - - 2016-12-24 - - - 1999-11-22 - - - - - - 00:00:01-01:00 - - - - - 2015-12-24T00:00:01-01:00 - - - - - 00:00:01-01:00 - - - - - 12:59:01.3-01:00 - - - - - P13DT2H14S - - - - - P367DT6H58M59S - - - - - P380DT8H59M13S - - - - - P1Y0M - - - - - 24 - - - - - 2015 - - - - - 12 - - - - - 0 - - - - - 0 - - - - - 1 - - - - - -PT1H - - - - - 1 - - - - - 14 - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0008-listGen/translator/standard/0008-listGen-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0008-listGen/translator/standard/0008-listGen-test-01.xml deleted file mode 100644 index d7c31103d..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0008-listGen/translator/standard/0008-listGen-test-01.xml +++ /dev/null @@ -1,293 +0,0 @@ - - - 0008-listGen.dmn - - - - - - - - - - - - - - - - - a - - - b - - - c - - - - - - - - a - - - b - - - c - - - - - - a - - - b - - - c - - - - - - - - b - - - c - - - - - - a - - - b - - - c - - - - - - - - c - - - - - - a - - - b - - - c - - - - - - - - a - - - b - - - c - - - - - - a - - - b - - - c - - - - - - - - - - - w - - - x - - - y - - - z - - - - - - - - - - w - - - x - - - - - - - - w - - - x - - - y - - - z - - - - - - - - a - - - b - - - - - - a - - - b - - - w - - - x - - - y - - - z - - - - - - - - a - - - b - - - - - w - - - x - - - - - - - - a - - - b - - - w - - - x - - - y - - - z - - - - - - - - c - - - - - w - - - x - - - - - - - - a - - - b - - - c - - - w - - - x - - - y - - - z - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0009-append-flatten/translator/standard/0009-append-flatten-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0009-append-flatten/translator/standard/0009-append-flatten-test-01.xml deleted file mode 100644 index 05d241c56..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0009-append-flatten/translator/standard/0009-append-flatten-test-01.xml +++ /dev/null @@ -1,370 +0,0 @@ - - - 0009-append-flatten.dmn - - - - - - - - - - - - - - - a - - - b - - - c - - - - - - - - - w - - - x - - - - - - - y - - - - - - - z - - - - - - - - - - a - - - b - - - c - - - - - - - - - - - w - - - x - - - - - - - y - - - - - - - z - - - - - - - - - - - - - w - - - x - - - - - - - y - - - - - - - z - - - - - - - t - - - - - - - - - - - - - w - - - x - - - - - - - y - - - - - - - z - - - - - - - a - - - b - - - c - - - - - - - - - - - - - w - - - x - - - - - - - y - - - - - - - z - - - - - - - a - - - b - - - c - - - - - - - - - - - - - w - - - x - - - - - - - y - - - - - - - z - - - - - - - a - - - b - - - c - - - - - - - - - - - w - - - x - - - y - - - z - - - t - - - - - - - - - w - - - x - - - y - - - z - - - a - - - b - - - c - - - - - - - - - w - - - x - - - y - - - z - - - a - - - b - - - c - - - - - - - - - w - - - x - - - y - - - z - - - a - - - b - - - c - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0010-concatenate/translator/standard/0010-concatenate-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0010-concatenate/translator/standard/0010-concatenate-test-01.xml deleted file mode 100644 index 597cac9f7..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0010-concatenate/translator/standard/0010-concatenate-test-01.xml +++ /dev/null @@ -1,223 +0,0 @@ - - - 0010-concatenate.dmn - - - - - - - - - - - - - - - a - - - b - - - c - - - - - - - - - w - - - x - - - - - - - y - - - - - - - z - - - - - - - - - - a - - - b - - - c - - - - - - - - - - - w - - - x - - - - - - - y - - - - - - - z - - - - - - - - - - - a - - - b - - - c - - - a - - - b - - - c - - - - - - - - - a - - - b - - - c - - - w - - - x - - - y - - - z - - - - - - - - - a - - - b - - - c - - - w - - - x - - - y - - - z - - - - - - - - - - - a - - - b - - - c - - - - - - - w - - - x - - - - - - - y - - - - - - - z - - - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0011-insert-remove/translator/standard/0011-insert-remove-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0011-insert-remove/translator/standard/0011-insert-remove-test-01.xml deleted file mode 100644 index 494de2742..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0011-insert-remove/translator/standard/0011-insert-remove-test-01.xml +++ /dev/null @@ -1,201 +0,0 @@ - - - 0011-insert-remove.dmn - - - - - - - - - - - - - - - - a - - - b - - - c - - - - - - - - - o - - - - - - - p - - - q - - - - - - - 2 - - - - - - - - a - - - b - - - - - - - b - - - c - - - - - - - - - - - a - - - c - - - - - - - - - - - o - - - - - - - a - - - b - - - c - - - - - - - p - - - q - - - - - - - - - - - - - a - - - b - - - - - - - a - - - b - - - c - - - - - - - b - - - c - - - - - - - - - - - - - a - - - b - - - - - - - - - - - a - - - x - - - b - - - c - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0012-list-functions/translator/standard/0012-list-functions-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0012-list-functions/translator/standard/0012-list-functions-test-01.xml deleted file mode 100644 index 625c585d5..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0012-list-functions/translator/standard/0012-list-functions-test-01.xml +++ /dev/null @@ -1,637 +0,0 @@ - - - 0012-list-functions.dmn - - - - - - - - - - - - - - - - - - a - - - b - - - c - - - - - - - x - - - y - - - z - - - - - - false - - - - - - OK - - - - - x - - - y - - - z - - - - - - false - - - - - - - - a - - - b - - - c - - - - - - 3 - - - - - - - - 6 - - - 14 - - - -3 - - - - - - -3 - - - - - - - - 6 - - - 14 - - - -3 - - - - - - 17 - - - - - - - - 6 - - - 14 - - - -3 - - - - - - 5.66666666666667 - - - - - - 11 - - - 2 - - - 10 - - - - 7.66666666666667 - - - - - - - - a - - - b - - - c - - - - - - - - a - - - b - - - - - - - - - - a - - - b - - - c - - - - - - - - c - - - - - - - - 11 - - - 2 - - - 10 - - - - - 6 - - - 14 - - - -3 - - - - - - - - 6 - - - 14 - - - -3 - - - 11 - - - 2 - - - - - - - - - - a - - - b - - - c - - - - - - - x - - - y - - - z - - - - - - - - a - - - b - - - c - - - x - - - y - - - z - - - - - - - - OK - - - - - x - - - y - - - z - - - - - - - - x - - - OK - - - y - - - z - - - - - - - - - - x - - - y - - - z - - - - - - - - x - - - z - - - - - - - - - - a - - - b - - - c - - - - - - - x - - - y - - - z - - - - - - - - z - - - y - - - x - - - c - - - b - - - a - - - - - - - - - - a - - - b - - - c - - - - - x - - - - - - a - - - b - - - c - - - x - - - - - - - - OK - - - - - x - - - y - - - z - - - - - - - - - - - - OK - - - - - a - - - b - - - c - - - - - - - x - - - y - - - z - - - - - - - - x - - - OK - - - y - - - z - - - a - - - b - - - c - - - - - - - - OK - - - - - x - - - y - - - z - - - - - - - - x - - - OK - - - y - - - z - - - - - - - - - - a - - - b - - - c - - - - - - - x - - - y - - - z - - - - - - - - a - - - b - - - c - - - x - - - y - - - z - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0013-sort/translator/standard/0013-sort-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0013-sort/translator/standard/0013-sort-test-01.xml deleted file mode 100644 index c8da94ae6..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0013-sort/translator/standard/0013-sort-test-01.xml +++ /dev/null @@ -1,192 +0,0 @@ - - - 0013-sort.dmn - - - - - - - - - - - - - - - - - 3 - - - 1 - - - 5 - - - 4 - - - - - - - a - - - 8 - - - Aa - - - A - - - 10 - - - 9 - - - - - - - - 16 - - - 4 - - - 25 - - - 1 - - - - - 16 - - - 43 - - - 2 - - - 10 - - - - - 1 - - - 0 - - - 1 - - - 1 - - - - - - - - - 5 - - - 4 - - - 3 - - - 1 - - - - - - - - - - 1 - - - 0 - - - 1 - - - 1 - - - - - 16 - - - 4 - - - 25 - - - 1 - - - - - 16 - - - 43 - - - 2 - - - 10 - - - - - - - - - - 10 - - - 8 - - - 9 - - - A - - - Aa - - - a - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0014-loan-comparison/translator/standard/0014-loan-comparison-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0014-loan-comparison/translator/standard/0014-loan-comparison-test-01.xml deleted file mode 100644 index 149b40c84..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0014-loan-comparison/translator/standard/0014-loan-comparison-test-01.xml +++ /dev/null @@ -1,1495 +0,0 @@ - - - 0014-loan-comparison.dmn - - - - - - - - - - - - - - - - - - - 330000 - - - - - - - Oceans Capital - - - .03500 - - - 0 - - - 0 - - - - - eClick Lending - - - .03200 - - - 1.1 - - - 2700 - - - - - eClickLending - - - .03375 - - - 0.1 - - - 1200 - - - - - AimLoan - - - .03000 - - - 1.1 - - - 3966 - - - - - Home Loans Today - - - .03125 - - - 1.1 - - - 285 - - - - - Sebonic - - - .03125 - - - 0.1 - - - 4028 - - - - - AimLoan - - - .03125 - - - 0.1 - - - 4317 - - - - - eRates Mortgage - - - .03125 - - - 1.1 - - - 2518 - - - - - Home Loans Today - - - .03250 - - - 0.1 - - - 822 - - - - - AimLoan - - - .03250 - - - 0 - - - 1995 - - - - - - - - - - - - Oceans Capital - - - .03500 - - - 0 - - - 0 - - - 330000 - - - 66000 - - - 1481.847469769075 - - - 0.1229130806675829 - - - - - eClick Lending - - - .03200 - - - 1.1 - - - 2700 - - - 336330 - - - 67266 - - - 1454.51580776472 - - - 0.1137029731874643 - - - - - eClickLending - - - .03375 - - - 0.1 - - - 1200 - - - 331530 - - - 66306 - - - 1465.681565899816 - - - 0.1219807467513794 - - - - - AimLoan - - - .03000 - - - 1.1 - - - 3966 - - - 337596 - - - 67519.2 - - - 1423.318353709273 - - - 0.1154298007315222 - - - - - Home Loans Today - - - .03125 - - - 1.1 - - - 285 - - - 333915 - - - 66783 - - - 1430.409890005697 - - - 0.1219478687825963 - - - - - Sebonic - - - .03125 - - - 0.1 - - - 4028 - - - 334358 - - - 66871.6 - - - 1432.307593257341 - - - 0.1207829702481527 - - - - - AimLoan - - - .03125 - - - 0.1 - - - 4317 - - - 334647 - - - 66929.4 - - - 1433.545598313153 - - - 0.1200230251545745 - - - - - eRates Mortgage - - - .03125 - - - 1.1 - - - 2518 - - - 336148 - - - 67229.6 - - - 1439.975513845245 - - - 0.1160760438900096 - - - - - Home Loans Today - - - .03250 - - - 0.1 - - - 822 - - - 331152 - - - 66230.4 - - - 1441.194429734607 - - - 0.1261025270361139 - - - - - AimLoan - - - .03250 - - - 0 - - - 1995 - - - 331995 - - - 66399 - - - 1444.863219004387 - - - 0.1238778822515175 - - - - - - - - - AimLoan - - - .03000 - - - 1.1 - - - 3966 - - - 337596 - - - 67519.2 - - - 1423.318353709273 - - - 0.1154298007315222 - - - - - Home Loans Today - - - .03125 - - - 1.1 - - - 285 - - - 333915 - - - 66783 - - - 1430.409890005697 - - - 0.1219478687825963 - - - - - Sebonic - - - .03125 - - - 0.1 - - - 4028 - - - 334358 - - - 66871.6 - - - 1432.307593257341 - - - 0.1207829702481527 - - - - - AimLoan - - - .03125 - - - 0.1 - - - 4317 - - - 334647 - - - 66929.4 - - - 1433.545598313153 - - - 0.1200230251545745 - - - - - eRates Mortgage - - - .03125 - - - 1.1 - - - 2518 - - - 336148 - - - 67229.6 - - - 1439.975513845245 - - - 0.1160760438900096 - - - - - eClick Lending - - - .03200 - - - 1.1 - - - 2700 - - - 336330 - - - 67266 - - - 1454.51580776472 - - - 0.1137029731874643 - - - - - Home Loans Today - - - .03250 - - - 0.1 - - - 822 - - - 331152 - - - 66230.4 - - - 1441.194429734607 - - - 0.1261025270361139 - - - - - AimLoan - - - .03250 - - - 0 - - - 1995 - - - 331995 - - - 66399 - - - 1444.863219004387 - - - 0.1238778822515175 - - - - - eClickLending - - - .03375 - - - 0.1 - - - 1200 - - - 331530 - - - 66306 - - - 1465.681565899816 - - - 0.1219807467513794 - - - - - Oceans Capital - - - .03500 - - - 0 - - - 0 - - - 330000 - - - 66000 - - - 1481.847469769075 - - - 0.1229130806675829 - - - - - - - - - Oceans Capital - - - .03500 - - - 0 - - - 0 - - - 330000 - - - 66000 - - - 1481.847469769075 - - - 0.1229130806675829 - - - - - Home Loans Today - - - .03250 - - - 0.1 - - - 822 - - - 331152 - - - 66230.4 - - - 1441.194429734607 - - - 0.1261025270361139 - - - - - eClickLending - - - .03375 - - - 0.1 - - - 1200 - - - 331530 - - - 66306 - - - 1465.681565899816 - - - 0.1219807467513794 - - - - - AimLoan - - - .03250 - - - 0 - - - 1995 - - - 331995 - - - 66399 - - - 1444.863219004387 - - - 0.1238778822515175 - - - - - Home Loans Today - - - .03125 - - - 1.1 - - - 285 - - - 333915 - - - 66783 - - - 1430.409890005697 - - - 0.1219478687825963 - - - - - Sebonic - - - .03125 - - - 0.1 - - - 4028 - - - 334358 - - - 66871.6 - - - 1432.307593257341 - - - 0.1207829702481527 - - - - - AimLoan - - - .03125 - - - 0.1 - - - 4317 - - - 334647 - - - 66929.4 - - - 1433.545598313153 - - - 0.1200230251545745 - - - - - eRates Mortgage - - - .03125 - - - 1.1 - - - 2518 - - - 336148 - - - 67229.6 - - - 1439.975513845245 - - - 0.1160760438900096 - - - - - eClick Lending - - - .03200 - - - 1.1 - - - 2700 - - - 336330 - - - 67266 - - - 1454.51580776472 - - - 0.1137029731874643 - - - - - AimLoan - - - .03000 - - - 1.1 - - - 3966 - - - 337596 - - - 67519.2 - - - 1423.318353709273 - - - 0.1154298007315222 - - - - - - - - - AimLoan - - - .03000 - - - 1.1 - - - 3966 - - - 337596 - - - 67519.2 - - - 1423.318353709273 - - - 0.1154298007315222 - - - - - Home Loans Today - - - .03125 - - - 1.1 - - - 285 - - - 333915 - - - 66783 - - - 1430.409890005697 - - - 0.1219478687825963 - - - - - Sebonic - - - .03125 - - - 0.1 - - - 4028 - - - 334358 - - - 66871.6 - - - 1432.307593257341 - - - 0.1207829702481527 - - - - - AimLoan - - - .03125 - - - 0.1 - - - 4317 - - - 334647 - - - 66929.4 - - - 1433.545598313153 - - - 0.1200230251545745 - - - - - eRates Mortgage - - - .03125 - - - 1.1 - - - 2518 - - - 336148 - - - 67229.6 - - - 1439.975513845245 - - - 0.1160760438900096 - - - - - Home Loans Today - - - .03250 - - - 0.1 - - - 822 - - - 331152 - - - 66230.4 - - - 1441.194429734607 - - - 0.1261025270361139 - - - - - AimLoan - - - .03250 - - - 0 - - - 1995 - - - 331995 - - - 66399 - - - 1444.863219004387 - - - 0.1238778822515175 - - - - - eClick Lending - - - .03200 - - - 1.1 - - - 2700 - - - 336330 - - - 67266 - - - 1454.51580776472 - - - 0.1137029731874643 - - - - - eClickLending - - - .03375 - - - 0.1 - - - 1200 - - - 331530 - - - 66306 - - - 1465.681565899816 - - - 0.1219807467513794 - - - - - Oceans Capital - - - .03500 - - - 0 - - - 0 - - - 330000 - - - 66000 - - - 1481.847469769075 - - - 0.1229130806675829 - - - - - - - - - Home Loans Today - - - .03250 - - - 0.1 - - - 822 - - - 331152 - - - 66230.4 - - - 1441.194429734607 - - - 0.1261025270361139 - - - - - AimLoan - - - .03250 - - - 0 - - - 1995 - - - 331995 - - - 66399 - - - 1444.863219004387 - - - 0.1238778822515175 - - - - - Oceans Capital - - - .03500 - - - 0 - - - 0 - - - 330000 - - - 66000 - - - 1481.847469769075 - - - 0.1229130806675829 - - - - - eClickLending - - - .03375 - - - 0.1 - - - 1200 - - - 331530 - - - 66306 - - - 1465.681565899816 - - - 0.1219807467513794 - - - - - Home Loans Today - - - .03125 - - - 1.1 - - - 285 - - - 333915 - - - 66783 - - - 1430.409890005697 - - - 0.1219478687825963 - - - - - Sebonic - - - .03125 - - - 0.1 - - - 4028 - - - 334358 - - - 66871.6 - - - 1432.307593257341 - - - 0.1207829702481527 - - - - - AimLoan - - - .03125 - - - 0.1 - - - 4317 - - - 334647 - - - 66929.4 - - - 1433.545598313153 - - - 0.1200230251545745 - - - - - eRates Mortgage - - - .03125 - - - 1.1 - - - 2518 - - - 336148 - - - 67229.6 - - - 1439.975513845245 - - - 0.1160760438900096 - - - - - AimLoan - - - .03000 - - - 1.1 - - - 3966 - - - 337596 - - - 67519.2 - - - 1423.318353709273 - - - 0.1154298007315222 - - - - - eClick Lending - - - .03200 - - - 1.1 - - - 2700 - - - 336330 - - - 67266 - - - 1454.51580776472 - - - 0.1137029731874643 - - - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0016-some-every/translator/standard/0016-some-every-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0016-some-every/translator/standard/0016-some-every-test-01.xml deleted file mode 100644 index c2e10ae65..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0016-some-every/translator/standard/0016-some-every-test-01.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - 0016-some-every.dmn - - - - - - - - - - - - - - - - - - - widget - - - 25 - - - - - sprocket - - - 15 - - - - - trinket - - - 1.5 - - - - - - - - - - widget - - - 25 - - - - - sprocket - - - 15 - - - - - trinket - - - 1.5 - - - - - - - - false - - - - - false - - - - - true - - - - - true - - - - - false - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0017-tableTests/translator/standard/0017-tableTests-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0017-tableTests/translator/standard/0017-tableTests-test-01.xml deleted file mode 100644 index 0a7e38771..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0017-tableTests/translator/standard/0017-tableTests-test-01.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - 0017-tableTests.dmn - - - - - - - - - - - - - - - - - - - - widget - - - 20 - - - - - true - - - - - - - widget - - - 20 - - - - 9 - - - 10 - - - - Not in range - - - - - - 2016-11-01 - - - - true - - - - - - 2016-11-01 - - - 2016-11-02 - - - - false - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0020-vacation-days/translator/standard/0020-vacation-days-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0020-vacation-days/translator/standard/0020-vacation-days-test-01.xml deleted file mode 100644 index 9be910605..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0020-vacation-days/translator/standard/0020-vacation-days-test-01.xml +++ /dev/null @@ -1,106 +0,0 @@ - - - 0020-vacation-days.dmn - - - - - - - - - - - - - - 16 - - - 1 - - - - 27 - - - - - - 25 - - - 5 - - - - 22 - - - - - - 25 - - - 20 - - - - 24 - - - - - - 44 - - - 30 - - - - 30 - - - - - - 50 - - - 20 - - - - 24 - - - - - - 50 - - - 30 - - - - 30 - - - - - - 60 - - - 20 - - - - 30 - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0021-singleton-list/translator/standard/0021-singleton-list-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0021-singleton-list/translator/standard/0021-singleton-list-test-01.xml deleted file mode 100644 index 7695c4b42..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0021-singleton-list/translator/standard/0021-singleton-list-test-01.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - 0021-singleton-list.dmn - - - - - - - - - - The purpose of this test is to check that the engine is properly coercing singleton lists into single elements (i.e., [a]=a) - - - - Jack - - - John - - - Bob - - - Zack - - - - - - - - John - - - - - - - John - - - - - - - Bob - - - - - - - Bob - - - - - BOB - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0030-static-user-defined-functions/translator/standard/0030-user-defined-functions-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0030-static-user-defined-functions/translator/standard/0030-user-defined-functions-test-01.xml deleted file mode 100644 index 85966e0b5..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0030-static-user-defined-functions/translator/standard/0030-user-defined-functions-test-01.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - 0030-user-defined-functions.dmn - - - - - - - - - - Tests simple user defined function definition and - invocation - - - feel - - - # - - - - feel#feel# - - - - - #feel#feel - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0030-user-defined-functions/translator/standard/0030-user-defined-functions-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0030-user-defined-functions/translator/standard/0030-user-defined-functions-test-01.xml deleted file mode 100644 index 85966e0b5..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0030-user-defined-functions/translator/standard/0030-user-defined-functions-test-01.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - 0030-user-defined-functions.dmn - - - - - - - - - - Tests simple user defined function definition and - invocation - - - feel - - - # - - - - feel#feel# - - - - - #feel#feel - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0031-static-user-defined-functions/translator/standard/0030-user-defined-functions-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0031-static-user-defined-functions/translator/standard/0030-user-defined-functions-test-01.xml deleted file mode 100644 index 85966e0b5..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0031-static-user-defined-functions/translator/standard/0030-user-defined-functions-test-01.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - 0030-user-defined-functions.dmn - - - - - - - - - - Tests simple user defined function definition and - invocation - - - feel - - - # - - - - feel#feel# - - - - - #feel#feel - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0031-user-defined-functions/translator/standard/0031-user-defined-functions-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0031-user-defined-functions/translator/standard/0031-user-defined-functions-test-01.xml deleted file mode 100644 index 9d0ff3627..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0031-user-defined-functions/translator/standard/0031-user-defined-functions-test-01.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - 0031-user-defined-functions.dmn - - - - - - - - - - - - - Tests user defined function invocation with positional - parameters - - - 10 - - - 5 - - - - - 15 - - - 2 - - - 50 - - - - - - Tests user defined function invocation with named - parameters - - - 10 - - - 5 - - - - - 5 - - - -5 - - - 2 - - - 50 - - - - - - Tests user defined function invocation with complex - parameters - - - 10 - - - 5 - - - - - 500 - - - 200 - - - 94.247760 - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0032-conditionals/translator/standard/0032-conditionals-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0032-conditionals/translator/standard/0032-conditionals-test-01.xml deleted file mode 100644 index 350a57cec..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0032-conditionals/translator/standard/0032-conditionals-test-01.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - 0032-conditionals.dmn - - - - - - - - - - - - Tests simple 'if' condition for true - - true - - - 100 - - - - 110 - - - - - Tests simple 'if' condition for false - - false - - - 100 - - - - 90 - - - - - Tests simple 'if' condition for null - - - - - 100 - - - - 90 - - - - - Tests 'if' condition with function calls for true - - 2017-01-02 - - - Hello World - - - - Hello - - - - - Tests 'if' condition with function calls for false - - 2017-01-01 - - - Hello World - - - - World - - - - - Tests 'if' condition with function calls for null - - - - - Hello World - - - - World - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0033-for-loops/translator/standard/0033-for-loops-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0033-for-loops/translator/standard/0033-for-loops-test-01.xml deleted file mode 100644 index a30809090..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0033-for-loops/translator/standard/0033-for-loops-test-01.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - 0033-for-loops.dmn - - - - - - - - - - - - - - - - - Tests single variable iteration - - - - 10 - - - 20 - - - 30 - - - - - - - - 11 - - - 21 - - - 31 - - - - - - - Tests multi variable iteration - - - - 10 - - - 20 - - - 30 - - - - - - - 2 - - - 3 - - - - - - - - 20 - - - 30 - - - 40 - - - 60 - - - 60 - - - 90 - - - - - - - Tests single variable iteration with BKM call - - 35 - - - - - 2 - - - 3 - - - 5 - - - 7 - - - 11 - - - - - - - - false - - - false - - - true - - - true - - - false - - - - - - - Tests single variable iteration with inline list - - 10 - - - - - - 20 - - - 30 - - - 40 - - - 50 - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0034-drg-scopes/translator/standard/0034-drg-scopes-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0034-drg-scopes/translator/standard/0034-drg-scopes-test-01.xml deleted file mode 100644 index e4235649f..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0034-drg-scopes/translator/standard/0034-drg-scopes-test-01.xml +++ /dev/null @@ -1,223 +0,0 @@ - - - 0034-drg-scopes.dmn - - - - - - - - - - - - - Tests information requirements of decisions and knowledge requirements of business knowledge models - - - A - - - B - - - C - - - - - A - - - - - - - - A - - - - - - - - - A - - - - - - - - - - A - - - - - - - A - - - - - - - - - B - - - A - - - - - - - - B - - - A - - - - - - - - - B - - - A - - - - - - - - - - B - - - A - - - - - - - B - - - A - - - - - - - - A - - - - - - - A - - - - - - - - - - C - - - - - - A - - - - - - - A - - - - - - - - - B - - - A - - - - - - - B - - - A - - - - - - - - A - - - - - - - A - - - - - - - - - - BKM I # BKM II # BKM III # decision C 2 # BKM IV # BKM III # decision C 2 - - - - - BKM II # BKM III # decision C 3 # BKM IV # BKM III # decision C 3 - - - - - - BKM II # BKM III # decision C 3 # BKM IV # BKM III # decision C 3 - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0035-test-structure-output/translator/standard/0035-test-structure-output-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0035-test-structure-output/translator/standard/0035-test-structure-output-test-01.xml deleted file mode 100644 index 3e3b5bfc8..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0035-test-structure-output/translator/standard/0035-test-structure-output-test-01.xml +++ /dev/null @@ -1,150 +0,0 @@ - - - 0035-test-structure-output.dmn - - - - - - - - - - - - - - - - - - - - 0 - - - 65 - - - 83 - - - - - - 0 - - - 65 - - - 83 - - - - #004153 - - - - 100 - - - 22 - - - 0 - - - 67 - - - - - - - - 0 - - - 0 - - - 0 - - - - - - 0 - - - 0 - - - 0 - - - - #000000 - - - - 0 - - - 0 - - - 0 - - - 100 - - - - - - - - 204 - - - 0 - - - 0 - - - - - - 204 - - - 0 - - - 0 - - - - #CC0000 - - - - 0 - - - 100 - - - 100 - - - 20 - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0036-dt-variable-input/translator/standard/0036-dt-variable-input-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0036-dt-variable-input/translator/standard/0036-dt-variable-input-test-01.xml deleted file mode 100644 index 9be903ae6..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0036-dt-variable-input/translator/standard/0036-dt-variable-input-test-01.xml +++ /dev/null @@ -1,303 +0,0 @@ - - - 0036-dt-variable-input.dmn - - Compliance Level 3 - Decision Table: Single Output - FEEL Special-character Names - Hit Policy: UNIQUE - Item Definition - Literal Expression - Data Type: String - Data Type: Number - Data Type: Structure - Data Type: Boolean - Data Type: Date - Data Type: Time - Data Type: Date and Time - Data Type: Days and Time Duration - Data Type: Years and Months Duration - - - Test different, higher values - - - true - - - 10 - - - "Hi" - - - 2018-07-30 - - - 16:11:00 - - - 2018-07-30T16:12:00Z - - - PT10H - - - P5M - - - - false - - - "Hello" - - - 15 - - - 2018-07-31 - - - 17:13:00 - - - 2018-07-31T17:13:00Z - - - PT12H - - - P8M - - - - Different String - - - - - Future Date - - - - - Bigger - - - - - Future date time - - - - - Longer duration - - - - - Longer duration - - - - - Future Time - - - - - Not same boolean - - - - - Test different, lower values - - - true - - - 10 - - - "Hi" - - - 2018-07-30 - - - 16:11:00 - - - 2018-07-30T16:12:00Z - - - PT10H - - - P5M - - - - false - - - "Hello" - - - 5 - - - 2018-07-29 - - - 15:13:00 - - - 2018-07-29T15:13:00Z - - - PT8H - - - P3M - - - - Different String - - - - - Past Date - - - - - Smaller - - - - - Past date time - - - - - Shorter duration - - - - - Shorter duration - - - - - Past Time - - - - - Not same boolean - - - - - Same values - - - true - - - 10 - - - "Hi" - - - 2018-07-30 - - - 16:11:00 - - - 2018-07-30T16:12:00Z - - - PT10H - - - P5M - - - - true - - - "Hi" - - - 10 - - - 2018-07-30 - - - 16:11:00 - - - 2018-07-30T16:12:00Z - - - PT10H - - - P5M - - - - Same String - - - - - Same Date - - - - - Equals - - - - - Same date time - - - - - Same duration - - - - - Same duration - - - - - Same Time - - - - - Same boolean - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0037-dt-on-bkm-implicit-params/translator/standard/0037-dt-on-bkm-implicit-params-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0037-dt-on-bkm-implicit-params/translator/standard/0037-dt-on-bkm-implicit-params-test-01.xml deleted file mode 100644 index a4b4bc656..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0037-dt-on-bkm-implicit-params/translator/standard/0037-dt-on-bkm-implicit-params-test-01.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - 0037-dt-on-bkm-implicit-params.dmn - - Compliance Level 3 - Decision Table: Single Output - FEEL Special-character Names - Hit Policy: UNIQUE - Item Definition - Literal Expression - Data Type: String - Data Type: Number - Data Type: Structure - FEEL Functions: strings - Business Knowledge Model - - - Male - - - Bob - - - Male - - - 3 - - - - - Bob is a dad of 3 children. - - - - - Female - - - Alice - - - Female - - - 2 - - - - - Alice is a mother of 2 children. - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0038-dt-on-bkm-explicit-params/translator/standard/0038-dt-on-bkm-explicit-params-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0038-dt-on-bkm-explicit-params/translator/standard/0038-dt-on-bkm-explicit-params-test-01.xml deleted file mode 100644 index 4dd7a2e21..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0038-dt-on-bkm-explicit-params/translator/standard/0038-dt-on-bkm-explicit-params-test-01.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - 0038-dt-on-bkm-explicit-params.dmn - - Compliance Level 3 - Decision Table: Single Output - Context - FEEL Special-character Names - Hit Policy: UNIQUE - Item Definition - Literal Expression - Data Type: String - Data Type: Number - Data Type: Structure - FEEL Functions: strings - Business Knowledge Model - - - Test Female - - - Alice - - - Female - - - 2 - - - - - Alice is a mother of 2 children. - - - - - Test Male - - - Bob - - - Male - - - 3 - - - - - Bob is a dad of 3 children. - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0039-dt-list-semantics/translator/standard/0039-dt-list-semantics-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0039-dt-list-semantics/translator/standard/0039-dt-list-semantics-test-01.xml deleted file mode 100644 index 3eba7959f..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0039-dt-list-semantics/translator/standard/0039-dt-list-semantics-test-01.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - 0039-dt-list-semantics.dmn - - Compliance Level 3 - Decision Table: Single Output - FEEL Special-character Names - Hit Policy: COLLECT - Item Definition - Literal Expression - Data Type: String - FEEL List Operator - - - select 1 and 2 - - - - fever - - - cough - - - sore throat - - - runny nose - - - - - cough - - - - - - cough is in the list of Cold symptoms - - - cough is in the list of Flu symptoms - - - - - - - select 2 - - - - fever - - - cough - - - sore throat - - - runny nose - - - - - fever - - - - - - fever is in the list of Flu symptoms - - - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0040-singlenestedcontext/translator/standard/0040-singlenestedcontext-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0040-singlenestedcontext/translator/standard/0040-singlenestedcontext-test-01.xml deleted file mode 100644 index ff3851a98..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0040-singlenestedcontext/translator/standard/0040-singlenestedcontext-test-01.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - 0040-singlenestedcontext.dmn - - - - - - - - 600000 - - - 360 - - - - 2878.6935494327668 - - - - - - 30000 - - - 60 - - - - 649.1175498364003 - - - - - - 600000 - - - 365 - - - - 2858.1160998965915 - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/0041-multiple-nestedcontext/translator/standard/0041-multiple-nestedcontext-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/0041-multiple-nestedcontext/translator/standard/0041-multiple-nestedcontext-test-01.xml deleted file mode 100644 index ab0feb93d..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/0041-multiple-nestedcontext/translator/standard/0041-multiple-nestedcontext-test-01.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - 0041-multiple-nestedcontext.dmn - - - - - - - - 600000 - - - 360 - - - - 2778.6935494327668 - - - - - - 30000 - - - 60 - - - - 549.1175498364003 - - - - - - 600000 - - - 365 - - - - 2758.1160998965915 - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1100-feel-decimal-function/translator/standard/1100-feel-decimal-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1100-feel-decimal-function/translator/standard/1100-feel-decimal-function-test-01.xml deleted file mode 100644 index bc66dd76a..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1100-feel-decimal-function/translator/standard/1100-feel-decimal-function-test-01.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - 1100-feel-decimal-function.dmn - - - - - - - - - - 0.33 - - - - - - - 0.33 - - - - - - - 2 - - - - - - - 2 - - - - - - - 0 - - - - - - - 0.0 - - - - - - - 0.52 - - - - - - - 65.123456 - - - - - - - 2.143 - - - - - - - 0.385 - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1101-feel-floor-function/translator/standard/1101-feel-floor-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1101-feel-floor-function/translator/standard/1101-feel-floor-function-test-01.xml deleted file mode 100644 index 75eede82b..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1101-feel-floor-function/translator/standard/1101-feel-floor-function-test-01.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - 1101-feel-floor-function.dmn - - - - - - - - - - - 1 - - - - - - - -2 - - - - - - - 1 - - - - - - - -11 - - - - - - - 5 - - - - - - - -1 - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1102-feel-ceiling-function/translator/standard/1102-feel-ceiling-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1102-feel-ceiling-function/translator/standard/1102-feel-ceiling-function-test-01.xml deleted file mode 100644 index 6ce09a1a8..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1102-feel-ceiling-function/translator/standard/1102-feel-ceiling-function-test-01.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - 1102-feel-ceiling-function.dmn - - - - - - - - - - 2 - - - - - - - -1 - - - - - - - 1 - - - - - - - -10 - - - - - - - 6 - - - - - - - 0 - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1103-feel-substring-function/translator/standard/1103-feel-substring-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1103-feel-substring-function/translator/standard/1103-feel-substring-function-test-01.xml deleted file mode 100644 index abf525c25..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1103-feel-substring-function/translator/standard/1103-feel-substring-function-test-01.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - 1103-feel-substring-function.dmn - - - - - - - - - - f - - - - - - - f - - - - - - - r - - - - - - - foobar - - - - - - - obar - - - - - - - oba - - - - - - - a - - - - - - - - - - - - - - foobar - - - - - - - oba - - - - - - - obar - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1104-feel-string-length-function/translator/standard/1104-feel-string-length-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1104-feel-string-length-function/translator/standard/1104-feel-string-length-function-test-01.xml deleted file mode 100644 index 59ad04bd7..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1104-feel-string-length-function/translator/standard/1104-feel-string-length-function-test-01.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - 1104-feel-string-length-function.dmn - - - - - - - - - - 0 - - - - - - - 1 - - - - - - - 3 - - - - - - - 6 - - - - - - - 10 - - - - - - - 11 - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1105-feel-upper-case-function/translator/standard/1105-feel-upper-case-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1105-feel-upper-case-function/translator/standard/1105-feel-upper-case-function-test-01.xml deleted file mode 100644 index c9a907843..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1105-feel-upper-case-function/translator/standard/1105-feel-upper-case-function-test-01.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - 1105-feel-upper-case-function.dmn - - - - - - - - - - A - - - - - - - ABC - - - - - - - - - - - - - - 1 - - - - - - - ?@{ - - - - - - - ABDCF - - - - - - - XYZ - - - - - - - 123ABC - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1106-feel-lower-case-function/translator/standard/1106-feel-lower-case-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1106-feel-lower-case-function/translator/standard/1106-feel-lower-case-function-test-01.xml deleted file mode 100644 index 61a046642..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1106-feel-lower-case-function/translator/standard/1106-feel-lower-case-function-test-01.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - 1106-feel-lower-case-function.dmn - - - - - - - - - - a - - - - - - - abc - - - - - - - abc - - - - - - - abc4 - - - - - - - - - - - - - - ?@{ - - - - - - - abdcf - - - - - - - xyz - - - - - - - 123abc - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1107-feel-substring-before-function/translator/standard/1107-feel-substring-before-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1107-feel-substring-before-function/translator/standard/1107-feel-substring-before-function-test-01.xml deleted file mode 100644 index 20c1e8ac0..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1107-feel-substring-before-function/translator/standard/1107-feel-substring-before-function-test-01.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - 1107-feel-substring-before-function.dmn - - - - - - - - - - foo - - - - - - - f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ab - - - - - - - foo - - - - - - - foo - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1108-feel-substring-after-function/translator/standard/1108-feel-substring-after-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1108-feel-substring-after-function/translator/standard/1108-feel-substring-after-function-test-01.xml deleted file mode 100644 index 497f14659..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1108-feel-substring-after-function/translator/standard/1108-feel-substring-after-function-test-01.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - 1108-feel-substring-after-function.dmn - - - - - - - - - - ar - - - - - - - obar - - - - - - - - - - - - - - - - - - - - - - - - - - - - abc - - - - - - - - - - - - - - bc - - - - - - - ar - - - - - - - ar - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1109-feel-replace-function/translator/standard/1109-feel-replace-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1109-feel-replace-function/translator/standard/1109-feel-replace-function-test-01.xml deleted file mode 100644 index 1fe2f1d5e..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1109-feel-replace-function/translator/standard/1109-feel-replace-function-test-01.xml +++ /dev/null @@ -1,207 +0,0 @@ - - - - 1109-feel-replace-function.dmn - - - - - - - - - - [1=ab][2=]cd - - - - - - - a - - - - - - - # - - - - - - - abc - - - - - - - abc - - - - - - - #ar - - - - - - - abc - - - - - - - a*cada* - - - - - - - * - - - - - - - *c*bra - - - - - - - brcdbr - - - - - - - abbraccaddabbra - - - - - - - b - - - - - - - bbbb - - - - - - - carted - - - - - - - Xant - - - - - - - (012) 345-6789 - - - - - - - facet[i][o][u]sl[y] - - - - - - - ### - - - - - - - #.#.#. - - - - - - - ### - - - - - - - ### - - - - - - - # # # # - - - - - - - abc - - - - - - - ### - - - - - - - abc - - - - - - - ### - - - - - - - abc - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1110-feel-contains-function/translator/standard/1110-feel-contains-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1110-feel-contains-function/translator/standard/1110-feel-contains-function-test-01.xml deleted file mode 100644 index 6c6621efb..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1110-feel-contains-function/translator/standard/1110-feel-contains-function-test-01.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - 1110-feel-contains-function.dmn - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - true - - - - - - - true - - - - - - - false - - - - - - - true - - - - - - - true - - - - - - - true - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1115-feel-date-function/translator/standard/1115-feel-date-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1115-feel-date-function/translator/standard/1115-feel-date-function-test-01.xml deleted file mode 100644 index 20914194d..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1115-feel-date-function/translator/standard/1115-feel-date-function-test-01.xml +++ /dev/null @@ -1,375 +0,0 @@ - - - - 1115-feel-date-function.dmn - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2017-12-31 - - - - - - - 2017-01-01 - - - - - - - -2017-12-31 - - - - - - - -2017-01-01 - - - - - - - 999999999-12-31 - - - - - - - -999999999-12-31 - - - - - - - 2017-08-14 - - - - - - - 2017-08-14 - - - - - - - 2017-08-14 - - - - - - - 2017-09-03 - - - - - - - 2017-09-06 - - - - - - - 2012-12-25 - - - - - - - 2017-08-03 - - - - - - - 2017-10-11 - - - - - - - 2017-12-31 - - - - - - - 2017-01-01 - - - - - - - -2017-12-31 - - - - - - - -2017-01-01 - - - - - - - 999999999-12-31 - - - - - - - -999999999-12-31 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2012-12-25 - - - - - - - 2017-08-30 - - - - - - - 2017-08-30 - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1116-feel-time-function/translator/standard/1116-feel-time-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1116-feel-time-function/translator/standard/1116-feel-time-function-test-01.xml deleted file mode 100644 index d26350b02..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1116-feel-time-function/translator/standard/1116-feel-time-function-test-01.xml +++ /dev/null @@ -1,599 +0,0 @@ - - - - 1116-feel-time-function.dmn - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 12:00:00 - - - - - - - - 01:02:03 - - - - - - - 00:00:00 - - - - - - - 11:22:33.444 - - - - - - - 11:22:33.123456789 - - - - - - - 23:59:00Z - - - - - - - 11:00:00Z - - - - - - - 00:00:00Z - - - - - - - 13:20:00+02:00 - - - - - - - 13:20:00-05:00 - - - - - - - 11:22:33Z - - - - - - - 11:22:33Z - - - - - - - 00:01:00@Etc/UTC - - - - - - - 00:01:00@Europe/Paris - - - - - - - 10:20:00 - - - - - - - 10:20:00Z - - - - - - - 10:20:00Z - - - - - - - 10:20:00+01:00 - - - - - - - 10:20:00-01:00 - - - - - - - 10:20:00Z - - - - - - - 10:20:00@Europe/Paris - - - - - - - 11:20:00@Asia/Dhaka - - - - - - - 11:59:45 - - - - - - - 11:59:45Z - - - - - - - 11:59:45+02:00 - - - - - - - 11:59:45-02:00 - - - - - - - 11:59:00+02:01 - - - - - - - 11:59:00-02:01 - - - - - - - 11:59:00+02:01 - - - - - - - 11:59:00-02:01 - - - - - - - 11:59:45+02:45:55 - - - - - - - 11:59:45-02:45:55 - - - - - - - 11:59:45Z - - - - - - - 23:59:01 - - - - - - - 23:59:01.987654321 - - - - - - - 09:15:30+02:00 - - - - - - - 09:15:30Z - - - - - - - 00:00:00Z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 23:59:00 - - - - - - - 12:45:00 - - - - - - - 11:59:00+02:01 - - - - - - - 11:59:00-02:00 - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1117-feel-date-and-time-function/translator/standard/1117-feel-date-and-time-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1117-feel-date-and-time-function/translator/standard/1117-feel-date-and-time-function-test-01.xml deleted file mode 100644 index 6a377cda5..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1117-feel-date-and-time-function/translator/standard/1117-feel-date-and-time-function-test-01.xml +++ /dev/null @@ -1,632 +0,0 @@ - - - - 1117-feel-date-and-time-function.dmn - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2012-12-24T00:00:00 - - - - - - - 2017-12-31T00:00:00 - - - - - - - 2017-12-31T11:22:33 - - - - - - - -2017-12-31T11:22:33 - - - - - - - 99999-12-31T11:22:33 - - - - - - - -99999-12-31T11:22:33 - - - - - - - 2017-12-31T11:22:33.345 - - - - - - - 2017-12-31T11:22:33.123456789 - - - - - - - 2017-12-31T11:22:33Z - - - - - - - 2017-12-31T11:22:33.567Z - - - - - - - 2017-12-31T11:22:33+01:00 - - - - - - - 2017-12-31T11:22:33-02:00 - - - - - - - 2017-12-31T11:22:33+01:35 - - - - - - - 2017-12-31T11:22:33-01:35 - - - - - - - 2017-12-31T11:22:33.456+01:35 - - - - - - - -2017-12-31T11:22:33.456+01:35 - - - - - - - 2011-12-31T10:15:30@Europe/Paris - - - - - - - 2011-12-31T10:15:30@Etc/UTC - - - - - - - 2011-12-31T10:15:30.987@Europe/Paris - - - - - - - 2011-12-31T10:15:30.123456789@Europe/Paris - - - - - - - 999999999-12-31T23:59:59.999999999@Europe/Paris - - - - - - - -999999999-12-31T23:59:59.999999999+02:00 - - - - - - - 2017-01-01T23:59:01 - - - - - - - 2017-01-01T23:59:01Z - - - - - - - 2017-01-01T23:59:01+02:00 - - - - - - - 2017-01-01T23:59:01@Europe/Paris - - - - - - - 2017-01-01T23:59:01.123456789@Europe/Paris - - - - - - - 2017-08-10T23:59:01 - - - - - - - 2017-08-10T23:59:01.987654321 - - - - - - - 2017-09-05T09:15:30+02:00 - - - - - - - 2017-09-05T09:15:30Z - - - - - - - 2017-09-05T09:15:30.987654321+02:00 - - - - - - - 2017-09-05T09:15:30.123456Z - - - - - - - 2017-09-05T09:15:30.987654321@Europe/Paris - - - - - - - 2017-08-10T23:59:01 - - - - - - - 2017-08-10T23:59:01.987654321 - - - - - - - 2017-09-05T09:15:30+02:00 - - - - - - - 2017-09-05T09:15:30Z - - - - - - - 2017-09-05T09:15:30.987654321+02:00 - - - - - - - 2017-09-05T09:15:30.123456Z - - - - - - - 2017-09-05T09:15:30.987654321@Europe/Paris - - - - - - - 2017-08-10T23:59:01 - - - - - - - 2017-08-10T23:59:01.987654321 - - - - - - - 2017-09-05T09:15:30+02:00 - - - - - - - 2017-09-05T09:15:30Z - - - - - - - 2017-09-05T09:15:30.987654321+02:00 - - - - - - - 2017-09-05T09:15:30.123456Z - - - - - - - 2017-09-05T09:15:30.987654321@Europe/Paris - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2012-12-24T23:59:00 - - - - - - - 2017-01-01T23:59:01 - - - - - - - 2017-01-01T23:59:01 - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1120-feel-duration-function/translator/standard/1120-feel-duration-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1120-feel-duration-function/translator/standard/1120-feel-duration-function-test-01.xml deleted file mode 100644 index 8906a4eb5..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1120-feel-duration-function/translator/standard/1120-feel-duration-function-test-01.xml +++ /dev/null @@ -1,376 +0,0 @@ - - - - 1120-feel-duration-function.dmn - - - - - - - - - - - - - - - - - P1D - - - - - - - PT2H - - - - - - - PT3M - - - - - - - PT4S - - - - - - - PT0.999S - - - - - - - P1DT2H3M4.123456789S - - - - - - - PT0S - - - - - - - PT0S - - - - - - - PT0S - - - - - - - PT0S - - - - - - - PT0S - - - - - - - PT0S - - - - - - - -PT1H2M - - - - - - - PT16H40M - - - - - - - PT16H40M0.999999999S - - - - - - - PT9H15M - - - - - - - PT1H1M - - - - - - - P1D - - - - - - - P10D - - - - - - - P2DT1H40M - - - - - - - PT1H - - - - - - - P2DT4H34M - - - - - - - P1Y2M - - - - - - - P1Y - - - - - - - P0M - - - - - - - P0M - - - - - - - -P1Y - - - - - - - P2Y2M - - - - - - - P3Y3M - - - - - - - P8Y4M - - - - - - - -P8Y4M - - - - - - - P83333333Y3M - - - - - - - -P83333333Y3M - - - - - - - P99999999Y - - - - - - - -P99999999Y - - - - - - - P1Y - - - - - - - P1D - - - - - - - P2Y2M - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/1121-feel-years-and-months-duration-function/translator/standard/1121-feel-years-and-months-duration-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/1121-feel-years-and-months-duration-function/translator/standard/1121-feel-years-and-months-duration-function-test-01.xml deleted file mode 100644 index ea82a7081..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/1121-feel-years-and-months-duration-function/translator/standard/1121-feel-years-and-months-duration-function-test-01.xml +++ /dev/null @@ -1,271 +0,0 @@ - - - - 1121-feel-years-and-months-duration-function.dmn - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - P1Y8M - - - - - - - -P1Y8M - - - - - - - P1Y - - - - - - - -P1Y - - - - - - - P0M - - - - - - - P0M - - - - - - - P1Y2M - - - - - - - P7Y6M - - - - - - - P4Y9M - - - - - - - -P11M - - - - - - - -P4033Y2M - - - - - - - -P4035Y11M - - - - - - - P2Y - - - - - - - P11M - - - - - - - P5Y7M - - - - - - - P1Y - - - - - - - P4Y - - - - - - - P2Y9M - - - - - - - P3Y - - - - - - - - - - - - - - - - - P4Y3M - - - - - - - P2Y4M - - - - - - - P1Y - - - - - - - P2Y - - - - - - - P1Y8M - - - - - - - -P1Y - - - - diff --git a/dmn-test-cases/standard/tck/1.1/cl3/9001-recursive-function/translator/standard/9001-recursive-function-test-01.xml b/dmn-test-cases/standard/tck/1.1/cl3/9001-recursive-function/translator/standard/9001-recursive-function-test-01.xml deleted file mode 100644 index 964403217..000000000 --- a/dmn-test-cases/standard/tck/1.1/cl3/9001-recursive-function/translator/standard/9001-recursive-function-test-01.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - 9001-recursive-function.dmn - - - - - - - 0 - - - - 1 - - - - - - 1 - - - - 1 - - - - - - 3 - - - - 6 - - - - - - -1 - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.2/cl3/0012-list-functions/translator/standard/0012-list-functions-test-01.xml b/dmn-test-cases/standard/tck/1.2/cl3/0012-list-functions/translator/standard/0012-list-functions-test-01.xml deleted file mode 100644 index 625c585d5..000000000 --- a/dmn-test-cases/standard/tck/1.2/cl3/0012-list-functions/translator/standard/0012-list-functions-test-01.xml +++ /dev/null @@ -1,637 +0,0 @@ - - - 0012-list-functions.dmn - - - - - - - - - - - - - - - - - - a - - - b - - - c - - - - - - - x - - - y - - - z - - - - - - false - - - - - - OK - - - - - x - - - y - - - z - - - - - - false - - - - - - - - a - - - b - - - c - - - - - - 3 - - - - - - - - 6 - - - 14 - - - -3 - - - - - - -3 - - - - - - - - 6 - - - 14 - - - -3 - - - - - - 17 - - - - - - - - 6 - - - 14 - - - -3 - - - - - - 5.66666666666667 - - - - - - 11 - - - 2 - - - 10 - - - - 7.66666666666667 - - - - - - - - a - - - b - - - c - - - - - - - - a - - - b - - - - - - - - - - a - - - b - - - c - - - - - - - - c - - - - - - - - 11 - - - 2 - - - 10 - - - - - 6 - - - 14 - - - -3 - - - - - - - - 6 - - - 14 - - - -3 - - - 11 - - - 2 - - - - - - - - - - a - - - b - - - c - - - - - - - x - - - y - - - z - - - - - - - - a - - - b - - - c - - - x - - - y - - - z - - - - - - - - OK - - - - - x - - - y - - - z - - - - - - - - x - - - OK - - - y - - - z - - - - - - - - - - x - - - y - - - z - - - - - - - - x - - - z - - - - - - - - - - a - - - b - - - c - - - - - - - x - - - y - - - z - - - - - - - - z - - - y - - - x - - - c - - - b - - - a - - - - - - - - - - a - - - b - - - c - - - - - x - - - - - - a - - - b - - - c - - - x - - - - - - - - OK - - - - - x - - - y - - - z - - - - - - - - - - - - OK - - - - - a - - - b - - - c - - - - - - - x - - - y - - - z - - - - - - - - x - - - OK - - - y - - - z - - - a - - - b - - - c - - - - - - - - OK - - - - - x - - - y - - - z - - - - - - - - x - - - OK - - - y - - - z - - - - - - - - - - a - - - b - - - c - - - - - - - x - - - y - - - z - - - - - - - - a - - - b - - - c - - - x - - - y - - - z - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.2/cl3/0034-drg-scopes-2/translator/standard/0034-drg-scopes-2-test-01.xml b/dmn-test-cases/standard/tck/1.2/cl3/0034-drg-scopes-2/translator/standard/0034-drg-scopes-2-test-01.xml deleted file mode 100644 index e4235649f..000000000 --- a/dmn-test-cases/standard/tck/1.2/cl3/0034-drg-scopes-2/translator/standard/0034-drg-scopes-2-test-01.xml +++ /dev/null @@ -1,223 +0,0 @@ - - - 0034-drg-scopes.dmn - - - - - - - - - - - - - Tests information requirements of decisions and knowledge requirements of business knowledge models - - - A - - - B - - - C - - - - - A - - - - - - - - A - - - - - - - - - A - - - - - - - - - - A - - - - - - - A - - - - - - - - - B - - - A - - - - - - - - B - - - A - - - - - - - - - B - - - A - - - - - - - - - - B - - - A - - - - - - - B - - - A - - - - - - - - A - - - - - - - A - - - - - - - - - - C - - - - - - A - - - - - - - A - - - - - - - - - B - - - A - - - - - - - B - - - A - - - - - - - - A - - - - - - - A - - - - - - - - - - BKM I # BKM II # BKM III # decision C 2 # BKM IV # BKM III # decision C 2 - - - - - BKM II # BKM III # decision C 3 # BKM IV # BKM III # decision C 3 - - - - - - BKM II # BKM III # decision C 3 # BKM IV # BKM III # decision C 3 - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.2/cl3/0034-drg-scopes/translator/standard/0034-drg-scopes-test-01.xml b/dmn-test-cases/standard/tck/1.2/cl3/0034-drg-scopes/translator/standard/0034-drg-scopes-test-01.xml deleted file mode 100644 index e4235649f..000000000 --- a/dmn-test-cases/standard/tck/1.2/cl3/0034-drg-scopes/translator/standard/0034-drg-scopes-test-01.xml +++ /dev/null @@ -1,223 +0,0 @@ - - - 0034-drg-scopes.dmn - - - - - - - - - - - - - Tests information requirements of decisions and knowledge requirements of business knowledge models - - - A - - - B - - - C - - - - - A - - - - - - - - A - - - - - - - - - A - - - - - - - - - - A - - - - - - - A - - - - - - - - - B - - - A - - - - - - - - B - - - A - - - - - - - - - B - - - A - - - - - - - - - - B - - - A - - - - - - - B - - - A - - - - - - - - A - - - - - - - A - - - - - - - - - - C - - - - - - A - - - - - - - A - - - - - - - - - B - - - A - - - - - - - B - - - A - - - - - - - - A - - - - - - - A - - - - - - - - - - BKM I # BKM II # BKM III # decision C 2 # BKM IV # BKM III # decision C 2 - - - - - BKM II # BKM III # decision C 3 # BKM IV # BKM III # decision C 3 - - - - - - BKM II # BKM III # decision C 3 # BKM IV # BKM III # decision C 3 - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.2/cl3/0068-feel-equality/translator/standard/0068-feel-equality-test-01.xml b/dmn-test-cases/standard/tck/1.2/cl3/0068-feel-equality/translator/standard/0068-feel-equality-test-01.xml deleted file mode 100644 index 403f36229..000000000 --- a/dmn-test-cases/standard/tck/1.2/cl3/0068-feel-equality/translator/standard/0068-feel-equality-test-01.xml +++ /dev/null @@ -1,874 +0,0 @@ - - - - 0068-feel-equality.dmn - - - - - - - null equals null - - - true - - - - - - null not equals null - - - false - - - - - - boolean true equal - - - true - - - - - - boolean true not equal - - - false - - - - - - boolean true equal - - - true - - - - - - boolean true not equal - - - false - - - - - - boolean true not equal false - - - false - - - - - - boolean true equals null - - - false - - - - - - boolean false equals null - - - false - - - - - - boolean false equals another type (0) - - - - - - - - - boolean true equals another type (1) - - - - - - - - - num equal - - - true - - - - - - num with digits equal - - - true - - - - - - zero equality - - - true - - - - - - negative zero equality - - - true - - - - - - negative inequality - - - false - - - - - - number equals null - - - false - - - - - - number equals another type - - - - - - - - - string equals - - - true - - - - - - string case sensitive - - - false - - - - - - string not equals - - - true - - - - - - string equals null - - - false - - - - - - string equals another type - - - - - - - - - list equal - - - true - - - - - - lists of different lengths not equal - - - false - - - - - - lists of same length with diff contents not equal - - - false - - - - - - empty lists equal - - - true - - - - - - list with same content but different order not equal - - - false - - - - - - non list boolean of index 1 equals boolean - - - true - - - - - - non list number of index 1 equals number - - - true - - - - - - non list string of index 1 equals string - - - true - - - - - - non list date of index 1 equals date - - - true - - - - - - non list time of index 1 equals time - - - true - - - - - - non list date time of index 1 equals date time - - - true - - - - - - non list days duration of index 1 equals days duration - - - true - - - - - - non list years duration of index 1 equals years duration - - - true - - - - - - non list context of index 1 equals context - - - true - - - - - - list equals null - - - false - - - - - - list equals another type - - - - - - - - - empty contexts equal - - - true - - - - - - contexts with same properties in same order equal - - - true - - - - - - contexts with same properties in different order equal - - - true - - - - - - string literal name equal to non-string-literal name - - - true - - - - - - context with same name and different values not equal - - - false - - - - - - context equals null - - - false - - - - - - context equals another type - - - - - - - - - same dates are equal - - - true - - - - - - different dates are not equal - - - false - - - - - - date equals null - - - false - - - - - - date equals another type - - - - - - - - - - - same durations are equal - - - true - - - - - - equivalent durations are (erm) equal - - - true - - - - - - different durations are not equal - - - false - - - - - - negative non-zero durations of same amount are not equal - - - false - - - - - - negative zero duration and zero duration are equal - - - true - - - - - - dt duration equals null - - - false - - - - - - dt duration equals another type - - - - - - - - - same durations are equal - - - true - - - - - - equivalent durations are (erm) equal - - - true - - - - - - different durations are not equal - - - false - - - - - - negative non-zero durations of same amount are not equal - - - false - - - - - - negative zero duration and zero duration are equal - - - true - - - - - - years/months duration not equal to days/hours duration of same amount - - - - - - - - - years/months duration equals null - - - false - - - - - - years/months duration equals another type - - - - - - - - - deep array equality - - - true - - - - - - deep array equality - - - true - - - - - - deep array in-equality - - - false - - - - - - deep array in-equality - - - false - - - - - - deep context equality - - - true - - - - - - deep context equality - - - true - - - - - - deep context in-equality - - - false - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.2/cl3/0070-feel-instance-of/translator/standard/0070-feel-instance-of-test-01.xml b/dmn-test-cases/standard/tck/1.2/cl3/0070-feel-instance-of/translator/standard/0070-feel-instance-of-test-01.xml deleted file mode 100644 index a56949105..000000000 --- a/dmn-test-cases/standard/tck/1.2/cl3/0070-feel-instance-of/translator/standard/0070-feel-instance-of-test-01.xml +++ /dev/null @@ -1,1345 +0,0 @@ - - - - 0070-feel-instance-of.dmn - - - - - - - null instance of Any is false - - - false - - - - - - null instance of number is false - - - false - - - - - - null instance of string is false - - - false - - - - - - null instance of boolean is false - - - false - - - - - - null instance of date is false - - - false - - - - - - null instance of time is false - - - false - - - - - - null instance of date and time is false - - - false - - - - - - null instance of list is null - - - - - - - - - null instance of years and months duration is false - - - false - - - - - - null instance of days and time duration is false - - - false - - - - - - null instance of context is null - - - - - - - - - null instance of function is null - - - - - - - - - number instance of Any is true - - - true - - - - - - number instance of number is true - - - true - - - - - - number instance of string is false - - - false - - - - - - number instance of boolean is false - - - false - - - - - - number instance of date is false - - - false - - - - - - number instance of time is false - - - false - - - - - - number instance of date and time is false - - - false - - - - - - number instance of list is null - - - - - - - - - number instance of years and months duration is false - - - false - - - - - - number instance of days and time duration is false - - - false - - - - - - number instance of context is null - - - - - - - - - number instance of function is null - - - - - - - - - - string instance of Any is true - - - true - - - - - - string instance of number is false - - - false - - - - - - string instance of string is true - - - true - - - - - - string instance of boolean is false - - - false - - - - - - string instance of date is false - - - false - - - - - - string instance of time is false - - - false - - - - - - string instance of date and time is false - - - false - - - - - - string instance of list is null - - - - - - - - - string instance of years and months duration is false - - - false - - - - - - string instance of days and time duration is false - - - false - - - - - - string instance of context is null - - - - - - - - - string instance of function is null - - - - - - - - - - boolean instance of Any is true - - - true - - - - - - boolean instance of number is false - - - false - - - - - - boolean instance of string is false - - - false - - - - - - boolean instance of boolean is true - - - true - - - - - - boolean instance of date is false - - - false - - - - - - boolean instance of time is false - - - false - - - - - - boolean instance of date and time is false - - - false - - - - - - boolean instance of list is null - - - - - - - - - boolean instance of years and months duration is false - - - false - - - - - - boolean instance of days and time duration is false - - - false - - - - - - boolean instance of context is null - - - - - - - - - boolean instance of function is null - - - - - - - - - date instance of Any is true - - - true - - - - - - date instance of number is false - - - false - - - - - - date instance of string is false - - - false - - - - - - - date instance of boolean is false - - - false - - - - - - date instance of date is true - - - true - - - - - - date instance of time is false - - - false - - - - - - date instance of date and time is false - - - false - - - - - - date instance of list is null - - - - - - - - - date instance of years and months duration is false - - - false - - - - - - date instance of days and time duration is false - - - false - - - - - - date instance of context is null - - - - - - - - - date instance of function is null - - - - - - - - - time instance of Any is true - - - true - - - - - - time instance of number is false - - - false - - - - - - time instance of string is false - - - false - - - - - - time instance of boolean is false - - - false - - - - - - time instance of date is false - - - false - - - - - - time instance of time is true - - - true - - - - - - time instance of date and time is false - - - false - - - - - - time instance of list is null - - - - - - - - - time instance of years and months duration is false - - - false - - - - - - time instance of days and time duration is false - - - false - - - - - - time instance of context is null - - - - - - - - - time instance of function is null - - - - - - - - - list instance of Any is true - - - true - - - - - - list instance of number is false - - - false - - - - - - list instance of string is false - - - false - - - - - - list instance of boolean is false - - - false - - - - - - list instance of date is false - - - false - - - - - - list instance of time is false - - - false - - - - - - list instance of date and time is false - - - false - - - - - - list instance of list is null - - - - - - - - - list instance of years and months duration is false - - - false - - - - - - list instance of days and time duration is false - - - false - - - - - - list instance of context is null - - - - - - - - - list instance of function is null - - - - - - - - - list instance with same itemtype is true - - - true - - - - - - list instance with different itemtypes is list Any - - - true - - - - - - empty list is list Any - - - true - - - - - - list instance with different item types is not a list of (say) number - - - false - - - - - - singleton list is not instance of element type - - - false - - - - - - primitive is not instance of list of same type - - - false - - - - - - primitive list is an instance of list of same type - - - true - - - - - - primitive list is not an instance of list of different type - - - false - - - - - - heterogeneous list is an instance of list of Any - - - true - - - - - - years and months duration instance of Any is true - - - true - - - - - - years and months duration instance of number is false - - - false - - - - - - years and months duration instance of string is false - - - false - - - - - - years and months duration instance of boolean is false - - - false - - - - - - years and months duration instance of date is false - - - false - - - - - - years and months duration instance of time is false - - - false - - - - - - years and months duration instance of date and time is false - - - false - - - - - - years and months duration instance of list is null - - - - - - - - - years and months duration instance of years and months duration is true - - - true - - - - - - years and months duration instance of days and time duration is false - - - false - - - - - - years and months duration instance of context is null - - - - - - - - - years and months duration instance of function is null - - - - - - - - - days and time duration instance of Any is true - - - true - - - - - - days and time duration instance of number is false - - - false - - - - - - days and time duration instance of string is false - - - false - - - - - - days and time duration instance of boolean is false - - - false - - - - - - days and time duration instance of date is false - - - false - - - - - - days and time duration instance of time is false - - - false - - - - - - days and time duration instance of date and time is false - - - false - - - - - - days and time durationinstance of list is null - - - - - - - - - days and time duration instance of years and months duration is false - - - false - - - - - - days and time duration instance of days and time duration is true - - - true - - - - - - days and time duration instance of context is null - - - - - - - - - days and time duration instance of function is null - - - - - - - - - context instance of Any is true - - - true - - - - - - context instance of number is false - - - false - - - - - - context instance of string is false - - - false - - - - - - context instance of boolean is false - - - false - - - - - - context instance of date is false - - - false - - - - - - context instance of time is false - - - false - - - - - - context instance of date and time is false - - - false - - - - - - context instance of list is null - - - - - - - - - context instance of years and months duration is false - - - false - - - - - - context instance of days and time duration is false - - - false - - - - - - context instance of context is null - - - - - - - - - context instance of function is null - - - - - - - - - context instance of context with same property names is true - - - true - - - - - - context instance with superset of type property names is true - - - true - - - - - - context instance with subset of type property names is false - - - false - - - - - - context instance with same property names but different types is false - - - false - - - - - - context instance with properties subset of right properties is true - - - true - - - - - - context instance with same property names is true - - - true - - - - - - function instance of Any is true - - - true - - - - - - function instance of number is false - - - false - - - - - - function instance of string is false - - - false - - - - - - function instance of boolean is false - - - false - - - - - - function instance of date is false - - - false - - - - - - function instance of time is false - - - false - - - - - - function instance of date and time is false - - - false - - - - - - function instance of list is null - - - - - - - - - function instance of years and months duration is false - - - false - - - - - - function instance of days and time duration is false - - - false - - - - - - function instance of context is null - - - - - - - - - function instance of function is null - - - - - - - - - function returning string instance of <> -> string is true - - - true - - - - - diff --git a/dmn-test-cases/standard/tck/1.2/cl3/0074-feel-properties/translator/standard/0074-feel-properties-test-01.xml b/dmn-test-cases/standard/tck/1.2/cl3/0074-feel-properties/translator/standard/0074-feel-properties-test-01.xml deleted file mode 100644 index 40a2f984b..000000000 --- a/dmn-test-cases/standard/tck/1.2/cl3/0074-feel-properties/translator/standard/0074-feel-properties-test-01.xml +++ /dev/null @@ -1,410 +0,0 @@ - - - - 0074-feel-properties.dmn - - - - - - - - - - - foo - - - - - - date - year - - - 2018 - - - - - - date - month - - - 12 - - - - - - date - day - - - 10 - - - - - - date - weekday - - - 1 - - - - - - dateTime - year - - - 2018 - - - - - - dateTime - month - - - 12 - - - - - - dateTime - day - - - 10 - - - - - - dateTime - weekday - - - 1 - - - - - - dateTime - hour - - - 10 - - - - - - dateTime - hour when no time specified - - - 0 - - - - - - dateTime - minute - - - 30 - - - - - - dateTime - minute when no time specified - - - 0 - - - - - - dateTime - second - - - 1 - - - - - - dateTime - second when no time specified - - - 0 - - - - - - dateTime - time offset when set - - - PT5H - - - - - - dateTime - time offset when not set - - - - - - - - - dateTime - timezone when set - - - Etc/UTC - - - - - - dateTime - timezone when not set - - - - - - - - - time - hour - - - 10 - - - - - - time - minute - - - 30 - - - - - - time - second - - - 1 - - - - - - time - time offset when set - - - PT5H - - - - - - time - time offset when not set - - - - - - - - - - - time - timezone when not set - - - - - - - - - ym duration - years - - - 1 - - - - - - ym duration - years not set - - - 0 - - - - - - ym duration - month - - - 2 - - - - - - ym duration - months not set - - - 0 - - - - - - ym duration - days is null - - - - - - - - - ym duration - hours is null - - - - - - - - - ym duration - minutes is null - - - - - - - - - ym duration - seconds is null - - - - - - - - - - dt duration - years is null - - - - - - - - - dt duration - months is null - - - - - - - - - dt duration - days - - - 1 - - - - - - dt duration - days is not set - - - 0 - - - - - - dt duration - hours - - - 2 - - - - - - dt duration - hours is not set - - - 0 - - - - - - dt duration - minutes - - - 2 - - - - - - dt duration - minutes is not set - - - 0 - - - - - - dt duration - seconds - - - 2 - - - - - - dt duration - seconds is not set - - - 0 - - - - - diff --git a/dmn-test-cases/standard/tck/1.2/cl3/0076-feel-external-java/translator/standard/0076-feel-external-java-test-01.xml b/dmn-test-cases/standard/tck/1.2/cl3/0076-feel-external-java/translator/standard/0076-feel-external-java-test-01.xml deleted file mode 100644 index d30e3be93..000000000 --- a/dmn-test-cases/standard/tck/1.2/cl3/0076-feel-external-java/translator/standard/0076-feel-external-java-test-01.xml +++ /dev/null @@ -1,172 +0,0 @@ - - - - 0076-feel-external-java.dmn - - - - - - - boxed external function definition - - - 456 - - - - - - no method on class - - - - - - - - - no class - - - - - - - - - no matching signature on class - - - - - - - - - external function definition - single param - - - -0.88796890 - - - - - - external function definition - two params - double - - - 456.78 - - - - - - external function definition overrides built in function - - - 456 - - - - - - external function definition - int - - - 456 - - - - - - external function definition - short - - - 123 - - - - - - external function definition - byte - - - 3 - - - - - - external function definition - char - - - a - - - - - - external function definition - char - - - - - - - - - external function definition - long - - - 456 - - - - - - external function definition - float - - - 456.78 - - - - - - external function definition - string - - - 123 - - - - - - external function definition - string to float (Java float -> BigDecimal is sometimes not quite exact) - - - 1234.56 - - - - - - external function definition - string to double (Java double -> BigDecimal is sometimes not quite exact) - - - 1234.56 - - - - - - external function definition - varargs func - - - foo bar - - - - - diff --git a/dmn-test-cases/standard/tck/1.2/cl3/0082-feel-coercion/translator/standard/0082-feel-coercion-test-01.xml b/dmn-test-cases/standard/tck/1.2/cl3/0082-feel-coercion/translator/standard/0082-feel-coercion-test-01.xml deleted file mode 100644 index b47a44cb5..000000000 --- a/dmn-test-cases/standard/tck/1.2/cl3/0082-feel-coercion/translator/standard/0082-feel-coercion-test-01.xml +++ /dev/null @@ -1,442 +0,0 @@ - - - - 0082-feel-coercion.dmn - - - - - - - - type mismatch - decision return value is null coerced - - - - - - - - - - - - list type mismatch - decision return value is null coerced - - - - - - - - - type permitted - conforming context - - - - foo - - - bar - - - 10 - - - - - - - context type mismatch - decision return value is null coerced - - - - - - - - - - decision type is list but return val is non-conforming val - coercion to null - - - - - - - - - decision returns singleton list value but type is not a list - coercion list to val - - - foo - - - - - - decision type is value but return val is non-conforming singleton list - coercion to null - - - - - - - - - decision type is list but return val null - null cannot be coerced so no singleton list coercion - - - - - - - - - pass conforming context type to bkm - - - true - - - - - - pass non-conforming type to bkm - bkm is never invoked - - - - - - - - - BKM logic returns non-conforming value to bkm variable typeRef - bk result is null coerced - - - - - - - - - - bkm type is list and bkm logic returns non-conforming (non-list) value - coercion to null - - - - - - - - - bkm type is list and bkm logic returns null - null cannot be coerced to result remains null - - - - - - - - - bkm type is non-list and bkm logic returns singleton list of conforming value - coercion list to val - - - 10 - - - - - - bkm type is non-list and bkm logic returns singleton list of non-conforming value - coercion to null - - - - - - - - - decision has invocation call to bkm passing - non-conforming context - bkm is never invoked - - - - - - - - - decision has invocation of bkm passing valid param, but bkm return value - does not match explicit type on invocation defn - null coercion of result - of invocation - - - - - - - - - - invocation type is a list and invoked bkm returns single non-conforming value - coercion to null - - - - - - - - - Ref https://github.com/dmn-tck/tck/pull/238#issuecomment-497744315 - - - - - - - - - - - invocation type is a non-list and invoked bkm returns singleton array of non-conforming value - coercion to null - - - - - - - - - function definition has typed param and is passed a conforming type - no coercion - - - 10 - - - - - - function definition has typed param and is passed non-conforming type - coercion to null - - - - - - - - - literal expression has typeRef and result is conforming value - no coercion - - - 10 - - - - - - literal expression has typeRef and result is non-conforming value - coercion to null - - - - - - - - - - literal expression has list typeRef and result is non-conforming value - coercion to null - - - - - - - - - literal expression has non-list typeRef and result is conforming singleton list - coercion to value - - - 10 - - - - - - literal expression has non-list typeRef and result is non-conforming singleton list - coercion to null - - - - - - - - - Direct invocation: Decision service returns context that does not confirm to type - - - - - - - - - Direct invocation: Decision service has string input but we pass incorrect type - input is coerced to null - - 10 - - - - - - - - - - Indirect invocation: Decision Service has string input but we pass incorrect type - input is coerced to null - - - - - - - - - Direct invocation: Decision service has string input but we pass in singleton list of correct type - input is coerced to string - - - - foo - - - - - - foo - - - - - - Indirect invocation: Decision service has string input but we pass in singleton list of correct type - input is coerced to string - - - foo - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.2/cl3/0085-decision-services/translator/standard/0085-decision-services-test-01.xml b/dmn-test-cases/standard/tck/1.2/cl3/0085-decision-services/translator/standard/0085-decision-services-test-01.xml deleted file mode 100644 index 342f12d43..000000000 --- a/dmn-test-cases/standard/tck/1.2/cl3/0085-decision-services/translator/standard/0085-decision-services-test-01.xml +++ /dev/null @@ -1,235 +0,0 @@ - - - - - 0085-decision-services.dmn - - - - - - - Direct invocation: with no params - - - foo - - - - - - Direct invocation: with an input decision - - - baz - - - - foo baz - - - - - - - - Direct invocation: with an input decision but supplying no param - - - - - - - - - - Direct invocation: with an input decision - but supplying a null value - - - - - - - - - - - - - Direct invocation: with an input decision - but supplying an incorrect param type - - - 1234 - - - - - - - - - - Direct invocation: with two input decisions and an input data - - - B - - - C - - - D - - - - A B C D - - - - - - - with no params - - - - foo - - - - - - - passing a param when DS has no params - - - - - - - - - - passing a single input decision param - - - - foo bar - - - - - - - passing a single input decision param with incorrect type - - - - - - - - - - passing no param when DS expects one - - - - - - - - - - passing named param - - - - foo bar - - - - - - - passing badly named param - - - - - - - - - - - - input param order: two input decisions and two inputData - - - - A B C D - - - - - - - input named param order: two input decisions and two inputData - - - - A B C D - - - - - - - decision service input decision and data do not affect global decision and data - - - C - - - - - A B - - - C - - - D - - - - - - - - - decision service input decision and data do not affect global decision and data - - - C - - - - - C - - - D - - - A B - - - - - - diff --git a/dmn-test-cases/standard/tck/1.2/cl3/0086-import/translator/standard/0086-import-test-01.xml b/dmn-test-cases/standard/tck/1.2/cl3/0086-import/translator/standard/0086-import-test-01.xml deleted file mode 100644 index 6ac22a4c8..000000000 --- a/dmn-test-cases/standard/tck/1.2/cl3/0086-import/translator/standard/0086-import-test-01.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - 0086-import.dmn - - - - - - - Test import ItemDefinition and BKM for invocation - - - John Doe - - - 21 - - - - - Hello John Doe! - - - - - - Test import ItemDefinition and BKM for invocation - - - John Doe - - - 47 - - - - - Respectfully, Hello John Doe! - - - - - diff --git a/dmn-test-cases/standard/tck/1.2/cl3/0087-chapter-11-example/translator/standard/0087-chapter-11-example-test-01.xml b/dmn-test-cases/standard/tck/1.2/cl3/0087-chapter-11-example/translator/standard/0087-chapter-11-example-test-01.xml deleted file mode 100644 index 4b78ed30d..000000000 --- a/dmn-test-cases/standard/tck/1.2/cl3/0087-chapter-11-example/translator/standard/0087-chapter-11-example-test-01.xml +++ /dev/null @@ -1,451 +0,0 @@ - - - - 0087-chapter-11-example.dmn - - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - THROUGH - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - ACCEPT - - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - 138 - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - VERY LOW - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - NONE - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - ELIGIBLE - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - true - - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 10000 - - - 2500 - - - 3000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - THROUGH - - - - - ACCEPT - - - - diff --git a/dmn-test-cases/standard/tck/1.2/cl3/0089-nested-inputdata-imports/translator/standard/0089-nested-inputdata-imports-test-01.xml b/dmn-test-cases/standard/tck/1.2/cl3/0089-nested-inputdata-imports/translator/standard/0089-nested-inputdata-imports-test-01.xml deleted file mode 100644 index 83cd8b233..000000000 --- a/dmn-test-cases/standard/tck/1.2/cl3/0089-nested-inputdata-imports/translator/standard/0089-nested-inputdata-imports-test-01.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - 0089-nested-inputdata-imports.dmn - - - - - Nested imports of InputData following GITHUB DMN TCK 274 - - - - B.A.John - - - - - - - B2.A.John2 - - - - - - B: Evaluating Say Hello to: Hello, B.A.John; B2: Evaluating Say Hello to: Hello, B2.A.John2 - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0004-lending/translator/standard/0004-lending-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0004-lending/translator/standard/0004-lending-test-01.xml deleted file mode 100644 index 1778d7f8b..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0004-lending/translator/standard/0004-lending-test-01.xml +++ /dev/null @@ -1,129 +0,0 @@ - - - 0004-lending.dmn - - - - - - - - - - - - - - - - - - - - - - - 6000 - - - 2000 - - - 0 - - - - 35 - - - true - - - M - - - EMPLOYED - - - - - STANDARD LOAN - - - 350000 - - - 0.0395 - - - 360 - - - - - 649 - - - false - - - - YES - - - - ACCEPT - - - - - 130 - - - - - LOW - - - - - MINI - - - - - LOW - - - - - 1680.880325608555 - - - - - true - - - - - ELIGIBLE - - - - - BUREAU - - - - - true - - - - - ACCEPT - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0016-some-every/translator/standard/0016-some-every-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0016-some-every/translator/standard/0016-some-every-test-01.xml deleted file mode 100644 index 06b234ecd..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0016-some-every/translator/standard/0016-some-every-test-01.xml +++ /dev/null @@ -1,120 +0,0 @@ - - - 0016-some-every.dmn - - - - - - - - - - - - - - - - - - - widget - - - 25 - - - - - sprocket - - - 15 - - - - - trinket - - - 1.5 - - - - - - - - - - widget - - - 25 - - - - - sprocket - - - 15 - - - - - trinket - - - 1.5 - - - - - - - - false - - - - - false - - - - - true - - - - - true - - - - - false - - - - - every: 'in' may appear in list identifier - - - false - - - - - some: 'in' may appear in list identifier - - - true - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0020-vacation-days/translator/standard/0020-vacation-days-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0020-vacation-days/translator/standard/0020-vacation-days-test-01.xml deleted file mode 100644 index 9be910605..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0020-vacation-days/translator/standard/0020-vacation-days-test-01.xml +++ /dev/null @@ -1,106 +0,0 @@ - - - 0020-vacation-days.dmn - - - - - - - - - - - - - - 16 - - - 1 - - - - 27 - - - - - - 25 - - - 5 - - - - 22 - - - - - - 25 - - - 20 - - - - 24 - - - - - - 44 - - - 30 - - - - 30 - - - - - - 50 - - - 20 - - - - 24 - - - - - - 50 - - - 30 - - - - 30 - - - - - - 60 - - - 20 - - - - 30 - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0031-user-defined-functions/translator/standard/0031-user-defined-functions-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0031-user-defined-functions/translator/standard/0031-user-defined-functions-test-01.xml deleted file mode 100644 index 9d0ff3627..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0031-user-defined-functions/translator/standard/0031-user-defined-functions-test-01.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - 0031-user-defined-functions.dmn - - - - - - - - - - - - - Tests user defined function invocation with positional - parameters - - - 10 - - - 5 - - - - - 15 - - - 2 - - - 50 - - - - - - Tests user defined function invocation with named - parameters - - - 10 - - - 5 - - - - - 5 - - - -5 - - - 2 - - - 50 - - - - - - Tests user defined function invocation with complex - parameters - - - 10 - - - 5 - - - - - 500 - - - 200 - - - 94.247760 - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0050-feel-abs-function/translator/standard/0050-feel-abs-function-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0050-feel-abs-function/translator/standard/0050-feel-abs-function-test-01.xml deleted file mode 100644 index 9b6d6ddff..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0050-feel-abs-function/translator/standard/0050-feel-abs-function-test-01.xml +++ /dev/null @@ -1,148 +0,0 @@ - - - - 0050-feel-abs-function.dmn - - - - - - - - - Assert on positive number - - - 1 - - - - - Assert on negative number - - - 1 - - - - - Assert on zero - - - 0 - - - - - Assert with no params - - - - - - - - Assert with too many params - - - - - - - - Assert with named param - - - 1 - - - - - Assert with incorrect named param - - - - - - - - Assert with null param - - - - - - - - Assert with string param - - - - - - - - Assert with boolean param - - - - - - - - Assert with negative days duration param - - - P1D - - - - - Assert with positive days duration param - - - P1D - - - - - Assert with negative months duration param - - - P1Y - - - - - Assert with positive months duration param - - - P1Y - - - - - Assert with date param - - - - - - - - Assert with time param - - - - - - - - Assert with datetime param - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0057-feel-context/translator/standard/0057-feel-context-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0057-feel-context/translator/standard/0057-feel-context-test-01.xml deleted file mode 100644 index 9639d388a..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0057-feel-context/translator/standard/0057-feel-context-test-01.xml +++ /dev/null @@ -1,148 +0,0 @@ - - - - 0057-feel-context.dmn - - - - - - creation of simple context - - - - foo - - - bar - - - - - - - nested context - - - - foo - - - - bar - - - - baz - - - - - - - - - previous entries in scope for later entries - - - - 3 - - - 6 - - - - - - - previous entries in scope for later (nested) entries - - - - 3 - - - 3 - - - - 6 - - - - - - - - spaces permitted in name - - - - foo - - - - - - - extra chars permtted in name - - - - foo - - - - - - - string literal permitted as name - - - - foo - - - - - - - empty string literal permitted as name - - - - foo - - - - - - - duplicate context entry keys not allowed (DMN14-178), results in null - - - - - - - - - non-existing member access results in null - - - - - - - - - non-existing member access (on null) - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0058-feel-number-function/translator/standard/0058-feel-number-function-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0058-feel-number-function/translator/standard/0058-feel-number-function-test-01.xml deleted file mode 100644 index 37189904e..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0058-feel-number-function/translator/standard/0058-feel-number-function-test-01.xml +++ /dev/null @@ -1,176 +0,0 @@ - - - - 0058-feel-number-function.dmn - - - - - - - - - 1000000.01 - - - - - - - 1000000.01 - - - - - Grouping separator may be a space - - - 1000000.01 - - - - - Grouping separator mismatch will result in null - - - - - - - - Grouping separator may not be a char other than "," or "." or space - - - - - - - - Grouping separator must be a string - - - - - - - - Decimal separator may not be a char other than "," or "." - - - - - - - - Decimal separator must be a string - - - - - - - - Grouping separator may be null when input has no group separators - - - 1000000.01 - - - - - will not error when grouping separator is null and ',' group separators exist - - - 1000000.01 - - - - - Decimal separator may be null when no decimal point - - - 1000000 - - - - - will not error when decimal separator is null and decimal point exists - - - 1000000.00 - - - - - decimal and group separators not be the same - - - - - - - - decimal and group separators may not be the same - - - - - - - - 'from' may not be null - - - - - - - - 'from' must be a string - - - - - - - - valid named params - - - 1000000.01 - - - - - invalid named params - - - - - - - - invalid 'from' - - - - - - - - will error when to few params - - - - - - - - will error when too many params - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0068-feel-equality/translator/standard/0068-feel-equality-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0068-feel-equality/translator/standard/0068-feel-equality-test-01.xml deleted file mode 100644 index 457a29a8e..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0068-feel-equality/translator/standard/0068-feel-equality-test-01.xml +++ /dev/null @@ -1,1163 +0,0 @@ - - - - 0068-feel-equality.dmn - - - - - - - null equals null - - - true - - - - - - null not equals null - - - false - - - - - - boolean true equal - - - true - - - - - - boolean true not equal - - - false - - - - - - boolean true equal - - - true - - - - - - boolean true not equal - - - false - - - - - - boolean true not equal false - - - false - - - - - - boolean true equals null - - - false - - - - - - boolean false equals null - - - false - - - - - - - - - - num equal - - - true - - - - - - num with digits equal - - - true - - - - - - zero equality - - - true - - - - - - negative zero equality - - - true - - - - - - negative inequality - - - false - - - - - - number equals null - - - false - - - - - - - - string equals - - - true - - - - - - string case sensitive - - - false - - - - - - string not equals - - - true - - - - - - string equals null - - - false - - - - - - - - list equal - - - true - - - - - - lists of different lengths not equal - - - false - - - - - - lists of same length with diff contents not equal - - - false - - - - - - empty lists equal - - - true - - - - - - list with same content but different order not equal - - - false - - - - - - - - non list number of index 1 equals number - - - true - - - - - - non list string of index 1 equals string - - - true - - - - - - non list date of index 1 equals date - - - true - - - - - - non list time of index 1 equals time - - - true - - - - - - non list date time of index 1 equals date time - - - true - - - - - - non list days duration of index 1 equals days duration - - - true - - - - - - non list years duration of index 1 equals years duration - - - true - - - - - - non list context of index 1 equals context - - - true - - - - - - list equals null - - - false - - - - - - - - empty contexts equal - - - true - - - - - - contexts with same properties in same order equal - - - true - - - - - - contexts with same properties in different order equal - - - true - - - - - - string literal name equal to non-string-literal name - - - true - - - - - - context with same name and different values not equal - - - false - - - - - - context equals null - - - false - - - - - - - - same dates are equal - - - true - - - - - - different dates are not equal - - - false - - - - - - date equals null - - - false - - - - - - - - same times are equal - - - true - - - - - - different times are not equal: hours - - - false - - - - - - different times are not equal: minutes - - - false - - - - - - different times are not equal: seconds - - - false - - - - - - same times with zero milliseconds are equal - - - true - - - - - - same times with same milliseconds are equal - - - true - - - - - - same times with different milliseconds are equal as value resolution is seconds - - - true - - - - - - same times in same zone are equal - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - same times = one with offset, the other with zone are equal if offsets are equal - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - same times = one with Z zone, the other with UTC are equal - - - true - - - - - - time equals null - - - false - - - - - - - - same datetimes are equal - - - true - - - - - - datetimes with no time is equal to datetime with zero time - - - true - - - - - - datetimes with same milliseconds are equal - - - true - - - - - - datetimes with different milliseconds are equal as resolution is to the second - - - true - - - - - - different datetimes are not equal - - - false - - - - - - same datetimes in same zone are equal - - - true - - - - - - same datetimes in different zones are not equal - - - false - - - - - - - - - - - - - - - - - same datetimes, one with offset and the other with zone are equal - - - false - - - - - - same datetimes, one with offset and the other with zone are equal - DST - - - false - - - - - - same datetimes, with same offsets but different zones equal - - - true - - - - - - datetime with zero offset is equal to utc zone - - - true - - - - - - datetime equals null - - - false - - - - - - - - datetime: different times in different zones can be equal - - - true - - - - - - datetime: different times in different zones can be equal (with negative offset) - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - same durations are equal - - - true - - - - - - equivalent durations are (erm) equal - - - true - - - - - - different durations are not equal - - - false - - - - - - negative non-zero durations of same amount are not equal - - - false - - - - - - negative zero duration and zero duration are equal - - - true - - - - - - dt duration equals null - - - false - - - - - - - - - - - same durations are equal - - - true - - - - - - equivalent durations are (erm) equal - - - true - - - - - - different durations are not equal - - - false - - - - - - negative non-zero durations of same amount are not equal - - - false - - - - - - negative zero duration and zero duration are equal - - - true - - - - - - - - years/months duration equals null - - - false - - - - - - - - deep array equality - - - true - - - - - - deep array equality - - - true - - - - - - deep array in-equality - - - false - - - - - - deep array in-equality - - - false - - - - - - deep context equality - - - true - - - - - - deep context equality - - - true - - - - - - deep context in-equality - - - false - - - - - - - - - - ranges with same endpoint and inclusivity are equal - - - true - - - - - - ranges with different upper endpoints are not equal - - - false - - - - - - ranges with different lower endpoints are not equal - - - false - - - - - - ranges with same endpoints, but same though syntactically different lower inclusivity are equal - - - true - - - - - - ranges with same endpoints, but same though syntactically different upper inclusivity are equal - - - true - - - - - - equal ranges though syntactically different: LT - - - - - - true - - - - - - equal ranges though syntactically different: LE - - - - - - true - - - - - - equal ranges though syntactically different: GT - - - - - - true - - - - - - equal ranges though syntactically different: GE - - - - - - true - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0069-feel-list/translator/standard/0069-feel-list-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0069-feel-list/translator/standard/0069-feel-list-test-01.xml deleted file mode 100644 index 758afae57..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0069-feel-list/translator/standard/0069-feel-list-test-01.xml +++ /dev/null @@ -1,457 +0,0 @@ - - - - 0069-feel-list.dmn - - - - - - creation of list - - - - - 1 - - - 2 - - - 3 - - - - - - - - creation of empty list - - - - - - - - - - access of index 0 - - - - - - - - - access of index > size - - - - - - - - - access of first element - - - 1 - - - - - - access of last element - - - 3 - - - - - - access of negative element - - - 3 - - - - - - access of negative element - - - 1 - - - - - - access of negative element > -size - - - - - - - - - true boolean index element gives entire list - - - - - 1 - - - 2 - - - 3 - - - - - - - - false boolean index element gives empty list - - - - - - - - - - filter expression using item - - - - - 2 - - - 3 - - - - - - - - true filter expression on non list - boolean - - - - - true - - - - - - - - false filter expression on non list - boolean - - - - - - - - - - true filter expression on non list - number - - - - - 100 - - - - - - - - false filter expression on non list - number - - - - - - - - - - true filter expression on non list - string - - - - - foo - - - - - - - - false filter expression on non list - string - - - - - - - - - - index of 1 on non list - boolean - - - true - - - - - - index of 1 on non list - number - - - 100 - - - - - - index of 1 on non list - string - - - foo - - - - - - index of 0 on non list - boolean - - - - - - - - - index of 0 on non list - number - - - - - - - - - index of 0 on non list - string - - - - - - - - - filter on context using item - - - - - - 2 - - - - - 3 - - - - - - - - - filter on context using property name - - - - - - 2 - - - - - 3 - - - - - - - - - filter on context using property 'item' name - - - - - - 2 - - - - - 3 - - - - - - - - - filter on scalars (10.3.2.5 - example 1) - - - - - 3 - - - 4 - - - - - - - - - filter on property name (10.3.2.5 - example 2) - - - - - - 1 - - - 2 - - - - - - - - - - filter on property name + null value (10.3.2.5 - example 3) - - - - - - 1 - - - 2 - - - - - - - - - - path expression (10.3.2.5 - example 4) - - - - - 2 - - - 3 - - - - - - - - - filter / non-member matching (empty) - - - - - - - - - - filter / non-member matching (single result) - - - - - - 2 - - - - - - - - - - path expression / no match - - - - - - - - - - - - - - path expression / partial match - - - - - - - - 2 - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0071-feel-between/translator/standard/0071-feel-between-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0071-feel-between/translator/standard/0071-feel-between-test-01.xml deleted file mode 100644 index ab65397bd..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0071-feel-between/translator/standard/0071-feel-between-test-01.xml +++ /dev/null @@ -1,357 +0,0 @@ - - - - 0071-feel-between.dmn - - - - - - - - - before - - - false - - - - - - start - - - true - - - - - - between - - - true - - - - - - end - - - true - - - - - - after - - - false - - - - - - - before - - - false - - - - - - start - - - true - - - - - - between - - - true - - - - - - end - - - true - - - - - - after - - - false - - - - - - - before - - - false - - - - - - start - - - true - - - - - - between - - - true - - - - - - end - - - true - - - - - - after - - - false - - - - - - before - - - false - - - - - - start - - - true - - - - - - between - - - true - - - - - - end - - - true - - - - - - after - - - false - - - - - - before - - - false - - - - - - start - - - true - - - - - - between - - - true - - - - - - end - - - true - - - - - - after - - - false - - - - - - before - - - false - - - - - - start - - - true - - - - - - between - - - true - - - - - - end - - - true - - - - - - after - - - false - - - - - - before - - - false - - - - - - start - - - true - - - - - - between - - - true - - - - - - end - - - true - - - - - - after - - - false - - - - - - null test value - - - - - - - - - null start value - - - - - - - - - null end value - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0074-feel-properties/translator/standard/0074-feel-properties-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0074-feel-properties/translator/standard/0074-feel-properties-test-01.xml deleted file mode 100644 index 8d4dd1290..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0074-feel-properties/translator/standard/0074-feel-properties-test-01.xml +++ /dev/null @@ -1,674 +0,0 @@ - - - - 0074-feel-properties.dmn - - - - - - - - - - - foo - - - - - - date - year - - - 2018 - - - - - - date - month - - - 12 - - - - - - date - day - - - 10 - - - - - - date - weekday - - - 1 - - - - - - dateTime - year - - - 2018 - - - - - - dateTime - month - - - 12 - - - - - - dateTime - day - - - 10 - - - - - - dateTime - weekday - - - 1 - - - - - - dateTime - hour - - - 10 - - - - - - dateTime - hour when no time specified - - - 0 - - - - - - dateTime - minute - - - 30 - - - - - - dateTime - minute when no time specified - - - 0 - - - - - - dateTime - second - - - 1 - - - - - - dateTime - second when no time specified - - - 0 - - - - - - dateTime - time offset when set - - - PT5H - - - - - - dateTime - time offset when not set - - - - - - - - - dateTime - timezone when set - - - Etc/UTC - - - - - - dateTime - timezone when not set - - - - - - - - - time - hour - - - 10 - - - - - - time - minute - - - 30 - - - - - - time - second - - - 1 - - - - - - time - time offset when set - - - PT5H - - - - - - time - time offset when not set - - - - - - - - - - - time - timezone when not set - - - - - - - - - ym duration - years - - - 1 - - - - - - ym duration - years not set - - - 0 - - - - - - ym duration - month - - - 2 - - - - - - ym duration - months not set - - - 0 - - - - - - ym duration - days is null - - - - - - - - - ym duration - hours is null - - - - - - - - - ym duration - minutes is null - - - - - - - - - ym duration - seconds is null - - - - - - - - - - dt duration - years is null - - - - - - - - - dt duration - months is null - - - - - - - - - dt duration - days - - - 1 - - - - - - dt duration - days is not set - - - 0 - - - - - - dt duration - hours - - - 2 - - - - - - dt duration - hours is not set - - - 0 - - - - - - dt duration - minutes - - - 2 - - - - - - dt duration - minutes is not set - - - 0 - - - - - - dt duration - seconds - - - 2 - - - - - - dt duration - seconds is not set - - - 0 - - - - - - range - start - - - 1 - - - - - - range - end - - - 10 - - - - - - range - start included - - - true - - - - - - range - start included '(' syntax - - - false - - - - - - range - start included ']' syntax - - - false - - - - - - range - end included - - - true - - - - - - range - end included ')' syntax - - - false - - - - - - range - end included '[' syntax - - - false - - - - - - range - start: LT unary syntax - - - - - - - - - range - start: LE unary syntax - - - - - - - - - range - start: GT unary syntax - - - 10 - - - - - - range - start: GE unary syntax - - - 10 - - - - - - - - range - end: LT unary syntax - - - 10 - - - - - - range - end: LE unary syntax - - - 10 - - - - - - range - end: GT unary syntax - - - - - - - - - range - end: GE unary syntax - - - - - - - - - - - range - start included: LT unary syntax - - - false - - - - - - range - start included: LE unary syntax - - - false - - - - - - range - start included: GT unary syntax - - - false - - - - - - range - start included: GE unary syntax - - - true - - - - - - - - range - end included: LT unary syntax - - - false - - - - - - range - end included: LE unary syntax - - - true - - - - - - range - end included: GT unary syntax - - - false - - - - - - range - end included: GE unary syntax - - - false - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0080-feel-getvalue-function/translator/standard/0080-feel-getvalue-function-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0080-feel-getvalue-function/translator/standard/0080-feel-getvalue-function-test-01.xml deleted file mode 100644 index 8b36d3ce4..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0080-feel-getvalue-function/translator/standard/0080-feel-getvalue-function-test-01.xml +++ /dev/null @@ -1,145 +0,0 @@ - - - - 0080-feel-getvalue-function.dmn - - - - - - - no param - - - - - - - - - only one param - - - - - - - - - too many params - - - - - - - - - get a value - - - foo - - - - - - not a map as first param - - - - - - - - - not a string as second param - - - - - - - - - named params - - - foo - - - - - - badly named params - - - - - - - - - null map param - - - - - - - - - null key param - - - - - - - - - null context param - - - - - - - - - null item value stored in context - - - - - - - - - non literal key of string type - - a - - - - foo - - - - - - non literal key of incorrect type - - 12 - - - - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0081-feel-getentries-function/translator/standard/0081-feel-getentries-function-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0081-feel-getentries-function/translator/standard/0081-feel-getentries-function-test-01.xml deleted file mode 100644 index 6cdce3e1c..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0081-feel-getentries-function/translator/standard/0081-feel-getentries-function-test-01.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - - 0081-feel-getentries-function.dmn - - - - - - - no param - - - - - - - - - two many params - - - - - - - - - null params - - - - - - - - - get a value - - - - - - a - - - foo - - - - - b - - - bar - - - - - - - - - named param - - - - - - a - - - foo - - - - - b - - - bar - - - - - - - - - bad named param - - - - - - - - - not a map as param - - - - - - - - - not a map as param - - - - - - - - - empty map as param - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0082-feel-coercion/translator/standard/0082-feel-coercion-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0082-feel-coercion/translator/standard/0082-feel-coercion-test-01.xml deleted file mode 100644 index 0c4f869ee..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0082-feel-coercion/translator/standard/0082-feel-coercion-test-01.xml +++ /dev/null @@ -1,452 +0,0 @@ - - - - 0082-feel-coercion.dmn - - - - - - - - type mismatch - decision return value is null coerced - - - - - - - - - - - - list type mismatch - decision return value is null coerced - - - - - - - - - type permitted - conforming context - - - - foo - - - bar - - - 10 - - - - - - - context type mismatch - decision return value is null coerced - - - - - - - - - - decision type is list but return val is non-conforming val - coercion to null - - - - - - - - - decision returns singleton list value but type is not a list - coercion list to val - - - foo - - - - - - decision type is value but return val is non-conforming singleton list - coercion to null - - - - - - - - - decision type is list but return val null - null cannot be coerced so no singleton list coercion - - - - - - - - - pass conforming context type to bkm - - - true - - - - - - pass non-conforming type to bkm - bkm is never invoked - - - - - - - - - BKM logic returns non-conforming value to bkm variable typeRef - bk result is null coerced - - - - - - - - - - bkm type is list and bkm logic returns non-conforming (non-list) value - coercion to null - - - - - - - - - bkm type is list and bkm logic returns null - null cannot be coerced to result remains null - - - - - - - - - bkm type is non-list and bkm logic returns singleton list of conforming value - coercion list to val - - - 10 - - - - - - bkm type is non-list and bkm logic returns singleton list of non-conforming value - coercion to null - - - - - - - - - decision has invocation call to bkm passing - non-conforming context - bkm is never invoked - - - - - - - - - decision has invocation of bkm passing valid param, but bkm return value - does not match explicit type on invocation defn - null coercion of result - of invocation - - - - - - - - - - invocation type is a list and invoked bkm returns single non-conforming value - coercion to null - - - - - - - - - Ref https://github.com/dmn-tck/tck/pull/238#issuecomment-497744315 - - - - - - - - - - - invocation type is a non-list and invoked bkm returns singleton array of non-conforming value - coercion to null - - - - - - - - - invocation has binding name that is not a valid formal param name - - function is never invoked - - - - - - - - - function definition has typed param and is passed a conforming type - no coercion - - - 10 - - - - - - function definition has typed param and is passed non-conforming type - coercion to null - - - - - - - - - literal expression has typeRef and result is conforming value - no coercion - - - 10 - - - - - - literal expression has typeRef and result is non-conforming value - coercion to null - - - - - - - - - - literal expression has list typeRef and result is non-conforming value - coercion to null - - - - - - - - - literal expression has non-list typeRef and result is conforming singleton list - coercion to value - - - 10 - - - - - - literal expression has non-list typeRef and result is non-conforming singleton list - coercion to null - - - - - - - - - Direct invocation: Decision service returns context that does not confirm to type - - - - - - - - - Direct invocation: Decision service has string input but we pass incorrect type - input is coerced to null - - 10 - - - - - - - - - - Indirect invocation: Decision Service has string input but we pass incorrect type - input is coerced to null - - - - - - - - - Direct invocation: Decision service has string input but we pass in singleton list of correct type - input is coerced to string - - - - foo - - - - - - foo - - - - - - Indirect invocation: Decision service has string input but we pass in singleton list of correct type - input is coerced to string - - - foo - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0083-feel-unicode/translator/standard/0083-feel-unicode-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0083-feel-unicode/translator/standard/0083-feel-unicode-test-01.xml deleted file mode 100644 index 7372640b0..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0083-feel-unicode/translator/standard/0083-feel-unicode-test-01.xml +++ /dev/null @@ -1,174 +0,0 @@ - - - - 0083-feel-unicode.dmn - - - - - - - - Assert length of string with 4 digit unicode char - - - 1 - - - - - - Assert length of string with 6 digit unicode char - - - 1 - - - - - - Assert string with 6 digit unicode char - - - true - - - - - - Escaped encoded unicode - - - 6 - - - - - - encoded unicode - supplementary char (uppercase) - - - 1 - - - - - - encoded unicode - supplementary char (lowercase) - - - 1 - - - - - - encoded unicode - string literal with supplementary chars - - - 2 - - - - - - literal unicode - supplementary 2 char - in string literal - - - 2 - - - - - - encoded unicode - string contains with supplementary chars - - - true - - - - - - literal unicode - string contains with supplementary chars - - - true - - - - - - literal unicode - context property name as supplementary character - - - - bar - - - - - - - literal unicode - context property and value supplementary characters - - - - 😀 - - - - - - - literal unicode - string ends with with supplementary chars - - - true - - - - - - - - - - - - - - escape 6 digit unicode substring - - - true - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0084-feel-for-loops/translator/standard/0084-feel-for-loops-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0084-feel-for-loops/translator/standard/0084-feel-for-loops-test-01.xml deleted file mode 100644 index f5e27f627..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0084-feel-for-loops/translator/standard/0084-feel-for-loops-test-01.xml +++ /dev/null @@ -1,195 +0,0 @@ - - - - 0084-feel-for-loops.dmn - - - - - - - - Loop over number list - - - - - 2 - - - 3 - - - 4 - - - - - - - - two iteration context loop over number list - - - - 5 - 6 - 6 - 7 - 7 - 8 - - - - - - - loop over empty list - - - - - - - - - - numeric range iteration context - no delimiters - - - - 2 - 3 - 4 - - - - - - - numeric descending range iteration context - no delimiters - - - - 4 - 3 - 2 - - - - - - - numeric range iteration context - no delimiters - ascending from negative - - - - -1 - 0 - 1 - - - - - - - numeric range iteration context - no delimiters - descending to negative - - - - 1 - 0 - -1 - - - - - - - numeric range iteration context - same endpoints - - - - 1 - - - - - - - expressions in range - - - - 2 - 3 - 4 - - - - - - - special variable 'partial' doing factorial list - - - - 1 - 1 - 2 - 6 - 24 - - - - - - - 'in' may appear in list identifier - - - - false - true - - - - - - - for loop with second iterator depending on first iterator - - - - 1 - 2 - 3 - 4 - - - - - - - nested loops - - - - - - 1 - 2 - - - - - 3 - 4 - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0085-decision-services/translator/standard/0085-decision-services-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0085-decision-services/translator/standard/0085-decision-services-test-01.xml deleted file mode 100644 index 46ded1219..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0085-decision-services/translator/standard/0085-decision-services-test-01.xml +++ /dev/null @@ -1,247 +0,0 @@ - - - - - 0085-decision-services.dmn - - - - - - - Direct invocation: with no params - - - foo - - - - - - Direct invocation: with an input decision - - - baz - - - - foo baz - - - - - - - - - - - - - - Direct invocation: with two input decisions and an input data - - - B - - - C - - - D - - - - A B C D - - - - - - - with no params - - - - foo - - - - - - - - - - passing a single input decision param - - - - foo bar - - - - - - - - - - - - - passing named param - - - - foo bar - - - - - - - - - - input param order: two input decisions and two inputData - - - - A B C D - - - - - - - input named param order: two input decisions and two inputData - - - - A B C D - - - - - - - decision service input decision and data do not affect global decision and data - - - C - - - - - A B - - - C - - - D - - - - - - - - - decision service input decision and data do not affect global decision and data - - - C - - - - - C - - - D - - - A B - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0086-import/translator/standard/0086-import-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0086-import/translator/standard/0086-import-test-01.xml deleted file mode 100644 index 6ac22a4c8..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0086-import/translator/standard/0086-import-test-01.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - 0086-import.dmn - - - - - - - Test import ItemDefinition and BKM for invocation - - - John Doe - - - 21 - - - - - Hello John Doe! - - - - - - Test import ItemDefinition and BKM for invocation - - - John Doe - - - 47 - - - - - Respectfully, Hello John Doe! - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0087-chapter-11-example/translator/standard/0087-chapter-11-example-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0087-chapter-11-example/translator/standard/0087-chapter-11-example-test-01.xml deleted file mode 100644 index 4b78ed30d..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0087-chapter-11-example/translator/standard/0087-chapter-11-example-test-01.xml +++ /dev/null @@ -1,451 +0,0 @@ - - - - 0087-chapter-11-example.dmn - - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - THROUGH - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - ACCEPT - - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - 138 - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - VERY LOW - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - NONE - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - ELIGIBLE - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 100000 - - - 2500 - - - 10000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - true - - - - - - - - 51 - - - M - - - EMPLOYED - - - false - - - - 10000 - - - 2500 - - - 3000 - - - - - - STANDARD LOAN - - - 0.08 - - - 36 - - - 100000 - - - - - false - - - 600 - - - - - THROUGH - - - - - ACCEPT - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0088-no-decision-logic/translator/standard/0088-no-decision-logic-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0088-no-decision-logic/translator/standard/0088-no-decision-logic-test-01.xml deleted file mode 100644 index d77f64159..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0088-no-decision-logic/translator/standard/0088-no-decision-logic-test-01.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - 0088-no-decision-logic.dmn - - - - - - - A Decision Service invocation where 1 inputDecision has no decision logic defined - - John Doe - - - A - - - A very motivated, hard-working student! - - - - John Doe is Graduated with merit with grade: A and evaluation: A very motivated, hard-working student! - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0091-local-hrefs/translator/standard/0091-local-hrefs-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0091-local-hrefs/translator/standard/0091-local-hrefs-test-01.xml deleted file mode 100644 index a6ccc7798..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0091-local-hrefs/translator/standard/0091-local-hrefs-test-01.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - 0091-local-hrefs.dmn - - - - - - - - - qualified hrefs using model-local namespace - - input_001 - - - - decision_001 input_001 bkm_001 - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0092-feel-lambda/translator/standard/0092-feel-lambda-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0092-feel-lambda/translator/standard/0092-feel-lambda-test-01.xml deleted file mode 100644 index b6365d7f2..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0092-feel-lambda/translator/standard/0092-feel-lambda-test-01.xml +++ /dev/null @@ -1,210 +0,0 @@ - - - - 0092-feel-lambda.dmn - - - - - - - A decision may return a user-defined-function (UDF) lambda - - - 3 - - - - - - A decision may return a Function Definition lambda - - - 4 - - - - - - A BKM may return a UDF lambda - - - 5 - - - - - - A BKM may return a Function Definition lambda - - - 6 - - - - - - A BKM may return a UDF lambda with a closed over formal param - - - 20 - - - - - - A BKM may return a Function Definition lambda with a closed over formal param - - - 30 - - - - - - A decision may return a UDF lambda with a closed over info requirement value - - - 20 - - - - - 100 - - - - - - A lambda's named params take precedence over scope values where the lambda is created - - - 6 - - - - - - A lambda's named params take precedence over scope values where the lambda is invoked - - - 200 - - - - - - lambdas (UDF) and closures may go more than one level deep - (currying) - - - 120 - - - - - - lambdas (func defn) and closures may go more than one level deep - (currying) - - - 120 - - - - - - lambdas (with closures) may be passed as params - - - 10 - - - - - 5000 - - - - - - BKM may be passed as lambda - - - 5000 - - - - - - Decision Service may be passed as lambda - - - 5000 - - - - - - - - - - - - Local decision scope values may be closed over and used in built-in func - - a - - - - - a - a - z - z - - - - - - - BKM may be passed to sort func - - - - a - a - z - z - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0093-feel-at-literals/translator/standard/0093-feel-at-literals-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0093-feel-at-literals/translator/standard/0093-feel-at-literals-test-01.xml deleted file mode 100644 index 6e7b36885..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0093-feel-at-literals/translator/standard/0093-feel-at-literals-test-01.xml +++ /dev/null @@ -1,180 +0,0 @@ - - - - 0093-feel-at-literals.dmn - - - invalid value has null value - - - - - - - - - will parse date to date type - - - true - - - - - - will parse date value - - - 2019-03-31 - - - - - - will parse to date time type - - - true - - - - - - will parse date time value - - - 2018-12-08T10:30:11 - - - - - - will parse to date time with zone - - - true - - - - - - will parse date time value with zone - - - 2018-12-08T10:30:11@Australia/Melbourne - - - - - - will parse to date time value with offset - - - true - - - - - - will parse date time value with offset - - - 2018-12-08T10:30:11+11:00 - - - - - - will parse to time type - - - true - - - - - - will parse time value - - - 10:30:11 - - - - - - will parse to time + offset - - - true - - - - - - will parse time value + offset - - - 10:30:11+11:00 - - - - - - will parse to time + zone - - - true - - - - - - will parse time value + zone - - - 10:30:11@Australia/Melbourne - - - - - - will parse to days and time duration type - - - true - - - - - - will parse days and time duration value - - - P10D - - - - - - will parse to years and months duration type - - - true - - - - - - will parse years and months duration value - - - P10Y - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0094-feel-product-function/translator/standard/0094-feel-product-function-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0094-feel-product-function/translator/standard/0094-feel-product-function-test-01.xml deleted file mode 100644 index 57df29725..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0094-feel-product-function/translator/standard/0094-feel-product-function-test-01.xml +++ /dev/null @@ -1,127 +0,0 @@ - - - - 0094-feel-product-function.dmn - - - will return product for list - - - 5832 - - - - - - will return null when empty list - - - - - - - - - will return null when no params - - - - - - - - - will error when null param - - - - - - - - - will error when list item not a number - - - - - - - - - will error when list item not a number - - - - - - - - - will multiple decimals - - - 18.75 - - - - - - will multiply varargs number list - - - 24 - - - - - - product of single item is itself - - - 6 - - - - - - product of single item list is value of first item - - - 6 - - - - - - - will return product for named params - - - 5832 - - - - - - will error when null named param - - - - - - - - - will error when wrongly named param - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0095-feel-day-of-year-function/translator/standard/0095-feel-day-of-year-function-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0095-feel-day-of-year-function/translator/standard/0095-feel-day-of-year-function-test-01.xml deleted file mode 100644 index 1cdde63b7..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0095-feel-day-of-year-function/translator/standard/0095-feel-day-of-year-function-test-01.xml +++ /dev/null @@ -1,190 +0,0 @@ - - - - 0095-feel-day-of-year-function.dmn - - - date: first day of year - - - 1 - - - - - - date: last day of year - - - 365 - - - - - - date: leap year has 366 days - - - 366 - - - - - - date: spec example - - - 260 - - - - - - date: unknown type at compile time with valid date as runtime input - - 1970-01-01 - - - - 1 - - - - - - date: will accept date as named param - - - 260 - - - - - - datetime: first day of year - - - 1 - - - - - - datetime: last day of year - - - 365 - - - - - - datetime: leap year has 366 days - - - 366 - - - - - - datetime: unknown type at compile time with valid datetime as runtime input - - 1970-01-01T10:10:10 - - - - 1 - - - - - - datetime: will accept date time as named param - - - 260 - - - - - - - null param gives null result - - - - - - - - - no param gives null result - - - - - - - - - invalid param type gives null result - - - - - - - - - null value named param gives null result - - - - - - - - - invalid type as named param gives null result - - - - - - - - - invalidly named param gives null result - - - - - - - - - unknown type at compile time with invalid type as runtime input - - foo - - - - - - - - - - too many params gives null result - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0096-feel-day-of-week-function/translator/standard/0096-feel-day-of-week-function-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0096-feel-day-of-week-function/translator/standard/0096-feel-day-of-week-function-test-01.xml deleted file mode 100644 index d6f1d13ab..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0096-feel-day-of-week-function/translator/standard/0096-feel-day-of-week-function-test-01.xml +++ /dev/null @@ -1,168 +0,0 @@ - - - - 0096-feel-day-of-week-function.dmn - - - date: day of week - - 2021-01-11 - - - - - Monday - - - Tuesday - - - Wednesday - - - Thursday - - - Friday - - - Saturday - - - Sunday - - - - - - - date: will accept date as named param - - - Tuesday - - - - - - date: day of week - - 2021-01-11T10:10:10 - - - - - Monday - - - Tuesday - - - Wednesday - - - Thursday - - - Friday - - - Saturday - - - Sunday - - - - - - - date: will accept datetime as named param - - - Tuesday - - - - - - null param gives null result - - - - - - - - - no param gives null result - - - - - - - - - invalid param type gives null result - - - - - - - - - null value named param gives null result - - - - - - - - - invalid type as named param gives null result - - - - - - - - - invalidly named param gives null result - - - - - - - - - unknown type at compile time with invalid type as runtime input - - foo - - - - - - - - - - too many params gives null result - - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0097-feel-month-of-year-function/translator/standard/0097-feel-month-of-year-function-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0097-feel-month-of-year-function/translator/standard/0097-feel-month-of-year-function-test-01.xml deleted file mode 100644 index b9fb013a5..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0097-feel-month-of-year-function/translator/standard/0097-feel-month-of-year-function-test-01.xml +++ /dev/null @@ -1,198 +0,0 @@ - - - - 0097-feel-month-of-year-function.dmn - - - date: month of year - - 2021-01-01 - - - - - January - - - February - - - March - - - April - - - May - - - June - - - July - - - August - - - September - - - October - - - November - - - December - - - - - - - date: will accept date as named param - - - September - - - - - - datetime: month of year - - 2021-01-01T10:10:10 - - - - - January - - - February - - - March - - - April - - - May - - - June - - - July - - - August - - - September - - - October - - - November - - - December - - - - - - - date: will accept datetime as named param - - - September - - - - - - null param gives null result - - - - - - - - - no param gives null result - - - - - - - - - invalid param type gives null result - - - - - - - - - null value named param gives null result - - - - - - - - - invalid type as named param gives null result - - - - - - - - - invalidly named param gives null result - - - - - - - - - unknown type at compile time with invalid type as runtime input - - foo - - - - - - - - - - too many params gives null result - - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0098-feel-week-of-year-function/translator/standard/0098-feel-week-of-year-function-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0098-feel-week-of-year-function/translator/standard/0098-feel-week-of-year-function-test-01.xml deleted file mode 100644 index 7b039bfd0..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0098-feel-week-of-year-function/translator/standard/0098-feel-week-of-year-function-test-01.xml +++ /dev/null @@ -1,212 +0,0 @@ - - - - 0098-feel-week-of-year-function.dmn - - - - - date: during year 2019-09-17 - - - 38 - - - - - - - date: @"2003-12-29" - - - 1 - - - - - - - date: @"2003-12-31" - - - 1 - - - - - - - date: @"2004-01-01" - - - 1 - - - - - - - date: @"2010-01-01" - - - 53 - - - - - - date: unknown type at compile time with valid date as runtime input - - 1970-01-01 - - - - 1 - - - - - - date: will accept date as named param - - - 38 - - - - - - date: spec examples - - - - - - 53 - - - 1 - - - 1 - - - - - - - - datetime: first day of year - - - 1 - - - - - - datetime: unknown type at compile time with valid datetime as runtime input - - 1970-01-01T10:10:10 - - - - 1 - - - - - - datetime: will accept date time as named param - - - 38 - - - - - - null param gives null result - - - - - - - - - no param gives null result - - - - - - - - - invalid param type gives null result - - - - - - - - - null value named param gives null result - - - - - - - - - invalid type as named param gives null result - - - - - - - - - invalidly named param gives null result - - - - - - - - - unknown type at compile time with invalid type as runtime input - - foo - - - - - - - - - - too many params gives null result - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0099-arithmetic-negation/translator/standard/0099-arithmetic-negation-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0099-arithmetic-negation/translator/standard/0099-arithmetic-negation-test-01.xml deleted file mode 100644 index a10a4c19b..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0099-arithmetic-negation/translator/standard/0099-arithmetic-negation-test-01.xml +++ /dev/null @@ -1,139 +0,0 @@ - - - - 0099-arithmetic-negation.dmn - - - negate number - - - -10 - - - - - - negate negative number - - - 10 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - negate date gives null - - - - - - - - - negate datetime gives null - - - - - - - - - negate time gives null - - - - - - - - - negate context gives null - - - - - - - - - negate string gives null - - - - - - - - - negate singleton list gives null - - - - - - - - - negate range gives null - - - - - - - - - negate expression result - - - -10 - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0100-arithmetic/translator/standard/0100-arithmetic-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0100-arithmetic/translator/standard/0100-arithmetic-test-01.xml deleted file mode 100644 index a81e444fb..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0100-arithmetic/translator/standard/0100-arithmetic-test-01.xml +++ /dev/null @@ -1,9792 +0,0 @@ - - - - 0100-arithmetic.dmn - - - multiply_lhs_number_by_rhs_number_001 - - - 100 - - - - - - multiply_lhs_number_by_rhs_number_002 - - - -100 - - - - - - multiply_lhs_number_by_rhs_number_003 - - - 100 - - - - - - multiply_lhs_number_by_rhs_number_004 - - - 0 - - - - - - multiply_lhs_number_by_rhs_dtDuration_001 - - - P10D - - - - - - multiply_lhs_number_by_rhs_dtDuration_002 - - - -P10D - - - - - - multiply_lhs_number_by_rhs_dtDuration_003 - - - P10D - - - - - - multiply_lhs_number_by_rhs_dtDuration_004 - - - P1D - - - - - - multiply_lhs_number_by_rhs_dtDuration_005 - - - P1DT2H - - - - - - multiply_lhs_number_by_rhs_dtDuration_006 - - - P0D - - - - - - multiply_lhs_number_by_rhs_dtDuration_007 - - - P6DT1H30M - - - - - - multiply_lhs_number_by_rhs_dtDuration_008 - - - P2DT9H30M - - - - - - multiply_lhs_dtDuration_by_rhs_number_001 - - - P10D - - - - - - multiply_lhs_dtDuration_by_rhs_number_002 - - - -P10D - - - - - - multiply_lhs_dtDuration_by_rhs_number_003 - - - P10D - - - - - - multiply_lhs_dtDuration_by_rhs_number_004 - - - P1D - - - - - - multiply_lhs_dtDuration_by_rhs_number_005 - - - P1DT2H - - - - - - multiply_lhs_dtDuration_by_rhs_number_006 - - - P0D - - - - - - multiply_lhs_dtDuration_by_rhs_number_007 - - - P6DT1H30M - - - - - - multiply_lhs_dtDuration_by_rhs_number_008 - - - P2DT9H30M - - - - - - multiply_lhs_number_by_rhs_ymDuration_001 - - - P10Y - - - - - - multiply_lhs_number_by_rhs_ymDuration_002 - - - -P10Y - - - - - - multiply_lhs_number_by_rhs_ymDuration_003 - - - P10Y - - - - - - multiply_lhs_number_by_rhs_ymDuration_004 - - - P1Y - - - - - - multiply_lhs_number_by_rhs_ymDuration_005 - - - P2Y - - - - - - multiply_lhs_number_by_rhs_ymDuration_006 - - - P2Y2M - - - - - - multiply_lhs_number_by_rhs_ymDuration_007 - - - P0Y - - - - - - multiply_lhs_number_by_rhs_ymDuration_008 - - - P3M - - - - - - multiply_lhs_number_by_rhs_ymDuration_009 - - - -P3M - - - - - - multiply_lhs_number_by_rhs_ymDuration_010 - - - -P4Y9M - - - - - - multiply_lhs_ymDuration_by_rhs_number_001 - - - P10Y - - - - - - multiply_lhs_ymDuration_by_rhs_number_002 - - - -P10Y - - - - - - multiply_lhs_ymDuration_by_rhs_number_003 - - - P10Y - - - - - - multiply_lhs_ymDuration_by_rhs_number_004 - - - P1Y - - - - - - multiply_lhs_ymDuration_by_rhs_number_005 - - - P2Y - - - - - - multiply_lhs_ymDuration_by_rhs_number_006 - - - P2Y2M - - - - - - multiply_lhs_ymDuration_by_rhs_number_007 - - - P0Y - - - - - - multiply_lhs_ymDuration_by_rhs_number_008 - - - P3M - - - - - - multiply_lhs_ymDuration_by_rhs_number_009 - - - -P3M - - - - - - multiply_lhs_ymDuration_by_rhs_number_010 - - - -P4Y9M - - - - - - divide_lhs_number_by_rhs_number_001 - - - 10 - - - - - - divide_lhs_number_by_rhs_number_002 - - - - - - - - - divide_lhs_ymDuration_by_rhs_number_001 - - - P1Y - - - - - - divide_lhs_ymDuration_by_rhs_number_002 - - - - - - - - - divide_lhs_ymDuration_by_rhs_number_003 - - - P4Y4M - - - - - - divide_lhs_ymDuration_by_rhs_number_004 - - - -P4Y4M - - - - - - divide_lhs_ymDuration_by_rhs_ymDuration_001 - - - 2 - - - - - - divide_lhs_ymDuration_by_rhs_ymDuration_002 - - - - - - - - - divide_lhs_dtDuration_by_rhs_number_001 - - - P1D - - - - - - divide_lhs_dtDuration_by_rhs_number_002 - - - - - - - - - divide_lhs_dtDuration_by_rhs_number_003 - - - P4DT9H12M - - - - - - divide_lhs_dtDuration_by_rhs_dtDuration_001 - - - 2 - - - - - - divide_lhs_dtDuration_by_rhs_dtDuration_002 - - - - - - - - - add_lhs_number_to_rhs_number_001 - - - 15 - - - - - - add_lhs_number_to_rhs_number_002 - - - 5 - - - - - - add_lhs_number_to_rhs_number_003 - - - -5 - - - - - - add_lhs_number_to_rhs_number_004 - - - -15 - - - - - - add_lhs_number_to_rhs_number_005 - - - 3.4685 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_001 - - - 2022-01-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_002 - - - 2021-02-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_003 - - - 2020-01-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_004 - - - 2020-12-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_005 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_006 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_007 - - - 2021-02-01T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_008 - - - 2020-12-01T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_009 - - - 2021-02-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_010 - - - -2021-02-01T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_011 - - - -2020-01-01T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_012 - - - -2022-12-01T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_013 - - - -2022-01-01T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_014 - - - -2021-02-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_015 - - - -2020-01-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_016 - - - -2022-12-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_017 - - - -2022-01-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_001 - - - 2022-01-01T10:10:10 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_002 - - - 2021-02-01T10:10:10 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_003 - - - 2020-01-01T10:10:10 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_004 - - - 2020-12-01T10:10:10 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_005 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_006 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_007 - - - 2021-02-01T10:10:10+11:00 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_008 - - - 2020-12-01T10:10:10+11:00 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_009 - - - 2021-02-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_010 - - - -2021-02-01T10:10:10+11:00 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_011 - - - -2020-01-01T10:10:10+11:00 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_012 - - - -2022-12-01T10:10:10+11:00 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_013 - - - -2022-01-01T10:10:10+11:00 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_014 - - - -2021-02-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_015 - - - -2020-01-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_016 - - - -2022-12-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_017 - - - -2022-01-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_001 - - - 2021-01-13T11:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_002 - - - 2021-01-13T11:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_003 - - - 2021-01-02T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_004 - - - 2021-01-01T11:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_005 - - - 2020-12-31T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_006 - - - 2021-01-01T09:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_007 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_008 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_009 - - - 2021-01-02T00:00:01 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_010 - - - 2021-01-01T23:59:59 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_011 - - - 2021-01-01T11:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_012 - - - 2021-01-01T09:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_013 - - - 2021-01-13T11:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_014 - - - -2021-01-01T11:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_015 - - - -2021-01-02T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_016 - - - -2021-01-01T09:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_017 - - - -2022-12-31T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_018 - - - -2021-01-01T11:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_019 - - - -2021-01-02T10:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_020 - - - -2021-01-01T09:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_021 - - - -2022-12-31T10:10:10@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_001 - - - 2021-01-13T11:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_002 - - - 2021-01-13T11:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_003 - - - 2021-01-02T10:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_004 - - - 2021-01-01T11:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_005 - - - 2020-12-31T10:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_006 - - - 2021-01-01T09:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_007 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_008 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_009 - - - 2021-01-02T00:00:01 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_010 - - - 2021-01-01T23:59:59 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_011 - - - 2021-01-01T11:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_012 - - - 2021-01-01T09:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_013 - - - 2021-01-13T11:10:10@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_014 - - - -2021-01-01T11:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_015 - - - -2021-01-02T10:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_016 - - - -2021-01-01T09:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_017 - - - -2022-12-31T10:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_018 - - - -2021-01-01T11:10:10@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_019 - - - -2021-01-02T10:10:10@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_020 - - - -2021-01-01T09:10:10@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_021 - - - -2022-12-31T10:10:10@Australia/Melbourne - - - - - - add_lhs_date_to_rhs_ymDuration_001 - - - 2022-01-01 - - - - - - add_lhs_date_to_rhs_ymDuration_002 - - - 2021-02-01 - - - - - - add_lhs_ymDuration_to_rhs_date_001 - - - 2022-01-01 - - - - - - add_lhs_ymDuration_to_rhs_date_002 - - - 2021-02-01 - - - - - - add_lhs_date_to_rhs_dtDuration_001 - - - 2021-01-02 - - - - - - Date + 1.5 days (in hours) gives date + 1 day - - - 2021-01-02 - - - - - - Date + 2 days (in hours) gives date + 2 days - - - 2021-01-03 - - - - - - add_lhs_dtDuration_to_rhs_date_001 - - - 2021-01-02 - - - - - - Date + 1.5 days (in hours) gives date + 1 day - - - 2021-01-02 - - - - - - Date + 2 days (in hours) gives date + 2 days - - - 2021-01-03 - - - - - - add_lhs_time_to_rhs_dtDuration_001 - - - 11:15:00 - - - - - - Time + days duration gives time - - - 10:15:00 - - - - - - add_lhs_time_to_rhs_dtDuration_003 - - - 10:15:00+11:00 - - - - - - add_lhs_time_to_rhs_dtDuration_004 - - - 10:15:00@Australia/Melbourne - - - - - - add_lhs_time_to_rhs_dtDuration_005 - - - 10:15:00@Australia/Melbourne - - - - - - add_lhs_time_to_rhs_dtDuration_006 - - - 11:15:00@Australia/Melbourne - - - - - - add_lhs_time_to_rhs_dtDuration_007 - - - 09:15:00@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_time_001 - - - 11:15:00 - - - - - - Time + days duration gives time - - - 10:15:00 - - - - - - add_lhs_dtDuration_to_rhs_time_003 - - - 10:15:00+11:00 - - - - - - add_lhs_dtDuration_to_rhs_time_004 - - - 10:15:00@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_time_005 - - - 10:15:00@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_time_006 - - - 11:15:00@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_time_007 - - - 09:15:00@Australia/Melbourne - - - - - - add_lhs_ymDuration_to_rhs_ymDuration_001 - - - P1Y2M - - - - - - add_lhs_ymDuration_to_rhs_ymDuration_002 - - - P10M - - - - - - add_lhs_ymDuration_to_rhs_ymDuration_003 - - - -P10M - - - - - - add_lhs_ymDuration_to_rhs_ymDuration_004 - - - -P1Y2M - - - - - - add_lhs_ymDuration_to_rhs_ymDuration_005 - - - P1Y - - - - - - add_lhs_ymDuration_to_rhs_ymDuration_006 - - - P1Y - - - - - - add_lhs_dtDuration_to_rhs_dtDuration_001 - - - P3D - - - - - - add_lhs_dtDuration_to_rhs_dtDuration_002 - - - P2D - - - - - - add_lhs_string_to_rhs_string_001 - - - foobar - - - - - - add_lhs_string_to_rhs_string_002 - - - 11 - - - - - - subtract_lhs_number_minus_rhs_number_001 - - - 5 - - - - - - subtract_lhs_number_minus_rhs_number_002 - - - 15 - - - - - - subtract_lhs_number_minus_rhs_number_003 - - - -15 - - - - - - subtract_lhs_number_minus_rhs_number_004 - - - -5 - - - - - - subtract_lhs_number_minus_rhs_number_005 - - - 0.8889 - - - - - - subtract_lhs_number_minus_rhs_number_006 - - - 1.3579 - - - - - - subtract_lhs_number_minus_rhs_number_007 - - - -0.8889 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dateAndTime_001 - - - P1D - - - - - - Both or neither values must have zone info - - - - - - - - - Both or neither values must have zone info - - - - - - - - - Both or neither values must have zone info - - - - - - - - - Both or neither values must have zone info - - - - - - - - - subtract_lhs_dateAndTime_minus_rhs_dateAndTime_006 - - - P1D - - - - - - subtract_lhs_dateAndTime_minus_rhs_dateAndTime_007 - - - P1DT5H - - - - - - Offset datetime is UTC and datetime has zone - - - P1D - - - - - - Offset datetime is UTC and datetime has no zone - - - - - - - - - Date is implicitly UTC 00:00:00 - - - P0D - - - - - - year differences are expressed as days and time duration - - - P9498D - - - - - - year differences are expressed as days and time duration - - - P9498DT5H - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_001 - - - 2020-01-01T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_002 - - - 2020-12-01T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_003 - - - 2022-01-01T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_004 - - - 2021-02-01T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_005 - - - 2021-01-01T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_006 - - - 2021-01-01T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_007 - - - 2020-01-01T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_008 - - - 2020-01-01T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_009 - - - -2022-12-01T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_010 - - - -2022-01-01T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_011 - - - -2021-02-01T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_012 - - - -2020-01-01T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_013 - - - -2022-12-01T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_014 - - - -2022-01-01T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_015 - - - -2021-02-01T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_016 - - - -2020-01-01T10:10:10@Australia/Melbourne - - - - - - Both must have zone info and date implies UTC - - - - - - - - - datetime has zone and date implies UTC - - - P1DT9H10M10S - - - - - - Offset datetime is UTC and date implies UTC - - - P1DT9H10M10S - - - - - - year differences are expressed as days and time duration - - - P9498DT9H10M10S - - - - - - year differences are expressed as days and time duration - - - P9498DT9H10M10S - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_001 - - - 2020-12-31T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_002 - - - 2021-01-01T09:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_003 - - - 2021-01-01T23:00:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_004 - - - 2020-12-31T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_005 - - - 2021-01-01T23:59:59 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_006 - - - 2021-01-02T00:00:01 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_007 - - - 2020-12-31T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_008 - - - 2021-01-01T23:59:59 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_009 - - - 2021-01-02T00:00:01 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_010 - - - -2021-01-01T09:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_011 - - - -2022-12-31T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_012 - - - -2021-01-01T11:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_013 - - - -2021-01-02T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_014 - - - -2021-01-01T09:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_015 - - - -2022-12-31T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_016 - - - -2021-01-01T11:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_017 - - - -2021-01-02T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_date_minus_rhs_dateAndTime_001 - - - - - - - - - subtract_lhs_date_minus_rhs_dateAndTime_002 - - - P1DT49M50S - - - - - - subtract_lhs_date_minus_rhs_dateAndTime_003 - - - P1DT49M50S - - - - - - Date is implicitly UTC 00:00:00 - - - P0D - - - - - - subtract_lhs_date_minus_rhs_dateAndTime_005 - - - P9498DT49M50S - - - - - - subtract_lhs_date_minus_rhs_date_001 - - - P1D - - - - - - subtract_lhs_date_minus_rhs_date_002 - - - P9498D - - - - - - subtract_lhs_date_minus_rhs_date_003 - - - P9498D - - - - - - subtract_lhs_date_minus_rhs_ymDuration_001 - - - 2020-01-02 - - - - - - subtract_lhs_date_minus_rhs_ymDuration_002 - - - 2021-01-01 - - - - - - subtract_lhs_date_minus_rhs_ymDuration_003 - - - 2020-12-02 - - - - - - subtract_lhs_date_minus_rhs_ymDuration_004 - - - 2022-01-02 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_001 - - - 2021-01-01 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_002 - - - 2021-01-01 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_003 - - - 2021-01-01 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_004 - - - 2021-01-01 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_005 - - - 2021-01-02 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_006 - - - 2021-01-02 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_007 - - - 2021-01-02 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_008 - - - 2021-01-01 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_009 - - - 2020-12-31 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_010 - - - 2021-01-03 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_011 - - - 2021-01-03 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_012 - - - 2020-02-29 - - - - - - subtract_lhs_time_minus_rhs_time_001 - - - PT1H - - - - - - subtract_lhs_time_minus_rhs_time_002 - - - -PT1H - - - - - - subtract_lhs_time_minus_rhs_time_003 - - - -PT1H - - - - - - subtract_lhs_time_minus_rhs_time_004 - - - PT1H - - - - - - subtract_lhs_time_minus_rhs_time_005 - - - -PT1H - - - - - - subtract_lhs_time_minus_rhs_time_006 - - - PT1H - - - - - - subtract_lhs_time_minus_rhs_dtDuration_001 - - - 09:10:10 - - - - - - subtract_lhs_time_minus_rhs_dtDuration_002 - - - 10:10:10 - - - - - - subtract_lhs_time_minus_rhs_dtDuration_003 - - - 10:10:10+11:00 - - - - - - subtract_lhs_time_minus_rhs_dtDuration_004 - - - 10:10:10@Australia/Melbourne - - - - - - subtract_lhs_time_minus_rhs_dtDuration_005 - - - 09:10:10+11:00 - - - - - - subtract_lhs_time_minus_rhs_dtDuration_006 - - - 09:10:10@Australia/Melbourne - - - - - - subtract_lhs_ymDuration_minus_rhs_ymDuration_001 - - - P10M - - - - - - subtract_lhs_ymDuration_minus_rhs_ymDuration_002 - - - -P1Y2M - - - - - - subtract_lhs_ymDuration_minus_rhs_ymDuration_003 - - - -P10M - - - - - - subtract_lhs_ymDuration_minus_rhs_ymDuration_004 - - - P1Y2M - - - - - - subtract_lhs_ymDuration_minus_rhs_ymDuration_005 - - - P1Y - - - - - - subtract_lhs_ymDuration_minus_rhs_ymDuration_006 - - - P1Y - - - - - - subtract_lhs_dtDuration_minus_rhs_dtDuration_001 - - - PT22H - - - - - - subtract_lhs_dtDuration_minus_rhs_dtDuration_002 - - - -P1DT2H - - - - - - subtract_lhs_dtDuration_minus_rhs_dtDuration_003 - - - -PT22H - - - - - - subtract_lhs_dtDuration_minus_rhs_dtDuration_004 - - - P1DT2H - - - - - - subtract_lhs_dtDuration_minus_rhs_dtDuration_005 - - - P1D - - - - - - subtract_lhs_dtDuration_minus_rhs_dtDuration_006 - - - P1D - - - - - - exponent_lhs_number_exp_rhs_number_001 - - - 25 - - - - - - exponent_lhs_number_exp_rhs_number_002 - - - 0.04 - - - - - - exponent is left associative - - - 3486784401 - - - - - - -a**b parses as (-a)**b not -(a**b) - - - 25 - - - - - - decimal exponent - - - 60.58617166606 - - - - - - decimal exponent permitted if integer - - - 25 - - - - - - base may be a decimal number - - - 30.25 - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0103-feel-is-function/translator/standard/0103-feel-is-function-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0103-feel-is-function/translator/standard/0103-feel-is-function-test-01.xml deleted file mode 100644 index 3b649c655..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0103-feel-is-function/translator/standard/0103-feel-is-function-test-01.xml +++ /dev/null @@ -1,459 +0,0 @@ - - - - 0103-feel-is-function.dmn - - - number: is equal - - - true - - - - - - number: is not equal - - - false - - - - - - boolean: is equal - - - true - - - - - - boolean: is not equal - - - false - - - - - - string: is equal - - - true - - - - - - string: is not equal - - - false - - - - - - date: is equal - - - true - - - - - - date: is not equal when year differs - - - false - - - - - - date: is not equal when months differs - - - false - - - - - - date: is not equal when days differs - - - false - - - - - - date: is not equal to UTC zero time of same date - - - false - - - - - - time: is equal - - - true - - - - - - time: is equal with same offset - - - true - - - - - - time: is equal with same timezone - - - true - - - - - - time: is equal - UTC zone and UTC offset - - - true - - - - - - time: is not equal - no zone time vs UTC zone time - - - false - - - - - - time: is not equal - @ zone time with same offset zone time - - - false - - - - - - time: is not equal - @ GMT vs zero offset zone time - - - false - - - - - - time: is not equal when hour differs - - - false - - - - - - time: is not equal when minute differs - - - false - - - - - - time: is not equal when second differs - - - false - - - - - - time: is not equal when offset differs - - - false - - - - - - time: is not equal when zone differs but offset is same - - - false - - - - - - time: is not equal when equivalent time in different zones - - - false - - - - - - datetime: is equal with same date and time - - - true - - - - - - datetime: is equal with same date and time and offset - - - true - - - - - - datetime: is equal with same date and time and timezone - - - true - - - - - - datetime: not equals despite being equal points in time - - - false - - - - - - datetime: not equals despite being equal points in time - - - false - - - - - - datetime: not equals despite being equal points in time - - - false - - - - - - datetime: not equals when year differs - - - false - - - - - - datetime: not equals when month differs - - - false - - - - - - datetime: not equals when day differs - - - false - - - - - - datetime: not equals when hour differs - - - false - - - - - - datetime: not equals when minute differs - - - false - - - - - - datetime: not equals when seconds differs - - - false - - - - - - datetime: not equals when offset differs - - - false - - - - - - datetime: not equals when region differs even though offset is same - - - false - - - - - - datetime: is equal - UTC zone vs UTC offset - - - true - - - - - - datetime: is not equal - zone vs offset - DST - - - false - - - - - - datetime: is not equal - zone vs offset - outside DST - - - false - - - - - - days and time duration: same stuff is equal - - - true - - - - - - days and time duration: same duration in different units is equal - - - true - - - - - - years and months duration: not a permitted type - - - true - - - - - - years and months duration: same duration in different units is equal - - - true - - - - - - zero durations are not equal - - - false - - - - - - correct names params okay - - - true - - - - - - value1 param is nullable - - - false - - - - - - value2 param is nullable - - - false - - - - - - will return null when unknown named params - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/0104-allowed-values/translator/standard/0104-allowed-values-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/0104-allowed-values/translator/standard/0104-allowed-values-test-01.xml deleted file mode 100644 index a720ca853..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/0104-allowed-values/translator/standard/0104-allowed-values-test-01.xml +++ /dev/null @@ -1,1224 +0,0 @@ - - - - 0104-allowed-values.dmn - - - - - complies with string domain - - - foo - - - - - - does not comply with string domain - - - - - - - - - input value complies with input string domain - - foo - - - - foo - - - - - - input value does not comply with input string domain - - baz - - - - - - - - - - - complies with copy of type string domain - - - foo - - - - - - - does not comply with copy string domain - - - - - - - - - - - complies with number domain - - - 17 - - - - - - does not comply with number domain - - - - - - - - - input value complies with number domain - - 17 - - - - 17 - - - - - - input value does not comply with number domain - - 20 - - - - - - - - - - - - complies with date domain - - - 1960-02-01 - - - - - - does not comply with date domain - - - - - - - - - input value complies with date domain - - 1960-02-01 - - - - 1960-02-01 - - - - - - input value does not comply with date domain - - 1970-01-01 - - - - - - - - - - - - complies with dateTime domain - - - 1960-01-01T00:00:01 - - - - - - does not comply with dateTime domain - - - - - - - - - input value complies with dateTime domain - - 1960-01-01T00:00:01 - - - - 1960-01-01T00:00:01 - - - - - - input value does not comply with dateTime domain - - 1970-01-01T00:00:00 - - - - - - - - - - - - complies with time domain - - - 10:00:00 - - - - - - does not comply with time domain - - - - - - - - - input value complies with time domain - - 10:00:00 - - - - 10:00:00 - - - - - - input value does not comply with time domain - - 13:00:00 - - - - - - - - - - - - complies with ymd domain - - - P2Y - - - - - - does not comply with ymd domain - - - - - - - - - input value complies with ymd domain - - P2Y - - - - P2Y - - - - - - input value does not comply with ymd domain - - P6Y - - - - - - - - - - - - complies with dtd domain - - - P2D - - - - - - does not comply with dtd domain - - - - - - - - - input value complies with dtd domain - - P2D - - - - P2D - - - - - - input value does not comply with dtd domain - - P6D - - - - - - - - - - - - complies with string domain for 'overridden' base type - - - left - - - - - - does not comply with string domain for 'overridden' base type - - - - - - - - - - - BKM argument complies with parameter domain - - foo - - - - foo - - - - - - BKM argument does not comply with parameter domain - - baz - - - - - - - - - - BKM return type complies with encapsulatedLogic typed function return type domain - - foo - - - - foo - - - - - - BKM return type does not comply with encapsulatedLogic typed typed function return type domain - - baz - - - - - - - - - - BKM return type complies with variable typeRef function return type domain - - foo - - - - foo - - - - - - BKM return type does not comply with variable typRef function return type domain - - baz - - - - - - - - - - - - Decision Service return value complies with return type domain - - foo - - - - foo - - - - - - Decision Service return value does not comply with return type domain - - baz - - - - - - - - - - Decision Service param value complies with param type domain - - foo - - - - foo - - - - - - Decision Service param value does not comply with param type domain - - baz - - - - - - - - - - - - lambda argument complies with parameter domain - - foo - - - - foo - - - - - - lambda argument does not comply with parameter domain - - baz - - - - - - - - - - function definition return result complies with function result domain - - foo - - - - foo - - - - - - function definition return result does not comply with function result domain - - baz - - - - - - - - - - - - function definition argument complies with parameter domain - - foo - - - - foo - - - - - - function definition argument does not comply with parameter domain - - baz - - - - - - - - - - function definition return result complies with function result domain - - foo - - - - foo - - - - - - function definition return result does not comply with function result domain - - baz - - - - - - - - - - - - complies with list type with constrained item type - - - - - foo - - - foo - - - bar - - - - - - - - does not comply with list type with constrained item type - - - - - - - - - singleton value complies with list type with constrained item type - - - - - foo - - - - - - - - - singleton value does not comply with list type with constrained item type - - - - - - - - - - singleton list complies with constrained item type - - - foo - - - - - - - singleton list does not comply with constained item type - - - - - - - - - - - complies with list type with constrained item type - - - - - foo - - - foo - - - bar - - - - - - - - does not comply with list type with constrained item type - - - - - - - - - - - complies with context type with constrained property type - - - - foo - - - - - - - does not comply with context type with constrained property type - - - - - - - - - complies with context type with constrained property type - - - - foo - - - - - - - does not comply with context type with constrained property type - - - - - - - - - complies with context type with constrained list property type - - - - - - foo - - - foo - - - bar - - - - - - - - - does not comply with context type with constrained list property type - - - - - - - - - does not comply with context type with constrained property type - no singleton list unbox - - - - - - - - - does not comply with context type with constrained property type - no singleton list boxing - - - - - - - - - context input data complies with constrained input type - - - foo - - - - - - foo - - - - - - - context input data does not comply with constrained input type - - - baz - - - - - - - - - - - - - literal expression typeRef complies with type - - foo - - - - foo - - - - - - literal expression typeRef does not comply with type - - baz - - - - - - - - - - - - context expression typeRef complies with type - - foo - - - - - foo - - - - - - - context expression typeRef does not comply with type - - baz - - - - - - - - - - - - contextentry expression typeRef complies with type - - foo - - - - - foo - - - - - - - contextentry expression typeRef does not comply with type - - baz - - - - - - - - - - - - - - list expression typeRef complies with type - - foo - - - - - - foo - - - - - - - - list expression typeRef does not comply with type - - baz - - - - - - - - - - - - - - list input data complies with constrained input type - - - - foo - - - - - - - - foo - - - - - - - - list input data does not comply with constrained input type - - - - baz - - - - - - - - - - - - - - relation expression typeRef complies with type - - foo - - - - - - - foo - - - - - - - - - relation expression typeRef does not comply with type - - baz - - - - - - - - - - - - relation row expression complies with column typeRef - - foo - - - - - - - foo - - - - - - - - - relation row expression does not comply with column typeRef - - baz - - - - - - - - - - - - - - - - - - DT single output complies with DT typeRef - - foo - - - - foo - - - - - - DT single output complies with DT typeRef - - baz - - - - - - - - - - DT multiple output values complies with output entry typeRef - - foo - - - - - foo - - - foo - - - - - - - DT multiple output values do not comply with output entry typeRef - - baz - - - - - - - - baz - - - - - - - DT multiple output values complies with output clause typeRef - - foo - - - - - foo - - - foo - - - - - - - DT multiple output values do not comply with output clause typeRef - - baz - - - - - - - - baz - - - - - - - DT input value complies with input clause clause inputValues - - foo - - - - complies - - - - - - DT input value does not comply with input clause clause inputValues - - baz - - - - does not comply - - - - - - DT output value complies with output clause clause outputValues - - foo - - - - foo - - - - - - DT output value does not comply with output clause clause outputValues - - baz - - - - - - - - - - - - Invocation binding value complies with binding type - - foo - - - - foo - - - - - - Invocation binding value does not comply with binding type - - baz - - - - - - - - - - Invocation return value complies with invocation return type - - foo - - - - foo - - - - - - Invocation return value does not comply with invocation return type - - baz - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.3/cl3/1130-feel-interval/translator/standard/1130-feel-interval-test-01.xml b/dmn-test-cases/standard/tck/1.3/cl3/1130-feel-interval/translator/standard/1130-feel-interval-test-01.xml deleted file mode 100644 index 049ec00b9..000000000 --- a/dmn-test-cases/standard/tck/1.3/cl3/1130-feel-interval/translator/standard/1130-feel-interval-test-01.xml +++ /dev/null @@ -1,487 +0,0 @@ - - 1130-feel-interval.dmn - - Compliance Level 3 - FEEL: Interval functions - - - - - - true - - - false - - - true - - - true - - - false - - - false - - - true - - - true - - - true - - - true - - - true - - - true - - - true - - - true - - - - - - - - - true - - - false - - - true - - - true - - - false - - - false - - - true - - - true - - - false - - - true - - - false - - - true - - - true - - - - - - - - - true - - - false - - - false - - - true - - - true - - - false - - - false - - - true - - - true - - - true - - - - - - - - - true - - - false - - - true - - - true - - - false - - - false - - - true - - - true - - - true - - - true - - - true - - - true - - - true - - - true - - - - - - - - - true - - - false - - - false - - - false - - - - - - - - - true - - - false - - - false - - - true - - - true - - - false - - - true - - - true - - - true - - - false - - - true - - - true - - - - - - - - - true - - - true - - - true - - - true - - - false - - - false - - - true - - - false - - - false - - - false - - - true - - - false - - - false - - - false - - - - - - - - - true - - - false - - - true - - - false - - - false - - - true - - - true - - - false - - - false - - - - - - - - - true - - - false - - - true - - - false - - - true - - - true - - - true - - - - - - - - - true - - - false - - - true - - - false - - - true - - - true - - - true - - - - - - - - - true - - - false - - - false - - - true - - - true - - - false - - - false - - - true - - - true - - - true - - - - - - - - - true - - - false - - - true - - - false - - - false - - - - - - - - - true - - - false - - - true - - - false - - - false - - - true - - - true - - - false - - - false - - - - - - - - - true - - - false - - - false - - - false - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/0070-feel-instance-of/translator/standard/0070-feel-instance-of-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/0070-feel-instance-of/translator/standard/0070-feel-instance-of-test-01.xml deleted file mode 100644 index dc2056c9c..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/0070-feel-instance-of/translator/standard/0070-feel-instance-of-test-01.xml +++ /dev/null @@ -1,1596 +0,0 @@ - - - - 0070-feel-instance-of.dmn - - - - - - - null instance of Any is false - - - false - - - - - - null instance of number is false - - - false - - - - - - null instance of string is false - - - false - - - - - - null instance of boolean is false - - - false - - - - - - null instance of date is false - - - false - - - - - - null instance of time is false - - - false - - - - - - null instance of date and time is false - - - false - - - - - - null instance of list is false - - - false - - - - - - null instance of years and months duration is false - - - false - - - - - - null instance of days and time duration is false - - - false - - - - - - - - null instance of function is false - - - false - - - - - - number instance of Any is true - - - true - - - - - - number instance of number is true - - - true - - - - - - number instance of string is false - - - false - - - - - - number instance of boolean is false - - - false - - - - - - number instance of date is false - - - false - - - - - - number instance of time is false - - - false - - - - - - number instance of date and time is false - - - false - - - - - - number instance of list is false - - - false - - - - - - number instance of years and months duration is false - - - false - - - - - - number instance of days and time duration is false - - - false - - - - - - - - number instance of function is false - - - false - - - - - - type conformance does not take into account allowedValues - - - true - - - - - - - string instance of Any is true - - - true - - - - - - string instance of number is false - - - false - - - - - - string instance of string is true - - - true - - - - - - string instance of boolean is false - - - false - - - - - - string instance of date is false - - - false - - - - - - string instance of time is false - - - false - - - - - - string instance of date and time is false - - - false - - - - - - string instance of list is false - - - false - - - - - - string instance of years and months duration is false - - - false - - - - - - string instance of days and time duration is false - - - false - - - - - - - - string instance of function is false - - - false - - - - - - string type conformance does not take into account allowedValues - - - true - - - - - - - boolean instance of Any is true - - - true - - - - - - boolean instance of number is false - - - false - - - - - - boolean instance of string is false - - - false - - - - - - boolean instance of boolean is true - - - true - - - - - - boolean instance of date is false - - - false - - - - - - boolean instance of time is false - - - false - - - - - - boolean instance of date and time is false - - - false - - - - - - boolean instance of list is false - - - false - - - - - - boolean instance of years and months duration is false - - - false - - - - - - boolean instance of days and time duration is false - - - false - - - - - - - - boolean instance of function is false - - - false - - - - - - date instance of Any is true - - - true - - - - - - date instance of number is false - - - false - - - - - - date instance of string is false - - - false - - - - - - - date instance of boolean is false - - - false - - - - - - date instance of date is true - - - true - - - - - - date instance of time is false - - - false - - - - - - date instance of date and time is false - spec 1.2 "Examples of equivalence - and conformance relations" table shows date and confirming to date - and time - which I believe is wrong - it is the other way around - - - false - - - - - - date instance of list is false - - - false - - - - - - date instance of years and months duration is false - - - false - - - - - - date instance of days and time duration is false - - - false - - - - - - - - date instance of function is false - - - false - - - - - - time instance of Any is true - - - true - - - - - - time instance of number is false - - - false - - - - - - time instance of string is false - - - false - - - - - - time instance of boolean is false - - - false - - - - - - time instance of date is false - - - false - - - - - - time instance of time is true - - - true - - - - - - time instance of date and time is false - - - false - - - - - - time instance of list is false - - - false - - - - - - time instance of years and months duration is false - - - false - - - - - - time instance of days and time duration is false - - - false - - - - - - - - time instance of function is false - - - false - - - - - - list instance of Any is true - - - true - - - - - - list instance of number is false - - - false - - - - - - list instance of string is false - - - false - - - - - - list instance of boolean is false - - - false - - - - - - list instance of date is false - - - false - - - - - - list instance of time is false - - - false - - - - - - list instance of date and time is false - - - false - - - - - - list instance of list is rrue - - - true - - - - - - list instance of years and months duration is false - - - false - - - - - - list instance of days and time duration is false - - - false - - - - - - - - list instance of function is false - - - false - - - - - - list instance with same itemtype is true - - - true - - - - - - list instance with different itemtypes is list Any - - - true - - - - - - empty list is list Any - - - true - - - - - - list instance with different item types is not a list of (say) number - - - false - - - - - - singleton list is not instance of element type - - - false - - - - - - primitive is not instance of list of same type - - - false - - - - - - list is an instance of inline list of itemdefinition context type - - - true - - - - - - list is not an instance of inline list of inline context type - - - false - - - - - - list is an instance of inline list of inline context type - - - true - - - - - - - - years and months duration instance of Any is true - - - true - - - - - - years and months duration instance of number is false - - - false - - - - - - years and months duration instance of string is false - - - false - - - - - - years and months duration instance of boolean is false - - - false - - - - - - years and months duration instance of date is false - - - false - - - - - - years and months duration instance of time is false - - - false - - - - - - years and months duration instance of date and time is false - - - false - - - - - - years and months duration instance of list is false - - - false - - - - - - years and months duration instance of years and months duration is true - - - true - - - - - - years and months duration instance of days and time duration is false - - - false - - - - - - - - years and months duration instance of function is false - - - false - - - - - - days and time duration instance of Any is true - - - true - - - - - - days and time duration instance of number is false - - - false - - - - - - days and time duration instance of string is false - - - false - - - - - - days and time duration instance of boolean is false - - - false - - - - - - days and time duration instance of date is false - - - false - - - - - - days and time duration instance of time is false - - - false - - - - - - days and time duration instance of date and time is false - - - false - - - - - - days and time durationinstance of list is false - - - false - - - - - - days and time duration instance of years and months duration is false - - - false - - - - - - days and time duration instance of days and time duration is true - - - true - - - - - - - - days and time duration instance of function is false - - - false - - - - - - context instance of Any is true - - - true - - - - - - context instance of number is false - - - false - - - - - - context instance of string is false - - - false - - - - - - context instance of boolean is false - - - false - - - - - - context instance of date is false - - - false - - - - - - context instance of time is false - - - false - - - - - - context instance of date and time is false - - - false - - - - - - context instance of list is false - - - false - - - - - - context instance of years and months duration is false - - - false - - - - - - context instance of days and time duration is false - - - false - - - - - - - - context instance of function is false - - - false - - - - - - context instance of context with same property names is true - - - true - - - - - - context instance with superset of type property names is true - - - true - - - - - - context instance with subset of type property names is false - - - false - - - - - - context instance with same property names but different types is false - - - false - - - - - - - - context instance conforms to equivalent type - - - true - - - - - - context with null value conforms to specific type - - - true - - - - - - context with multiple properties conforms to type with equivalent single property - - - true - - - - - - context with multiple properties conforms to type with equivalent multiple properties - - - true - - - - - - context with non-conforming property does not match type - - - false - - - - - - context with nested context conforms to type - - - true - - - - - - context with nested context dot not conform to type - - - false - - - - - - function instance of Any is true - - - true - - - - - - function instance of number is false - - - false - - - - - - function instance of string is false - - - false - - - - - - function instance of boolean is false - - - false - - - - - - function instance of date is false - - - false - - - - - - function instance of time is false - - - false - - - - - - function instance of date and time is false - - - false - - - - - - function instance of list is false - - - false - - - - - - function instance of years and months duration is false - - - false - - - - - - function instance of days and time duration is false - - - false - - - - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.4/cl3/0072-feel-in/translator/standard/0072-feel-in-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/0072-feel-in/translator/standard/0072-feel-in-test-01.xml deleted file mode 100644 index b940c9dec..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/0072-feel-in/translator/standard/0072-feel-in-test-01.xml +++ /dev/null @@ -1,2664 +0,0 @@ - - - - 0072-feel-in.dmn - - - - - - - - - - - number: e1 in [e2,e3,…] (endpoints) - - - true - - - - - - number: e1 in [e2,e3,…] (endpoints) - - - false - - - - - - number: e1 in [e2,e3,…] (ranges) - - - true - - - - - - number: e1 in [e2,e3,…] (ranges) - - - false - - - - - - number: e1 in <=e2 - - - true - - - - - - number: e1 in <=e2 - - - true - - - - - - number: e1 in <=e2 - - - false - - - - - - number: e1 in <e2 - - - true - - - - - - number: e1 in <e2 - - - false - - - - - - number: e1 in >=e2 - - - true - - - - - - number: e1 in >=e2 - - - true - - - - - - number: e1 in >=e2 - - - false - - - - - - number: e1 in >e2 - - - true - - - - - - number: e1 in >e2 - - - false - - - - - - number: e1 in (e2..e3) - - - false - - - - - - number: e1 in (e2..e3) - - - false - - - - - - number: e1 in (e2..e3) - - - true - - - - - - number: e1 in (e2..e3) - - - false - - - - - - number: e1 in (e2..e3) - - - false - - - - - - number: e1 in (e2..e3] - - - false - - - - - - number: e1 in (e2..e3] - - - false - - - - - - number: e1 in (e2..e3] - - - true - - - - - - number: e1 in (e2..e3] - - - true - - - - - - number: e1 in (e2..e3] - - - false - - - - - - number: e1 in [e2..e3) - - - false - - - - - - number: e1 in [e2..e3) - - - true - - - - - - number: e1 in [e2..e3) - - - true - - - - - - number: e1 in [e2..e3) - - - false - - - - - - number: e1 in [e2..e3) - - - false - - - - - - number: e1 in [e2..e3] - - - false - - - - - - number: e1 in [e2..e3] - - - true - - - - - - number: e1 in [e2..e3] - - - true - - - - - - number: e1 in [e2..e3] - - - true - - - - - - number: e1 in [e2..e3] - - - false - - - - - - number: e1 in e2 - - - true - - - - - - number: e1 in unary tests - - - true - - - - - - number: e1 in unary tests - - - false - - - - - - string: e1 in [e2,e3,…] (endpoints) - - - true - - - - - - string: e1 in [e2,e3,…] (endpoints) - - - false - - - - - - string: e1 in [e2,e3,…] (ranges) - - - true - - - - - - string: e1 in [e2,e3,…] (ranges) - - - false - - - - - - string: e1 in <=e2 - - - true - - - - - - string: e1 in <=e2 - - - true - - - - - - string: e1 in <=e2 - - - false - - - - - - string: e1 in <e2 - - - true - - - - - - string: e1 in <e2 - - - false - - - - - - string: e1 in >=e2 - - - true - - - - - - string: e1 in >=e2 - - - true - - - - - - string: e1 in >=e2 - - - false - - - - - - string: e1 in >e2 - - - true - - - - - - string: e1 in >e2 - - - false - - - - - - string: e1 in (e2..e3) - - - false - - - - - - string: e1 in (e2..e3) - - - false - - - - - - string: e1 in (e2..e3) - - - true - - - - - - string: e1 in (e2..e3) - - - false - - - - - - string: e1 in (e2..e3) - - - false - - - - - - string: e1 in (e2..e3] - - - false - - - - - - string: e1 in (e2..e3] - - - false - - - - - - string: e1 in (e2..e3] - - - true - - - - - - string: e1 in (e2..e3] - - - true - - - - - - string: e1 in (e2..e3] - - - false - - - - - - string: e1 in [e2..e3) - - - false - - - - - - string: e1 in [e2..e3) - - - true - - - - - - string: e1 in [e2..e3) - - - true - - - - - - string: e1 in [e2..e3) - - - false - - - - - - string: e1 in [e2..e3) - - - false - - - - - - string: e1 in [e2..e3] - - - false - - - - - - string: e1 in [e2..e3] - - - true - - - - - - string: e1 in [e2..e3] - - - true - - - - - - string: e1 in [e2..e3] - - - true - - - - - - string: e1 in [e2..e3] - - - false - - - - - - string: e1 in e2 - - - true - - - - - - string: e1 in unary tests - - - true - - - - - - string: e1 in unary tests - - - false - - - - - - - boolean: e1 in [e2,e3,…] (endpoints) - - - true - - - - - - boolean: e1 in [e2,e3,…] (endpoints) - - - false - - - - - - boolean: e1 in e2 - - - true - - - - - - boolean: e1 in unary tests - - - true - - - - - - boolean: e1 in unary tests - - - false - - - - - - date: e1 in [e2,e3,…] (endpoints) - - - true - - - - - - date: e1 in [e2,e3,…] (endpoints) - - - false - - - - - - date: e1 in [e2,e3,…] (ranges) - - - true - - - - - - date: e1 in [e2,e3,…] (ranges) - - - false - - - - - - date: e1 in <=e2 - - - true - - - - - - date: e1 in <=e2 - - - true - - - - - - date: e1 in <=e2 - - - false - - - - - - date: e1 in <e2 - - - true - - - - - - date: e1 in <e2 - - - false - - - - - - date: e1 in >=e2 - - - true - - - - - - date: e1 in >=e2 - - - true - - - - - - string: e1 in >=e2 - - - false - - - - - - date: e1 in >e2 - - - true - - - - - - string: e1 in >e2 - - - false - - - - - - date: e1 in (e2..e3) - - - false - - - - - - date: e1 in (e2..e3) - - - false - - - - - - date: e1 in (e2..e3) - - - true - - - - - - date: e1 in (e2..e3) - - - false - - - - - - date: e1 in (e2..e3) - - - false - - - - - - date: e1 in (e2..e3] - - - false - - - - - - date: e1 in (e2..e3] - - - false - - - - - - date: e1 in (e2..e3] - - - true - - - - - - date: e1 in (e2..e3] - - - true - - - - - - date: e1 in (e2..e3] - - - false - - - - - - date: e1 in [e2..e3) - - - false - - - - - - date: e1 in [e2..e3) - - - true - - - - - - date: e1 in [e2..e3) - - - true - - - - - - date: e1 in [e2..e3) - - - false - - - - - - date: e1 in [e2..e3) - - - false - - - - - - date: e1 in [e2..e3] - - - false - - - - - - date: e1 in [e2..e3] - - - true - - - - - - date: e1 in [e2..e3] - - - true - - - - - - date: e1 in [e2..e3] - - - true - - - - - - date: e1 in [e2..e3] - - - false - - - - - - date: e1 in e2 - - - true - - - - - - date: e1 in unary tests - - - true - - - - - - date: e1 in unary tests - - - false - - - - - - time: e1 in [e2,e3,…] (endpoints) - - - true - - - - - - time: e1 in [e2,e3,…] (endpoints) - - - false - - - - - - time: e1 in [e2,e3,…] (ranges) - - - true - - - - - - time: e1 in [e2,e3,…] (ranges) - - - false - - - - - - time: e1 in <=e2 - - - true - - - - - - time: e1 in <=e2 - - - true - - - - - - time: e1 in <=e2 - - - false - - - - - - time: e1 in <e2 - - - true - - - - - - time: e1 in <e2 - - - false - - - - - - time: e1 in >=e2 - - - true - - - - - - time: e1 in >=e2 - - - true - - - - - - time: e1 in >=e2 - - - false - - - - - - time: e1 in >e2 - - - true - - - - - - time: e1 in >e2 - - - false - - - - - - time: e1 in (e2..e3) - - - false - - - - - - time: e1 in (e2..e3) - - - false - - - - - - time: e1 in (e2..e3) - - - true - - - - - - time: e1 in (e2..e3) - - - false - - - - - - time: e1 in (e2..e3) - - - false - - - - - - time: e1 in (e2..e3] - - - false - - - - - - time: e1 in (e2..e3] - - - false - - - - - - time: e1 in (e2..e3] - - - true - - - - - - time: e1 in (e2..e3] - - - true - - - - - - time: e1 in (e2..e3] - - - false - - - - - - time: e1 in [e2..e3) - - - false - - - - - - time: e1 in [e2..e3) - - - true - - - - - - time: e1 in [e2..e3) - - - true - - - - - - time: e1 in [e2..e3) - - - false - - - - - - time: e1 in [e2..e3) - - - false - - - - - - time: e1 in [e2..e3] - - - false - - - - - - time: e1 in [e2..e3] - - - true - - - - - - time: e1 in [e2..e3] - - - true - - - - - - time: e1 in [e2..e3] - - - true - - - - - - time: e1 in [e2..e3] - - - false - - - - - - time: e1 in e2 - - - true - - - - - - time: e1 in unary tests - - - true - - - - - - time: e1 in unary tests - - - false - - - - - - dateTime: e1 in [e2,e3,…] (endpoints) - - - true - - - - - - dateTime: e1 in [e2,e3,…] (endpoints) - - - false - - - - - - dateTime: e1 in [e2,e3,…] (ranges) - - - true - - - - - - dateTime: e1 in [e2,e3,…] (ranges) - - - false - - - - - - dateTime: e1 in <=e2 - - - true - - - - - - dateTime: e1 in <=e2 - - - true - - - - - - dateTime: e1 in <=e2 - - - false - - - - - - dateTime: e1 in <e2 - - - true - - - - - - dateTime: e1 in <e2 - - - false - - - - - - dateTime: e1 in >=e2 - - - true - - - - - - dateTime: e1 in >=e2 - - - true - - - - - - dateTime: e1 in >=e2 - - - false - - - - - - dateTime: e1 in >e2 - - - true - - - - - - dateTime: e1 in >e2 - - - false - - - - - - dateTime: e1 in (e2..e3) - - - false - - - - - - dateTime: e1 in (e2..e3) - - - false - - - - - - dateTime: e1 in (e2..e3) - - - true - - - - - - dateTime: e1 in (e2..e3) - - - false - - - - - - dateTime: e1 in (e2..e3) - - - false - - - - - - dateTime: e1 in (e2..e3] - - - false - - - - - - dateTime: e1 in (e2..e3] - - - false - - - - - - dateTime: e1 in (e2..e3] - - - true - - - - - - dateTime: e1 in (e2..e3] - - - true - - - - - - dateTime: e1 in (e2..e3] - - - false - - - - - - dateTime: e1 in [e2..e3) - - - false - - - - - - dateTime: e1 in [e2..e3) - - - true - - - - - - dateTime: e1 in [e2..e3) - - - true - - - - - - dateTime: e1 in [e2..e3) - - - false - - - - - - dateTime: e1 in [e2..e3) - - - false - - - - - - dateTime: e1 in [e2..e3] - - - false - - - - - - dateTime: e1 in [e2..e3] - - - true - - - - - - dateTime: e1 in [e2..e3] - - - true - - - - - - dateTime: e1 in [e2..e3] - - - true - - - - - - dateTime: e1 in [e2..e3] - - - false - - - - - - dateTime: e1 in e2 - - - true - - - - - - dateTime: e1 in unary tests - - - true - - - - - - dateTime: e1 in unary tests - - - false - - - - - - list: e1 in [e2,e3,…] (endpoints) - - - true - - - - - - list: e1 in [e2,e3,…] (endpoints) - - - false - - - - - - - - list: e1 in e2 - - - true - - - - - - list: e1 in e2 - - - false - - - - - - - - list: e1 in unary tests - - - false - - - - - - - - context: e1 in [e2,e3,…] (endpoints) - - - true - - - - - - context: e1 in [e2,e3,…] (endpoints) - - - false - - - - - - context: e1 in e2 - - - true - - - - - - context: e1 in unary tests - - - true - - - - - - context: e1 in unary tests - - - false - - - - - - ym_duration: e1 in [e2,e3,…] (endpoints) - - - true - - - - - - ym_duration: e1 in [e2,e3,…] (endpoints) - - - false - - - - - - ym_duration: e1 in [e2,e3,…] (ranges) - - - true - - - - - - ym_duration: e1 in [e2,e3,…] (ranges) - - - false - - - - - - ym_duration: e1 in <=e2 - - - true - - - - - - ym_duration: e1 in <=e2 - - - true - - - - - - ym_duration: e1 in <=e2 - - - false - - - - - - ym_duration: e1 in <e2 - - - true - - - - - - ym_duration: e1 in <e2 - - - false - - - - - - ym_duration: e1 in >=e2 - - - true - - - - - - ym_duration: e1 in >=e2 - - - true - - - - - - ym_duration: e1 in >=e2 - - - false - - - - - - ym_duration: e1 in >e2 - - - true - - - - - - ym_duration: e1 in >e2 - - - false - - - - - - ym_duration: e1 in (e2..e3) - - - false - - - - - - ym_duration: e1 in (e2..e3) - - - false - - - - - - ym_duration: e1 in (e2..e3) - - - true - - - - - - ym_duration: e1 in (e2..e3) - - - false - - - - - - ym_duration: e1 in (e2..e3) - - - false - - - - - - ym_duration: e1 in (e2..e3] - - - false - - - - - - ym_duration: e1 in (e2..e3] - - - false - - - - - - ym_duration: e1 in (e2..e3] - - - true - - - - - - ym_duration: e1 in (e2..e3] - - - true - - - - - - ym_duration: e1 in (e2..e3] - - - false - - - - - - ym_duration: e1 in [e2..e3) - - - false - - - - - - ym_duration: e1 in [e2..e3) - - - true - - - - - - ym_duration: e1 in [e2..e3) - - - true - - - - - - ym_duration: e1 in [e2..e3) - - - false - - - - - - ym_duration: e1 in [e2..e3) - - - false - - - - - - ym_duration: e1 in [e2..e3] - - - false - - - - - - ym_duration: e1 in [e2..e3] - - - true - - - - - - ym_duration: e1 in [e2..e3] - - - true - - - - - - ym_duration: e1 in [e2..e3] - - - true - - - - - - ym_duration: e1 in [e2..e3] - - - false - - - - - - ym_duration: e1 in e2 - - - true - - - - - - ym_duration: e1 in unary tests - - - true - - - - - - ym_duration: e1 in unary tests - - - false - - - - - - dt_duration: e1 in [e2,e3,…] (endpoints) - - - true - - - - - - dt_duration: e1 in [e2,e3,…] (endpoints) - - - false - - - - - - dt_duration: e1 in [e2,e3,…] (ranges) - - - true - - - - - - dt_duration: e1 in [e2,e3,…] (ranges) - - - false - - - - - - dt_duration: e1 in <=e2 - - - true - - - - - - dt_duration: e1 in <=e2 - - - true - - - - - - dt_duration: e1 in <=e2 - - - false - - - - - - dt_duration: e1 in <e2 - - - true - - - - - - dt_duration: e1 in <e2 - - - false - - - - - - dt_duration: e1 in >=e2 - - - true - - - - - - dt_duration: e1 in >=e2 - - - true - - - - - - dt_duration: e1 in >=e2 - - - false - - - - - - dt_duration: e1 in >e2 - - - true - - - - - - dt_duration: e1 in >e2 - - - false - - - - - - dt_duration: e1 in (e2..e3) - - - false - - - - - - dt_duration: e1 in (e2..e3) - - - false - - - - - - dt_duration: e1 in (e2..e3) - - - true - - - - - - dt_duration: e1 in (e2..e3) - - - false - - - - - - dt_duration: e1 in (e2..e3) - - - false - - - - - - dt_duration: e1 in (e2..e3] - - - false - - - - - - dt_duration: e1 in (e2..e3] - - - false - - - - - - dt_duration: e1 in (e2..e3] - - - true - - - - - - dt_duration: e1 in (e2..e3] - - - true - - - - - - dt_duration: e1 in (e2..e3] - - - false - - - - - - dt_duration: e1 in [e2..e3) - - - false - - - - - - dt_duration: e1 in [e2..e3) - - - true - - - - - - dt_duration: e1 in [e2..e3) - - - true - - - - - - dt_duration: e1 in [e2..e3) - - - false - - - - - - dt_duration: e1 in [e2..e3) - - - false - - - - - - dt_duration: e1 in [e2..e3] - - - false - - - - - - dt_duration: e1 in [e2..e3] - - - true - - - - - - dt_duration: e1 in [e2..e3] - - - true - - - - - - dt_duration: e1 in [e2..e3] - - - true - - - - - - dt_duration: e1 in [e2..e3] - - - false - - - - - - dt_duration: e1 in e2 - - - true - - - - - - dt_duration: e1 in unary tests - - - true - - - - - - dt_duration: e1 in unary tests - - - false - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/0082-feel-coercion/translator/standard/0082-feel-coercion-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/0082-feel-coercion/translator/standard/0082-feel-coercion-test-01.xml deleted file mode 100644 index 360ece0f1..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/0082-feel-coercion/translator/standard/0082-feel-coercion-test-01.xml +++ /dev/null @@ -1,489 +0,0 @@ - - - - 0082-feel-coercion.dmn - - - - - - - - type mismatch - decision return value is null coerced - - - - - - - - - - - - list type mismatch - decision return value is null coerced - - - - - - - - - type permitted - conforming context - - - - foo - - - bar - - - 10 - - - - - - - context type mismatch - decision return value is null coerced - - - - - - - - - - decision type is list but return val is non-conforming val - coercion to null - - - - - - - - - decision returns singleton list value but type is not a list - coercion list to val - - - foo - - - - - - decision type is value but return val is non-conforming singleton list - coercion to null - - - - - - - - - decision type is list but return val null - null cannot be coerced so no singleton list coercion - - - - - - - - - pass conforming context type to bkm - - - true - - - - - - pass non-conforming type to bkm - bkm is never invoked - - - - - - - - - BKM logic returns non-conforming value to bkm variable typeRef - bk result is null coerced - - - - - - - - - - bkm type is list and bkm logic returns non-conforming (non-list) value - coercion to null - - - - - - - - - bkm type is list and bkm logic returns null - null cannot be coerced to result remains null - - - - - - - - - bkm type is non-list and bkm logic returns singleton list of conforming value - coercion list to val - - - 10 - - - - - - bkm type is non-list and bkm logic returns singleton list of non-conforming value - coercion to null - - - - - - - - - decision has invocation call to bkm passing - non-conforming context - bkm is never invoked - - - - - - - - - decision has invocation of bkm passing valid param, but bkm return value - does not match explicit type on invocation defn - null coercion of result - of invocation - - - - - - - - - - invocation type is a list and invoked bkm returns single non-conforming value - coercion to null - - - - - - - - - Ref https://github.com/dmn-tck/tck/pull/238#issuecomment-497744315 - - - - - - - - - - - invocation type is a non-list and invoked bkm returns singleton array of non-conforming value - coercion to null - - - - - - - - - invocation has binding name that is not a valid formal param name - - function is never invoked - - - - - - - - - function definition has typed param and is passed a conforming type - no coercion - - - 10 - - - - - - function definition has typed param and is passed non-conforming type - coercion to null - - - - - - - - - literal expression has typeRef and result is conforming value - no coercion - - - 10 - - - - - - literal expression has typeRef and result is non-conforming value - coercion to null - - - - - - - - - - literal expression has list typeRef and result is non-conforming value - coercion to null - - - - - - - - - literal expression has non-list typeRef and result is conforming singleton list - coercion to value - - - 10 - - - - - - literal expression has non-list typeRef and result is non-conforming singleton list - coercion to null - - - - - - - - - Direct invocation: Decision service returns context that does not confirm to type - - - - - - - - - Direct invocation: Decision service has string input but we pass incorrect type - input is coerced to null - - 10 - - - - - - - - - - Indirect invocation: Decision Service has string input but we pass incorrect type - input is coerced to null - - - - - - - - - Direct invocation: Decision service has string input but we pass in singleton list of correct type - input is coerced to string - - - - foo - - - - - - foo - - - - - - Indirect invocation: Decision service has string input but we pass in singleton list of correct type - input is coerced to string - - - foo - - - - - - - - Value of context() equivalentTo the decision typeRef - - - - 1 - - - 2 - - - - - - - Value of context() conformsTo the decision typeRef - - - - 1 - - - 2 - - - - - - - Value of context() does not conformsTo the decision typeRef - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/0085-decision-services/translator/standard/0085-decision-services-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/0085-decision-services/translator/standard/0085-decision-services-test-01.xml deleted file mode 100644 index dd033cecd..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/0085-decision-services/translator/standard/0085-decision-services-test-01.xml +++ /dev/null @@ -1,233 +0,0 @@ - - - - - 0085-decision-services.dmn - - - - - - - Direct invocation: with no params - - - foo - - - - - - Direct invocation: with an input decision - - - baz - - - - foo baz - - - - - - - - Direct invocation: with an input decision but supplying no param - - - - - - - - - - Direct invocation: with an input decision - but supplying a null value - - - - - - - - - - - - - Direct invocation: with an input decision - but supplying an incorrect param type - - - 1234 - - - - - - - - - - Direct invocation: with two input decisions and an input data - - - B - - - C - - - D - - - - A B C D - - - - - - - with no params - - - - foo - - - - - - - passing a param when DS has no params - - - - - - - - - - passing a single input decision param - - - - foo bar - - - - - - - passing a single input decision param with incorrect type - decision service is never invoked - - - - - - - - - - passing no param when DS expects one - - - - - - - - - - passing named param - - - - foo bar - - - - - - - passing badly named param - - - - - - - - - - input param order: two input decisions and two inputData - - - - A B C D - - - - - - - input named param order: two input decisions and two inputData - - - - A B C D - - - - - - - decision service input decision and data do not affect global decision and data - - - C - - - - - A B - - - C - - - D - - - - - - - - - decision service input decision and data do not affect global decision and data - - - C - - - - - C - - - D - - - A B - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/0086-import/translator/standard/0086-import-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/0086-import/translator/standard/0086-import-test-01.xml deleted file mode 100644 index 6ac22a4c8..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/0086-import/translator/standard/0086-import-test-01.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - 0086-import.dmn - - - - - - - Test import ItemDefinition and BKM for invocation - - - John Doe - - - 21 - - - - - Hello John Doe! - - - - - - Test import ItemDefinition and BKM for invocation - - - John Doe - - - 47 - - - - - Respectfully, Hello John Doe! - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/0092-feel-lambda/translator/standard/0092-feel-lambda-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/0092-feel-lambda/translator/standard/0092-feel-lambda-test-01.xml deleted file mode 100644 index dd94fac79..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/0092-feel-lambda/translator/standard/0092-feel-lambda-test-01.xml +++ /dev/null @@ -1,204 +0,0 @@ - - - - 0092-feel-lambda.dmn - - - - - - - A decision may return a user-defined-function (UDF) lambda - - - 3 - - - - - - A decision may return a Function Definition lambda - - - 4 - - - - - - A BKM may return a UDF lambda - - - 5 - - - - - - A BKM may return a Function Definition lambda - - - 6 - - - - - - A BKM may return a UDF lambda with a closed over formal param - - - 20 - - - - - - A BKM may return a Function Definition lambda with a closed over formal param - - - 30 - - - - - - A decision may return a UDF lambda with a closed over info requirement value - - - 20 - - - - - 100 - - - - - - A lambda's named params take precedence over scope values where the lambda is created - - - 6 - - - - - - A lambda's named params take precedence over scope values where the lambda is invoked - - - 200 - - - - - - lambdas (UDF) and closures may go more than one level deep - (currying) - - - 120 - - - - - - lambdas (func defn) and closures may go more than one level deep - (currying) - - - 120 - - - - - - lambdas (with closures) may be passed as params - - - 10 - - - - - 5000 - - - - - - BKM may be passed as lambda - - - 5000 - - - - - - Decision Service may be passed as lambda - - - 5000 - - - - - - Built-in function may be passed as lambda - - - 25 - - - - - - Invoking passed lambda with incorrect params still gives error - - - - - - - - - Local decision scope values may be closed over and used in built-in func - - a - - - - - a - a - z - z - - - - - - - BKM may be passed to sort func - - - - a - a - z - z - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/0100-arithmetic/translator/standard/0100-arithmetic-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/0100-arithmetic/translator/standard/0100-arithmetic-test-01.xml deleted file mode 100644 index a81e444fb..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/0100-arithmetic/translator/standard/0100-arithmetic-test-01.xml +++ /dev/null @@ -1,9792 +0,0 @@ - - - - 0100-arithmetic.dmn - - - multiply_lhs_number_by_rhs_number_001 - - - 100 - - - - - - multiply_lhs_number_by_rhs_number_002 - - - -100 - - - - - - multiply_lhs_number_by_rhs_number_003 - - - 100 - - - - - - multiply_lhs_number_by_rhs_number_004 - - - 0 - - - - - - multiply_lhs_number_by_rhs_dtDuration_001 - - - P10D - - - - - - multiply_lhs_number_by_rhs_dtDuration_002 - - - -P10D - - - - - - multiply_lhs_number_by_rhs_dtDuration_003 - - - P10D - - - - - - multiply_lhs_number_by_rhs_dtDuration_004 - - - P1D - - - - - - multiply_lhs_number_by_rhs_dtDuration_005 - - - P1DT2H - - - - - - multiply_lhs_number_by_rhs_dtDuration_006 - - - P0D - - - - - - multiply_lhs_number_by_rhs_dtDuration_007 - - - P6DT1H30M - - - - - - multiply_lhs_number_by_rhs_dtDuration_008 - - - P2DT9H30M - - - - - - multiply_lhs_dtDuration_by_rhs_number_001 - - - P10D - - - - - - multiply_lhs_dtDuration_by_rhs_number_002 - - - -P10D - - - - - - multiply_lhs_dtDuration_by_rhs_number_003 - - - P10D - - - - - - multiply_lhs_dtDuration_by_rhs_number_004 - - - P1D - - - - - - multiply_lhs_dtDuration_by_rhs_number_005 - - - P1DT2H - - - - - - multiply_lhs_dtDuration_by_rhs_number_006 - - - P0D - - - - - - multiply_lhs_dtDuration_by_rhs_number_007 - - - P6DT1H30M - - - - - - multiply_lhs_dtDuration_by_rhs_number_008 - - - P2DT9H30M - - - - - - multiply_lhs_number_by_rhs_ymDuration_001 - - - P10Y - - - - - - multiply_lhs_number_by_rhs_ymDuration_002 - - - -P10Y - - - - - - multiply_lhs_number_by_rhs_ymDuration_003 - - - P10Y - - - - - - multiply_lhs_number_by_rhs_ymDuration_004 - - - P1Y - - - - - - multiply_lhs_number_by_rhs_ymDuration_005 - - - P2Y - - - - - - multiply_lhs_number_by_rhs_ymDuration_006 - - - P2Y2M - - - - - - multiply_lhs_number_by_rhs_ymDuration_007 - - - P0Y - - - - - - multiply_lhs_number_by_rhs_ymDuration_008 - - - P3M - - - - - - multiply_lhs_number_by_rhs_ymDuration_009 - - - -P3M - - - - - - multiply_lhs_number_by_rhs_ymDuration_010 - - - -P4Y9M - - - - - - multiply_lhs_ymDuration_by_rhs_number_001 - - - P10Y - - - - - - multiply_lhs_ymDuration_by_rhs_number_002 - - - -P10Y - - - - - - multiply_lhs_ymDuration_by_rhs_number_003 - - - P10Y - - - - - - multiply_lhs_ymDuration_by_rhs_number_004 - - - P1Y - - - - - - multiply_lhs_ymDuration_by_rhs_number_005 - - - P2Y - - - - - - multiply_lhs_ymDuration_by_rhs_number_006 - - - P2Y2M - - - - - - multiply_lhs_ymDuration_by_rhs_number_007 - - - P0Y - - - - - - multiply_lhs_ymDuration_by_rhs_number_008 - - - P3M - - - - - - multiply_lhs_ymDuration_by_rhs_number_009 - - - -P3M - - - - - - multiply_lhs_ymDuration_by_rhs_number_010 - - - -P4Y9M - - - - - - divide_lhs_number_by_rhs_number_001 - - - 10 - - - - - - divide_lhs_number_by_rhs_number_002 - - - - - - - - - divide_lhs_ymDuration_by_rhs_number_001 - - - P1Y - - - - - - divide_lhs_ymDuration_by_rhs_number_002 - - - - - - - - - divide_lhs_ymDuration_by_rhs_number_003 - - - P4Y4M - - - - - - divide_lhs_ymDuration_by_rhs_number_004 - - - -P4Y4M - - - - - - divide_lhs_ymDuration_by_rhs_ymDuration_001 - - - 2 - - - - - - divide_lhs_ymDuration_by_rhs_ymDuration_002 - - - - - - - - - divide_lhs_dtDuration_by_rhs_number_001 - - - P1D - - - - - - divide_lhs_dtDuration_by_rhs_number_002 - - - - - - - - - divide_lhs_dtDuration_by_rhs_number_003 - - - P4DT9H12M - - - - - - divide_lhs_dtDuration_by_rhs_dtDuration_001 - - - 2 - - - - - - divide_lhs_dtDuration_by_rhs_dtDuration_002 - - - - - - - - - add_lhs_number_to_rhs_number_001 - - - 15 - - - - - - add_lhs_number_to_rhs_number_002 - - - 5 - - - - - - add_lhs_number_to_rhs_number_003 - - - -5 - - - - - - add_lhs_number_to_rhs_number_004 - - - -15 - - - - - - add_lhs_number_to_rhs_number_005 - - - 3.4685 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_001 - - - 2022-01-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_002 - - - 2021-02-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_003 - - - 2020-01-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_004 - - - 2020-12-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_005 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_006 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_007 - - - 2021-02-01T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_008 - - - 2020-12-01T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_009 - - - 2021-02-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_010 - - - -2021-02-01T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_011 - - - -2020-01-01T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_012 - - - -2022-12-01T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_013 - - - -2022-01-01T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_014 - - - -2021-02-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_015 - - - -2020-01-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_016 - - - -2022-12-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_ymDuration_017 - - - -2022-01-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_001 - - - 2022-01-01T10:10:10 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_002 - - - 2021-02-01T10:10:10 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_003 - - - 2020-01-01T10:10:10 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_004 - - - 2020-12-01T10:10:10 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_005 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_006 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_007 - - - 2021-02-01T10:10:10+11:00 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_008 - - - 2020-12-01T10:10:10+11:00 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_009 - - - 2021-02-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_010 - - - -2021-02-01T10:10:10+11:00 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_011 - - - -2020-01-01T10:10:10+11:00 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_012 - - - -2022-12-01T10:10:10+11:00 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_013 - - - -2022-01-01T10:10:10+11:00 - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_014 - - - -2021-02-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_015 - - - -2020-01-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_016 - - - -2022-12-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_ymDuration_to_rhs_dateAndTime_017 - - - -2022-01-01T10:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_001 - - - 2021-01-13T11:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_002 - - - 2021-01-13T11:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_003 - - - 2021-01-02T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_004 - - - 2021-01-01T11:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_005 - - - 2020-12-31T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_006 - - - 2021-01-01T09:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_007 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_008 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_009 - - - 2021-01-02T00:00:01 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_010 - - - 2021-01-01T23:59:59 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_011 - - - 2021-01-01T11:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_012 - - - 2021-01-01T09:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_013 - - - 2021-01-13T11:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_014 - - - -2021-01-01T11:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_015 - - - -2021-01-02T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_016 - - - -2021-01-01T09:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_017 - - - -2022-12-31T10:10:10+11:00 - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_018 - - - -2021-01-01T11:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_019 - - - -2021-01-02T10:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_020 - - - -2021-01-01T09:10:10@Australia/Melbourne - - - - - - add_lhs_dateAndTime_to_rhs_dtDuration_021 - - - -2022-12-31T10:10:10@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_001 - - - 2021-01-13T11:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_002 - - - 2021-01-13T11:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_003 - - - 2021-01-02T10:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_004 - - - 2021-01-01T11:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_005 - - - 2020-12-31T10:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_006 - - - 2021-01-01T09:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_007 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_008 - - - 2021-01-01T10:10:10 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_009 - - - 2021-01-02T00:00:01 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_010 - - - 2021-01-01T23:59:59 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_011 - - - 2021-01-01T11:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_012 - - - 2021-01-01T09:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_013 - - - 2021-01-13T11:10:10@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_014 - - - -2021-01-01T11:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_015 - - - -2021-01-02T10:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_016 - - - -2021-01-01T09:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_017 - - - -2022-12-31T10:10:10+11:00 - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_018 - - - -2021-01-01T11:10:10@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_019 - - - -2021-01-02T10:10:10@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_020 - - - -2021-01-01T09:10:10@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_dateAndTime_021 - - - -2022-12-31T10:10:10@Australia/Melbourne - - - - - - add_lhs_date_to_rhs_ymDuration_001 - - - 2022-01-01 - - - - - - add_lhs_date_to_rhs_ymDuration_002 - - - 2021-02-01 - - - - - - add_lhs_ymDuration_to_rhs_date_001 - - - 2022-01-01 - - - - - - add_lhs_ymDuration_to_rhs_date_002 - - - 2021-02-01 - - - - - - add_lhs_date_to_rhs_dtDuration_001 - - - 2021-01-02 - - - - - - Date + 1.5 days (in hours) gives date + 1 day - - - 2021-01-02 - - - - - - Date + 2 days (in hours) gives date + 2 days - - - 2021-01-03 - - - - - - add_lhs_dtDuration_to_rhs_date_001 - - - 2021-01-02 - - - - - - Date + 1.5 days (in hours) gives date + 1 day - - - 2021-01-02 - - - - - - Date + 2 days (in hours) gives date + 2 days - - - 2021-01-03 - - - - - - add_lhs_time_to_rhs_dtDuration_001 - - - 11:15:00 - - - - - - Time + days duration gives time - - - 10:15:00 - - - - - - add_lhs_time_to_rhs_dtDuration_003 - - - 10:15:00+11:00 - - - - - - add_lhs_time_to_rhs_dtDuration_004 - - - 10:15:00@Australia/Melbourne - - - - - - add_lhs_time_to_rhs_dtDuration_005 - - - 10:15:00@Australia/Melbourne - - - - - - add_lhs_time_to_rhs_dtDuration_006 - - - 11:15:00@Australia/Melbourne - - - - - - add_lhs_time_to_rhs_dtDuration_007 - - - 09:15:00@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_time_001 - - - 11:15:00 - - - - - - Time + days duration gives time - - - 10:15:00 - - - - - - add_lhs_dtDuration_to_rhs_time_003 - - - 10:15:00+11:00 - - - - - - add_lhs_dtDuration_to_rhs_time_004 - - - 10:15:00@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_time_005 - - - 10:15:00@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_time_006 - - - 11:15:00@Australia/Melbourne - - - - - - add_lhs_dtDuration_to_rhs_time_007 - - - 09:15:00@Australia/Melbourne - - - - - - add_lhs_ymDuration_to_rhs_ymDuration_001 - - - P1Y2M - - - - - - add_lhs_ymDuration_to_rhs_ymDuration_002 - - - P10M - - - - - - add_lhs_ymDuration_to_rhs_ymDuration_003 - - - -P10M - - - - - - add_lhs_ymDuration_to_rhs_ymDuration_004 - - - -P1Y2M - - - - - - add_lhs_ymDuration_to_rhs_ymDuration_005 - - - P1Y - - - - - - add_lhs_ymDuration_to_rhs_ymDuration_006 - - - P1Y - - - - - - add_lhs_dtDuration_to_rhs_dtDuration_001 - - - P3D - - - - - - add_lhs_dtDuration_to_rhs_dtDuration_002 - - - P2D - - - - - - add_lhs_string_to_rhs_string_001 - - - foobar - - - - - - add_lhs_string_to_rhs_string_002 - - - 11 - - - - - - subtract_lhs_number_minus_rhs_number_001 - - - 5 - - - - - - subtract_lhs_number_minus_rhs_number_002 - - - 15 - - - - - - subtract_lhs_number_minus_rhs_number_003 - - - -15 - - - - - - subtract_lhs_number_minus_rhs_number_004 - - - -5 - - - - - - subtract_lhs_number_minus_rhs_number_005 - - - 0.8889 - - - - - - subtract_lhs_number_minus_rhs_number_006 - - - 1.3579 - - - - - - subtract_lhs_number_minus_rhs_number_007 - - - -0.8889 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dateAndTime_001 - - - P1D - - - - - - Both or neither values must have zone info - - - - - - - - - Both or neither values must have zone info - - - - - - - - - Both or neither values must have zone info - - - - - - - - - Both or neither values must have zone info - - - - - - - - - subtract_lhs_dateAndTime_minus_rhs_dateAndTime_006 - - - P1D - - - - - - subtract_lhs_dateAndTime_minus_rhs_dateAndTime_007 - - - P1DT5H - - - - - - Offset datetime is UTC and datetime has zone - - - P1D - - - - - - Offset datetime is UTC and datetime has no zone - - - - - - - - - Date is implicitly UTC 00:00:00 - - - P0D - - - - - - year differences are expressed as days and time duration - - - P9498D - - - - - - year differences are expressed as days and time duration - - - P9498DT5H - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_001 - - - 2020-01-01T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_002 - - - 2020-12-01T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_003 - - - 2022-01-01T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_004 - - - 2021-02-01T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_005 - - - 2021-01-01T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_006 - - - 2021-01-01T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_007 - - - 2020-01-01T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_008 - - - 2020-01-01T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_009 - - - -2022-12-01T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_010 - - - -2022-01-01T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_011 - - - -2021-02-01T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_012 - - - -2020-01-01T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_013 - - - -2022-12-01T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_014 - - - -2022-01-01T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_015 - - - -2021-02-01T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_ymDuration_016 - - - -2020-01-01T10:10:10@Australia/Melbourne - - - - - - Both must have zone info and date implies UTC - - - - - - - - - datetime has zone and date implies UTC - - - P1DT9H10M10S - - - - - - Offset datetime is UTC and date implies UTC - - - P1DT9H10M10S - - - - - - year differences are expressed as days and time duration - - - P9498DT9H10M10S - - - - - - year differences are expressed as days and time duration - - - P9498DT9H10M10S - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_001 - - - 2020-12-31T10:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_002 - - - 2021-01-01T09:10:10 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_003 - - - 2021-01-01T23:00:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_004 - - - 2020-12-31T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_005 - - - 2021-01-01T23:59:59 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_006 - - - 2021-01-02T00:00:01 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_007 - - - 2020-12-31T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_008 - - - 2021-01-01T23:59:59 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_009 - - - 2021-01-02T00:00:01 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_010 - - - -2021-01-01T09:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_011 - - - -2022-12-31T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_012 - - - -2021-01-01T11:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_013 - - - -2021-01-02T10:10:10+11:00 - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_014 - - - -2021-01-01T09:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_015 - - - -2022-12-31T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_016 - - - -2021-01-01T11:10:10@Australia/Melbourne - - - - - - subtract_lhs_dateAndTime_minus_rhs_dtDuration_017 - - - -2021-01-02T10:10:10@Australia/Melbourne - - - - - - subtract_lhs_date_minus_rhs_dateAndTime_001 - - - - - - - - - subtract_lhs_date_minus_rhs_dateAndTime_002 - - - P1DT49M50S - - - - - - subtract_lhs_date_minus_rhs_dateAndTime_003 - - - P1DT49M50S - - - - - - Date is implicitly UTC 00:00:00 - - - P0D - - - - - - subtract_lhs_date_minus_rhs_dateAndTime_005 - - - P9498DT49M50S - - - - - - subtract_lhs_date_minus_rhs_date_001 - - - P1D - - - - - - subtract_lhs_date_minus_rhs_date_002 - - - P9498D - - - - - - subtract_lhs_date_minus_rhs_date_003 - - - P9498D - - - - - - subtract_lhs_date_minus_rhs_ymDuration_001 - - - 2020-01-02 - - - - - - subtract_lhs_date_minus_rhs_ymDuration_002 - - - 2021-01-01 - - - - - - subtract_lhs_date_minus_rhs_ymDuration_003 - - - 2020-12-02 - - - - - - subtract_lhs_date_minus_rhs_ymDuration_004 - - - 2022-01-02 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_001 - - - 2021-01-01 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_002 - - - 2021-01-01 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_003 - - - 2021-01-01 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_004 - - - 2021-01-01 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_005 - - - 2021-01-02 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_006 - - - 2021-01-02 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_007 - - - 2021-01-02 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_008 - - - 2021-01-01 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_009 - - - 2020-12-31 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_010 - - - 2021-01-03 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_011 - - - 2021-01-03 - - - - - - subtract_lhs_date_minus_rhs_dtDuration_012 - - - 2020-02-29 - - - - - - subtract_lhs_time_minus_rhs_time_001 - - - PT1H - - - - - - subtract_lhs_time_minus_rhs_time_002 - - - -PT1H - - - - - - subtract_lhs_time_minus_rhs_time_003 - - - -PT1H - - - - - - subtract_lhs_time_minus_rhs_time_004 - - - PT1H - - - - - - subtract_lhs_time_minus_rhs_time_005 - - - -PT1H - - - - - - subtract_lhs_time_minus_rhs_time_006 - - - PT1H - - - - - - subtract_lhs_time_minus_rhs_dtDuration_001 - - - 09:10:10 - - - - - - subtract_lhs_time_minus_rhs_dtDuration_002 - - - 10:10:10 - - - - - - subtract_lhs_time_minus_rhs_dtDuration_003 - - - 10:10:10+11:00 - - - - - - subtract_lhs_time_minus_rhs_dtDuration_004 - - - 10:10:10@Australia/Melbourne - - - - - - subtract_lhs_time_minus_rhs_dtDuration_005 - - - 09:10:10+11:00 - - - - - - subtract_lhs_time_minus_rhs_dtDuration_006 - - - 09:10:10@Australia/Melbourne - - - - - - subtract_lhs_ymDuration_minus_rhs_ymDuration_001 - - - P10M - - - - - - subtract_lhs_ymDuration_minus_rhs_ymDuration_002 - - - -P1Y2M - - - - - - subtract_lhs_ymDuration_minus_rhs_ymDuration_003 - - - -P10M - - - - - - subtract_lhs_ymDuration_minus_rhs_ymDuration_004 - - - P1Y2M - - - - - - subtract_lhs_ymDuration_minus_rhs_ymDuration_005 - - - P1Y - - - - - - subtract_lhs_ymDuration_minus_rhs_ymDuration_006 - - - P1Y - - - - - - subtract_lhs_dtDuration_minus_rhs_dtDuration_001 - - - PT22H - - - - - - subtract_lhs_dtDuration_minus_rhs_dtDuration_002 - - - -P1DT2H - - - - - - subtract_lhs_dtDuration_minus_rhs_dtDuration_003 - - - -PT22H - - - - - - subtract_lhs_dtDuration_minus_rhs_dtDuration_004 - - - P1DT2H - - - - - - subtract_lhs_dtDuration_minus_rhs_dtDuration_005 - - - P1D - - - - - - subtract_lhs_dtDuration_minus_rhs_dtDuration_006 - - - P1D - - - - - - exponent_lhs_number_exp_rhs_number_001 - - - 25 - - - - - - exponent_lhs_number_exp_rhs_number_002 - - - 0.04 - - - - - - exponent is left associative - - - 3486784401 - - - - - - -a**b parses as (-a)**b not -(a**b) - - - 25 - - - - - - decimal exponent - - - 60.58617166606 - - - - - - decimal exponent permitted if integer - - - 25 - - - - - - base may be a decimal number - - - 30.25 - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - - invalid arithmetic combination - - - - - - - - \ No newline at end of file diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1101-feel-floor-function/translator/standard/1101-feel-floor-function-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1101-feel-floor-function/translator/standard/1101-feel-floor-function-test-01.xml deleted file mode 100644 index cc17bb11d..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1101-feel-floor-function/translator/standard/1101-feel-floor-function-test-01.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - 1101-feel-floor-function.dmn - - - - - - - - - - Will round down positive number to nearest integer when no scale - - - 1 - - - - - - Will round down negative number to nearest integer when no scale - - - -2 - - - - - - Will round down negative number to nearest integer when no scale - - - 0 - - - - - - Will round down positive decimal to given scale - - - 1.5 - - - - - - Will round down negative decimal to given scale - - - -1.6 - - - - - - Will give null when 'n' is null - - - - - - - - - Will give null when named param 'n' is null - - - - - - - - - Will give null when 'scale' is null - - - - - - - - - Will give null when named param 'scale' is null - - - - - - - - - No params gives null - - - - - - - - - Too many params gives null - - - - - - - - - Additional unknown named param gives null - - - - - - - - - Unknown named param gives null - - - - - - - - - Invalid type for 'n' gives null - - - - - - - - - Invalid type for named param 'n' gives null - - - - - - - - - Invalid type for 'scale' gives null - - - - - - - - - Invalid type for named param 'scale' gives null - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1102-feel-ceiling-function/translator/standard/1102-feel-ceiling-function-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1102-feel-ceiling-function/translator/standard/1102-feel-ceiling-function-test-01.xml deleted file mode 100644 index 0d8281fe7..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1102-feel-ceiling-function/translator/standard/1102-feel-ceiling-function-test-01.xml +++ /dev/null @@ -1,167 +0,0 @@ - - - 1102-feel-ceiling-function.dmn - - - - - - - - - Will round up positive number to nearest integer when no scale - - - 2 - - - - - - Will round up negative number to nearest integer when no scale - - - -1 - - - - - - Will round up negative number to nearest integer when no scale - - - 0 - - - - - - Will round up positive decimal to given scale - - - 1.6 - - - - - - Will round up negative decimal to given scale - - - -1.5 - - - - - - Will give null when 'n' is null - - - - - - - - - Will give null when named param 'n' is null - - - - - - - - - Will give null when 'scale' is null - - - - - - - - - Will give null when named param 'scale' is null - - - - - - - - - No params gives null - - - - - - - - - Too many params gives null - - - - - - - - - Additional unknown named param gives null - - - - - - - - - Unknown named param gives null - - - - - - - - - Invalid type for 'n' gives null - - - - - - - - - Invalid type for named param 'n' gives null - - - - - - - - - Invalid type for 'scale' gives null - - - - - - - - - Invalid type for named param 'scale' gives null - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1111-feel-matches-function/translator/standard/1111-feel-matches-function-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1111-feel-matches-function/translator/standard/1111-feel-matches-function-test-01.xml deleted file mode 100644 index b6775fff0..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1111-feel-matches-function/translator/standard/1111-feel-matches-function-test-01.xml +++ /dev/null @@ -1,427 +0,0 @@ - - - - 1111-feel-matches-function.dmn - - - - - - - - - Evaluates "matches" function with null input - - - - - - - - - Evaluates "matches" function with null pattern - - - - - - - - - Evaluates "matches" function with null flags - - - true - - - - - - Evaluates The "matches" function with the arguments set as follows: $input = xs:string(lower bound) - $pattern = xs:string(lower bound) - - - - true - - - - - - Invalid flag for third argument of matches. - - - - - - - - - Check for the correct behavior of ^ and $ in multi-line mode This test case was motivated by the - resolution of Bug Report 4543 - - - - true - - - - - - Check for the correct behavior of ^ and $ in multi-line mode This test case was motivated by the - resolution of Bug Report 4543 - - - - true - - - - - - - - "." does NOT match CR in default mode - - - false - - - - - - Simple call of matches() with "i" flag - - - true - - - - - - Call of matches() with "i" flag and a character range - - - true - - - - - - Call of matches() with "i" flag and a character range - - - true - - - - - - Call of matches() with "i" flag and Kelvin sign Kelvin sign - - - true - - - - - - Call of matches() with "i" flag and range subtraction - - - true - - - - - - Call of matches() with "i" flag and range subtraction - - - true - - - - - - Call of matches() with "i" flag and range subtraction - - - false - - - - - - Call of matches() with "i" flag and range subtraction - - - false - - - - - - Call of matches() with "i" flag and negation - - - false - - - - - - Call of matches() with "i" flag and negation - - - false - - - - - - The pattern can't be the empty sequence. - - - - - - - - - matches() takes at least two arguments, not one. - - - - - - - - - The third argument cannot be the empty sequence. - - - - - - - - - Only three arguments are accepted. - - - - - - - - - The flags argument cannot contain whitespace. - - - - - - - - - The flags argument cannot contain 'X'. - - - - - - - - - Whitespace in the regexp is collapsed. - - - true - - - - - - Whitespace(before) in the regexp is collapsed, but not inside a character class. - - - true - - - - - - Whitespace(after) in the regexp is collapsed, but not inside a character class. - - - true - - - - - - Whitespace(in the middle) in the regexp is collapsed, but not inside a character class. - - - - true - - - - - - whitespace in the regexp is collapsed, and should therefore compile. - - - true - - - - - - whitespace in the regexp is collapsed completely, and should therefore compile and match. - - - - true - - - - - - whitespace in the regexp is not collapsed, and should therefore not compile. - - - - - - - - - Since no string is captured by the back-reference, the single character is matched. - - - - - - - - - Since no string is captured by the back-reference, the single character is matched(#2). - - - - - - - - - - A non-matching backwards-reference matches the empty string. - - - - - - - - - Use a back reference inside a character class. - - - - - - - - - Use a back reference inside a character class(#2). - - - - - - - - - Use a back reference inside a character class(#3). - - - - - - - - - Use a back reference inside a character class(#3). - - - - - - - - - A negative character class never match a non-character. - - - - - false - - - true - - - - - - - - - - Caseless match with back-reference. - - - true - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1131-feel-function-invocation/translator/standard/1131-feel-function-invocation-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1131-feel-function-invocation/translator/standard/1131-feel-function-invocation-test-01.xml deleted file mode 100644 index fa71b9828..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1131-feel-function-invocation/translator/standard/1131-feel-function-invocation-test-01.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - 1131-feel-function-invocation.dmn - - - - - - Non existing function evaluates to null (10.3.2.13.2) - - - - - - - - null evaluates to null - - - - - - - - string evaluates to null - - - - - - - - string (same name function in scope) evaluates to null - - - - - - - - date evaluates to null - - - - - - - - number evaluates to null - - - - - - - - true evaluates to null - - - - - - - - false evaluates to null - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1140-feel-string-join-function/translator/standard/1140-feel-string-join-function-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1140-feel-string-join-function/translator/standard/1140-feel-string-join-function-test-01.xml deleted file mode 100644 index a3e4db320..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1140-feel-string-join-function/translator/standard/1140-feel-string-join-function-test-01.xml +++ /dev/null @@ -1,212 +0,0 @@ - - - - 1140-feel-string-join-function.dmn - - - - - - - - Will join - - - abc - - - - - - Will join (with delimiter) - - - a and b and c - - - - - - Will join with empty delimiter - - - abc - - - - - - Will join with null delimiter - - - abc - - - - - - Will join single element list - - - a - - - - - - Will join single element list (with delimiter) - - - a - - - - - - Will ignore null elements in list - - - ac - - - - - - Will ignore null elements in list (with delimiter) - - - aXc - - - - - - Will join empty list as "" - - - - - - - - - Will join empty list as "" (with delimiter) - - - - - - - - - No params gives null - - - - - - - - - Too many params gives null - - - - - - - - - Join with named param - - - ac - - - - - - Join with named params (with delimiter) - - - aXc - - - - - - Incorrect named delimiter param gives null - - - - - - - - - Incorrect named list param gives null - - - - - - - - - null list gives null - - - - - - - - - null list gives null (with delimiter) - - - - - - - - - Incorrect list type gives null - - - - - - - - - Non-list non-string list param gives null - - - - - - - - - Non-list string list param is coerced to list - - - a - - - - - - Non-list string named list param is coerced to list - - - a - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1141-feel-round-up-function/translator/standard/1141-feel-round-up-function-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1141-feel-round-up-function/translator/standard/1141-feel-round-up-function-test-01.xml deleted file mode 100644 index 7d012cbbb..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1141-feel-round-up-function/translator/standard/1141-feel-round-up-function-test-01.xml +++ /dev/null @@ -1,198 +0,0 @@ - - - - 1141-feel-round-up-function.dmn - - - - - - - - Will round to integer - - - 6 - - - - - - Will round to negative to integer - - - -6 - - - - - - Will round positive to scale - - - 1.13 - - - - - - Will round negative to scale - - - -1.13 - - - - - - No params gives null - - - - - - - - - Missing scale param gives null - - - - - - - - - null number gives null - - - - - - - - - null scale gives null - - - - - - - - - Too many params gives null - - - - - - - - - named params - - - 6 - - - - - - Missing 'n' named param gives null - - - - - - - - - Missing 'scale' named param gives null - - - - - - - - - Incorrect named param gives null - - - - - - - - - Incorrect 'n' type gives null - - - - - - - - - Incorrect 'scale' type gives null - - - - - - - - - - - - - - less than min scale gives null - - - - - - - - - Max scale is 6176 - - - 5.5 - - - - - - Greater than max scale gives null - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1142-feel-round-down-function/translator/standard/1142-feel-round-down-function-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1142-feel-round-down-function/translator/standard/1142-feel-round-down-function-test-01.xml deleted file mode 100644 index 4da2c2a75..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1142-feel-round-down-function/translator/standard/1142-feel-round-down-function-test-01.xml +++ /dev/null @@ -1,200 +0,0 @@ - - - - 1142-feel-round-down-function.dmn - - - - - - - - Will round to integer - - - 5 - - - - - - Will round to negative to integer - - - -5 - - - - - - Will round positive to scale - - - 1.12 - - - - - - Will round negative to scale - - - -1.12 - - - - - - No params gives null - - - - - - - - - Missing scale param gives null - - - - - - - - - null number gives null - - - - - - - - - null scale gives null - - - - - - - - - Too many params gives null - - - - - - - - - named params - - - 5 - - - - - - Missing 'n' named param gives null - - - - - - - - - Missing 'scale' named param gives null - - - - - - - - - Incorrect named param gives null - - - - - - - - - Incorrect 'n' type gives null - - - - - - - - - Incorrect 'scale' type gives null - - - - - - - - - - - - - - less than min scale gives null - - - - - - - - - Max scale is 6176 - - - 5.5 - - - - - - Greater than max scale gives null - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1143-feel-round-half-up-function/translator/standard/1143-feel-round-half-up-function-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1143-feel-round-half-up-function/translator/standard/1143-feel-round-half-up-function-test-01.xml deleted file mode 100644 index dda50d061..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1143-feel-round-half-up-function/translator/standard/1143-feel-round-half-up-function-test-01.xml +++ /dev/null @@ -1,201 +0,0 @@ - - - - 1143-feel-round-half-up-function.dmn - - - - - - - - Will round to integer - - - 6 - - - - - - Will round to negative to integer - - - -6 - - - - - - Will round positive to scale - - - 1.12 - - - - - - Will round negative to scale - - - -1.13 - - - - - - No params gives null - - - - - - - - - Missing scale param gives null - - - - - - - - - null number gives null - - - - - - - - - null scale gives null - - - - - - - - - Too many params gives null - - - - - - - - - named params - - - 6 - - - - - - Missing 'n' named param gives null - - - - - - - - - Missing 'scale' named param gives null - - - - - - - - - Incorrect named param gives null - - - - - - - - - Incorrect 'n' type gives null - - - - - - - - - Incorrect 'scale' type gives null - - - - - - - - - - - - - - - less than min scale gives null - - - - - - - - - Max scale is 6176 - - - 5.5 - - - - - - Greater than max scale gives null - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1144-feel-round-half-down-function/translator/standard/1144-feel-round-half-down-function-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1144-feel-round-half-down-function/translator/standard/1144-feel-round-half-down-function-test-01.xml deleted file mode 100644 index d90309b55..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1144-feel-round-half-down-function/translator/standard/1144-feel-round-half-down-function-test-01.xml +++ /dev/null @@ -1,201 +0,0 @@ - - - - 1144-feel-round-half-down-function.dmn - - - - - - - - Will round to integer - - - 5 - - - - - - Will round to negative to integer - - - -5 - - - - - - Will round positive to scale - - - 1.12 - - - - - - Will round negative to scale - - - -1.13 - - - - - - No params gives null - - - - - - - - - Missing scale param gives null - - - - - - - - - null number gives null - - - - - - - - - null scale gives null - - - - - - - - - Too many params gives null - - - - - - - - - named params - - - 5 - - - - - - Missing 'n' named param gives null - - - - - - - - - Missing 'scale' named param gives null - - - - - - - - - Incorrect named param gives null - - - - - - - - - Incorrect 'n' type gives null - - - - - - - - - Incorrect 'scale' type gives null - - - - - - - - - - - - - - - less than min scale gives null - - - - - - - - - Max scale is 6176 - - - 5.5 - - - - - - Greater than max scale gives null - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1145-feel-context-function/translator/standard/1145-feel-context-function-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1145-feel-context-function/translator/standard/1145-feel-context-function-test-01.xml deleted file mode 100644 index f08705e67..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1145-feel-context-function/translator/standard/1145-feel-context-function-test-01.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - 1145-feel-context-function.dmn - - - - - - - - Will create context from entries - - - - 1 - - - 2 - - - - - - - Will create context from single entry - - - - 1 - - - - - - - - Will return null when duplicate entry keys - - - - - - - - - Will create empty context for empty entries array - - - true - - - - - - Will coerce single entry to list - - - - 1 - - - - - - - Will return null when entry is missing key - - - - - - - - - Will return null when entry key value is null - - - - - - - - - Will return null when entry is missing value - - - - - - - - - Will permit null value - - - - - - - - - - - Will permit empty string as key - - - - 1 - - - - - - - Null entries list gives null - - - - - - - - - - - - - named params - - - - 1 - - - - - - - will coerce non-list named param to list - - - - 1 - - - - - - - - - - - Will ignore extra fields beyond 'key' and 'value' - - - - 1 - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1146-feel-context-put-function/translator/standard/1146-feel-context-put-function-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1146-feel-context-put-function/translator/standard/1146-feel-context-put-function-test-01.xml deleted file mode 100644 index 36fec03a7..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1146-feel-context-put-function/translator/standard/1146-feel-context-put-function-test-01.xml +++ /dev/null @@ -1,412 +0,0 @@ - - - - 1146-feel-context-put-function.dmn - - - - - - - - Will add context entry - - - - 1 - - - - - - - Will add entry to end of context - - - - - - a - - - 1 - - - - - b - - - 2 - - - - - - - - - Will overwrite existing context entry - - - - 2 - - - - - - - Will maintain key order when overwriting existing context entry - - - - 1 - - - 3 - - - 3 - - - - - - - Will permit empty key param - - - - 1 - - - - - - - Null key param gives null - - - - - - - - - Null context param gives null - - - - - - - - - Will permit null value param - - - - - - - - - - - Too few params gives null - - - - - - - - - Too many params gives null - - - - - - - - - named params - - - - 1 - - - - - - - Incorrect named param gives null - - - - - - - - - Incorrect 'context' type gives null - - - - - - - - - Will return null when key is not a string - - - - - - - - - Will operate on boxed context - - - - 2 - - - - - - - Will create new copy of boxed context, not mutate it - - - - - - 1 - - - - - - 2 - - - - - - - - Will create new copy of literal context, not mutate it - - - - - - 1 - - - - - - 2 - - - - - - - - will overwrite value in nested context - - - - 1 - - - - 2 - - - - - - - - will add value to nested context - - - - 1 - - - - 0 - - - 2 - - - - - - - - null key gives null (1) - - - - - - - - - null key gives null (2) - - - - - - - - - null key gives null (3) - - - - - - - - - empty keys array gives null - - - - - - - - - will recurse into nested contexts - - - - 1 - - - - - - 2 - - - - - - - - - - named params - with 'keys' - - - - 1 - - - - 2 - - - - - - - - named params - array value for 'key' gives null - - - - - - - - - named params - array value for 'key' gives null - - - - - - - - - Will operate on boxed context - - - - - 2 - - - - - - - - Will create new copy of nested boxed context, not mutate it - - - - - - - 1 - - - - - - - - 2 - - - - - - - - - Will create new copy of nested literal context, not mutate it - - - - - - - 1 - - - - - - - - 2 - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1147-feel-context-merge-function/translator/standard/1147-feel-context-merge-function-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1147-feel-context-merge-function/translator/standard/1147-feel-context-merge-function-test-01.xml deleted file mode 100644 index 888b936ba..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1147-feel-context-merge-function/translator/standard/1147-feel-context-merge-function-test-01.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - 1147-feel-context-merge-function.dmn - - - - - - - - Will merge a context - - - - 1 - - - - - - - Will merge empty context - - - true - - - - - - Will merge multiple contexts - - - - 1 - - - 2 - - - - - - - Will overwrite existing context entry - - - - 2 - - - - - - - Will overwrite (not merge) nested contexts - - - - - 2 - - - - - - - - Null contexts param gives null - - - - - - - - - Too few params gives null - - - - - - - - - Too many params gives null - - - - - - - - - named params - - - - 1 - - - - - - - Incorrect named param gives null - - - - - - - - - Incorrect 'contexts' type gives null - - - - - - - - - Non-context entry in 'contexts' gives null - - - - - - - - - Will coerce single context to list - - - - 1 - - - - - - - Will coerce single name param entry to list - - - - 1 - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1148-feel-now-function/translator/standard/1148-feel-now-function-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1148-feel-now-function/translator/standard/1148-feel-now-function-test-01.xml deleted file mode 100644 index 681efa037..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1148-feel-now-function/translator/standard/1148-feel-now-function-test-01.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - 1148-feel-now-function.dmn - - - - - - - - Will give date and time - - - true - - - - - - Too many params gives null - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1149-feel-today-function/translator/standard/1149-feel-today-function-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1149-feel-today-function/translator/standard/1149-feel-today-function-test-01.xml deleted file mode 100644 index 398ae31bb..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1149-feel-today-function/translator/standard/1149-feel-today-function-test-01.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - 1149-feel-today-function.dmn - - - - - - - - Will give date - - - true - - - - - - Too many params gives null - - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1150-boxed-conditional/translator/standard/1150-boxed-conditional-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1150-boxed-conditional/translator/standard/1150-boxed-conditional-test-01.xml deleted file mode 100644 index 3b4ddaef2..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1150-boxed-conditional/translator/standard/1150-boxed-conditional-test-01.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - 1150-boxed-conditional.dmn - - - Will return 'then' expression result when if expr is true - - - then - - - - - - Will return 'else' expression result when if expr is false - - - else - - - - - - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1151-boxed-filter/translator/standard/1151-boxed-filter-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1151-boxed-filter/translator/standard/1151-boxed-filter-test-01.xml deleted file mode 100644 index d13697817..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1151-boxed-filter/translator/standard/1151-boxed-filter-test-01.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - 1151-boxed-filter.dmn - - - Will filter 'in' values based on 'match' expression - - - - - 3 - - - 4 - - - 5 - - - - - - - - - Will return an empty list when no values match - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1152-boxed-for/translator/standard/1152-boxed-for-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1152-boxed-for/translator/standard/1152-boxed-for-test-01.xml deleted file mode 100644 index a347e8759..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1152-boxed-for/translator/standard/1152-boxed-for-test-01.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - 1152-boxed-for.dmn - - - Will map 'in' values based on 'return' expression - - - - - 2 - - - 4 - - - 6 - - - 8 - - - 10 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1153-boxed-some/translator/standard/1153-boxed-some-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1153-boxed-some/translator/standard/1153-boxed-some-test-01.xml deleted file mode 100644 index 66f9394d3..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1153-boxed-some/translator/standard/1153-boxed-some-test-01.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - 1153-boxed-some.dmn - - - Will report true when 'in' elements satisfy expression - - - true - - - - - - Will report false when no 'in' elements satisfy expression - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dmn-test-cases/standard/tck/1.4/cl3/1154-boxed-every/translator/standard/1154-boxed-every-test-01.xml b/dmn-test-cases/standard/tck/1.4/cl3/1154-boxed-every/translator/standard/1154-boxed-every-test-01.xml deleted file mode 100644 index 0d7de430f..000000000 --- a/dmn-test-cases/standard/tck/1.4/cl3/1154-boxed-every/translator/standard/1154-boxed-every-test-01.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - 1154-boxed-every.dmn - - - Will report true when all 'in' elements satisfy expression - - - true - - - - - - Will report false when not all 'in' elements satisfy expression - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -