public void ReadJson_should_return_expected_result_when_using_wrapped_bson_reader(string json, long?nullableMillisecondsSinceEpoch)
        {
            var subject        = new BsonDateTimeConverter();
            var expectedResult = nullableMillisecondsSinceEpoch == null ? null : new BsonDateTime(nullableMillisecondsSinceEpoch.Value);

            var result = ReadJsonUsingWrappedBsonReader <BsonDateTime>(subject, ToBson(json), mustBeNested: true);

            result.Should().Be(expectedResult);
        }
        public void WriteJson_should_have_expected_result_when_using_wrapped_json_writer(long?nullableMillisecondsSinceEpoch, string expectedResult)
        {
            var subject = new BsonDateTimeConverter();
            var value   = nullableMillisecondsSinceEpoch == null ? null : new BsonDateTime(nullableMillisecondsSinceEpoch.Value);

            var result = WriteJsonUsingWrappedJsonWriter(subject, value);

            result.Should().Be(expectedResult);
        }
        public void ReadJson_should_return_expected_result_when_using_native_json_reader(string json, long?nullableMillisecondsSinceEpoch)
        {
            var subject        = new BsonDateTimeConverter();
            var expectedResult = nullableMillisecondsSinceEpoch == null ? null : new BsonDateTime(nullableMillisecondsSinceEpoch.Value);

            var result = ReadJsonUsingNativeJsonReader <BsonDateTime>(subject, json);

            result.Should().Be(expectedResult);
        }
        public void ReadJson_should_throw_when_token_type_is_invalid()
        {
            var subject = new BsonDateTimeConverter();
            var json    = "undefined";

            Action action = () => { var _ = ReadJsonUsingNativeJsonReader <BsonDateTime>(subject, json); };

            action.ShouldThrow <Newtonsoft.Json.JsonReaderException>();
        }
        public void WriteJson_should_have_expected_result_when_using_native_bson_writer(long?nullableMillisecondsSinceEpoch, string expectedResult)
        {
            var subject = new BsonDateTimeConverter();
            var value   = nullableMillisecondsSinceEpoch == null ? null : new BsonDateTime(nullableMillisecondsSinceEpoch.Value);

            var result = WriteJsonUsingNativeBsonWriter(subject, value, mustBeNested: true);

            result.Should().Equal(ToBson(expectedResult));
        }
        public void ReadJson_should_return_expected_result_when_using_native_json_reader(string json, long? nullableMillisecondsSinceEpoch)
        {
            var subject = new BsonDateTimeConverter();
            var expectedResult = nullableMillisecondsSinceEpoch == null ? null : new BsonDateTime(nullableMillisecondsSinceEpoch.Value);

            var result = ReadJsonUsingNativeJsonReader<BsonDateTime>(subject, json);

            result.Should().Be(expectedResult);
        }
        public void ReadJson_should_return_expected_result_when_using_wrapped_bson_reader(string json, long? nullableMillisecondsSinceEpoch)
        {
            var subject = new BsonDateTimeConverter();
            var expectedResult = nullableMillisecondsSinceEpoch == null ? null : new BsonDateTime(nullableMillisecondsSinceEpoch.Value);

            var result = ReadJsonUsingWrappedBsonReader<BsonDateTime>(subject, ToBson(json), mustBeNested: true);

            result.Should().Be(expectedResult);
        }
        public void WriteJson_should_have_expected_result_when_using_wrapped_json_writer(long? nullableMillisecondsSinceEpoch, string expectedResult)
        {
            var subject = new BsonDateTimeConverter();
            var value = nullableMillisecondsSinceEpoch == null ? null : new BsonDateTime(nullableMillisecondsSinceEpoch.Value);

            var result = WriteJsonUsingWrappedJsonWriter(subject, value);

            result.Should().Be(expectedResult);
        }
        public void WriteJson_should_have_expected_result_when_using_native_bson_writer(long? nullableMillisecondsSinceEpoch, string expectedResult)
        {
            var subject = new BsonDateTimeConverter();
            var value = nullableMillisecondsSinceEpoch == null ? null : new BsonDateTime(nullableMillisecondsSinceEpoch.Value);

            var result = WriteJsonUsingNativeBsonWriter(subject, value, mustBeNested: true);

            result.Should().Equal(ToBson(expectedResult));
        }
        public void ReadJson_should_throw_when_token_type_is_invalid()
        {
            var subject = new BsonDateTimeConverter();
            var json = "undefined";

            Action action = () => { var _ = ReadJsonUsingNativeJsonReader<BsonDateTime>(subject, json); };

            action.ShouldThrow<Newtonsoft.Json.JsonReaderException>();
        }