Example #1
0
        public void WriteSingleTimestamp()
        {
            using (var stream = new MemoryStream())
              using (var reader = new BinaryReader(stream))
              {
            var root = new BSONDocument();
            var now = new DateTime(635000000000000000).ToUniversalTime();
            var stamp = new BSONTimestamp(now, 123);
            root.Set(new BSONTimestampElement("stamp", stamp));
            root.WriteAsBSON(stream);

            Assert.AreEqual(stream.Position, 20); // ensure document length is 20 bytes

            stream.Seek(0, SeekOrigin.Begin);

            CollectionAssert.AreEqual(reader.ReadBytes(4), BitConverter.GetBytes(20));       // content length is 20
            Assert.AreEqual(reader.ReadByte(), (byte) BSONElementType.TimeStamp);            // element type is TimeStamp 0x11
            CollectionAssert.AreEqual(reader.ReadBytes(5), Encoding.UTF8.GetBytes("stamp")); // element name is 'now'
            Assert.AreEqual(reader.ReadByte(), (byte) 0x00);                                 // string name terminator 0x00 is present
            CollectionAssert.AreEqual(reader.ReadBytes(4), BitConverter.GetBytes(123));      // increment is correct
            CollectionAssert.AreEqual(reader.ReadBytes(4), BitConverter.GetBytes((int)now.ToSecondsSinceUnixEpochStart())); // datetime is correct
            Assert.AreEqual(reader.ReadByte(), (byte) 0x00);                                 // last byte is terminator 0x00

            Assert.AreEqual(stream.Position, 20); // ensure whole document readed
              }
        }
Example #2
0
 /// <summary>
 /// { stamp: <seconds since Unix epoch to DateTime from 635000000000000000 ticks with 123 increment> }
 /// </summary>
 public void WriteSingleTimestamp(Stream stream)
 {
     var root = new BSONDocument();
       var now = new DateTime(635000000000000000, DateTimeKind.Utc);
       var stamp = new BSONTimestamp(now, 123);
       root.Set(new BSONTimestampElement("stamp", stamp));
       root.WriteAsBSON(stream);
 }