public void Analyze_EmptyInput_ReturnsNothing() { var input = Enumerable.Empty <Token <ModelTokenType> >(); var analyzer = new ModelAnalyzer(new DataReaderSettings()); Assert.False(analyzer.Analyze <object>(input).Any()); }
public void IsArray_StringPrimitive_ReturnsFalse() { var input = new[] { ModelGrammar.TokenPrimitive("Hello.") }; Assert.False(input.IsArray()); }
public void IsArray_FalsePrimitive_ReturnsFalse() { var input = new[] { ModelGrammar.TokenFalse }; Assert.False(input.IsArray()); }
public void IsArray_ObjectEmpty_ReturnsFalse() { var input = new[] { ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenObjectEnd }; Assert.False(input.IsArray()); }
public void IsPrimitive_ArrayEmpty_ReturnsFalse() { var input = new[] { ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenArrayEnd }; Assert.False(input.IsPrimitive()); }
public void HasProperty_PickNonExisting_ReturnsFalse() { var input = new[] { ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("key1"), ModelGrammar.TokenNull, ModelGrammar.TokenProperty("key2"), ModelGrammar.TokenPrimitive("Hello!"), ModelGrammar.TokenProperty("three"), ModelGrammar.TokenPrimitive(3), ModelGrammar.TokenProperty("4"), ModelGrammar.TokenTrue, ModelGrammar.TokenObjectEnd }; // test for a specific property var actual = input.HasProperty(name => name.LocalName == "five"); Assert.False(actual); }
public void ReadMany_ObjectExtraValueAfterClose_DeserializesStreamOfObject() { // input from fail10.json in test suite at http://www.json.org/JSON_checker/ var input = new StringReader(@"{""Extra value after close"": true} ""misplaced quoted value"""); var reader = new JsonReader(new DataReaderSettings()); var enumerator = reader.ReadMany(input).GetEnumerator(); Assert.True(enumerator.MoveNext()); Assert.Equal(new Dictionary <string, object> { { "Extra value after close", true } }, enumerator.Current, false); Assert.True(enumerator.MoveNext()); Assert.Equal( "misplaced quoted value", enumerator.Current); Assert.False(enumerator.MoveNext()); }
public void IsPrimitive_EmptySequence_ReturnsFalse() { var input = new Token <ModelTokenType> [0]; Assert.False(input.IsPrimitive()); }
public void Properties_GraphComplex_ReturnsGraph() { // input from pass1.json in test suite at http://www.json.org/JSON_checker/ var input = new[] { ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive("JSON Test Pattern pass1"), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("object with 1 member"), ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive("array with 1 element"), ModelGrammar.TokenArrayEnd, ModelGrammar.TokenObjectEnd, ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenObjectEnd, ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenArrayEnd, ModelGrammar.TokenPrimitive(-42), ModelGrammar.TokenTrue, ModelGrammar.TokenFalse, ModelGrammar.TokenNull, ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenProperty("integer"), ModelGrammar.TokenPrimitive(1234567890), ModelGrammar.TokenProperty("real"), ModelGrammar.TokenPrimitive(-9876.543210), ModelGrammar.TokenProperty("e"), ModelGrammar.TokenPrimitive(0.123456789e-12), ModelGrammar.TokenProperty("E"), ModelGrammar.TokenPrimitive(1.234567890E+34), ModelGrammar.TokenProperty(""), ModelGrammar.TokenPrimitive(23456789012E66), ModelGrammar.TokenProperty("zero"), ModelGrammar.TokenPrimitive(0), ModelGrammar.TokenProperty("one"), ModelGrammar.TokenPrimitive(1), ModelGrammar.TokenProperty("space"), ModelGrammar.TokenPrimitive(" "), ModelGrammar.TokenProperty("quote"), ModelGrammar.TokenPrimitive("\""), ModelGrammar.TokenProperty("backslash"), ModelGrammar.TokenPrimitive("\\"), ModelGrammar.TokenProperty("controls"), ModelGrammar.TokenPrimitive("\b\f\n\r\t"), ModelGrammar.TokenProperty("slash"), ModelGrammar.TokenPrimitive("/ & /"), ModelGrammar.TokenProperty("alpha"), ModelGrammar.TokenPrimitive("abcdefghijklmnopqrstuvwyz"), ModelGrammar.TokenProperty("ALPHA"), ModelGrammar.TokenPrimitive("ABCDEFGHIJKLMNOPQRSTUVWYZ"), ModelGrammar.TokenProperty("digit"), ModelGrammar.TokenPrimitive("0123456789"), ModelGrammar.TokenProperty("0123456789"), ModelGrammar.TokenPrimitive("digit"), ModelGrammar.TokenProperty("special"), ModelGrammar.TokenPrimitive("`1~!@#$%^&*()_+-={':[,]}|;.</>?"), ModelGrammar.TokenProperty("hex"), ModelGrammar.TokenPrimitive("\u0123\u4567\u89AB\uCDEF\uabcd\uef4A"), ModelGrammar.TokenProperty("true"), ModelGrammar.TokenTrue, ModelGrammar.TokenProperty("false"), ModelGrammar.TokenFalse, ModelGrammar.TokenProperty("null"), ModelGrammar.TokenNull, ModelGrammar.TokenProperty("array"), ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenArrayEnd, ModelGrammar.TokenProperty("object"), ModelGrammar.TokenObjectBeginUnnamed, ModelGrammar.TokenObjectEnd, ModelGrammar.TokenProperty("address"), ModelGrammar.TokenPrimitive("50 St. James Street"), ModelGrammar.TokenProperty("url"), ModelGrammar.TokenPrimitive("http://www.JSON.org/"), ModelGrammar.TokenProperty("comment"), ModelGrammar.TokenPrimitive("// /* <!-- --"), ModelGrammar.TokenProperty("# -- --> */"), ModelGrammar.TokenPrimitive(" "), ModelGrammar.TokenProperty(" s p a c e d "), ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive(1), ModelGrammar.TokenPrimitive(2), ModelGrammar.TokenPrimitive(3), ModelGrammar.TokenPrimitive(4), ModelGrammar.TokenPrimitive(5), ModelGrammar.TokenPrimitive(6), ModelGrammar.TokenPrimitive(7), ModelGrammar.TokenArrayEnd, ModelGrammar.TokenProperty("compact"), ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive(1), ModelGrammar.TokenPrimitive(2), ModelGrammar.TokenPrimitive(3), ModelGrammar.TokenPrimitive(4), ModelGrammar.TokenPrimitive(5), ModelGrammar.TokenPrimitive(6), ModelGrammar.TokenPrimitive(7), ModelGrammar.TokenArrayEnd, ModelGrammar.TokenProperty("jsontext"), ModelGrammar.TokenPrimitive("{\"object with 1 member\":[\"array with 1 element\"]}"), ModelGrammar.TokenProperty("quotes"), ModelGrammar.TokenPrimitive("" \u0022 %22 0x22 034 ""), ModelGrammar.TokenProperty("/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"), ModelGrammar.TokenPrimitive("A key can be any string"), ModelGrammar.TokenObjectEnd, ModelGrammar.TokenPrimitive(0.5), ModelGrammar.TokenPrimitive(98.6), ModelGrammar.TokenPrimitive(99.44), ModelGrammar.TokenPrimitive(1066), ModelGrammar.TokenPrimitive(10.0), ModelGrammar.TokenPrimitive(1.0), ModelGrammar.TokenPrimitive(0.1), ModelGrammar.TokenPrimitive(1.0), ModelGrammar.TokenPrimitive(2.0), ModelGrammar.TokenPrimitive(2.0), ModelGrammar.TokenPrimitive("rosebud"), ModelGrammar.TokenArrayEnd }; var expected = new Dictionary <DataName, IEnumerable <Token <ModelTokenType> > > { { new DataName("url"), new[] { ModelGrammar.TokenPrimitive("http://www.JSON.org/") } }, { new DataName("compact"), new[] { ModelGrammar.TokenArrayBeginUnnamed, ModelGrammar.TokenPrimitive(1), ModelGrammar.TokenPrimitive(2), ModelGrammar.TokenPrimitive(3), ModelGrammar.TokenPrimitive(4), ModelGrammar.TokenPrimitive(5), ModelGrammar.TokenPrimitive(6), ModelGrammar.TokenPrimitive(7), ModelGrammar.TokenArrayEnd, } } }; Assert.True(input.IsArray()); Assert.False(input.IsObject()); Assert.False(input.IsPrimitive()); // cherry pick properties var actual = input .ArrayItems(index => index == 8).FirstOrDefault() // select the big object .Properties(name => name.LocalName == "url" || name.LocalName == "compact"); // select two properties Assert.Equal(expected, actual, false); }