public void MissingObjectMemberNameValueDelimiter() { JsonReader reader = CreateReader("{x 1}"); reader.MoveToContent(); reader.StepOut(); }
public void MissingObjectMember() { JsonReader reader = CreateReader("{x:1,/*y:2*/,z:3}"); reader.MoveToContent(); reader.StepOut(); }
public void UnterminatedArray() { JsonReader reader = CreateReader("[1,2"); reader.MoveToContent(); reader.StepOut(); }
public void UnterminatedObject() { JsonReader reader = CreateReader("{x:1,y:2"); reader.MoveToContent(); reader.StepOut(); }
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()); }
private static object ReadParameters(Method method, JsonReader reader, ImportContext importContext) { Debug.Assert(method != null); Debug.Assert(reader != null); Debug.Assert(importContext != null); reader.MoveToContent(); Parameter[] parameters = method.GetParameters(); if (reader.TokenClass == JsonTokenClass.Array) { reader.Read(); ArrayList argList = new ArrayList(parameters.Length); // TODO: This loop could bomb when more args are supplied that parameters available. for (int i = 0; i < parameters.Length && reader.TokenClass != JsonTokenClass.EndArray; i++) argList.Add(importContext.Import(parameters[i].ParameterType, reader)); reader.StepOut(); return argList.ToArray(); } else if (reader.TokenClass == JsonTokenClass.Object) { reader.Read(); JsonObject argByName = new JsonObject(); while (reader.TokenClass != JsonTokenClass.EndObject) { // TODO: Imporve this lookup. // FIXME: Does not work when argument is positional. Type parameterType = AnyType.Value; string name = reader.ReadMember(); foreach (Parameter parameter in parameters) { if (parameter.Name.Equals(name)) { parameterType = parameter.ParameterType; break; } } argByName.Put(name, importContext.Import(parameterType, reader)); } reader.Read(); return argByName; } else { return importContext.Import(reader); } }