public void ReadColumnsSetTest()
        {
            const byte separator = BytesSplitReader.Comma;
            var        expecteds = new string[] { "A", "B", "C", "D", "", };
            var        text      = string.Join(((char)separator).ToString(), expecteds);
            var        raw       = Encoding.UTF8.GetBytes(text);
            var        columns   = new int[expecteds.Length];

            for (var column = columns.Length - 1; column >= 0; --column)
            {
                columns[column] = column;
            }
            var actuals = new BytesColumn[expecteds.Length];
            var appends = new Action <byte[], int, int> [expecteds.Length];

            for (var i = actuals.Length - 1; i >= 0; --i)
            {
                var actual = new BytesColumn();
                actuals[i] = actual;
                appends[i] = actual.AppendLength;
            }
            using (var readerStream = new MemoryStream(raw))
                using (var reader = new BytesSplitReader(readerStream))
                {
                    Assert.IsTrue(reader.ReadColumnsLength(separator, appends), "!ReadColumns");
                    for (var i = expecteds.Length - 1; i >= 0; --i)
                    {
                        Assert.AreEqual(expecteds[i], actuals[i].ToString(Encoding.UTF8), i.ToString());
                    }
                }
        }
        public void Append(BytesColumn append)
        {
            appended = true;
            var appendCount = append.count;
            var required    = count + appendCount;

            if (required > capacity)
            {
                Enlarge();
            }
            Array.Copy(append.values, 0, values, count, appendCount);
            count += appendCount;
        }
        public void ReadColumnTest()
        {
            const byte separator = BytesSplitReader.Comma;
            var        expecteds = new string[] { "A", "B", "C", "D", "", };
            var        text      = string.Join(((char)separator).ToString(), expecteds);
            var        raw       = Encoding.UTF8.GetBytes(text);

            for (var i = expecteds.Length - 1; i >= 0; --i)
            {
                var actual = new BytesColumn();
                using (var readerStream = new MemoryStream(raw))
                    using (var reader = new BytesSplitReader(readerStream))
                    {
                        Assert.IsTrue(reader.ReadColumnsLength(separator, i, actual.AppendLength), "!ReadColumn");
                        Assert.AreEqual(expecteds[i], actual.ToString(Encoding.UTF8), i.ToString());
                    }
            }
        }
 public bool Equals(BytesColumn other)
 {
     if (object.ReferenceEquals(other, null))
     {
         return(false);
     }
     if (other.count != this.count)
     {
         return(false);
     }
     for (var offset = count - 1; offset >= 0; --offset)
     {
         if (other.values[offset] != this.values[offset])
         {
             return(false);
         }
     }
     return(true);
 }
 public static bool TryParseObjectString(BytesColumn parse, out object value)
 {
     return(parse.TryParseObjectString(out value));
 }
 public static bool TryParseObjectTimeSpan(BytesColumn parse, out object value)
 {
     return(parse.TryParseObjectTimeSpan(out value));
 }
 public static bool TryParseObjectDecimal(BytesColumn parse, out object value)
 {
     return(parse.TryParseObjectDecimal(out value));
 }