Ejemplo n.º 1
0
        public void Issue26()
        {
            // 1. Create JsonBuffer from array with objects
            JsonBuffer buffer = JsonBuffer.From(@"[{},{a:{},b:{}}]");
            // 2. Create reader from the buffer...
            JsonBufferReader reader = buffer.CreateReader();

            //    ...read in the first object
            while (reader.TokenClass != JsonTokenClass.Object)
            {
                reader.Read();
            }
            reader.Read(); // Read Object token
            reader.Read(); // Read EndObject token

            //    ...create a subbuffer to buffer the next object
            JsonBuffer subBuffer = JsonBuffer.From(reader);
            //    ...create reader from the subbuffer
            JsonBufferReader reader2 = subBuffer.CreateReader();

            // 3. Call reader.BufferValue() this should break
            JsonBuffer buffer2 = reader2.BufferValue();

            Assert.IsTrue(buffer2.IsObject);
        }
Ejemplo n.º 2
0
        private static void AssertBufferedValueScalarOrNull(JsonToken expected, JsonBufferWriter writer)
        {
            JsonBuffer       buffer = writer.GetBuffer();
            JsonBufferReader reader = buffer.CreateReader();

            reader.Read();
            reader.Read();
            JsonBuffer value = reader.BufferValue();

            if (expected.Class == JsonTokenClass.Null)
            {
                Assert.IsTrue(value.IsNull);
            }
            else
            {
                Assert.IsTrue(value.IsScalar);
            }
            JsonBufferReader vr = value.CreateReader();

            Assert.AreEqual(1, vr.Depth);
            Assert.AreEqual(expected, vr.Token);
            vr.Read();
            vr.ReadToken(JsonTokenClass.EndArray);
            Assert.IsTrue(vr.EOF);
        }
Ejemplo n.º 3
0
        public void BufferValueOnEOF()
        {
            JsonBufferWriter writer = new JsonBufferWriter();

            writer.WriteFromReader(JsonText.CreateReader("[]"));
            JsonBufferReader reader = writer.GetBuffer().CreateReader();

            reader.Read(); // array start
            reader.Read(); // array end
            Assert.IsTrue(reader.BufferValue().IsEmpty);
        }
Ejemplo n.º 4
0
        public void BufferValueOnMember()
        {
            JsonBufferWriter writer = new JsonBufferWriter();

            writer.WriteFromReader(JsonText.CreateReader("{foo:bar}"));
            JsonBufferReader reader = writer.GetBuffer().CreateReader();

            reader.Read(); // object start
            reader.Read(); // foo
            Assert.AreEqual(JsonToken.String("bar"), reader.BufferValue().CreateReader().Token);
        }
Ejemplo n.º 5
0
        public void BufferScalarValue()
        {
            JsonBufferWriter writer = new JsonBufferWriter();

            writer.WriteString("foobar");
            JsonBuffer       buffer = writer.GetBuffer();
            JsonBufferReader reader = buffer.CreateReader();

            reader.Read(); // array start
            reader.Read(); // string
            Assert.AreEqual("foobar", reader.BufferValue().CreateReader().BufferValue().CreateReader().ReadString());
        }
Ejemplo n.º 6
0
        public void BufferValueOnObjectEnd()
        {
            JsonBufferWriter writer = new JsonBufferWriter();

            writer.WriteFromReader(JsonText.CreateReader("[{},foo]"));
            JsonBufferReader reader = writer.GetBuffer().CreateReader();

            reader.Read(); // outer object start
            reader.Read(); // inner object start
            reader.Read(); // inner object end
            Assert.AreEqual(JsonToken.String("foo"), reader.BufferValue()[0]);
        }
Ejemplo n.º 7
0
        public static JsonBuffer From(JsonReader reader)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            JsonBufferReader bufferReader = reader as JsonBufferReader;

            if (bufferReader != null)
            {
                return(bufferReader.BufferValue());
            }

            if (!reader.MoveToContent())
            {
                return(Empty);
            }

            if (reader.TokenClass == JsonTokenClass.Member)
            {
                reader.Read();
            }

            bool structured = reader.TokenClass == JsonTokenClass.Array ||
                              reader.TokenClass == JsonTokenClass.Object;

            JsonBufferWriter writer = new JsonBufferWriter();

            writer.MaxDepth = reader.MaxDepth;
            writer.WriteFromReader(reader);
            JsonBuffer buffer = writer.GetBuffer();

            if (!structured)
            {
                bufferReader = buffer.CreateReader();
                bufferReader.MoveToContent();
                bufferReader.Read();
                buffer = bufferReader.BufferValue();
            }

            return(buffer);
        }