You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by ef...@apache.org on 2018/06/04 19:48:03 UTC
[incubator-daffodil] branch master updated: Adding property
binaryCalendarRep with values "binarySeconds" and "binaryMilliseconds"
This is an automated email from the ASF dual-hosted git repository.
efinnegan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-daffodil.git
The following commit(s) were added to refs/heads/master by this push:
new b3c1849 Adding property binaryCalendarRep with values "binarySeconds" and "binaryMilliseconds"
b3c1849 is described below
commit b3c184995d251021edd65d559bd3726d553c1f8f
Author: Beth Fahl <ef...@tresys.com>
AuthorDate: Wed May 16 15:48:58 2018 -0400
Adding property binaryCalendarRep with values "binarySeconds" and "binaryMilliseconds"
Adds parsing and unparsing capability for binary representation of xs:dateTime
with binaryCalendarRep of "binarySeconds" and "binaryMilliseconds", using the
binaryCalendarEpoch property. Added various checks for restrictions on valid input
and both positive and negative tests.
Also removed some unnecessary parameters from parsers and unparsers of calendars
with text representation
DAFFODIL-99
---
.../daffodil/grammar/ElementBaseGrammarMixin.scala | 26 ++
.../grammar/primitives/PrimitivesDateTime.scala | 88 ++++--
.../unparsers/ConvertBinaryCalendarUnparser.scala | 84 +++++
.../unparsers/ConvertTextCalendarUnparser.scala | 16 +-
.../processors/parsers/PrimitivesDateTime1.scala | 65 ++--
.../ibm-contributed/dpacalbin100_01.dfdl.xsd | 5 +-
.../org/apache/daffodil/IBMTests2.scala | 2 -
.../test/scala/org/apache/daffodil/IBMTests.scala | 3 +
.../section05/simple_types/SimpleTypes.tdml | 337 ++++++++++++++++++++-
.../simple_types/TestSimpleTypesDebug.scala | 2 +
.../section05/simple_types/TestSimpleTypes.scala | 21 ++
11 files changed, 585 insertions(+), 64 deletions(-)
diff --git a/daffodil-core/src/main/scala/org/apache/daffodil/grammar/ElementBaseGrammarMixin.scala b/daffodil-core/src/main/scala/org/apache/daffodil/grammar/ElementBaseGrammarMixin.scala
index 899fba0..76c4be2 100644
--- a/daffodil-core/src/main/scala/org/apache/daffodil/grammar/ElementBaseGrammarMixin.scala
+++ b/daffodil-core/src/main/scala/org/apache/daffodil/grammar/ElementBaseGrammarMixin.scala
@@ -48,6 +48,7 @@ import org.apache.daffodil.grammar.primitives.CaptureContentLengthStart
import org.apache.daffodil.grammar.primitives.CaptureValueLengthEnd
import org.apache.daffodil.grammar.primitives.CaptureValueLengthStart
import org.apache.daffodil.grammar.primitives.ComplexNilOrContent
+import org.apache.daffodil.grammar.primitives.ConvertBinaryDateTimeSecMilliPrim
import org.apache.daffodil.grammar.primitives.ConvertTextBooleanPrim
import org.apache.daffodil.grammar.primitives.ConvertTextBytePrim
import org.apache.daffodil.grammar.primitives.ConvertTextCombinator
@@ -115,6 +116,7 @@ import org.apache.daffodil.grammar.primitives.ZonedTextIntPrim
import org.apache.daffodil.processors.TextJustificationType
import org.apache.daffodil.schema.annotation.props.Found
import org.apache.daffodil.schema.annotation.props.NotFound
+import org.apache.daffodil.schema.annotation.props.gen.BinaryCalendarRep
import org.apache.daffodil.schema.annotation.props.gen.BinaryFloatRep
import org.apache.daffodil.schema.annotation.props.gen.BinaryNumberRep
import org.apache.daffodil.schema.annotation.props.gen.LengthKind
@@ -462,6 +464,11 @@ trait ElementBaseGrammarMixin
case PrimType.Short | PrimType.UnsignedShort => 16
case PrimType.Float | PrimType.Int | PrimType.UnsignedInt | PrimType.Boolean => 32
case PrimType.Double | PrimType.Long | PrimType.UnsignedLong => 64
+ case PrimType.DateTime => binaryCalendarRep match {
+ case BinaryCalendarRep.BinarySeconds => 32
+ case BinaryCalendarRep.BinaryMilliseconds => 64
+ case _ => schemaDefinitionError("Size of binary data '" + primType.name + "' with binaryCalendarRep='" + binaryCalendarRep + "' cannot be determined implicitly.")
+ }
case _ => schemaDefinitionError("Size of binary data '" + primType.name + "' cannot be determined implicitly.")
}
@@ -775,6 +782,25 @@ trait ElementBaseGrammarMixin
}
case PrimType.Boolean => { new BinaryBoolean(this) }
+
+ case PrimType.DateTime | PrimType.Date | PrimType.Time => {
+ (primType, binaryCalendarRep) match {
+ case (PrimType.DateTime, BinaryCalendarRep.BinarySeconds) => (lengthUnits, binaryNumberKnownLengthInBits) match {
+ case (LengthUnits.Bytes, 32) => new ConvertBinaryDateTimeSecMilliPrim(this, binaryNumberKnownLengthInBits)
+ case (_, 32) => SDE("lengthUnits must be 'bytes' when binaryCalendarRep='binarySeconds'")
+ case (_, n) => SDE("binary xs:dateTime must be 32 bits when binaryCalendarRep='binarySeconds'. Length in bits was %s.", n)
+ }
+ case (_, BinaryCalendarRep.BinarySeconds) => SDE("binaryCalendarRep='binarySeconds' is not allowed with type %s", primType.name)
+ case (PrimType.DateTime, BinaryCalendarRep.BinaryMilliseconds) => (lengthUnits, binaryNumberKnownLengthInBits) match {
+ case (LengthUnits.Bytes, 64) => new ConvertBinaryDateTimeSecMilliPrim(this, binaryNumberKnownLengthInBits)
+ case (_, 64) => SDE("lengthUnits must be 'bytes' when binaryCalendarRep='binaryMilliseconds'")
+ case (_, n) => SDE("binary xs:dateTime must be 64 bits when binaryCalendarRep='binaryMilliseconds'. Length in bits was %s.", n)
+ }
+ case (_, BinaryCalendarRep.BinaryMilliseconds) => SDE("binaryCalendarRep='binaryMilliseconds' is not allowed with type %s", primType.name)
+ case _ => notYetImplemented("Type %s when representation='binary' and binaryCalendarRep=%s", primType.name, binaryCalendarRep.toString)
+ }
+ }
+
case _ => notYetImplemented("Type %s when representation='binary'", primType.name)
}
res
diff --git a/daffodil-core/src/main/scala/org/apache/daffodil/grammar/primitives/PrimitivesDateTime.scala b/daffodil-core/src/main/scala/org/apache/daffodil/grammar/primitives/PrimitivesDateTime.scala
index 47e24d3..e6f275e 100644
--- a/daffodil-core/src/main/scala/org/apache/daffodil/grammar/primitives/PrimitivesDateTime.scala
+++ b/daffodil-core/src/main/scala/org/apache/daffodil/grammar/primitives/PrimitivesDateTime.scala
@@ -17,29 +17,38 @@
package org.apache.daffodil.grammar.primitives
+import java.text.ParsePosition
+import com.ibm.icu.text.SimpleDateFormat
import com.ibm.icu.util.Calendar
import com.ibm.icu.util.TimeZone
+import com.ibm.icu.util.ULocale
import org.apache.daffodil.dsom.ElementBase
import org.apache.daffodil.grammar.Terminal
import org.apache.daffodil.schema.annotation.props.gen.CalendarCheckPolicy
import org.apache.daffodil.schema.annotation.props.gen.CalendarFirstDayOfWeek
import org.apache.daffodil.schema.annotation.props.gen.CalendarPatternKind
+import org.apache.daffodil.processors.unparsers.ConvertBinaryCalendarSecMilliUnparser
import org.apache.daffodil.processors.unparsers.ConvertTextCalendarUnparser
import com.ibm.icu.util.Calendar
import com.ibm.icu.util.TimeZone
import org.apache.daffodil.processors.CalendarEv
import org.apache.daffodil.processors.CalendarLanguageEv
+import org.apache.daffodil.processors.parsers.ConvertBinaryCalendarSecMilliParser
import org.apache.daffodil.processors.parsers.ConvertTextCalendarParser
import org.apache.daffodil.processors.parsers.TextCalendarConstants
import scala.Boolean
-abstract class ConvertTextCalendarPrimBase(e: ElementBase, guard: Boolean)
+abstract class ConvertCalendarPrimBase(e: ElementBase, guard: Boolean)
extends Terminal(e, guard) {
protected val xsdType = "dateTime"
protected val prettyType = "DateTime"
override def toString = "to(xs:" + xsdType + ")"
+}
+
+abstract class ConvertTextCalendarPrimBase(e: ElementBase, guard: Boolean)
+ extends ConvertCalendarPrimBase(e, guard) {
protected def infosetPattern: String
protected def implicitPattern: String
@@ -144,28 +153,13 @@ abstract class ConvertTextCalendarPrimBase(e: ElementBase, guard: Boolean)
pattern,
hasTZ,
localeEv,
- calendarEv,
- infosetPattern,
- firstDay,
- calendarDaysInFirstWeek,
- calendarCheckPolicy,
- calendarTz,
- TimeZone.GMT_ZONE)
+ calendarEv)
override lazy val unparser = new ConvertTextCalendarUnparser(
e.elementRuntimeData,
- xsdType,
- prettyType,
pattern,
- hasTZ,
localeEv,
- calendarEv,
- infosetPattern,
- firstDay,
- calendarDaysInFirstWeek,
- calendarCheckPolicy,
- calendarTz,
- TimeZone.GMT_ZONE)
+ calendarEv)
}
case class ConvertTextDatePrim(e: ElementBase) extends ConvertTextCalendarPrimBase(e, true) {
@@ -191,3 +185,61 @@ case class ConvertTextDateTimePrim(e: ElementBase) extends ConvertTextCalendarPr
protected override val implicitPattern = "uuuu-MM-dd'T'HH:mm:ss"
protected override val validFormatCharacters = "adDeEFGhHkKmMsSuwWvVyXxYzZ".toSeq
}
+
+abstract class ConvertBinaryCalendarPrimBase(e: ElementBase, guard: Boolean, lengthInBits: Long)
+ extends ConvertCalendarPrimBase(e, guard) {
+
+}
+
+case class ConvertBinaryDateTimeSecMilliPrim(e: ElementBase, lengthInBits: Long) extends ConvertCalendarPrimBase(e, true) {
+ protected override val xsdType = "dateTime"
+ protected override val prettyType = "DateTime"
+
+ lazy val epochCalendar: Calendar = {
+ val cal = Calendar.getInstance
+ cal.clear()
+ cal.setLenient(false)
+
+ val sdfWithTZ = new SimpleDateFormat("uuuu-MM-dd'T'HH:mm:ssZZZZ", ULocale.ENGLISH)
+ var pos = new ParsePosition(0)
+ sdfWithTZ.parse(e.binaryCalendarEpoch, cal, pos)
+
+ if (pos.getIndex != e.binaryCalendarEpoch.length || pos.getErrorIndex >= 0) {
+ // binaryCalendarEpoch didn't match the first format with timezone, so try without
+ cal.clear()
+ pos = new ParsePosition(0)
+ val sdf = new SimpleDateFormat("uuuu-MM-dd'T'HH:mm:ss", ULocale.ENGLISH)
+ cal.setTimeZone(TimeZone.UNKNOWN_ZONE)
+ sdf.parse(e.binaryCalendarEpoch, cal, pos)
+
+ if (pos.getIndex != e.binaryCalendarEpoch.length || pos.getErrorIndex >= 0) {
+ SDE("Failed to parse binaryCalendarEpoch - Format must match the pattern 'uuuu-MM-dd'T'HH:mm:ss' or 'uuuu-MM-dd'T'HH:mm:ssZZZZ'")
+ }
+ }
+
+ try {
+ cal.getTime
+ } catch {
+ case e: IllegalArgumentException => {
+ SDE("Failed to parse binaryCalendarEpoch: %s.", e.getMessage())
+ }
+ }
+
+ cal
+ }
+
+ override lazy val parser = new ConvertBinaryCalendarSecMilliParser(
+ e.elementRuntimeData,
+ !epochCalendar.getTimeZone.equals(TimeZone.UNKNOWN_ZONE),
+ e.binaryCalendarRep,
+ epochCalendar,
+ lengthInBits.toInt)
+
+ override lazy val unparser =
+ new ConvertBinaryCalendarSecMilliUnparser(
+ e.elementRuntimeData,
+ e.binaryCalendarRep,
+ epochCalendar.getTimeInMillis,
+ lengthInBits.toInt,
+ !epochCalendar.getTimeZone.equals(TimeZone.UNKNOWN_ZONE))
+}
diff --git a/daffodil-runtime1-unparser/src/main/scala/org/apache/daffodil/processors/unparsers/ConvertBinaryCalendarUnparser.scala b/daffodil-runtime1-unparser/src/main/scala/org/apache/daffodil/processors/unparsers/ConvertBinaryCalendarUnparser.scala
new file mode 100644
index 0000000..f948c22
--- /dev/null
+++ b/daffodil-runtime1-unparser/src/main/scala/org/apache/daffodil/processors/unparsers/ConvertBinaryCalendarUnparser.scala
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.daffodil.processors.unparsers
+
+import org.apache.daffodil.calendar.DFDLCalendar
+import org.apache.daffodil.exceptions.Assert
+import org.apache.daffodil.io.DataOutputStream
+import org.apache.daffodil.io.FormatInfo
+import org.apache.daffodil.processors.ElementRuntimeData
+import org.apache.daffodil.schema.annotation.props.gen.BinaryCalendarRep
+import org.apache.daffodil.util.Maybe.One
+import org.apache.daffodil.util.Misc
+
+import com.ibm.icu.util.Calendar
+
+case class ConvertBinaryCalendarSecMilliUnparser(
+ override val context: ElementRuntimeData,
+ binCalRep: BinaryCalendarRep,
+ epochTimeMillis: Long,
+ lengthInBits: Int,
+ hasTZ: Boolean)
+ extends PrimUnparser {
+
+ /**
+ * Primitive unparsers must override runtimeDependencies
+ */
+ override lazy val runtimeDependencies = Nil
+
+ protected def putNumber(dos: DataOutputStream, value: Long, nBits: Int, finfo: FormatInfo): Boolean = {
+ dos.putLong(value, nBits, finfo)
+ }
+
+ def unparse(state: UState): Unit = {
+
+ val node = state.currentInfosetNode.asSimple
+
+ val calValue = node.dataValue match {
+ case dc: DFDLCalendar => dc.calendar
+ case x => Assert.invariantFailed("ConvertTextCalendar received unsupported type. %s of type %s.".format(x, Misc.getNameFromClass(x)))
+ }
+
+ // Adjust the time based on time zone - if a time zone wasn't specified, Calendar will assume the default
+ // time zone for the user instead of TimeZone.UNKNOWN_ZONE so we need to adjust to get the correct time
+ // Note that setting the correct time zone for the calendar will not adjust the time.
+ val epochTime = if (!hasTZ) {
+ val tz = calValue.getTimeZone
+ val gmtOffset = calValue.get(Calendar.ZONE_OFFSET)
+ val dstOffset = if (tz.inDaylightTime(calValue.getTime)) tz.getDSTSavings else 0
+ epochTimeMillis - (gmtOffset + dstOffset)
+ } else {
+ epochTimeMillis
+ }
+
+ val diff: Long = binCalRep match {
+ case BinaryCalendarRep.BinarySeconds => (calValue.getTimeInMillis - epochTime) / 1000
+ case BinaryCalendarRep.BinaryMilliseconds => (calValue.getTimeInMillis - epochTime)
+ case _ => Assert.impossibleCase
+ }
+
+ val dos = state.dataOutputStream
+ val res = putNumber(dos, diff, lengthInBits, state)
+
+ if (!res) {
+ Assert.invariant(dos.maybeRelBitLimit0b.isDefined)
+ UnparseError(One(state.schemaFileLocation), One(state.currentLocation), "Insufficient space to unparse element %s, required %s bits, but only %s were available.",
+ context.dpathElementCompileInfo.namedQName.toPrettyString, lengthInBits, dos.maybeRelBitLimit0b.get)
+ }
+ }
+}
diff --git a/daffodil-runtime1-unparser/src/main/scala/org/apache/daffodil/processors/unparsers/ConvertTextCalendarUnparser.scala b/daffodil-runtime1-unparser/src/main/scala/org/apache/daffodil/processors/unparsers/ConvertTextCalendarUnparser.scala
index c25ea05..16d25f2 100644
--- a/daffodil-runtime1-unparser/src/main/scala/org/apache/daffodil/processors/unparsers/ConvertTextCalendarUnparser.scala
+++ b/daffodil-runtime1-unparser/src/main/scala/org/apache/daffodil/processors/unparsers/ConvertTextCalendarUnparser.scala
@@ -18,7 +18,6 @@
package org.apache.daffodil.processors.unparsers
import com.ibm.icu.util.Calendar
-import com.ibm.icu.util.TimeZone
import com.ibm.icu.util.ULocale
import org.apache.daffodil.calendar.DFDLCalendar
@@ -30,21 +29,10 @@ import org.apache.daffodil.util.Misc
import org.apache.daffodil.processors.parsers.ConvertTextCalendarProcessorBase
case class ConvertTextCalendarUnparser(erd: ElementRuntimeData,
- xsdType: String,
- prettyType: String,
pattern: String,
- hasTZ: Boolean,
localeEv: CalendarLanguageEv,
- calendarEv: CalendarEv,
- infosetPattern: String,
- firstDay: Int,
- calendarDaysInFirstWeek: Int,
- calendarCheckPolicy: Boolean,
- calendarTz: Option[TimeZone],
- tz: TimeZone)
- extends ConvertTextCalendarProcessorBase(erd,
- xsdType, prettyType, pattern, hasTZ, localeEv, calendarEv, infosetPattern, firstDay, calendarDaysInFirstWeek,
- calendarCheckPolicy, calendarTz, tz)
+ calendarEv: CalendarEv)
+ extends ConvertTextCalendarProcessorBase(erd, pattern)
with TextPrimUnparser {
/**
diff --git a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/PrimitivesDateTime1.scala b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/PrimitivesDateTime1.scala
index cf7158d..b68eef7 100644
--- a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/PrimitivesDateTime1.scala
+++ b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/PrimitivesDateTime1.scala
@@ -20,7 +20,6 @@ package org.apache.daffodil.processors.parsers
import java.text.ParsePosition
import com.ibm.icu.text.SimpleDateFormat
import com.ibm.icu.util.Calendar
-import com.ibm.icu.util.TimeZone
import com.ibm.icu.util.ULocale
import org.apache.daffodil.exceptions.Assert
import org.apache.daffodil.calendar.DFDLDateTime
@@ -30,21 +29,11 @@ import org.apache.daffodil.processors.CalendarEv
import org.apache.daffodil.processors.CalendarLanguageEv
import org.apache.daffodil.processors.ElementRuntimeData
import org.apache.daffodil.processors.Processor
+import org.apache.daffodil.schema.annotation.props.gen.BinaryCalendarRep
abstract class ConvertTextCalendarProcessorBase(
override val context: ElementRuntimeData,
- xsdType: String,
- prettyType: String,
- pattern: String,
- hasTZ: Boolean,
- localeEv: CalendarLanguageEv,
- calendarEv: CalendarEv,
- infosetPattern: String,
- firstDay: Int,
- calendarDaysInFirstWeek: Int,
- calendarCheckPolicy: Boolean,
- calendarTz: Option[TimeZone],
- tz: TimeZone) extends Processor {
+ pattern: String) extends Processor {
// The dfdl:calendarLanguage property can be a runtime-valued expression.
// Hence, locale and calendar, derived from it, can also be runtime-valued.
//
@@ -99,16 +88,8 @@ case class ConvertTextCalendarParser(erd: ElementRuntimeData,
pattern: String,
hasTZ: Boolean,
localeEv: CalendarLanguageEv,
- calendarEv: CalendarEv,
- infosetPattern: String,
- firstDay: Int,
- calendarDaysInFirstWeek: Int,
- calendarCheckPolicy: Boolean,
- calendarTz: Option[TimeZone],
- tz: TimeZone)
- extends ConvertTextCalendarProcessorBase(erd,
- xsdType, prettyType, pattern, hasTZ, localeEv, calendarEv, infosetPattern, firstDay, calendarDaysInFirstWeek,
- calendarCheckPolicy, calendarTz, tz)
+ calendarEv: CalendarEv)
+ extends ConvertTextCalendarProcessorBase(erd, pattern)
with TextPrimParser {
override lazy val runtimeDependencies = List(localeEv, calendarEv)
@@ -188,3 +169,41 @@ object TextCalendarConstants {
}
}
}
+
+case class ConvertBinaryCalendarSecMilliParser(
+ override val context: ElementRuntimeData,
+ hasTZ: Boolean,
+ binCalRep: BinaryCalendarRep,
+ epochCal: Calendar,
+ lengthInBits: Int)
+ extends PrimParser {
+
+ override lazy val runtimeDependencies = Nil
+
+ def parse(start: PState): Unit = {
+
+ val dis = start.dataInputStream
+ val slong: Long = dis.getSignedLong(lengthInBits, start)
+ val cal = epochCal.clone.asInstanceOf[Calendar]
+
+ val millisToAdd: Long = binCalRep match {
+ case BinaryCalendarRep.BinarySeconds => slong * 1000
+ case BinaryCalendarRep.BinaryMilliseconds => slong
+ case _ => Assert.impossibleCase
+ }
+
+ val newTime = cal.getTimeInMillis + millisToAdd
+ try {
+ cal.setTimeInMillis(newTime)
+ } catch {
+ case e: IllegalArgumentException => {
+ PE(start, "%s milliseconds from the binaryCalendarEpoch is out of range of valid values (%s to %s): %s.",
+ millisToAdd, Calendar.MIN_MILLIS, Calendar.MAX_MILLIS, e.getMessage())
+ return
+ }
+ }
+
+ val newCal = new DFDLDateTime(cal, hasTZ)
+ start.simpleElement.overwriteDataValue(newCal)
+ }
+}
diff --git a/daffodil-test-ibm1/src/test/resources/test-suite/ibm-contributed/dpacalbin100_01.dfdl.xsd b/daffodil-test-ibm1/src/test/resources/test-suite/ibm-contributed/dpacalbin100_01.dfdl.xsd
index 7f4fb13..fe0408b 100644
--- a/daffodil-test-ibm1/src/test/resources/test-suite/ibm-contributed/dpacalbin100_01.dfdl.xsd
+++ b/daffodil-test-ibm1/src/test/resources/test-suite/ibm-contributed/dpacalbin100_01.dfdl.xsd
@@ -26,7 +26,8 @@
encodingErrorPolicy="replace" encoding="utf-8" byteOrder="bigEndian" bitOrder="mostSignificantBitFirst" lengthUnits="bytes"
textOutputMinLength="1" alignment="1" alignmentUnits="bytes"
fillByte="%NUL;" occursCountKind="implicit" ignoreCase="no"
- lengthKind="implicit" sequenceKind="ordered" initiatedContent="no" />
+ lengthKind="implicit" sequenceKind="ordered" initiatedContent="no"
+ textPadKind="none" binaryNumberRep="binary" calendarLanguage='en' />
</xs:appinfo>
</xs:annotation>
@@ -52,7 +53,7 @@
<xs:element name="testBinaryMilliseconds" type="xs:dateTime">
<xs:annotation>
<xs:appinfo source="http://www.ogf.org/dfdl/">
- <dfdl:element binaryCalendarRep="binaryMilliseconds" binaryCalendarEpoch="2009-12-24T05:15:00+05:00"/>
+ <dfdl:element binaryCalendarRep="binaryMilliseconds" binaryCalendarEpoch="2009-12-24T05:15:00+05:00" />
</xs:appinfo>
</xs:annotation>
</xs:element>
diff --git a/daffodil-test-ibm1/src/test/scala-debug/org/apache/daffodil/IBMTests2.scala b/daffodil-test-ibm1/src/test/scala-debug/org/apache/daffodil/IBMTests2.scala
index 0a3a5a0..3cdbf31 100644
--- a/daffodil-test-ibm1/src/test/scala-debug/org/apache/daffodil/IBMTests2.scala
+++ b/daffodil-test-ibm1/src/test/scala-debug/org/apache/daffodil/IBMTests2.scala
@@ -60,8 +60,6 @@ class IBMTestsThatThrow {
@Test def test_simple_type_properties_text_boolean_13_03() { runner2.runOneTest("simple_type_properties_text_boolean_13_03") } // DFDL-462 boolean type
@Test def test_simple_type_properties_bin_boolean_13_01() { runner2.runOneTest("simple_type_properties_bin_boolean_13_01") } // DFDL-461 boolean type
- @Test def test_simple_type_properties_bin_calendar_13_01() { runner2.runOneTest("simple_type_properties_bin_calendar_13_01") } // DFDL-99 dateTime
- @Test def test_simple_type_properties_bin_calendar_13_02() { runner2.runOneTest("simple_type_properties_bin_calendar_13_02") } // DFDL-99 dateTime
@Test def test_simple_type_properties_text_calendar_13_01() { runner2.runOneTest("simple_type_properties_text_calendar_13_01") } // DAFFODIL-1945
diff --git a/daffodil-test-ibm1/src/test/scala/org/apache/daffodil/IBMTests.scala b/daffodil-test-ibm1/src/test/scala/org/apache/daffodil/IBMTests.scala
index c900832..a76e644 100644
--- a/daffodil-test-ibm1/src/test/scala/org/apache/daffodil/IBMTests.scala
+++ b/daffodil-test-ibm1/src/test/scala/org/apache/daffodil/IBMTests.scala
@@ -50,6 +50,9 @@ class IBMTestsThatPass {
@Test def test_simple_type_properties_text_calendar_13_03() { runner2.runOneTest("simple_type_properties_text_calendar_13_03") }
@Test def test_simple_type_properties_text_calendar_13_04() { runner2.runOneTest("simple_type_properties_text_calendar_13_04") }
+ @Test def test_simple_type_properties_bin_calendar_13_01() { runner2.runOneTest("simple_type_properties_bin_calendar_13_01") }
+ @Test def test_simple_type_properties_bin_calendar_13_02() { runner2.runOneTest("simple_type_properties_bin_calendar_13_02") }
+
@Test def test_introduction_1_01() { runner1.runOneTest("introduction_1_01") }
@Test def test_property_syntax_7_04() { runner1.runOneTest("property_syntax_7_04") }
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/section05/simple_types/SimpleTypes.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/section05/simple_types/SimpleTypes.tdml
index 65250a3..57e5efd 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/section05/simple_types/SimpleTypes.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/section05/simple_types/SimpleTypes.tdml
@@ -240,6 +240,33 @@
dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="4" />
<xs:element name="float_03" type="xs:float"
dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="8" />
+
+ <xs:element name="dateTimeBin" type="xs:dateTime" dfdl:lengthKind="explicit" dfdl:length="{ 4 }"
+ dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="binarySeconds" dfdl:binaryCalendarEpoch="1977-01-01T00:00:07"/>
+ <xs:element name="dateTimeBin2" type="xs:dateTime" dfdl:lengthKind="explicit" dfdl:length="{ 32 }"
+ dfdl:lengthUnits="bits" dfdl:binaryCalendarRep="binarySeconds" dfdl:binaryCalendarEpoch="1970-01-01T00:00:00"/>
+ <xs:element name="dateTimeBin3" type="xs:dateTime" dfdl:lengthKind="explicit" dfdl:length="{ 5 }"
+ dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="binarySeconds" dfdl:binaryCalendarEpoch="1970-01-01T00:00:00"/>
+ <xs:element name="dateTimeBin4" type="xs:dateTime" dfdl:lengthKind="implicit" dfdl:lengthUnits="bytes"
+ dfdl:binaryCalendarRep="binarySeconds" dfdl:binaryCalendarEpoch="1870-01-01T00:05:00+00:00"/>
+ <xs:element name="dateTimeBin5" type="xs:dateTime" dfdl:lengthKind="explicit" dfdl:length="{ 8 }"
+ dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="binaryMilliseconds" dfdl:binaryCalendarEpoch="1985-11-21T10:37:04"/>
+ <xs:element name="dateTimeBin6" type="xs:dateTime" dfdl:lengthKind="explicit" dfdl:length="{ 8 }"
+ dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="binaryMilliseconds" dfdl:binaryCalendarEpoch="2000-06-15T03:25:19"/>
+ <xs:element name="dateTimeBin7" type="xs:dateTime" dfdl:lengthKind="implicit" dfdl:lengthUnits="bytes"
+ dfdl:binaryCalendarRep="binaryMilliseconds" dfdl:binaryCalendarEpoch="1870-01-01T00:05:00"/>
+ <xs:element name="dateTimeBin8" type="xs:dateTime" dfdl:lengthKind="explicit" dfdl:length="{ 4 }"
+ dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="binarySeconds" dfdl:binaryCalendarEpoch="2018-01-01T09:13:42+09:00"/>
+ <xs:element name="dateTimeBin9" type="xs:dateTime" dfdl:lengthKind="implicit" dfdl:lengthUnits="bytes"
+ dfdl:binaryCalendarRep="binaryMilliseconds" dfdl:binaryCalendarEpoch="2000-01-01T00:00:00-04:00"/>
+ <xs:element name="dateTimeBin10" type="xs:dateTime" dfdl:lengthKind="implicit" dfdl:lengthUnits="bytes"
+ dfdl:binaryCalendarRep="binarySeconds" dfdl:binaryCalendarEpoch="2000-1-1T00:00"/>
+ <xs:element name="dateTimeBin11" type="xs:dateTime" dfdl:lengthKind="implicit" dfdl:lengthUnits="bytes"
+ dfdl:binaryCalendarRep="binarySeconds" dfdl:binaryCalendarEpoch="01-01-2000T00:00:00"/>
+
+ <xs:element name="dateBin2" type="xs:date" dfdl:lengthKind="explicit" dfdl:length="{ 4 }"
+ dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="binarySeconds" dfdl:binaryCalendarEpoch="1970-01-01T00:00:00+00:00"/>
+
</tdml:defineSchema>
<tdml:parserTestCase name="TestUnsignedInt" root="Day"
@@ -1951,6 +1978,289 @@
</tdml:infoset>
</tdml:parserTestCase>
+ <!-- xs:dateTime with binaryCalendarRep='binarySeconds' -->
+ <tdml:parserTestCase name="dateTimeBin" root="dateTimeBin"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000000 00000000 00000000 00111110</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBin>1977-01-01T00:01:09.000000</dateTimeBin>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateTimeBin2" root="dateTimeBin2"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="false">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000000 00000000 00000000 00111101</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error: lengthUnits must be 'bytes' when binaryCalendarRep='binarySeconds'</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateTimeBin3" root="dateTimeBin3"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="false">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000000 00000000 00000000 00111101</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error: binary xs:dateTime must be 32 bits when binaryCalendarRep='binarySeconds'</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <!-- xs:dateTime with binaryCalendarRep='binarySeconds' with implicit length -->
+ <tdml:parserTestCase name="dateTimeBin4" root="dateTimeBin4"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">11111111 11111110 10101110 10000000</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBin4>1869-12-31T00:05:00.000000+00:00</dateTimeBin4>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <!-- xs:dateTime with binaryCalendarRep='binaryMillieconds' -->
+ <tdml:parserTestCase name="dateTimeBin5" root="dateTimeBin5"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBin5>1985-11-21T10:37:04.001000</dateTimeBin5>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <!-- xs:dateTime with binaryCalendarRep='binaryMillieconds' -->
+ <tdml:parserTestCase name="dateTimeBin6" root="dateTimeBin6"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000000 00000000 00000000 00000000 11111111 11111111 11111111 11111111</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBin6>2000-08-03T20:28:06.295000</dateTimeBin6>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateTimeBin7" root="dateTimeBin7"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">11111111 11111111 11111111 11111111 11111010 11011001 10100100 00000000</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBin7>1869-12-31T00:05:00.000000</dateTimeBin7>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <!-- xs:dateTime with binaryCalendarRep='binaryMillieconds' -->
+ <tdml:parserTestCase name="dateTimeBin8" root="dateTimeBin6"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000000 00000001 00000010 01001110 11010001 10100111 00001000 00000000</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBin6>11000-06-15T03:25:19.000000</dateTimeBin6>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <!-- xs:dateTime with binaryCalendarRep='binaryMillieconds' -->
+ <tdml:parserTestCase name="dateTimeBin9" root="dateTimeBin6"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000000 00000000 11100101 10011000 00001111 10110100 10001110 11100111</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBin6>9999-12-31T23:59:59.999000</dateTimeBin6>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <!-- xs:dateTime with binaryCalendarRep='binaryMillieconds' -->
+ <tdml:parserTestCase name="dateTimeBin10" root="dateTimeBin6"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000000 00000000 11100101 10011000 00001111 10110100 10001110 11101000</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBin6>10000-01-01T00:00:00.000000</dateTimeBin6>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateTimeBin11" root="dateTimeBin6"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">01111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Parse Error</tdml:error>
+ <tdml:error>milliseconds from the binaryCalendarEpoch is out of range of valid values</tdml:error>
+ <tdml:error>millis value less than lower bounds for a Calendar</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <!-- xs:dateTime with binaryCalendarRep='binaryMillieconds' with expected result equal
+ to the maximum date allowed -->
+ <tdml:parserTestCase name="dateTimeBin12" root="dateTimeBin6"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000010 10001101 01000110 11111011 11111100 10101110 01100010 11101000</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBin6>5828963-12-20T00:00:00.000000</dateTimeBin6>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <!-- xs:dateTime with binaryCalendarRep='binaryMillieconds' - expecting an error for being 1 milisecond
+ greater than the maximum date allowed -->
+ <tdml:parserTestCase name="dateTimeBin13" root="dateTimeBin6"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000010 10001101 01000110 11111011 11111100 10101110 01100010 11101001</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Parse Error</tdml:error>
+ <tdml:error>millis value greater than upper bounds for a Calendar</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <!-- xs:dateTime with binaryCalendarRep='binaryMillieconds' with expected result equal
+ to the minimum date allowed -->
+ <tdml:parserTestCase name="dateTimeBin14" root="dateTimeBin6"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">11111101 01110001 00110111 10110011 11111100 10101110 01100010 11101000</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBin6>-5838269-09-20T00:00:00.000000</dateTimeBin6>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <!-- xs:dateTime with binaryCalendarRep='binaryMillieconds' - expecting an error for being 1 milisecond
+ less than the minimum date allowed -->
+ <tdml:parserTestCase name="dateTimeBin15" root="dateTimeBin6"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">11111101 01110001 00110111 10110011 11111100 10101110 01100010 11100111</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Parse Error</tdml:error>
+ <tdml:error>millis value less than lower bounds for a Calendar</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateTimeBin16" root="dateTimeBin8"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000000 00000000 00000000 00000001</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBin8>2018-01-01T09:13:43.000000+09:00</dateTimeBin8>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateTimeBin17" root="dateTimeBin9"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBin9>2000-01-01T00:00:00.001000-04:00</dateTimeBin9>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateTimeBin18" root="dateTimeBin10"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="false">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000000 00000000 00000000 00111101</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error: Failed to parse binaryCalendarEpoch - Format must match the pattern 'uuuu-MM-dd'T'HH:mm:ss' or 'uuuu-MM-dd'T'HH:mm:ssZZZZ'</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateTimeBin19" root="dateTimeBin11"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="false">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000000 00000000 00000000 00111101</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error: Failed to parse binaryCalendarEpoch: DAY_OF_MONTH=2000, valid range=1..31</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateBin2" root="dateBin2"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="false">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">0000 0000 0011 1101</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error: binaryCalendarRep='binarySeconds' is not allowed with type Date</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
<tdml:parserTestCase name="byte_01" root="b_01"
model="SimpleTypes-Embedded.dfdl.xsd" description="Section 5 Schema types - byte - DFDL-5-015R">
@@ -3932,6 +4242,23 @@
</tdml:parserTestCase>
<!--
+ Test Name: dateTimeImplicitPatternFail5
+ Schema: dateTimeSchema
+ Root: dateTimeImp
+ Purpose: This test demonstrates a dateTime data type with a year that is out of range.
+-->
+
+ <tdml:parserTestCase name="dateTimeImplicitPatternFail5" root="dateTimeImp"
+ model="dateTimeSchema" description="Section 13 Simple Types - calendarPatternKind - DFDL-13-138R">
+
+ <tdml:document><![CDATA[99999999-03-24T03:45:30]]></tdml:document>
+ <tdml:errors>
+ <tdml:error>Parse Error:</tdml:error>
+ <tdml:error>Placeholder for error message</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+<!--
Test Name: datePattern01
Schema: dateTimeSchema
Root: date01
@@ -6059,7 +6386,7 @@
<!--
Test name: hexBinary_Delimited_01
- Schema: SimpleTypes-binary
+ Schema: HexBinary
Purpose: This document demonstrates the use of the hexBinary simple type with
bit input.
-->
@@ -6097,7 +6424,7 @@
<!--
Test name: hexBinary_Delimited_02
- Schema: SimpleTypes-binary
+ Schema: HexBinary
Purpose: This document demonstrates the use of the hexBinary simple type with
byte input.
-->
@@ -6124,7 +6451,7 @@
<!--
Test name: hexBinary_Delimited_03
- Schema: SimpleTypes-binary
+ Schema: HexBinary
Purpose: This document demonstrates the use of the hexBinary simple type with byte
input using raw byte entities.
-->
@@ -6162,7 +6489,7 @@
<!--
Test name: hexBinary_Implicit_01
- Schema: SimpleTypes-binary
+ Schema: HexBinary
Purpose: This document demonstrates the use of the hexBinary simple type with byte
input using lengthKind implicit.
-->
@@ -6361,7 +6688,7 @@
<!--
Test name: hexBinary_Delimited_04
- Schema: SimpleTypes-binary
+ Schema: HexBinary
Purpose: This document demonstrates an error when hexBinary is delimited and has an encoding that is not ISO-8859-1
-->
diff --git a/daffodil-test/src/test/scala-debug/org/apache/daffodil/section05/simple_types/TestSimpleTypesDebug.scala b/daffodil-test/src/test/scala-debug/org/apache/daffodil/section05/simple_types/TestSimpleTypesDebug.scala
index 4adbd22..a2498e1 100644
--- a/daffodil-test/src/test/scala-debug/org/apache/daffodil/section05/simple_types/TestSimpleTypesDebug.scala
+++ b/daffodil-test/src/test/scala-debug/org/apache/daffodil/section05/simple_types/TestSimpleTypesDebug.scala
@@ -115,4 +115,6 @@ class TestSimpleTypesDebug {
@Test def test_dateCalendarFirstDayOfWeek03() { runner.runOneTest("dateCalendarFirstDayOfWeek03") }
@Test def test_dateCalendarFirstDayOfWeek04() { runner.runOneTest("dateCalendarFirstDayOfWeek04") }
+ // DAFFODIL-1946
+ @Test def test_dateTimeImplicitPatternFail5() { runner.runOneTest("dateTimeImplicitPatternFail5") }
}
diff --git a/daffodil-test/src/test/scala/org/apache/daffodil/section05/simple_types/TestSimpleTypes.scala b/daffodil-test/src/test/scala/org/apache/daffodil/section05/simple_types/TestSimpleTypes.scala
index cac67ca..a878313 100644
--- a/daffodil-test/src/test/scala/org/apache/daffodil/section05/simple_types/TestSimpleTypes.scala
+++ b/daffodil-test/src/test/scala/org/apache/daffodil/section05/simple_types/TestSimpleTypes.scala
@@ -170,12 +170,33 @@ class TestSimpleTypes {
@Test def test_dateImplicitPatternFail() { runner.runOneTest("dateImplicitPatternFail") }
@Test def test_timeImplicitPattern() { runner.runOneTest("timeImplicitPattern") }
@Test def test_timeImplicitPatternFail() { runner.runOneTest("timeImplicitPatternFail") }
+ @Test def test_dateTimeBin() { runner.runOneTest("dateTimeBin") }
+ @Test def test_dateTimeBin2() { runner.runOneTest("dateTimeBin2") }
+ @Test def test_dateTimeBin3() { runner.runOneTest("dateTimeBin3") }
+ @Test def test_dateTimeBin4() { runner.runOneTest("dateTimeBin4") }
+ @Test def test_dateTimeBin5() { runner.runOneTest("dateTimeBin5") }
+ @Test def test_dateTimeBin6() { runner.runOneTest("dateTimeBin6") }
+ @Test def test_dateTimeBin7() { runner.runOneTest("dateTimeBin7") }
+ @Test def test_dateTimeBin8() { runner.runOneTest("dateTimeBin8") }
+ @Test def test_dateTimeBin9() { runner.runOneTest("dateTimeBin9") }
+ @Test def test_dateTimeBin10() { runner.runOneTest("dateTimeBin10") }
+ @Test def test_dateTimeBin11() { runner.runOneTest("dateTimeBin11") }
+ @Test def test_dateTimeBin12() { runner.runOneTest("dateTimeBin12") }
+ @Test def test_dateTimeBin13() { runner.runOneTest("dateTimeBin13") }
+ @Test def test_dateTimeBin14() { runner.runOneTest("dateTimeBin14") }
+ @Test def test_dateTimeBin15() { runner.runOneTest("dateTimeBin15") }
+ @Test def test_dateTimeBin16() { runner.runOneTest("dateTimeBin16") }
+ @Test def test_dateTimeBin17() { runner.runOneTest("dateTimeBin17") }
+ @Test def test_dateTimeBin18() { runner.runOneTest("dateTimeBin18") }
+ @Test def test_dateTimeBin19() { runner.runOneTest("dateTimeBin19") }
+ @Test def test_dateBin2() { runner.runOneTest("dateBin2") }
@Test def test_dateTimeImplicitPattern() { runner.runOneTest("dateTimeImplicitPattern") }
@Test def test_dateTimeImplicitPatternFail() { runner.runOneTest("dateTimeImplicitPatternFail") }
@Test def test_dateTimeImplicitPatternFail2() { runner.runOneTest("dateTimeImplicitPatternFail2") }
@Test def test_dateTimeImplicitPatternFail3() { runner.runOneTest("dateTimeImplicitPatternFail3") }
@Test def test_dateTimeImplicitPatternFail4() { runner.runOneTest("dateTimeImplicitPatternFail4") }
+ //@Test def test_dateTimeImplicitPatternFail5() { runner.runOneTest("dateTimeImplicitPatternFail5") }
@Test def test_datePattern01() { runner.runOneTest("datePattern01") }
// @Test def test_datePattern01b() { runner.runOneTest("datePattern01b") }
--
To stop receiving notification emails like this one, please contact
efinnegan@apache.org.