Example #1
0
        public async Task Object_Array_ToJson_Then_Back_Object_In_Streaming()
        {
            var obj = new TestObject[5];

            for (var i = 0; i < obj.Length; i++)
            {
                obj[i] = new TestObject();
            }

            //ASYNC
            var coll       = new BlockingCollection <TestObject>();
            var writerTask = Task.Run(async() => await obj.PushJsonArray()
                                      .AndWriteBytesAsync()
                                      .Pull()
                                      .AndParseJsonArrayAsync(coll).ConfigureAwait(false));
            var cnt = 0;

            foreach (var postStream in coll.GetConsumingEnumerable())
            {
                AssertOnValueEquality(obj[cnt], postStream);
                cnt++;
            }

            await writerTask.ConfigureAwait(false);

            //SYNC
            var bc = new BlockingCollection <TestObject>(new ConcurrentQueue <TestObject>(obj));

            bc.CompleteAdding();
            cnt = 0;
            foreach (var postStream in (await bc.PushJsonArray()
                                        .AndWriteBytesAsync().ConfigureAwait(false))
                     .Pull()
                     .AndParseJsonArray <TestObject>())
            {
                AssertOnValueEquality(obj[cnt], postStream);
                cnt++;
            }
        }