public void ser_deser_datetimenullable_dateset()
        {
            var obj = new DateTimeNullable()
            {
                Id = "my_id",
                NullableDateTime = DateTime.Parse("10/30/2013 4:55 PM")
            };

            var truth = new Datum
            {
                type = Datum.DatumType.R_OBJECT
            };

            truth.r_object.Add(new Datum.AssocPair
            {
                key = "Id",
                val = new Datum
                {
                    type  = Datum.DatumType.R_STR,
                    r_str = "my_id"
                }
            });
            truth.r_object.Add(new Datum.AssocPair
            {
                key = "NullableDateTime",
                val = new Datum
                {
                    type     = Datum.DatumType.R_OBJECT,
                    r_object =
                    {
                        new Datum.AssocPair {
                            key = "$reql_type$", val = new Datum{
                                type = Datum.DatumType.R_STR, r_str = "TIME"
                            }
                        },
                        new Datum.AssocPair {
                            key = "epoch_time", val = new Datum{
                                type = Datum.DatumType.R_NUM, r_num = 1383152100
                            }
                        },
                        new Datum.AssocPair {
                            key = "timezone", val = new Datum{
                                type = Datum.DatumType.R_STR, r_str = "+00:00"
                            }
                        },
                    }
                }
            });

            //ser test
            var ser = DatumConvert.SerializeObject(obj);

            ser.ShouldBeEquivalentTo(truth);

            //deser test
            var newtonObj = DatumConvert.DeserializeObject <DateTimeNullable>(truth);

            newtonObj.ShouldBeEquivalentTo(obj);
        }
        public void ser_deser_datetimenullable_nullset()
        {
            var obj = new DateTimeNullable()
            {
                Id = "my_id",
                NullableDateTime = null
            };

            var truth = new Datum
            {
                type = Datum.DatumType.R_OBJECT
            };

            truth.r_object.Add(new Datum.AssocPair
            {
                key = "Id",
                val = new Datum
                {
                    type  = Datum.DatumType.R_STR,
                    r_str = "my_id"
                }
            });
            truth.r_object.Add(new Datum.AssocPair
            {
                key = "NullableDateTime",
                val = new Datum
                {
                    type = Datum.DatumType.R_NULL,
                }
            });

            //ser test
            var ser = DatumConvert.SerializeObject(obj);

            ser.ShouldBeEquivalentTo(truth);

            //deser test
            var newtonObj = DatumConvert.DeserializeObject <DateTimeNullable>(truth);

            newtonObj.ShouldBeEquivalentTo(obj);
        }