Example #1
0
 public void TestEndArray()
 {
     var json = "\t ]x";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.EndArray, token.Type);
     Assert.Equal("]", token.Lexeme);
     Assert.Equal('x', buffer.Read());
 }
Example #2
0
 public void TestEndOfFile()
 {
     var json = "\t ";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.EndOfFile, token.Type);
     Assert.Equal("<eof>", token.Lexeme);
     Assert.Equal(-1, buffer.Read());
 }
Example #3
0
 public void TestNameSeparator()
 {
     var json = "\t :x";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.Colon, token.Type);
     Assert.Equal(":", token.Lexeme);
     Assert.Equal('x', buffer.Read());
 }
Example #4
0
 public void TestBeginObject()
 {
     var json = "\t {x";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.BeginObject, token.Type);
     Assert.Equal("{", token.Lexeme);
     Assert.Equal('x', buffer.Read());
 }
Example #5
0
        public void TestEndOfFile()
        {
            var json   = "\t ";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.EndOfFile, token.Type);
            Assert.Equal("<eof>", token.Lexeme);
            Assert.Equal(-1, buffer.Read());
        }
Example #6
0
        public void TestMinusTwelve()
        {
            var json   = "\t -12,";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.Int32, token.Type);
            Assert.Equal("-12", token.Lexeme);
            Assert.Equal(',', buffer.Read());
        }
        public void TestRegularExpressionPatternAndOptions()
        {
            var json   = "\t /pattern/imxs,";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.RegularExpression, token.Type);
            Assert.Equal("/pattern/imxs", token.Lexeme);
            Assert.Equal(',', buffer.Read());
        }
        public void TestRegularExpressionEmpty()
        {
            var json   = "\t //,";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.RegularExpression, token.Type);
            Assert.Equal("//", token.Lexeme);
            Assert.Equal(',', buffer.Read());
        }
        public void TestValueSeparator()
        {
            var json   = "\t ,x";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.Comma, token.Type);
            Assert.Equal(",", token.Lexeme);
            Assert.Equal('x', buffer.Read());
        }
        public void TestEndArray()
        {
            var json   = "\t ]x";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.EndArray, token.Type);
            Assert.Equal("]", token.Lexeme);
            Assert.Equal('x', buffer.Read());
        }
        public void TestMinusOnePointTwo()
        {
            var json   = "\t -1.2,";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.Double, token.Type);
            Assert.Equal("-1.2", token.Lexeme);
            Assert.Equal(',', buffer.Read());
        }
        public void TestBeginObject()
        {
            var json   = "\t {x";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.BeginObject, token.Type);
            Assert.Equal("{", token.Lexeme);
            Assert.Equal('x', buffer.Read());
        }
Example #13
0
        public void TestUnquotedString()
        {
            var json   = "\t name123:1";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.UnquotedString, token.Type);
            Assert.Equal("name123", token.StringValue);
            Assert.Equal(':', buffer.Read());
        }
Example #14
0
        public void TestUndefined()
        {
            var json   = "\t undefined,";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.UnquotedString, token.Type);
            Assert.Equal("undefined", token.StringValue);
            Assert.Equal(',', buffer.Read());
        }
        public void TestBeginArray()
        {
            var json   = "\t [x";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.AreEqual(JsonTokenType.BeginArray, token.Type);
            Assert.AreEqual("[", token.Lexeme);
            Assert.AreEqual('x', buffer.Read());
        }
        public void TestNameSeparator()
        {
            var json   = "\t :x";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.AreEqual(JsonTokenType.Colon, token.Type);
            Assert.AreEqual(":", token.Lexeme);
            Assert.AreEqual('x', buffer.Read());
        }
        public void TestEndObject()
        {
            var json   = "\t }x";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.AreEqual(JsonTokenType.EndObject, token.Type);
            Assert.AreEqual("}", token.Lexeme);
            Assert.AreEqual('x', buffer.Read());
        }
        public void TestOne()
        {
            var json   = "\t 1,";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.AreEqual(JsonTokenType.Int32, token.Type);
            Assert.AreEqual("1", token.Lexeme);
            Assert.AreEqual(',', buffer.Read());
        }
        public void TestNull()
        {
            var json   = "\t null,";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.AreEqual(JsonTokenType.UnquotedString, token.Type);
            Assert.AreEqual("null", token.StringValue);
            Assert.AreEqual(',', buffer.Read());
        }
        public void TestOneExponentMinuesTwelve()
        {
            var json   = "\t 1e-12,";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.Double, token.Type);
            Assert.Equal("1e-12", token.Lexeme);
            Assert.Equal(',', buffer.Read());
        }
Example #21
0
        public void TestEscapeSequences()
        {
            var json   = "\t \"x\\\"\\\\\\/\\b\\f\\n\\r\\t\\u0030y\"x";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.String, token.Type);
            Assert.Equal("x\"\\/\b\f\n\r\t0y", token.StringValue);
            Assert.Equal('x', buffer.Read());
        }
        public void TestEmptyString()
        {
            var json   = "\t \"\"x";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.AreEqual(JsonTokenType.String, token.Type);
            Assert.AreEqual("", token.StringValue);
            Assert.AreEqual('x', buffer.Read());
        }
Example #23
0
        public void Test3CharacterString()
        {
            var json   = "\t \"123\"x";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.String, token.Type);
            Assert.Equal("123", token.StringValue);
            Assert.Equal('x', buffer.Read());
        }
        public void TestMinusZeroExponentMinusOne()
        {
            var json   = "\t -0e-1,";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.Double, token.Type);
            Assert.Equal("-0e-1", token.Lexeme);
            Assert.Equal(',', buffer.Read());
        }
Example #25
0
        public void TestZeroPointZero()
        {
            var json   = "\t 0.0,";
            var buffer = new JsonBuffer(json);
            var token  = JsonScanner.GetNextToken(buffer);

            Assert.Equal(JsonTokenType.Double, token.Type);
            Assert.Equal("0.0", token.Lexeme);
            Assert.Equal(',', buffer.Read());
        }
Example #26
0
        public void ReadLiteralNull(string content)
        {
            using (var stream = CreateTextReader(content))
            {
                var buffer = new JsonBuffer(stream);
                Assert.NotNull(buffer);

                var token = buffer.Read();
                Assert.Equal(JsonTokenType.Null, token.Type);
            }
        }
Example #27
0
        public void ReadLiteralThrowException(string content)
        {
            using (var stream = CreateTextReader(content))
            {
                var buffer = new JsonBuffer(stream);
                Assert.NotNull(buffer);

                Assert.Throws <JsonDeserializerException>(() =>
                {
                    buffer.Read();
                });
            }
        }
Example #28
0
        public void ReadTokenThroughLockFileSample()
        {
            using (var stream = File.OpenRead(Path.Combine("TestSample", "project.lock.sample")))
            {
                var reader = new StreamReader(stream);
                var buffer = new JsonBuffer(reader);
                Assert.NotNull(buffer);

                while (buffer.Read().Type != JsonTokenType.EOF)
                {
                    ;
                }
            }
        }
Example #29
0
        public void ReadUnicode()
        {
            var content = "\"Unicode string \\u00A9\"";

            using (var stream = CreateTextReader(content))
            {
                var buffer = new JsonBuffer(stream);
                Assert.NotNull(buffer);

                var token = buffer.Read();
                Assert.Equal(JsonTokenType.String, token.Type);
                Assert.Equal(16, token.Value.Length);
            }
        }
Example #30
0
        public void ReadThroughArray(string content)
        {
            using (var stream = CreateTextReader(content))
            {
                var buffer = new JsonBuffer(stream);
                Assert.NotNull(buffer);

                var tokens = new List <JsonToken>();
                do
                {
                    tokens.Add(buffer.Read());
                }while (tokens[tokens.Count - 1].Type != JsonTokenType.EOF);

                Assert.Equal(JsonTokenType.LeftSquareBracket, tokens[0].Type);
                Assert.Equal(JsonTokenType.RightSquareBracket, tokens[tokens.Count - 2].Type);
            }
        }
Example #31
0
 public void TestMinusZeroExponentMinusTwelve()
 {
     var json = "\t -1e-12,";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.Double, token.Type);
     Assert.Equal("-1e-12", token.Lexeme);
     Assert.Equal(',', buffer.Read());
 }
Example #32
0
 public void Test3CharacterString()
 {
     var json = "\t \"123\"x";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.String, token.Type);
     Assert.Equal("123", token.StringValue);
     Assert.Equal('x', buffer.Read());
 }
Example #33
0
 public void TestEscapeSequences()
 {
     var json = "\t \"x\\\"\\\\\\/\\b\\f\\n\\r\\t\\u0030y\"x";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.String, token.Type);
     Assert.Equal("x\"\\/\b\f\n\r\t0y", token.StringValue);
     Assert.Equal('x', buffer.Read());
 }
Example #34
0
 public void TestUndefined()
 {
     var json = "\t undefined,";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.UnquotedString, token.Type);
     Assert.Equal("undefined", token.StringValue);
     Assert.Equal(',', buffer.Read());
 }
Example #35
0
 public void TestUnquotedString()
 {
     var json = "\t name123:1";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.UnquotedString, token.Type);
     Assert.Equal("name123", token.StringValue);
     Assert.Equal(':', buffer.Read());
 }
Example #36
0
 public void TestMinusZero()
 {
     var json = "\t -0,";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.Int32, token.Type);
     Assert.Equal("-0", token.Lexeme);
     Assert.Equal(',', buffer.Read());
 }
Example #37
0
 public void TestTwelve()
 {
     var json = "\t 12,";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.Int32, token.Type);
     Assert.Equal("12", token.Lexeme);
     Assert.Equal(',', buffer.Read());
 }
Example #38
0
 public void TestZeroExponentOne()
 {
     var json = "\t 0e1,";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.Double, token.Type);
     Assert.Equal("0e1", token.Lexeme);
     Assert.Equal(',', buffer.Read());
 }
Example #39
0
 public void TestRegularExpressionEmpty()
 {
     var json = "\t //,";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.RegularExpression, token.Type);
     Assert.Equal("//", token.Lexeme);
     Assert.Equal(',', buffer.Read());
 }
Example #40
0
 public void TestRegularExpressionPatternAndOptions()
 {
     var json = "\t /pattern/imxs,";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.RegularExpression, token.Type);
     Assert.Equal("/pattern/imxs", token.Lexeme);
     Assert.Equal(',', buffer.Read());
 }
Example #41
0
 public void TestMinusOnePointTwo()
 {
     var json = "\t -1.2,";
     var buffer = new JsonBuffer(json);
     var token = JsonScanner.GetNextToken(buffer);
     Assert.Equal(JsonTokenType.Double, token.Type);
     Assert.Equal("-1.2", token.Lexeme);
     Assert.Equal(',', buffer.Read());
 }
Example #42
0
        internal static IEnumerable <object> ReadDocumentsAs(Type documentType, string filePath, FileFormat format)
        {
            if (format == FileFormat.Auto)
            {
                format = filePath.EndsWith(".json", StringComparison.OrdinalIgnoreCase) ? FileFormat.Json : FileFormat.Bson;
            }

            var serializer = BsonSerializer.LookupSerializer(documentType);
            var options    = DocumentSerializationOptions.Defaults;

            if (format == FileFormat.Json)
            {
                var  jb    = new JsonBuffer(File.ReadAllText(filePath));
                bool array = false;
                for (; ;)
                {
                    // skip white
                    int c;
                    for (; ;)
                    {
                        // end or white?
                        if ((c = jb.Read()) <= 32)
                        {
                            // end?
                            if (c < 0)
                            {
                                goto end;
                            }

                            // white
                            continue;
                        }

                        // document
                        if (c == '{')
                        {
                            jb.UnRead(c);
                            break;
                        }

                        // array
                        if (c == ',')
                        {
                            if (array)
                            {
                                continue;
                            }
                        }
                        else if (c == ']')
                        {
                            if (array)
                            {
                                array = false;
                                continue;
                            }
                        }
                        else if (c == '[')
                        {
                            if (!array)
                            {
                                array = true;
                                continue;
                            }
                        }

                        throw new FormatException(string.Format(null, "Unexpected character '{0}' at position {1}.", (char)c, jb.Position - 1));
                    }

                    using (var bsonReader = BsonReader.Create(jb))
                        yield return(serializer.Deserialize(bsonReader, documentType, options));
                }
                end :;
            }
            else
            {
                using (var stream = File.OpenRead(filePath))
                {
                    long length = stream.Length;

                    while (stream.Position < length)
                    {
                        using (var bsonReader = BsonReader.Create(stream))
                            yield return(serializer.Deserialize(bsonReader, documentType, options));
                    }
                }
            }
        }