+2006-09-05 Raja R Harinath <rharinath@novell.com>
+
+ Fix #79159
+ * ObjectWriter.cs (WritePrimitiveTypeArray) [NET_2_0]: Encode the
+ 'Kind' of each DateTime.
+ * ObjectReader.cs (ReadArrayOfPrimitiveType) [NET_2_0]: Decode the
+ 'Kind' of each DateTime.
+
2005-12-07 Sebastien Pouliot <sebastien@ximian.com>
* BinaryFormatter.cs: Implemented UnsafeDeserialize and
\r
case TypeCode.DateTime: {\r
DateTime[] arr = new DateTime [length];\r
- for (int n = 0; n < length; n++) arr [n] = new DateTime (reader.ReadInt64());\r
+ for (int n = 0; n < length; n++) {\r
+ ulong nr = reader.ReadUInt64 ();\r
+ const ulong mask = (1ul << 62) - 1;\r
+ long ticks = (long) (nr & mask);\r
+#if NET_2_0\r
+ DateTimeKind kind = (DateTimeKind) (nr >> 62);\r
+ arr [n] = new DateTime (ticks, kind);\r
+#else\r
+ arr [n] = new DateTime (ticks);\r
+#endif\r
+ }\r
val = arr;\r
break;\r
}\r
break;\r
\r
case TypeCode.DateTime: \r
- foreach (DateTime item in (DateTime[]) array)\r
- writer.Write (item.Ticks);\r
+ foreach (DateTime item in (DateTime[]) array) {\r
+ ulong val = (ulong) item.Ticks;\r
+#if NET_2_0\r
+ val |= ((ulong) item.Kind) << 62;\r
+#endif\r
+ writer.Write (val);\r
+ }\r
break;\r
\r
case TypeCode.Decimal:\r
Assert.AreEqual (Int32.MinValue, clone.Integer, "Integer");
Assert.IsFalse (clone.Boolean, "Boolean");
}
+
+ [Test]
+ public void DateTimeArray ()
+ {
+ DateTime [] e = new DateTime [6];
+ string [] names = new string [6];
+
+ names [0] = "Today"; e [0] = DateTime.Today;
+ names [1] = "Min"; e [1] = DateTime.MinValue;
+ names [2] = "Max"; e [2] = DateTime.MaxValue;
+ names [3] = "BiCent"; e [3] = new DateTime (1976, 07, 04);
+ names [4] = "Now"; e [4] = DateTime.Now;
+ names [5] = "UtcNow"; e [5] = DateTime.UtcNow;
+
+ BinaryFormatter bf = new BinaryFormatter ();
+ MemoryStream ms = new MemoryStream ();
+
+ bf.Serialize (ms, e);
+
+ ms.Position = 0;
+ DateTime [] a = (DateTime []) bf.Deserialize (ms);
+
+ Assert.AreEqual (e.Length, a.Length);
+ for (int i = 0; i < e.Length; ++i)
+ Assert.AreEqual (e [i], a [i], names [i]);
+ }
}
}
+2006-09-05 Raja R Harinath <rharinath@novell.com>
+
+ * BinaryFormatterTest.cs (DateTimeArray): New test for
+ round-tripping DateTime arrays.
+
2005-12-07 Sebastien Pouliot <sebastien@ximian.com>
* BinaryFormatterCas.cs: New. Partial CAS tests for BinaryFormatter.