コード例 #1
0
        public void TestStringParser(string expected, params string[] buffers)
        {
            using var reader = new JsonStringReader();

            var totalConsumed = 0;

            foreach (var buffer in buffers)
            {
                var b = JsonUtilities.UTF8.GetBytes(buffer);

                var result = reader.TryParse(b.AsMemory(), out var actual, out var consumed, out _, out _);
                totalConsumed += consumed;
                switch (result.Type)
                {
                case ValueParseResultType.Failure when expected != null:
                    Assert.Fail("Failed to parse when failure was not expected.");
                    return;

                case ValueParseResultType.Failure when expected == null:
                    return;

                case ValueParseResultType.Success:
                    Assert.AreEqual(expected, actual);
                    return;

                case ValueParseResultType.EOF:
                    Assert.AreEqual(b.Length, consumed);
                    break;
                }
            }

            Assert.Inconclusive();
        }
コード例 #2
0
        public void TestUnicodeCharacterFormat()
        {
            StringReader     sr     = new StringReader("\"\\u00\"");
            JsonStringReader reader = new JsonStringReader(sr);

            reader.Read();
        }
コード例 #3
0
        public void TestUnicodeCharacterEscaped()
        {
            JsonStringReader reader = new JsonStringReader(new StringReader("\"\\uFAFA\""));
            JsonString       val    = (JsonString)reader.Read();

            // Assure unicode is escaped
            Assert.AreEqual(val.Value, "\uFAFA");
        }
コード例 #4
0
        public static async Task <bool> LoadAsync(string filePath, bool canAcceptBom)
        {
            var bags = !canAcceptBom
                                ? await JsonStringReader.LoadNoBomAsync <DataBag[]>(filePath)
                                : await JsonStringReader.LoadRegardlessBomAsync <DataBag[]>(filePath);

            return(bags.SequenceEqual(GetSampleBags(3), new DataBagEqualityComparer()));
        }
コード例 #5
0
        public static bool Load(string filePath, bool canAcceptBom)
        {
            var bags = !canAcceptBom
                                ? JsonStringReader.LoadNoBom <DataBag[]>(filePath)
                                : JsonStringReader.LoadRegardlessBom <DataBag[]>(filePath);

            return(bags.SequenceEqual(GetSampleBags(3), new DataBagEqualityComparer()));
        }
コード例 #6
0
 public static async Task SaveAsync(string filePath, bool canEmitBom, int selector)
 {
     if (!canEmitBom)
     {
         await JsonStringReader.SaveNoBomAsync(filePath, GetSampleBags(3));
     }
     else
     {
         await JsonStringReader.SaveSelectableBomAsync(filePath, GetSampleBags(3), selector);
     }
 }
コード例 #7
0
        public void TestUtf8StringParser(string expected, string input, params int[] slicePoints)
        {
            var allBuffer  = JsonUtilities.UTF8.GetBytes(input);
            var allBuffers = allBuffer.AsSpan();

            using var reader = new JsonStringReader();

            var totalConsumed = 0;
            var lpos          = 0;

            foreach (var slicePoint in slicePoints.Concat(new[] { allBuffer.Length }))
            {
                var b = allBuffers[lpos..slicePoint];