Beispiel #1
0
        public void NameInequality()
        {
            NamedJsonBuffer nb1 = new NamedJsonBuffer("foo", JsonBuffer.From("bar"));
            NamedJsonBuffer nb2 = new NamedJsonBuffer("FOO", JsonBuffer.From("bar"));

            Assert.AreNotEqual(nb1, nb2);
        }
        public void Equality()
        {
            var nb1 = new NamedJsonBuffer("foo", JsonBuffer.From("bar"));
            var nb2 = new NamedJsonBuffer("foo", JsonBuffer.From("bar"));

            Assert.AreEqual(nb1, nb2);
        }
Beispiel #3
0
        public void Initialzation()
        {
            NamedJsonBuffer nb = new NamedJsonBuffer("foo", JsonBuffer.From("bar"));

            Assert.AreEqual("foo", nb.Name);
            Assert.AreEqual("bar", nb.Buffer.GetString());
        }
Beispiel #4
0
        public NamedJsonBuffer[] GetMembersArray()
        {
            var members = new NamedJsonBuffer[GetMemberCount()];

            GetMembers(members);
            return(members);
        }
Beispiel #5
0
        public void GetMembersIntoShortArray()
        {
            var members = new NamedJsonBuffer[2];
            var count   = JsonBuffer.From("{a:1,b:2,c:3}").GetMembers(members);

            Assert.AreEqual(~2, count);
            Assert.AreEqual("a", members[0].Name);
            Assert.AreEqual(1, (int)members[0].Buffer.GetNumber());
            Assert.AreEqual("b", members[1].Name);
            Assert.AreEqual(2, (int)members[1].Buffer.GetNumber());
        }
Beispiel #6
0
        public void GetMembersIntoArray()
        {
            NamedJsonBuffer[] members = new NamedJsonBuffer[3];
            int count = JsonBuffer.From("{a:1,b:2,c:3}").GetMembers(members);

            Assert.AreEqual(3, count);
            Assert.AreEqual("a", members[0].Name);
            Assert.AreEqual(1, (int)members[0].Buffer.GetNumber());
            Assert.AreEqual("b", members[1].Name);
            Assert.AreEqual(2, (int)members[1].Buffer.GetNumber());
            Assert.AreEqual("c", members[2].Name);
            Assert.AreEqual(3, (int)members[2].Buffer.GetNumber());
        }
Beispiel #7
0
        public void ToObject()
        {
            JsonBuffer obj = NamedJsonBuffer.ToObject(
                new NamedJsonBuffer("foo", JsonBuffer.From("bar")),
                new NamedJsonBuffer("qux", JsonBuffer.From("quux")));

            Assert.AreEqual(6, obj.Length);
            Assert.AreEqual(JsonToken.Object(), obj[0]);
            Assert.AreEqual(JsonToken.Member("foo"), obj[1]);
            Assert.AreEqual(JsonToken.String("bar"), obj[2]);
            Assert.AreEqual(JsonToken.Member("qux"), obj[3]);
            Assert.AreEqual(JsonToken.String("quux"), obj[4]);
            Assert.AreEqual(JsonToken.EndObject(), obj[5]);
        }
Beispiel #8
0
        public void GetMembersIntoLongArray()
        {
            var members = new NamedJsonBuffer[4];
            var count   = JsonBuffer.From("{a:1,b:2,c:3}").GetMembers(members);

            Assert.AreEqual(3, count);
            Assert.AreEqual("a", members[0].Name);
            Assert.AreEqual(1, (int)members[0].Buffer.GetNumber());
            Assert.AreEqual("b", members[1].Name);
            Assert.AreEqual(2, (int)members[1].Buffer.GetNumber());
            Assert.AreEqual("c", members[2].Name);
            Assert.AreEqual(3, (int)members[2].Buffer.GetNumber());
            Assert.IsTrue(members[3].IsEmpty);
        }
Beispiel #9
0
        public int GetMembers(NamedJsonBuffer[] members, int index, int count)
        {
            if (index < 0)
            {
                throw new ArgumentOutOfRangeException("index", index, null);
            }

            JsonBufferReader reader = CreateReader();

            if (!reader.MoveToContent())
            {
                throw new JsonException("Unexpected EOF.");
            }

            if (reader.TokenClass == JsonTokenClass.Null)
            {
                return(0);
            }

            reader.ReadToken(JsonTokenClass.Object);
            int readCount = 0;

            while (reader.TokenClass == JsonTokenClass.Member)
            {
                if (count-- == 0)
                {
                    return(~readCount);
                }

                if (members != null)
                {
                    members[index++] = new NamedJsonBuffer(reader.Text, reader.BufferValue());
                }
                else
                {
                    reader.Skip();
                }

                readCount++;
            }

            return(readCount);
        }
        private JsonBuffer TryPopBufferedMember(string name)
        {
            if (HasBufferedMembers)
            {
                NamedJsonBufferList members = _members;
                for (int i = 0; i < members.Count; i++)
                {
                    NamedJsonBuffer member = (NamedJsonBuffer)members[i];
                    if (string.CompareOrdinal(member.Name, name) == 0)
                    {
                        members.RemoveAt(i);
                        if (members.Count == 0)
                        {
                            _members = null;
                        }
                        return(member.Buffer);
                    }
                }
            }

            return(JsonBuffer.Empty);
        }
Beispiel #11
0
        public int GetMembers(NamedJsonBuffer[] members, int index, int count)
        {
            if (index < 0)
                throw new ArgumentOutOfRangeException("index", index, null);

            JsonBufferReader reader = CreateReader();

            if (!reader.MoveToContent())
                throw new JsonException("Unexpected EOF.");

            if (reader.TokenClass == JsonTokenClass.Null)
                return 0;

            reader.ReadToken(JsonTokenClass.Object);
            int readCount = 0;

            while (reader.TokenClass == JsonTokenClass.Member)
            {
                if (count-- == 0)
                    return ~readCount;

                if (members != null)
                    members[index++] = new NamedJsonBuffer(reader.Text, reader.BufferValue());
                else
                    reader.Skip();

                readCount++;
            }

            return readCount;
        }
Beispiel #12
0
 public int GetMembers(NamedJsonBuffer[] members)
 {
     return GetMembers(members, 0, members != null ? members.Length : int.MaxValue);
 }
            protected override JsonToken ReadTokenImpl()
            {
                JsonReader baseReader = _reader;

                int index = _index;

                if (index < 0)
                {
                    //
                    // If the base reader was never started then do it now.
                    // Check for zero depth is the same as BOF.
                    //
                    if (baseReader.Depth == 0)
                    {
                        baseReader.ReadToken(JsonTokenClass.Object);
                        _innerDepth = baseReader.Depth;
                    }

                    _index = 0;
                    return(JsonToken.Object());
                }

                //
                // Buffered members, if any, get served first.
                //

                NamedJsonBufferList bufferedMembers = _bufferedMembers;

                if (bufferedMembers != null && index < bufferedMembers.Count)
                {
                    //
                    // Is there a value to serve?
                    //

                    JsonBuffer value = _memberValue;
                    if (!value.IsEmpty)
                    {
                        if (value.IsStructured) // JSON Array or Object
                        {
                            //
                            // Get a reader on the structured (array or
                            // object) value if not already acquired.
                            //

                            JsonReader valueReader = _memberStructuredValueReader;
                            if (valueReader == null)
                            {
                                valueReader = _memberStructuredValueReader = value.CreateReader();
                            }

                            //
                            // Serve tokens from the value reader until OEF.
                            //

                            if (valueReader.Read())
                            {
                                return(valueReader.Token);
                            }

                            //
                            // Proceed with next.
                            //

                            _memberValue = JsonBuffer.Empty;
                            _memberStructuredValueReader = null;
                            _index++;
                            return(ReadTokenImpl());
                        }
                        else // JSON Null, Boolean, Number or String
                        {
                            Debug.Assert(value.IsNull || value.IsScalar);

                            //
                            // Establish state to proceed with next and
                            // serve token pertaining to scalar value.
                            //

                            _memberValue = JsonBuffer.Empty;
                            _index++;

                            return(value.IsNull
                                       ? JsonToken.Null()
                                       : value.CreateReader().Token);
                        }
                    }

                    //
                    // Serve buffered member name and establish state so
                    // that the value will be served next.
                    //

                    NamedJsonBuffer member = (NamedJsonBuffer)bufferedMembers[index];
                    _memberValue = member.Buffer;
                    return(JsonToken.Member(member.Name));
                }

                //
                // Done with buffered members so now move on to remaining
                // members from the underlying reader.
                //

                if (baseReader == null)
                {
                    return(JsonToken.EOF()); // Done with serving
                }
                //
                // If base reader is on the object end at the same depth as
                // on entry then serve the last end token. The reader is
                // released so that on next read, the above will signal EOF.
                //

                if (baseReader.Depth == _innerDepth &&
                    baseReader.TokenClass == JsonTokenClass.EndObject)
                {
                    _reader = null;
                }

                //
                // Move through the base reader.
                //

                JsonToken token = baseReader.Token;

                baseReader.Read();
                return(token);
            }
Beispiel #14
0
 public void Equality()
 {
     NamedJsonBuffer nb1 = new NamedJsonBuffer("foo", JsonBuffer.From("bar"));
     NamedJsonBuffer nb2 = new NamedJsonBuffer("foo", JsonBuffer.From("bar"));
     Assert.AreEqual(nb1, nb2);
 }
Beispiel #15
0
 public void Initialzation()
 {
     NamedJsonBuffer nb = new NamedJsonBuffer("foo", JsonBuffer.From("bar"));
     Assert.AreEqual("foo", nb.Name);
     Assert.AreEqual("bar", nb.Buffer.GetString());
 }
Beispiel #16
0
 public NamedJsonBuffer[] GetMembersArray()
 {
     NamedJsonBuffer[] members = new NamedJsonBuffer[GetMemberCount()];
     GetMembers(members);
     return members;
 }
Beispiel #17
0
 public void GetMembersIntoShortArray()
 {
     NamedJsonBuffer[] members = new NamedJsonBuffer[2];
     int count = JsonBuffer.From("{a:1,b:2,c:3}").GetMembers(members);
     Assert.AreEqual(~2, count);
     Assert.AreEqual("a", members[0].Name);
     Assert.AreEqual(1, (int) members[0].Buffer.GetNumber());
     Assert.AreEqual("b", members[1].Name);
     Assert.AreEqual(2, (int) members[1].Buffer.GetNumber());
 }
Beispiel #18
0
 public void GetMembersIntoLongArray()
 {
     NamedJsonBuffer[] members = new NamedJsonBuffer[4];
     int count = JsonBuffer.From("{a:1,b:2,c:3}").GetMembers(members);
     Assert.AreEqual(3, count);
     Assert.AreEqual("a", members[0].Name);
     Assert.AreEqual(1, (int) members[0].Buffer.GetNumber());
     Assert.AreEqual("b", members[1].Name);
     Assert.AreEqual(2, (int) members[1].Buffer.GetNumber());
     Assert.AreEqual("c", members[2].Name);
     Assert.AreEqual(3, (int) members[2].Buffer.GetNumber());
     Assert.IsTrue(members[3].IsEmpty);
 }
Beispiel #19
0
 public bool Equals(NamedJsonBuffer other)
 {
     return(Name == other.Name && Buffer.Equals(other.Buffer));
 }
Beispiel #20
0
 public bool Equals(NamedJsonBuffer other)
 {
     return Name == other.Name && Buffer.Equals(other.Buffer);
 }