@@ -56,6 +56,38 @@ public void TestDecodeDate() {
5656 Assert . AreEqual ( 0 , dateTime . Millisecond ) ;
5757 }
5858
59+ [ Test ]
60+ public void TestDecodeImproperDate ( ) {
61+ IDictionary < string , object > value = new Dictionary < string , object > ( ) {
62+ { "__type" , "Date" } ,
63+ { "iso" , "1990-08-30T12:03:59.0Z" }
64+ } ;
65+
66+ DateTime dateTime = ( DateTime ) ParseDecoder . Instance . Decode ( value ) ;
67+ Assert . AreEqual ( 1990 , dateTime . Year ) ;
68+ Assert . AreEqual ( 8 , dateTime . Month ) ;
69+ Assert . AreEqual ( 30 , dateTime . Day ) ;
70+ Assert . AreEqual ( 12 , dateTime . Hour ) ;
71+ Assert . AreEqual ( 3 , dateTime . Minute ) ;
72+ Assert . AreEqual ( 59 , dateTime . Second ) ;
73+ Assert . AreEqual ( 0 , dateTime . Millisecond ) ;
74+
75+ // Test multiple trailing zeroes
76+ value = new Dictionary < string , object > ( ) {
77+ { "__type" , "Date" } ,
78+ { "iso" , "1990-08-30T12:03:59.00Z" }
79+ } ;
80+
81+ dateTime = ( DateTime ) ParseDecoder . Instance . Decode ( value ) ;
82+ Assert . AreEqual ( 1990 , dateTime . Year ) ;
83+ Assert . AreEqual ( 8 , dateTime . Month ) ;
84+ Assert . AreEqual ( 30 , dateTime . Day ) ;
85+ Assert . AreEqual ( 12 , dateTime . Hour ) ;
86+ Assert . AreEqual ( 3 , dateTime . Minute ) ;
87+ Assert . AreEqual ( 59 , dateTime . Second ) ;
88+ Assert . AreEqual ( 0 , dateTime . Millisecond ) ;
89+ }
90+
5991 [ Test ]
6092 public void TestDecodeBytes ( ) {
6193 IDictionary < string , object > value = new Dictionary < string , object > ( ) {
0 commit comments