Example #1
0
 private static void EncodeList(Stream buffer, IList <object> list)
 {
     buffer.Append(ListStart);
     foreach (var obj in list)
     {
         EncodeNextObject(buffer, obj);
     }
     buffer.Append(End);
 }
Example #2
0
        private static void EncodeDictionary(Stream buffer, IDictionary <string, object> dict)
        {
            buffer.Append(DictStart);

            var sortedKeys = dict.Keys.OrderBy(x => BitConverter.ToString(Encoding.UTF8.GetBytes(x)));

            foreach (var key in sortedKeys)
            {
                EncodeString(buffer, key);
                EncodeNextObject(buffer, dict[key]);
            }

            buffer.Append(End);
        }
Example #3
0
        private static Queue Check(int lenF, Lazy <Stream <T> .StreamCell> f, int lenR, Lazy <Stream <T> .StreamCell> r)
        {
            if (lenF > C * lenR + 1)
            {
                var i  = (lenF + lenR) / 2;
                var j  = lenF + lenR - i;
                var fp = Stream <T> .Take(i, f);

                var rp = Stream <T> .Append(r, Stream <T> .Reverse(Stream <T> .Drop(i, f)));

                return(new Queue(i, fp, j, rp));
            }

            if (lenR > C * lenF + 1)
            {
                var j  = (lenF + lenR) / 2;
                var i  = lenF + lenR - j;
                var rp = Stream <T> .Take(j, r);

                var fp = Stream <T> .Append(f, Stream <T> .Reverse(Stream <T> .Drop(j, r)));

                return(new Queue(i, fp, j, rp));
            }

            return(new Queue(lenF, f, lenR, r));
        }
 /// <summary>
 /// Copy a byte to the data stream 'count' times.
 /// </summary>
 /// <param name="stream"></param>
 /// <param name="value"></param>
 /// <param name="count"></param>
 public static void Append(this Stream stream, byte value, ulong count)
 {
     for (; count > 0; count--)
     {
         stream.Append(new[] { value });
     }
 }
 private static Lazy <Stream <T> .StreamCell> RotateRev(Lazy <Stream <T> .StreamCell> fc, Lazy <Stream <T> .StreamCell> r, Lazy <Stream <T> .StreamCell> a)
 {
     if (fc == Stream <T> .DollarNil)
     {
         return(Stream <T> .Append(Stream <T> .Reverse(r), a));
     }
     return(new Lazy <Stream <T> .StreamCell>(() => new Stream <T> .StreamCell(fc.Value.Element, RotateRev(fc.Value.Next, Stream <T> .Drop(C, r), Stream <T> .Append(Stream <T> .Reverse(Stream <T> .Take(C, r)), a)))));
 }
Example #6
0
 private static Queue Check(int lenf, Lazy <Stream <T> .StreamCell> f, int lenr, Lazy <Stream <T> .StreamCell> r)
 {
     if (lenr <= lenf)
     {
         return(new Queue(lenf, f, lenr, r));
     }
     return(new Queue(lenf + lenr, Stream <T> .Append(f, Stream <T> .Reverse(r)), 0, Stream <T> .DollarNil));
 }
            public void OperatingOnNullStream_ShouldThrowIOException()
            {
                //---------------Set up test pack-------------------
                Stream dst      = null;
                var    toAppend = GetRandomBytes();

                //---------------Assert Precondition----------------

                //---------------Execute Test ----------------------
                Expect(() => dst.Append(toAppend)).To.Throw <IOException>();

                //---------------Test Result -----------------------
            }
        public void AppendTest()
        {
            var data    = new[] { 3, 2, 1 };
            var stream  = data.Aggregate(Stream <int> .DollarNil, (s1, t1) => new Lazy <Stream <int> .StreamCell>(() => new Stream <int> .StreamCell(t1, s1)));
            var reverse = Stream <int> .Reverse(stream);

            var sum = Stream <int> .Append(stream, reverse);

            Assert.AreEqual("1, 2, 3", DumpStream(stream, false));
            Assert.AreEqual("$", DumpStream(reverse, false));
            Assert.AreEqual("$1, $2, $3, $3, $2, $1", DumpStream(sum, true));

            // the last have of Sum are the same elements in the reverse stream.
            Assert.AreSame(reverse, sum.Value.Next.Value.Next.Value.Next);
        }
 private void AppendToStream(Stream fileStream, IChunk chunk)
 {
     fileStream.Append(chunk);
     _nextExpectedChunk++;
 }
Example #10
0
 private static void EncodeByteArray(Stream buffer, byte[] bytes)
 {
     buffer.Append(Encoding.UTF8.GetBytes(Convert.ToString(bytes.Length)));
     buffer.Append(Divider);
     buffer.Append(bytes);
 }
Example #11
0
 private static void EncodeInt(Stream buffer, long val)
 {
     buffer.Append(IntStart);
     buffer.Append(Encoding.UTF8.GetBytes(Convert.ToString(val)));
     buffer.Append(End);
 }
Example #12
0
 public static void Append(this Stream stream, byte value)
 {
     stream.Append(new[] { value });
 }
 /// <summary>
 /// Adds a node.
 /// </summary>
 /// <param name="node"></param>
 public override void AddNode(Node node)
 {
     _stream.Append(node);
 }