예제 #1
0
        public void ExtraCommaAfterLastArrayElementAllowed()
        {
            JsonReader reader = CreateReader("[4,2,]");

            reader.ReadToken(JsonTokenClass.Array);
            Assert.AreEqual(4, reader.ReadNumber().ToInt32());
            Assert.AreEqual(2, reader.ReadNumber().ToInt32());
            reader.ReadToken(JsonTokenClass.EndArray);
        }
예제 #2
0
        public void ArrayValuesMayBeDelimitedBySemiColon()
        {
            JsonReader reader = CreateReader("[1;2;3]");

            reader.ReadToken(JsonTokenClass.Array);
            Assert.AreEqual(1, reader.ReadNumber().ToInt32());
            Assert.AreEqual(2, reader.ReadNumber().ToInt32());
            Assert.AreEqual(3, reader.ReadNumber().ToInt32());
            reader.ReadToken(JsonTokenClass.EndArray);
        }
        public void TailReadingWithNoBufferedMembers()
        {
            JsonReader tail = CreateHelper(@"{ y: 456, x: 123, z: 789 }").GetTailReader();

            Assert.AreEqual("y", tail.ReadMember());
            Assert.AreEqual(456, tail.ReadNumber().ToInt32());
            Assert.AreEqual("x", tail.ReadMember());
            Assert.AreEqual(123, tail.ReadNumber().ToInt32());
            Assert.AreEqual("z", tail.ReadMember());
            Assert.AreEqual(789, tail.ReadNumber().ToInt32());
            tail.ReadToken(JsonTokenClass.EndObject);
            Assert.IsFalse(tail.Read());
        }
예제 #4
0
        public void SlashSlashComment()
        {
            JsonReader reader = CreateReader(@"
            [
                1,
                // 2, this is a single line comment
                3
            ]");

            reader.ReadToken(JsonTokenClass.Array);
            Assert.AreEqual(1, reader.ReadNumber().ToInt32());
            Assert.AreEqual(3, reader.ReadNumber().ToInt32());
            reader.ReadToken(JsonTokenClass.EndArray);
        }
예제 #5
0
        public void HashComment()
        {
            JsonReader reader = CreateReader(@"
            [
                1, # one
                2, # two
                3  # three
            ]");

            reader.ReadToken(JsonTokenClass.Array);
            Assert.AreEqual(1, reader.ReadNumber().ToInt32());
            Assert.AreEqual(2, reader.ReadNumber().ToInt32());
            Assert.AreEqual(3, reader.ReadNumber().ToInt32());
            reader.ReadToken(JsonTokenClass.EndArray);
        }
        public void CannotInitializeWithReaderOnEnd()
        {
            JsonReader reader = JsonText.CreateReader("42");

            reader.ReadNumber();
            new FreeJsonMemberReadingHelper(reader);
        }
        public void TailReading()
        {
            FreeJsonMemberReadingHelper helper = CreateHelper(@"
                { y: 456, 
                  x: 123, 
                  z: 789, 
                  obj1: { foo: bar }, 
                  comment: null, 
                  arr: [ 123, 456, 789 ],
                  obj2: { a: 1, b: 2, }, }");

            Assert.AreEqual(123, helper.ReadMember("x").ReadNumber().ToInt32());
            helper.ReadMember("comment").ReadNull();
            JsonReader reader = helper.BaseReader;

            Assert.AreEqual(JsonTokenClass.Member, reader.TokenClass);
            Assert.AreEqual("arr", reader.Text);
            JsonReader tail = helper.GetTailReader();

            Assert.AreEqual("y", tail.ReadMember());
            Assert.AreEqual(456, tail.ReadNumber().ToInt32());
            Assert.AreEqual("z", tail.ReadMember());
            Assert.AreEqual(789, tail.ReadNumber().ToInt32());
            Assert.AreEqual("obj1", tail.ReadMember());
            tail.ReadToken(JsonTokenClass.Object);
            Assert.AreEqual("foo", tail.ReadMember());
            Assert.AreEqual("bar", tail.ReadString());
            tail.ReadToken(JsonTokenClass.EndObject);
            Assert.AreEqual("arr", tail.ReadMember());
            tail.ReadToken(JsonTokenClass.Array);
            Assert.AreEqual(123, tail.ReadNumber().ToInt32());
            Assert.AreEqual(456, tail.ReadNumber().ToInt32());
            Assert.AreEqual(789, tail.ReadNumber().ToInt32());
            tail.ReadToken(JsonTokenClass.EndArray);
            Assert.AreEqual("obj2", tail.ReadMember());
            tail.StepOut();
            Assert.IsFalse(reader.Read());
        }
예제 #8
0
        public void Export()
        {
            JsonArray    a      = new JsonArray(new object[] { 123, "Hello World", true });
            JsonRecorder writer = new JsonRecorder();

            a.Export(writer);
            JsonReader reader = writer.CreatePlayer();

            reader.ReadToken(JsonTokenClass.Array);
            Assert.AreEqual(a[0], reader.ReadNumber().ToInt32());
            Assert.AreEqual(a[1], reader.ReadString());
            Assert.AreEqual(a[2], reader.ReadBoolean());
            reader.ReadToken(JsonTokenClass.EndArray);
        }
예제 #9
0
        public void Export()
        {
            JsonObject o = new JsonObject();

            o.Put("Number", 123);
            o.Put("String", "Hello World");
            o.Put("Boolean", true);
            JsonRecorder writer = new JsonRecorder();

            o.Export(writer);
            JsonReader reader = writer.CreatePlayer();

            reader.ReadToken(JsonTokenClass.Object);
            string[] members = (string[])o.GetNamesArray().ToArray(typeof(string));
            Assert.AreEqual(members[0], reader.ReadMember());
            Assert.AreEqual(o[members[0]], reader.ReadNumber().ToInt32());
            Assert.AreEqual(members[1], reader.ReadMember());
            Assert.AreEqual(o[members[1]], reader.ReadString());
            Assert.AreEqual(members[2], reader.ReadMember());
            Assert.AreEqual(o[members[2]], reader.ReadBoolean());
            Assert.AreEqual(JsonTokenClass.EndObject, reader.TokenClass);
        }