stevedlawrence commented on a change in pull request #70: Adding property
binaryCalendarRep with values "binarySeconds" and "bi…
URL: https://github.com/apache/incubator-daffodil/pull/70#discussion_r190666278
##########
File path:
daffodil-test/src/test/resources/org/apache/daffodil/section05/simple_types/SimpleTypes.tdml
##########
@@ -1951,6 +1966,87 @@
</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+00:00</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"
Review comment:
The following code makes it look like the actual date range is huge:
```
> val format = new java.text.SimpleDateFormat("MMM dd HH:mm:ss yyyy G")
> format.setTimeZone(java.util.TimeZone.getTimeZone("UTC"))
> val cal = java.util.Calendar.getInstance()
> cal.setTimeInMillis(Long.MaxValue)
> format.format(cal.getTime())
Sun Aug 17 02:12:55 EST 292278994 AD
> cal.setTimeInMillis(Long.MinValue)
> format.format(cal.getTime())
Sun Dec 02 11:47:04 EST 292269055 BC
```
So the min/max dates since the unix epoc are nearly 300 million years in the
past and future. That's a huge timespan--seems like a very reasonable
restriction to say we don't support dates before or after that. I wonder if
dates that large even work with our text parsing stuff, I'd guess not.
So I'd vote for option 3, if the number of milliseconds since
dfdl:binaryCalendarEpoch is greater or less than Long.MaxLong/MinLong, that
should just be an error.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services