示例#1
0
 public void Valid_Blittable()
 {
     using (var context = JsonOperationContext.ShortTermSingleUse())
     {
         var allTokens = new AllTokensTypes
         {
             Bool     = true,
             Float    = 123.4567F,
             Int      = 45679123,
             IntArray = new[] { 1, 2, 3 },
             Null     = null,
             Object   = new Empty(),
             String   = "qwertyuio"
         };
         var obj          = JObject.FromObject(allTokens);
         var objString    = obj.ToString(Formatting.None);
         var stream       = new MemoryStream();
         var streamWriter = new StreamWriter(stream);
         streamWriter.Write(objString);
         streamWriter.Flush();
         stream.Position = 0;
         var reader = context.Sync.ReadForDisk(stream, "docs/1 ");
         reader.BlittableValidation();
     }
 }
示例#2
0
        public unsafe void Valid_object_read_from_non_zero_offset()
        {
            using (var context = JsonOperationContext.ShortTermSingleUse())
            {
                var jsonParserState = new JsonParserState();
                using (var parser = new UnmanagedJsonParser(context, jsonParserState, "changes/1"))
                {
                    byte[] buffer       = new byte[4096];
                    var    bufferOffset = 128; //non-zero offset

                    var allTokens = new AllTokensTypes
                    {
                        Bool     = true,
                        Float    = 123.4567F,
                        Int      = 45679123,
                        IntArray = new[] { 1, 2, 3 },
                        Null     = null,
                        Object   = new Empty(),
                        String   = "qwertyuio"
                    };
                    var obj       = JObject.FromObject(allTokens);
                    var objString = obj.ToString(Formatting.None);

                    var data = Encoding.UTF8.GetBytes(objString);

                    data.CopyTo(buffer, bufferOffset);

                    fixed(byte *pBuffer = buffer)
                    {
                        using (var builder = new BlittableJsonDocumentBuilder(context, BlittableJsonDocumentBuilder.UsageMode.None, "order/1", parser, jsonParserState))
                        {
                            parser.SetBuffer(pBuffer + bufferOffset, data.Length);

                            builder.ReadObjectDocument();

                            Assert.True(builder.Read());

                            builder.FinalizeDocument();

                            using (var reader = builder.CreateReader())
                            {
                                var value = reader.ToString();
                                Assert.NotNull(value);
                            }
                        }
                    }
                }
            }
        }