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/07/27 17:59:08 UTC
[incubator-daffodil] branch master updated: Adding value of 'bcd'
to binaryCalendarRep
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 339967f Adding value of 'bcd' to binaryCalendarRep
339967f is described below
commit 339967faf80ca9b13f8a3725032e79b5c988a8fd
Author: Beth Fahl <ef...@tresys.com>
AuthorDate: Tue May 22 12:29:47 2018 -0400
Adding value of 'bcd' to binaryCalendarRep
Adds parsing and unparsing capability for binary representation of
xs:date, xs:time, and xs:dateTime with a binaryCalendarRep of 'bcd',
including known, runtime determined, and delimited lengths of data.
This uses a combination of the existing BCD parser/unparser and
text calendar parser/unparser, with some added checks for binary
calendars.
DAFFODIL-1941
---
.../daffodil/grammar/ElementBaseGrammarMixin.scala | 74 ++++-
.../grammar/primitives/PrimitivesDateTime.scala | 104 ++++--
.../unparsers/ConvertBinaryCalendarUnparser.scala | 2 +-
.../unparsers/PackedBinaryUnparserTraits.scala | 14 +-
.../section05/simple_types/SimpleTypes.tdml | 360 +++++++++++++++++++--
.../section12/lengthKind/DelimitedTests.tdml | 2 +-
.../section05/simple_types/TestSimpleTypes.scala | 22 +-
7 files changed, 514 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 e83e40a..db1e65a 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
@@ -130,6 +130,7 @@ 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.CalendarPatternKind
import org.apache.daffodil.schema.annotation.props.gen.LengthKind
import org.apache.daffodil.schema.annotation.props.gen.LengthUnits
import org.apache.daffodil.schema.annotation.props.gen.NilKind
@@ -478,9 +479,9 @@ trait ElementBaseGrammarMixin
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("Length of binary data '" + primType.name + "' with binaryCalendarRep='" + binaryCalendarRep + "' cannot be determined implicitly.")
}
- case _ => schemaDefinitionError("Size of binary data '" + primType.name + "' cannot be determined implicitly.")
+ case _ => schemaDefinitionError("Length of binary data '" + primType.name + "' cannot be determined implicitly.")
}
/**
@@ -496,8 +497,14 @@ trait ElementBaseGrammarMixin
case LengthKind.Implicit => implicitBinaryLengthInBits
case LengthKind.Explicit if (lengthEv.isConstant) => explicitBinaryLengthInBits()
case LengthKind.Explicit => -1 // means must be computed at runtime.
- case LengthKind.Delimited if (binaryNumberRep == BinaryNumberRep.Binary) => subsetError("lengthKind='delimited' only supported for packed binary formats.")
- case LengthKind.Delimited => -1 // only for packed binary data, length must be computed at runtime.
+ case LengthKind.Delimited => primType match {
+ case PrimType.DateTime | PrimType.Date | PrimType.Time =>
+ if (binaryCalendarRep == BinaryCalendarRep.BinaryMilliseconds || binaryCalendarRep == BinaryCalendarRep.BinarySeconds)
+ SDE("lengthKind='delimited' only supported for packed binary formats.")
+ else -1 // only for packed binary data, length must be computed at runtime.
+ case _ => if (binaryNumberRep == BinaryNumberRep.Binary) SDE("lengthKind='delimited' only supported for packed binary formats.")
+ else -1 // only for packed binary data, length must be computed at runtime.
+ }
case LengthKind.Pattern => schemaDefinitionError("Binary data elements cannot have lengthKind='pattern'.")
case LengthKind.Prefixed => subsetError("lengthKind='prefixed' not yet supported.")
case LengthKind.EndOfParent => schemaDefinitionError("Binary data elements cannot have lengthKind='endOfParent'.")
@@ -652,6 +659,51 @@ trait ElementBaseGrammarMixin
private lazy val zonedTextUnsignedByte = prod("zonedTextUnsignedByte",
textNumberRep == TextNumberRep.Zoned) { ConvertZonedCombinator(this, stringValue, ConvertZonedUnsignedBytePrim(this)) }
+
+ private lazy val bcdKnownLengthCalendar = prod("bcdKnownLengthCalendar", binaryCalendarRep == BinaryCalendarRep.Bcd) {
+ bcdDateKnownLength | bcdTimeKnownLength | bcdDateTimeKnownLength
+ }
+ private lazy val bcdRuntimeLengthCalendar = prod("bcdRuntimeLengthCalendar", binaryCalendarRep == BinaryCalendarRep.Bcd) {
+ bcdDateRuntimeLength | bcdTimeRuntimeLength | bcdDateTimeRuntimeLength
+ }
+ private lazy val bcdDelimitedLengthCalendar = prod("bcdDelimitedLengthCalendar", binaryCalendarRep == BinaryCalendarRep.Bcd) {
+ bcdDateDelimitedLength | bcdTimeDelimitedLength | bcdDateTimeDelimitedLength
+ }
+
+ // BCD calendar with known length
+ private lazy val bcdDateKnownLength = prod("bcdDateKnownLength", primType == PrimType.Date) {
+ ConvertZonedCombinator(this, new BCDIntegerKnownLength(this, binaryNumberKnownLengthInBits), ConvertTextDatePrim(this))
+ }
+ private lazy val bcdDateTimeKnownLength = prod("bcdDateTimeKnownLength", primType == PrimType.DateTime) {
+ ConvertZonedCombinator(this, new BCDIntegerKnownLength(this, binaryNumberKnownLengthInBits), ConvertTextDateTimePrim(this))
+ }
+ private lazy val bcdTimeKnownLength = prod("bcdTimeKnownLength", primType == PrimType.Time) {
+ ConvertZonedCombinator(this, new BCDIntegerKnownLength(this, binaryNumberKnownLengthInBits), ConvertTextTimePrim(this))
+ }
+
+ // BCD calendar with runtime length
+ private lazy val bcdDateRuntimeLength = prod("bcdDateRuntimeLength", primType == PrimType.Date) {
+ ConvertZonedCombinator(this, new BCDIntegerRuntimeLength(this), ConvertTextDatePrim(this))
+ }
+ private lazy val bcdDateTimeRuntimeLength = prod("bcdDateTimeRuntimeLength", primType == PrimType.DateTime) {
+ ConvertZonedCombinator(this, new BCDIntegerRuntimeLength(this), ConvertTextDateTimePrim(this))
+ }
+ private lazy val bcdTimeRuntimeLength = prod("bcdTimeRuntimeLength", primType == PrimType.Time) {
+ ConvertZonedCombinator(this, new BCDIntegerRuntimeLength(this), ConvertTextTimePrim(this))
+ }
+
+ // BCD calendar with delimited length
+ private lazy val bcdDateDelimitedLength = prod("bcdDateDelimitedLength", primType == PrimType.Date) {
+ ConvertZonedCombinator(this, new BCDIntegerDelimitedEndOfData(this), ConvertTextDatePrim(this))
+ }
+ private lazy val bcdDateTimeDelimitedLength = prod("bcdDateTimeDelimitedLength", primType == PrimType.DateTime) {
+ ConvertZonedCombinator(this, new BCDIntegerDelimitedEndOfData(this), ConvertTextDateTimePrim(this))
+ }
+ private lazy val bcdTimeDelimitedLength = prod("bcdTimeDelimitedLength", primType == PrimType.Time) {
+ ConvertZonedCombinator(this, new BCDIntegerDelimitedEndOfData(this), ConvertTextTimePrim(this))
+ }
+
+
private lazy val textDouble = prod("textDouble", impliedRepresentation == Representation.Text) {
standardTextDouble || zonedTextDouble
}
@@ -829,7 +881,19 @@ trait ElementBaseGrammarMixin
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 (_, BinaryCalendarRep.Bcd) => {
+ if ((binaryNumberKnownLengthInBits != -1) && (binaryNumberKnownLengthInBits % 4) != 0)
+ SDE("The given length (%s bits) must be a multiple of 4 when using binaryCalendarRep='%s'.", binaryNumberKnownLengthInBits, binaryCalendarRep)
+ if (calendarPatternKind != CalendarPatternKind.Explicit)
+ SDE("calendarPatternKind must be 'explicit' when binaryCalendarRep='%s'", binaryCalendarRep)
+
+ (lengthKind, binaryNumberKnownLengthInBits) match {
+ case (LengthKind.Delimited, -1) => bcdDelimitedLengthCalendar
+ case (_, -1) => bcdRuntimeLengthCalendar
+ case (_, _) => bcdKnownLengthCalendar
+ }
+ }
+ case _ => notYetImplemented("Type %s when representation='binary' and binaryCalendarRep=%s", primType.name, binaryCalendarRep.toString)
}
}
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 e6f275e..bef2ea3 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
@@ -23,6 +23,7 @@ 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.exceptions.Assert
import org.apache.daffodil.grammar.Terminal
import org.apache.daffodil.schema.annotation.props.gen.CalendarCheckPolicy
import org.apache.daffodil.schema.annotation.props.gen.CalendarFirstDayOfWeek
@@ -36,6 +37,8 @@ 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 org.apache.daffodil.schema.annotation.props.gen.BinaryCalendarRep
+import org.apache.daffodil.schema.annotation.props.gen.Representation
import scala.Boolean
abstract class ConvertCalendarPrimBase(e: ElementBase, guard: Boolean)
@@ -54,26 +57,6 @@ abstract class ConvertTextCalendarPrimBase(e: ElementBase, guard: Boolean)
protected def implicitPattern: String
protected def validFormatCharacters: Seq[Char]
- lazy val pattern: String = {
- val p = e.calendarPatternKind match {
- case CalendarPatternKind.Explicit => e.calendarPattern
- case CalendarPatternKind.Implicit => implicitPattern
- }
-
- val escapedText = "(''|'[^']+'|[^a-zA-Z])".r
- val patternNoEscapes = escapedText.replaceAllIn(p, "")
- patternNoEscapes.toSeq.foreach(char =>
- if (!validFormatCharacters.contains(char)) {
- SDE("Character '%s' not allowed in dfdl:calendarPattern for xs:%s".format(char, xsdType))
- })
-
- if (patternNoEscapes.indexOf("S" * (TextCalendarConstants.maxFractionalSeconds + 1)) >= 0) {
- SDE("More than %d fractional seconds unsupported in dfdl:calendarPattern for xs:%s".format(TextCalendarConstants.maxFractionalSeconds, xsdType))
- }
-
- p
- }
-
val firstDay = e.calendarFirstDayOfWeek match {
case CalendarFirstDayOfWeek.Sunday => Calendar.SUNDAY
case CalendarFirstDayOfWeek.Monday => Calendar.MONDAY
@@ -92,13 +75,19 @@ abstract class ConvertTextCalendarPrimBase(e: ElementBase, guard: Boolean)
}
val TimeZoneRegex = """(UTC)?([+\-])?([01]\d|\d)(:?([0-5]\d))?""".r
- val tzStr = e.calendarTimeZone match {
- case TimeZoneRegex(_, plusOrMinus, hour, _, minute) => {
- val pomStr = if (plusOrMinus == null) "+" else plusOrMinus
- val minStr = if (minute == null) "" else minute
- "GMT%s%s%s".format(pomStr, hour, minStr)
+
+ // Binary calendars with a BinaryCalendarRep of 'bcd' or 'ibm4690Packed' should ignore the calendarTimeZone option
+ val tzStr = if (e.representation == Representation.Binary && e.binaryCalendarRep != BinaryCalendarRep.Packed) {
+ ""
+ } else {
+ e.calendarTimeZone match {
+ case TimeZoneRegex(_, plusOrMinus, hour, _, minute) => {
+ val pomStr = if (plusOrMinus == null) "+" else plusOrMinus
+ val minStr = if (minute == null) "" else minute
+ "GMT%s%s%s".format(pomStr, hour, minStr)
+ }
+ case _ => e.calendarTimeZone
}
- case _ => e.calendarTimeZone
}
val calendarTz: Option[TimeZone] = {
@@ -146,6 +135,43 @@ abstract class ConvertTextCalendarPrimBase(e: ElementBase, guard: Boolean)
cev
}
+ lazy val pattern: String = {
+ val p = e.calendarPatternKind match {
+ case CalendarPatternKind.Explicit => e.calendarPattern
+ case CalendarPatternKind.Implicit => e.representation match {
+ case Representation.Binary => Assert.impossibleCase
+ case _ => implicitPattern
+ }
+ }
+
+ val patternToCheck : String = if (e.representation == Representation.Text) {
+ val escapedText = "(''|'[^']+'|[^a-zA-Z])".r
+ escapedText.replaceAllIn(p, "")
+ } else {
+ p
+ }
+ patternToCheck.toSeq.foreach(char =>
+ if (!validFormatCharacters.contains(char)) {
+ if (e.representation == Representation.Binary)
+ SDE("Character '%s' not allowed in dfdl:calendarPattern for xs:%s with a binaryCalendarRep of '%s'".format(char, xsdType, e.binaryCalendarRep))
+ else
+ SDE("Character '%s' not allowed in dfdl:calendarPattern for xs:%s".format(char, xsdType))
+ })
+
+ if (e.representation == Representation.Binary) {
+ // For binary calendars, calendarPattern can contain only characters that always result in digits,
+ // so more than 2 'e' or 'M' in a row aren't valid as they result in text
+ if (patternToCheck.contains("eee") || patternToCheck.contains("MMM")) {
+ SDE("dfdl:calendarPattern must only contain characters that result in the presentation of digits for xs:%s with a binaryCalendarRep of '%s'".format(xsdType, e.binaryCalendarRep))
+ }
+ }
+ if (patternToCheck.indexOf("S" * (TextCalendarConstants.maxFractionalSeconds + 1)) >= 0) {
+ SDE("More than %d fractional seconds unsupported in dfdl:calendarPattern for xs:%s".format(TextCalendarConstants.maxFractionalSeconds, xsdType))
+ }
+
+ p
+ }
+
override lazy val parser = new ConvertTextCalendarParser(
e.elementRuntimeData,
xsdType,
@@ -167,7 +193,12 @@ case class ConvertTextDatePrim(e: ElementBase) extends ConvertTextCalendarPrimBa
protected override val prettyType = "Date"
protected override val infosetPattern = "uuuu-MM-ddxxx"
protected override val implicitPattern = "uuuu-MM-dd"
- protected override val validFormatCharacters = "dDeEFGMuwWyXxYzZ".toSeq
+ protected override val validFormatCharacters =
+ if (e.representation == Representation.Binary) {
+ "dDeFMuwWyY".toSeq
+ } else {
+ "dDeEFGMuwWyXxYzZ".toSeq
+ }
}
case class ConvertTextTimePrim(e: ElementBase) extends ConvertTextCalendarPrimBase(e, true) {
@@ -175,7 +206,12 @@ case class ConvertTextTimePrim(e: ElementBase) extends ConvertTextCalendarPrimBa
protected override val prettyType = "Time"
protected override val infosetPattern = "HH:mm:ss.SSSSSSxxx"
protected override val implicitPattern = "HH:mm:ssZ"
- protected override val validFormatCharacters = "ahHkKmsSvVzXxZ".toSeq
+ protected override val validFormatCharacters =
+ if (e.representation == Representation.Binary) {
+ "hHkKmsS".toSeq
+ } else {
+ "ahHkKmsSvVzXxZ".toSeq
+ }
}
case class ConvertTextDateTimePrim(e: ElementBase) extends ConvertTextCalendarPrimBase(e, true) {
@@ -183,12 +219,12 @@ case class ConvertTextDateTimePrim(e: ElementBase) extends ConvertTextCalendarPr
protected override val prettyType = "DateTime"
protected override val infosetPattern = "uuuu-MM-dd'T'HH:mm:ss.SSSSSSxxx"
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) {
-
+ protected override val validFormatCharacters =
+ if (e.representation == Representation.Binary) {
+ "dDeFhHkKmMsSuwWyY".toSeq
+ } else {
+ "adDeEFGhHkKmMsSuwWvVyXxYzZ".toSeq
+ }
}
case class ConvertBinaryDateTimeSecMilliPrim(e: ElementBase, lengthInBits: Long) extends ConvertCalendarPrimBase(e, true) {
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
index f948c22..aef452c 100644
--- 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
@@ -51,7 +51,7 @@ case class ConvertBinaryCalendarSecMilliUnparser(
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)))
+ case x => Assert.invariantFailed("ConvertBinaryCalendar 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
diff --git a/daffodil-runtime1-unparser/src/main/scala/org/apache/daffodil/processors/unparsers/PackedBinaryUnparserTraits.scala b/daffodil-runtime1-unparser/src/main/scala/org/apache/daffodil/processors/unparsers/PackedBinaryUnparserTraits.scala
index 6bedb58..810f1ae 100644
--- a/daffodil-runtime1-unparser/src/main/scala/org/apache/daffodil/processors/unparsers/PackedBinaryUnparserTraits.scala
+++ b/daffodil-runtime1-unparser/src/main/scala/org/apache/daffodil/processors/unparsers/PackedBinaryUnparserTraits.scala
@@ -26,6 +26,7 @@ import org.apache.daffodil.exceptions.Assert
import org.apache.daffodil.io.DataOutputStream
import org.apache.daffodil.io.FormatInfo
import org.apache.daffodil.processors.Evaluatable
+import org.apache.daffodil.dpath.NodeInfo
trait PackedBinaryConversion {
def fromBigInteger(bigInt: JBigInteger, nBits: Int): Array[Byte]
@@ -45,7 +46,18 @@ abstract class PackedBinaryBaseUnparser(
override def unparse(state: UState): Unit = {
val nBits = getBitLength(state)
val node = state.currentInfosetNode.asSimple
- val value = node.dataValue.asInstanceOf[JNumber]
+
+ // Packed decimal calendars use the convert combinator which sets the string value of the calendar
+ // - using dataValue would give the Calendar value rather than that string. Since the Calendar value
+ // cannot be cast as a JNumber we need to use dataValueAsString and convert it to a JBigInteger.
+ // With packed numbers, dataValue is already a number so just use that.
+ val nodeValue =
+ node.erd.optPrimType.get match {
+ case NodeInfo.Date | NodeInfo.DateTime | NodeInfo.Time => new JBigInteger(node.dataValueAsString)
+ case _ => node.dataValue
+ }
+
+ val value = nodeValue.asInstanceOf[JNumber]
val dos = state.dataOutputStream
val res = putNumber(dos, value, nBits, state)
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 8d215cd..61cf569 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
@@ -263,9 +263,68 @@
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="dateTimeBin12" type="xs:dateTime" dfdl:lengthKind="delimited" dfdl:terminator=";"
+ dfdl:binaryCalendarRep="binarySeconds" dfdl:binaryCalendarEpoch="1977-01-01T00:00:07"/>
+
+ <xs:element name="dateBinBCD" type="xs:date" dfdl:calendarPattern="MMddyy" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="explicit" dfdl:length="{ 3 }" dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="bcd" />
+ <xs:element name="dateBinBCD2" type="xs:date" dfdl:calendarPattern="MMddyyyy" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="explicit" dfdl:length="{ 4 }" dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="bcd"/>
+ <xs:element name="dateBinBCD3" type="xs:date" dfdl:calendarPattern="MM-dd-yy" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="explicit" dfdl:length="{ 3 }" dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="bcd"/>
+ <xs:element name="dateBinBCD4" type="xs:date" dfdl:calendarPattern="MMddyy" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="explicit" dfdl:length="{ 7 }" dfdl:lengthUnits="bits" dfdl:binaryCalendarRep="bcd"/>
+ <xs:element name="dateBinBCD5" type="xs:date" dfdl:calendarPattern="MMEEyy" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="explicit" dfdl:length="{ 3 }" dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="bcd"/>
+ <xs:element name="dateBinBCD6" type="xs:date" dfdl:calendarPattern="MMddyyeee" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="explicit" dfdl:length="{ 3 }" dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="bcd"/>
+ <xs:element name="dateBinBCD7" type="xs:date" dfdl:calendarPattern="eMyy" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="explicit" dfdl:length="{ 16 }" dfdl:lengthUnits="bits" dfdl:binaryCalendarRep="bcd"/>
+
+ <xs:element name="timeBinBCD" type="xs:time" dfdl:calendarPattern="HHmmss" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="explicit" dfdl:length="{ 3 }" dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="bcd"/>
+ <xs:element name="timeBinBCD2" type="xs:time" dfdl:calendarPattern="HHmmssSSSS" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="explicit" dfdl:length="{ 5 }" dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="bcd"/>
+ <xs:element name="timeBinBCD3" type="xs:time" dfdl:calendarPatternKind="implicit"
+ dfdl:lengthKind="explicit" dfdl:length="{ 5 }" dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="bcd"/>
+ <xs:element name="timeBinBCD4" type="xs:time" dfdl:calendarPattern="HHmmss" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="implicit" dfdl:binaryCalendarRep="bcd"/>
+ <xs:element name="timeBinBCD5" type="xs:time" dfdl:calendarPattern="HHmmss" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="delimited" dfdl:terminator=";" dfdl:binaryCalendarRep="bcd" dfdl:encoding="ISO-8859-1"/>
+
+ <xs:element name="timeBinBCD6">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="length" type="xs:int" dfdl:representation="binary"
+ dfdl:lengthKind="explicit" dfdl:length="{ 1 }" dfdl:lengthUnits="bytes" />
+ <xs:element name="time" type="xs:time" dfdl:calendarPattern="HHmmss" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="explicit" dfdl:length="{ ../ex:length }" dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="bcd" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="dateTimeBinBCD" type="xs:dateTime" dfdl:calendarPattern="MMddyyyyHHmmss" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="explicit" dfdl:length="{ 7 }" dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="bcd"/>
+ <xs:element name="dateTimeBinBCD2" type="xs:dateTime" dfdl:calendarPattern="MMddyyyyhhmmss" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="implicit" dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="bcd"/>
+ <xs:element name="dateTimeBinBCD3" type="xs:dateTime" dfdl:calendarPattern="MMddyyyyhhmmss" dfdl:calendarPatternKind="explicit"
+ dfdl:lengthKind="explicit" dfdl:length="{ 7 }" dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="bcd"/>
+
+ <xs:element name="dateTimeBinBCD4">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="num1" type="xs:decimal" dfdl:encoding="ISO-8859-1" dfdl:representation="binary" dfdl:binaryNumberRep="bcd"
+ dfdl:lengthKind="delimited" dfdl:terminator=";" dfdl:binaryDecimalVirtualPoint="0"/>
+ <xs:element name="datetime" type="xs:dateTime" dfdl:calendarPattern="MMddyyyyHHmmss" dfdl:encoding="ISO-8859-1"
+ dfdl:calendarPatternKind="explicit" dfdl:binaryCalendarRep="bcd" dfdl:lengthKind="delimited" dfdl:terminator=";"/>
+ <xs:element name="num2" type="xs:decimal" dfdl:encoding="ISO-8859-1" dfdl:representation="binary" dfdl:binaryNumberRep="bcd"
+ dfdl:lengthKind="delimited" dfdl:terminator=";" dfdl:binaryDecimalVirtualPoint="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
- <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"/>
+ <xs:element name="dateBinInvalid" type="xs:date" dfdl:calendarPattern="yyyy.MM.dd" dfdl:calendarPatternKind="explicit" dfdl:lengthKind="explicit"
+ dfdl:length="{ 4 }" dfdl:lengthUnits="bytes" dfdl:binaryCalendarRep="binarySeconds" dfdl:binaryCalendarEpoch="1970-01-01T00:00:00+00:00"/>
</tdml:defineSchema>
@@ -1850,7 +1909,7 @@
<tdml:document><tdml:documentPart type="byte">ff ff fb ff ff ff fb</tdml:documentPart></tdml:document>
<tdml:errors>
<tdml:error>Schema Definition Error</tdml:error>
- <tdml:error>Size of binary data 'nonNegativeInteger' cannot be determined implicitly.</tdml:error>
+ <tdml:error>Length of binary data 'nonNegativeInteger' cannot be determined implicitly.</tdml:error>
</tdml:errors>
</tdml:parserTestCase>
@@ -1996,8 +2055,7 @@
</tdml:parserTestCase>
<tdml:parserTestCase name="dateTimeBin2" root="dateTimeBin2"
- model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
- roundTrip="false">
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
<tdml:document>
<tdml:documentPart type="bits">00000000 00000000 00000000 00111101</tdml:documentPart>
@@ -2008,8 +2066,7 @@
</tdml:parserTestCase>
<tdml:parserTestCase name="dateTimeBin3" root="dateTimeBin3"
- model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
- roundTrip="false">
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
<tdml:document>
<tdml:documentPart type="bits">00000000 00000000 00000000 00111101</tdml:documentPart>
@@ -2124,8 +2181,7 @@
</tdml:parserTestCase>
<tdml:parserTestCase name="dateTimeBin11" root="dateTimeBin6"
- model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
- roundTrip="true">
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
<tdml:document>
<tdml:documentPart type="bits">01111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111</tdml:documentPart>
@@ -2156,8 +2212,7 @@
<!-- 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">
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
<tdml:document>
<tdml:documentPart type="bits">00000010 10001101 01000110 11111011 11111100 10101110 01100010 11101001</tdml:documentPart>
@@ -2187,8 +2242,7 @@
<!-- 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">
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
<tdml:document>
<tdml:documentPart type="bits">11111101 01110001 00110111 10110011 11111100 10101110 01100010 11100111</tdml:documentPart>
@@ -2228,8 +2282,7 @@
</tdml:parserTestCase>
<tdml:parserTestCase name="dateTimeBin18" root="dateTimeBin10"
- model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
- roundTrip="false">
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
<tdml:document>
<tdml:documentPart type="bits">00000000 00000000 00000000 00111101</tdml:documentPart>
@@ -2240,8 +2293,7 @@
</tdml:parserTestCase>
<tdml:parserTestCase name="dateTimeBin19" root="dateTimeBin11"
- model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
- roundTrip="false">
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
<tdml:document>
<tdml:documentPart type="bits">00000000 00000000 00000000 00111101</tdml:documentPart>
@@ -2251,11 +2303,277 @@
</tdml:errors>
</tdml:parserTestCase>
- <tdml:parserTestCase name="dateBin2" root="dateBin2"
+ <tdml:parserTestCase name="dateTimeBin20" root="dateTimeBin12"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
+
+ <tdml:document>
+ <tdml:documentPart type="bits">00000000 00000000 00000000 00111101</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error: lengthKind='delimited' only supported for packed binary formats.</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateBinBCD" root="dateBinBCD"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="byte">12 14 23</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateBinBCD>2023-12-14</dateBinBCD>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateBinBCD2" root="dateBinBCD2"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="byte">12 14 20 23</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateBinBCD2>2023-12-14</dateBinBCD2>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateBinBCD3" root="dateBinBCD"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
+
+ <tdml:document>
+ <tdml:documentPart type="byte">12 0F 23</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Parse Error</tdml:error>
+ <tdml:error>Invalid low nibble</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateBinBCD4" root="dateBinBCD3"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
+
+ <tdml:document>
+ <tdml:documentPart type="byte">08 17 48</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error</tdml:error>
+ <tdml:error>Character '-' not allowed in dfdl:calendarPattern for xs:date with a binaryCalendarRep of 'bcd'</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateBinBCD5" root="dateBinBCD4"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
+
+ <tdml:document>
+ <tdml:documentPart type="bits">0000000</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error</tdml:error>
+ <tdml:error>The given length (7 bits) must be a multiple of 4 when using binaryCalendarRep='bcd'</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateBinBCD6" root="dateBinBCD"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="bits">0001 0010 0010 0111 1001 1001</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateBinBCD>1999-12-27</dateBinBCD>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateBinBCD7" root="dateBinBCD5"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
+
+ <tdml:document>
+ <tdml:documentPart type="byte">08 17 48</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error</tdml:error>
+ <tdml:error>Character 'E' not allowed in dfdl:calendarPattern for xs:date with a binaryCalendarRep of 'bcd'</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateBinBCD8" root="dateBinBCD6"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
+
+ <tdml:document>
+ <tdml:documentPart type="byte">08 17 48</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error</tdml:error>
+ <tdml:error>dfdl:calendarPattern must only contain characters that result in the presentation of digits for xs:date with a binaryCalendarRep of 'bcd'</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateBinBCD9" root="dateBinBCD7"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
+
+ <tdml:document>
+ <tdml:documentPart type="byte">38 18</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateBinBCD7>2018-08-07</dateBinBCD7>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="timeBinBCD" root="timeBinBCD"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="byte">18 56 03</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <timeBinBCD>18:56:03.000000</timeBinBCD>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="timeBinBCD2" root="timeBinBCD2"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="twoPass">
+
+ <tdml:document>
+ <tdml:documentPart type="byte">01 45 00 99 87</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <timeBinBCD2>01:45:00.998000</timeBinBCD2>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="timeBinBCD3" root="timeBinBCD3"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
+
+ <tdml:document>
+ <tdml:documentPart type="byte">01 45 00 99 87</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error</tdml:error>
+ <tdml:error>calendarPatternKind must be 'explicit' when binaryCalendarRep='bcd'</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="timeBinBCD4" root="timeBinBCD4"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
+
+ <tdml:document>
+ <tdml:documentPart type="byte">18 56 03</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error</tdml:error>
+ <tdml:error>Length of binary data 'Time' cannot be determined implicitly</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="timeBinBCD5" root="timeBinBCD5"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="byte">18 56 03 3B</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <timeBinBCD5>18:56:03.000000</timeBinBCD5>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="timeBinBCD6" root="timeBinBCD6"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="byte">03 18 56 03</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <timeBinBCD6>
+ <length>3</length>
+ <time>18:56:03.000000</time>
+ </timeBinBCD6>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateTimeBinBCD" root="dateTimeBinBCD"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="byte">06 14 20 04 18 56 03</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBinBCD>2004-06-14T18:56:03.000000</dateTimeBinBCD>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateTimeBinBCD2" root="dateTimeBinBCD2"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
+
+ <tdml:document>
+ <tdml:documentPart type="byte">01 45 00 99 87</tdml:documentPart>
+ </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error</tdml:error>
+ <tdml:error>Length of binary data 'DateTime' with binaryCalendarRep='bcd' cannot be determined implicitly</tdml:error>
+ </tdml:errors>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateTimeBinBCD3" root="dateTimeBinBCD3"
model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
roundTrip="false">
<tdml:document>
+ <tdml:documentPart type="byte">06 14 20 04 18 56 03</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBinBCD3>2004-06-14T18:56:03.000000</dateTimeBinBCD3>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateTimeBinBCD4" root="dateTimeBinBCD4"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R"
+ roundTrip="true">
+
+ <tdml:document>
+ <tdml:documentPart type="byte">03 3B 06 14 20 04 18 56 03 3B 19 3B</tdml:documentPart>
+ </tdml:document>
+ <tdml:infoset>
+ <tdml:dfdlInfoset>
+ <dateTimeBinBCD4>
+ <num1>3</num1>
+ <datetime>2004-06-14T18:56:03.000000</datetime>
+ <num2>19</num2>
+ </dateTimeBinBCD4>
+ </tdml:dfdlInfoset>
+ </tdml:infoset>
+ </tdml:parserTestCase>
+
+ <tdml:parserTestCase name="dateBinInvalid" root="dateBinInvalid"
+ model="SimpleTypes-binary" description="Section 5 Schema types-dateTime - DFDL-5-016R" >
+
+ <tdml:document>
<tdml:documentPart type="bits">0000 0000 0011 1101</tdml:documentPart>
</tdml:document>
<tdml:errors>
@@ -2427,7 +2745,7 @@
<tdml:documentPart type="byte">00 00 00 01</tdml:documentPart>
</tdml:document>
<tdml:errors>
- <tdml:error>Schema Definition Error: Size of binary data 'decimal' cannot be determined implicitly.</tdml:error>
+ <tdml:error>Schema Definition Error: Length of binary data 'decimal' cannot be determined implicitly.</tdml:error>
</tdml:errors>
</tdml:parserTestCase>
@@ -3282,7 +3600,7 @@
</tdml:document>
<tdml:errors>
<tdml:error>Schema Definition Error</tdml:error>
- <tdml:error>Size of binary data 'integer' cannot be determined implicitly</tdml:error>
+ <tdml:error>Length of binary data 'integer' cannot be determined implicitly</tdml:error>
</tdml:errors>
</tdml:parserTestCase>
@@ -3299,7 +3617,7 @@
</tdml:document>
<tdml:errors>
<tdml:error>Schema Definition Error</tdml:error>
- <tdml:error>Size of binary data 'integer' cannot be determined implicitly</tdml:error>
+ <tdml:error>Length of binary data 'integer' cannot be determined implicitly</tdml:error>
</tdml:errors>
</tdml:parserTestCase>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/section12/lengthKind/DelimitedTests.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/section12/lengthKind/DelimitedTests.tdml
index 6b5019e..682646b 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/section12/lengthKind/DelimitedTests.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/section12/lengthKind/DelimitedTests.tdml
@@ -1098,7 +1098,7 @@ C</MessageHeaders>
</tdml:document>
<tdml:errors>
<tdml:error>Schema Definition Error</tdml:error>
- <tdml:error>Subset lengthKind='delimited' only supported for packed binary formats.</tdml:error>
+ <tdml:error>lengthKind='delimited' only supported for packed binary formats.</tdml:error>
</tdml:errors>
</tdml:parserTestCase>
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 a878313..c5a0ed4 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
@@ -189,7 +189,27 @@ class TestSimpleTypes {
@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_dateTimeBin20() { runner.runOneTest("dateTimeBin20") }
+ @Test def test_dateBinBCD() { runner.runOneTest("dateBinBCD") }
+ @Test def test_dateBinBCD2() { runner.runOneTest("dateBinBCD2") }
+ @Test def test_dateBinBCD3() { runner.runOneTest("dateBinBCD3") }
+ @Test def test_dateBinBCD4() { runner.runOneTest("dateBinBCD4") }
+ @Test def test_dateBinBCD5() { runner.runOneTest("dateBinBCD5") }
+ @Test def test_dateBinBCD6() { runner.runOneTest("dateBinBCD6") }
+ @Test def test_dateBinBCD7() { runner.runOneTest("dateBinBCD7") }
+ @Test def test_dateBinBCD8() { runner.runOneTest("dateBinBCD8") }
+ @Test def test_dateBinBCD9() { runner.runOneTest("dateBinBCD9") }
+ @Test def test_timeBinBCD() { runner.runOneTest("timeBinBCD") }
+ @Test def test_timeBinBCD2() { runner.runOneTest("timeBinBCD2") }
+ @Test def test_timeBinBCD3() { runner.runOneTest("timeBinBCD3") }
+ @Test def test_timeBinBCD4() { runner.runOneTest("timeBinBCD4") }
+ @Test def test_timeBinBCD5() { runner.runOneTest("timeBinBCD5") }
+ @Test def test_timeBinBCD6() { runner.runOneTest("timeBinBCD6") }
+ @Test def test_dateTimeBinBCD() { runner.runOneTest("dateTimeBinBCD") }
+ @Test def test_dateTimeBinBCD2() { runner.runOneTest("dateTimeBinBCD2") }
+ @Test def test_dateTimeBinBCD3() { runner.runOneTest("dateTimeBinBCD3") }
+ @Test def test_dateTimeBinBCD4() { runner.runOneTest("dateTimeBinBCD4") }
+ @Test def test_dateBinInvalid() { runner.runOneTest("dateBinInvalid") }
@Test def test_dateTimeImplicitPattern() { runner.runOneTest("dateTimeImplicitPattern") }
@Test def test_dateTimeImplicitPatternFail() { runner.runOneTest("dateTimeImplicitPatternFail") }