예제 #1
0
        protected T DeserializeUsingNewtonsoftReader <T>(byte[] bson, bool mustBeNested = false)
        {
            using (var memoryStream = new MemoryStream(bson))
                //using (var newtonsoftReader = new Newtonsoft.Json.Bson.BsonDataReader(memoryStream))
                using (var reader = new BsonBinaryReader(memoryStream))
                    using (var newtonsoftReader = new BsonReaderAdapter(reader))
                    {
                        //newtonsoftReader.DateTimeKindHandling = System.DateTimeKind.Utc;
                        newtonsoftReader.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc;

                        if (mustBeNested)
                        {
                            newtonsoftReader.Read(); // StartObject
                            newtonsoftReader.Read(); // PropertyName
                        }
                        newtonsoftReader.Read();     // Json.NET serializers expect caller to have already called Read

                        var newtonsoftSerializer = new Newtonsoft.Json.JsonSerializer();
                        var value = newtonsoftSerializer.Deserialize <T>(newtonsoftReader);

                        if (mustBeNested)
                        {
                            newtonsoftReader.Read(); // EndObject
                        }

                        return(value);
                    }
        }
예제 #2
0
 protected T ReadJsonUsingWrappedJsonReader <T>(Newtonsoft.Json.JsonConverter converter, string json, bool mustBeNested = false)
 {
     using (var wrappedReader = new JsonReader(json))
         using (var reader = new BsonReaderAdapter(wrappedReader))
         {
             return(ReadJson <T>(converter, reader, mustBeNested));
         }
 }
예제 #3
0
        public void constructor_should_initialize_instance()
        {
            var wrappedReader = Substitute.For <IBsonReader>();

            var result = new BsonReaderAdapter(wrappedReader);

            result.Should().BeOfType <BsonReaderAdapter>();
        }
예제 #4
0
        public void Close_should_close_wrapped_reader_when_CloseInput_is_true(bool closeInput)
        {
            var wrappedReader = Substitute.For <IBsonReader>();
            var subject       = new BsonReaderAdapter(wrappedReader);

            subject.CloseInput = closeInput;

            subject.Close();

            wrappedReader.Received(closeInput ? 1 : 0).Close();
        }
예제 #5
0
        public void constructor_should_initialize_instance()
        {
            var wrappedReader = Substitute.For <IBsonReader>();

            var result = new BsonReaderAdapter(wrappedReader);

            result.BsonValue.Should().BeNull();
            result.Depth.Should().Be(0);
            result.TokenType.Should().Be(Newtonsoft.Json.JsonToken.None);
            result.Value.Should().BeNull();
            result.BsonValue.Should().BeNull();
        }
예제 #6
0
        protected T ReadJsonUsingWrappedBsonReader <T>(Newtonsoft.Json.JsonConverter converter, byte[] bson, bool mustBeNested = false, GuidRepresentation guidRepresentation = GuidRepresentation.CSharpLegacy)
        {
            var readerSettings = new BsonBinaryReaderSettings {
                GuidRepresentation = guidRepresentation
            };

            using (var stream = new MemoryStream(bson))
                using (var wrappedReader = new BsonBinaryReader(stream, readerSettings))
                    using (var reader = new BsonReaderAdapter(wrappedReader))
                    {
                        return(ReadJson <T>(converter, reader, mustBeNested));
                    }
        }
예제 #7
0
        public void Read_should_return_false_when_wrapped_reader_state_is_Done()
        {
            var document      = new BsonDocument();
            var wrappedReader = new BsonDocumentReader(document);
            var subject       = new BsonReaderAdapter(wrappedReader);

            subject.Read(); // StartObject
            subject.Read(); // EndObject
            wrappedReader.State.Should().Be(BsonReaderState.Done);

            var result = subject.Read();

            result.Should().BeFalse();
        }