public void TestParse_ValueBlank_ReturnsNull()
 {
     StringColumn column = new StringColumn("name");
     string actual = (string)column.Parse("     ");
     string expected = null;
     Assert.AreEqual(expected, actual, "The value was not parsed as null.");
 }
示例#2
0
        public void TestStringColumnSort()
        {
            // StringColumn specific sort tests
            StringColumn strColumn = new StringColumn("String", 0);

            Assert.Equal(0, strColumn.NullCount);
            for (int i = 0; i < 5; i++)
            {
                strColumn.Append(null);
            }
            Assert.Equal(5, strColumn.NullCount);
            // Should handle all nulls
            StringColumn sortedStrColumn = strColumn.Sort() as StringColumn;

            Assert.Equal(5, sortedStrColumn.NullCount);
            Assert.Null(sortedStrColumn[0]);

            for (int i = 0; i < 5; i++)
            {
                strColumn.Append(i.ToString());
            }
            Assert.Equal(5, strColumn.NullCount);

            // Ascending sort
            sortedStrColumn = strColumn.Sort() as StringColumn;
            Assert.Equal("0", sortedStrColumn[0]);
            Assert.Null(sortedStrColumn[9]);

            // Descending sort
            sortedStrColumn = strColumn.Sort(false) as StringColumn;
            Assert.Equal("4", sortedStrColumn[0]);
            Assert.Null(sortedStrColumn[9]);
        }
 public void TestParse_ValueTrimmed()
 {
     StringColumn column = new StringColumn("name");
     string actual = (string)column.Parse("  abc 123 ");
     string expected = "abc 123";
     Assert.AreEqual(expected, actual, "The value was not trimmed.");
 }
示例#4
0
        public Block CreateBlock(Page page)
        {
            _stringColumn = new StringColumn()
            {
                ColumnId = columnId
            };

            //Went over the cache limit
            if (currentSize > MaxSize)
            {
                //Clear the current size
                currentSize = 0;
                //Start the counter from 0 again
                counter = 0;
                //Clear the cache
                _lookup.Clear();
                //Set so that the previous cache should be forgotten
                _stringColumn.ClearPrevious = true;
            }

            page.Strings.Add(_stringColumn);

            return(new Block()
            {
                Strings = new StringRefBlock()
            });
        }
示例#5
0
        public void TestBinaryOperationsOnStringColumn()
        {
            var        df           = new DataFrame();
            BaseColumn stringColumn = new StringColumn("String", Enumerable.Range(0, 10).Select(x => x.ToString()));

            df.InsertColumn(0, stringColumn);

            BaseColumn newCol = stringColumn.Equals(5);

            Assert.Equal(true, newCol[5]);
            Assert.Equal(false, newCol[0]);

            BaseColumn stringColumnCopy = new StringColumn("String", Enumerable.Range(0, 10).Select(x => x.ToString()));

            newCol = stringColumn.Equals(stringColumnCopy);
            Assert.Equal(true, newCol[5]);
            Assert.Equal(true, newCol[0]);

            newCol = stringColumn.NotEquals(5);
            Assert.Equal(false, newCol[5]);
            Assert.Equal(true, newCol[0]);

            newCol = stringColumn.NotEquals(stringColumnCopy);
            Assert.Equal(false, newCol[5]);
            Assert.Equal(false, newCol[0]);
        }
        private static StringColumn FindColumn(string columnName, out int index)
        {
            StringColumn foundColumn = _list.Columns.First(column => column.Name.Contains(TranslateUtils.Translate(columnName)));

            index = _list.Columns.ToList().IndexOf(foundColumn);
            return(foundColumn);
        }
        public void Parse_OnlyWhitespace()
        {
            const string value = "       ";

            var parsedValue = new StringColumn().Parse(value);

            Assert.AreEqual(string.Empty, parsedValue);
        }
示例#8
0
 private static void StartNewChunk(List <StringColumn> columns)
 {
     for (int columnIndex = 0; columnIndex < columns.Count; columnIndex++)
     {
         StringColumn currentColumn = columns.ElementAt(columnIndex);
         currentColumn.Data.Add(new DataChunk());
     }
 }
示例#9
0
        public static DataFrame MakeDataFrameWithNumericAndStringColumns(int length)
        {
            DataFrame  df           = MakeDataFrameWithNumericColumns(length);
            BaseColumn stringColumn = new StringColumn("String", Enumerable.Range(0, length).Select(x => x.ToString()));

            df.InsertColumn(df.ColumnCount, stringColumn);
            return(df);
        }
示例#10
0
        public void TestParse_ValueBlank_ReturnsNull()
        {
            StringColumn column   = new StringColumn("name");
            string       actual   = (string)column.Parse("     ");
            string       expected = null;

            Assert.AreEqual(expected, actual, "The value was not parsed as null.");
        }
示例#11
0
        public void TestParse_ValueTrimmed()
        {
            StringColumn column   = new StringColumn("name");
            string       actual   = (string)column.Parse("  abc 123 ");
            string       expected = "abc 123";

            Assert.AreEqual(expected, actual, "The value was not trimmed.");
        }
示例#12
0
        public void TestParse_ValueBlank_ReturnsNull()
        {
            StringColumn column   = new StringColumn("name");
            string       actual   = (string)column.Parse("     ");
            string       expected = null;

            Assert.Equal(expected, actual);
        }
示例#13
0
        public void TestNullCounts()
        {
            PrimitiveColumn <int> dataFrameColumn1 = new PrimitiveColumn <int>("Int1", Enumerable.Range(0, 10).Select(x => x));

            dataFrameColumn1.Append(null);
            Assert.Equal(1, dataFrameColumn1.NullCount);

            PrimitiveColumn <int> df2 = new PrimitiveColumn <int>("Int2");

            Assert.Equal(0, df2.NullCount);

            PrimitiveColumn <int> df3 = new PrimitiveColumn <int>("Int3", 10);

            Assert.Equal(0, df3.NullCount);

            // Test null counts with assignments on Primitive Columns
            df2.Append(null);
            df2.Append(1);
            Assert.Equal(1, df2.NullCount);
            df2[1] = 10;
            Assert.Equal(1, df2.NullCount);
            df2[1] = null;
            Assert.Equal(2, df2.NullCount);
            df2[1] = 5;
            Assert.Equal(1, df2.NullCount);
            df2[0] = null;
            Assert.Equal(1, df2.NullCount);

            // Test null counts with assignments on String Columns
            StringColumn strCol = new StringColumn("String", 0);

            Assert.Equal(0, strCol.NullCount);

            StringColumn strCol1 = new StringColumn("String1", 5);

            Assert.Equal(0, strCol1.NullCount);

            StringColumn strCol2 = new StringColumn("String", Enumerable.Range(0, 10).Select(x => x.ToString()));

            Assert.Equal(0, strCol2.NullCount);

            StringColumn strCol3 = new StringColumn("String", Enumerable.Range(0, 10).Select(x => (string)null));

            Assert.Equal(10, strCol3.NullCount);

            strCol.Append(null);
            Assert.Equal(1, strCol.NullCount);
            strCol.Append("foo");
            Assert.Equal(1, strCol.NullCount);
            strCol[1] = "bar";
            Assert.Equal(1, strCol.NullCount);
            strCol[1] = null;
            Assert.Equal(2, strCol.NullCount);
            strCol[1] = "foo";
            Assert.Equal(1, strCol.NullCount);
            strCol[0] = null;
            Assert.Equal(1, strCol.NullCount);
        }
 private static void PutAreaOnEnd()
 {
     if (_list.Columns.Any(column => column.Name.Contains(TranslateUtils.Translate("Area"))))
     {
         StringColumn areaColumn = FindColumn("Area", out int index);
         _list.Columns.Remove(areaColumn);
         _list.Columns.Add(areaColumn);
     }
 }
示例#15
0
 public override int GetHashCode()
 {
     unchecked
     {
         int result = IntColumn;
         result = (result * 397) ^ BoolColumn.GetHashCode();
         result = (result * 397) ^ (StringColumn != null ? StringColumn.GetHashCode() : 0);
         return(result);
     }
 }
示例#16
0
        private static void SetColumnsInOrder()
        {
            StringColumn sizeColumn     = ColumnUtils.FindColumn(_list, "Size", out _);
            StringColumn classColumn    = GenerateClassColumn();
            StringColumn quantityColumn = ColumnUtils.FindColumn(_list, "Quantity", out _);
            StringColumn standardColumn = ColumnUtils.FindColumn(_list, "Standard", out _);
            StringColumn notesColumn    = GenerateNotesColumn();

            _list.Columns = new List <StringColumn>(new [] { sizeColumn, classColumn, quantityColumn, standardColumn, notesColumn });
        }
示例#17
0
 public void TestColumnDefinitions_GetEnumerable_Explicit()
 {
     Schema schema = new Schema();
     ColumnDefinition id = new Int32Column("id");
     ColumnDefinition name = new StringColumn("name");
     ColumnDefinition created = new DateTimeColumn("created");
     schema.AddColumn(id).AddColumn(name).AddColumn(created);
     IEnumerable collection = schema.ColumnDefinitions;
     IEnumerator enumerator = collection.GetEnumerator();
 }
示例#18
0
        public void StringColumn_LongValuesAndMerging()
        {
            StringColumn  column   = new StringColumn();
            List <string> expected = new List <string>();
            StringColumn  roundTripped;

            // Test values just at and above LargeValue limit
            expected.Add(new string(' ', 2047));
            expected.Add(null);
            expected.Add(string.Empty);
            expected.Add("Normal");
            expected.Add(new string(' ', 2048));

            for (int i = 0; i < expected.Count; ++i)
            {
                column[i] = expected[i];
            }

            // Verify values properly captured
            CollectionReadVerifier.VerifySame(expected, column);

            // Proactively Trim (before serialization) and verify values not corrupted
            column.Trim();
            CollectionReadVerifier.VerifySame(expected, column);

            // Verify roundtripped column and column not corrupted by serialization
            roundTripped = TreeSerializer.RoundTrip(column, TreeFormat.Binary);
            CollectionReadVerifier.VerifySame(expected, roundTripped);
            CollectionReadVerifier.VerifySame(expected, column);

            // Set a short value to long and a long value to short, and add another value
            expected[0] = new string(':', 2400);
            expected[2] = "MuchShorter";
            expected.Add("Simple");

            for (int i = 0; i < expected.Count; ++i)
            {
                column[i] = expected[i];
            }

            // Verify values read back correctly immediately
            CollectionReadVerifier.VerifySame(expected, column);

            // Verify values re-roundtrip again properly (merging old and new immutable values)
            roundTripped = TreeSerializer.RoundTrip(column, TreeFormat.Binary);
            CollectionReadVerifier.VerifySame(expected, roundTripped);
            CollectionReadVerifier.VerifySame(expected, column);

            // Add a value causing a gap; verify count, new value returned, values in gap defaulted properly
            column[100] = "Centennial";

            Assert.Equal(101, column.Count);
            Assert.Equal("Centennial", column[100]);
            Assert.Null(column[99]);
        }
示例#19
0
        public void Parse_TrimRightWhitespace()
        {
            const string value = "      0239088848 J  ";

            var parsedValue = new StringColumn()
            {
                TrimOption = TrimOptions.RightTrim
            }.Parse(value);

            Assert.AreEqual("      0239088848 J", parsedValue);
        }
示例#20
0
        public void StringColumn_EmptyCases()
        {
            // StringColumns are extremely common in object models,
            // so having very compact representations for common cases
            // is really important to file size for small databases.

            StringColumn    column = new StringColumn();
            TreeDiagnostics diagnostics;

            // Empty: { }
            diagnostics = TreeSerializer.Diagnostics(column, TreeFormat.Binary);
            Assert.True(diagnostics.Length <= 2);

            // All null: { IsNull: { Count: 100, Capacity: 100 } }
            for (int i = 0; i < 100; ++i)
            {
                column[i] = null;
            }

            CollectionReadVerifier.VerifySame(column, TreeSerializer.RoundTrip(column, TreeFormat.Binary, testDoubleDispose: false));
            diagnostics = TreeSerializer.Diagnostics(column, TreeFormat.Binary);
            Assert.True(1 == diagnostics.Children.Count);
            Assert.True(diagnostics.Length <= 13);

            // All empty: Only nulls false written
            for (int i = 0; i < 100; ++i)
            {
                column[i] = "";
            }

            CollectionReadVerifier.VerifySame(column, TreeSerializer.RoundTrip(column, TreeFormat.Binary, testDoubleDispose: false));
            diagnostics = TreeSerializer.Diagnostics(column, TreeFormat.Binary);
            Assert.True(1 == diagnostics.Children.Count);
            Assert.True(diagnostics.Length <= 13);

            // No nulls, No Empty: 3b / value (2b end + 1b text) + 4 pages x 4b + 20b overhead
            for (int i = 0; i < 100; ++i)
            {
                column[i] = "-";
            }

            CollectionReadVerifier.VerifySame(column, TreeSerializer.RoundTrip(column, TreeFormat.Binary, testDoubleDispose: false));
            diagnostics = TreeSerializer.Diagnostics(column, TreeFormat.Binary);
            Assert.True(1 == diagnostics.Children.Count);
            Assert.True(diagnostics.Length <= 336);

            // Nulls and Non-Nulls; both parts must be written
            column[50] = null;

            CollectionReadVerifier.VerifySame(column, TreeSerializer.RoundTrip(column, TreeFormat.Binary, testDoubleDispose: false));
            diagnostics = TreeSerializer.Diagnostics(column, TreeFormat.Binary);
            Assert.True(2 == diagnostics.Children.Count);
            Assert.True(diagnostics.Length <= 336 + 40);
        }
示例#21
0
        public void Parse_TrimLeftWhitespace()
        {
            const string value = "   .   0239088848   ";

            var parsedValue = new StringColumn()
            {
                TrimOption = TrimOptions.LeftTrim
            }.Parse(value);

            Assert.AreEqual(".   0239088848   ", parsedValue);
        }
        public void TestColumnDefinitions_GetEnumerable_Explicit()
        {
            FixedLengthSchema schema  = new FixedLengthSchema();
            ColumnDefinition  id      = new Int32Column("id");
            ColumnDefinition  name    = new StringColumn("name");
            ColumnDefinition  created = new DateTimeColumn("created");

            schema.AddColumn(id, 10).AddColumn(name, 25).AddColumn(created, 10);
            IEnumerable collection = schema.ColumnDefinitions;
            IEnumerator enumerator = collection.GetEnumerator();
        }
示例#23
0
        public void Parse_TrimsWhitespace()
        {
            const string value = "      foo   bar ";

            var parsedValue = new StringColumn()
            {
                TrimOption = TrimOptions.Trim
            }.Parse(value);

            Assert.AreEqual("foo   bar", parsedValue);
        }
        public void TestColumnDefinitions_GetEnumerable_Explicit()
        {
            SeparatedValueSchema schema  = new SeparatedValueSchema();
            ColumnDefinition     id      = new Int32Column("id");
            ColumnDefinition     name    = new StringColumn("name");
            ColumnDefinition     created = new DateTimeColumn("created");

            schema.AddColumn(id).AddColumn(name).AddColumn(created);
            IEnumerable collection = schema.ColumnDefinitions;
            IEnumerator enumerator = collection.GetEnumerator();
        }
示例#25
0
        public void EqualTests(StringColumn first, object second, bool expectedResult, string reason)
        {
            _outputHelper.WriteLine($"{nameof(first)} : {first}");
            _outputHelper.WriteLine($"{nameof(second)} : {second}");

            // Act
            bool actualResult = first.Equals(second);

            // Assert
            actualResult.Should().Be(expectedResult, reason);
        }
 public void TestColumnDefinitions_GetEnumerable_Explicit()
 {
     FixedLengthSchema schema = new FixedLengthSchema();
     ColumnDefinition id = new Int32Column("id");
     ColumnDefinition name = new StringColumn("name");
     ColumnDefinition created = new DateTimeColumn("created");
     schema.AddColumn(id, new Window(10))
         .AddColumn(name, new Window(25))
         .AddColumn(created, new Window(10));
     IEnumerable collection = schema.ColumnDefinitions;
     IEnumerator enumerator = collection.GetEnumerator();
 }
示例#27
0
        public static DataFrame MakeDataFrameWithNumericAndStringColumns(int length, bool withNulls = true)
        {
            DataFrame  df           = MakeDataFrameWithNumericColumns(length, withNulls);
            BaseColumn stringColumn = new StringColumn("String", Enumerable.Range(0, length).Select(x => x.ToString()));

            df.InsertColumn(df.ColumnCount, stringColumn);
            if (withNulls)
            {
                stringColumn[length / 2] = null;
            }
            return(df);
        }
示例#28
0
 public void TestColumnDefinitions_FindByIndex()
 {
     Schema schema = new Schema();
     ColumnDefinition id = new Int32Column("id");
     ColumnDefinition name = new StringColumn("name");
     ColumnDefinition created = new DateTimeColumn("created");
     schema.AddColumn(id).AddColumn(name).AddColumn(created);
     ColumnCollection collection = schema.ColumnDefinitions;
     Assert.AreSame(id, collection[0], "The first column definition was wrong.");
     Assert.AreSame(name, collection[1], "The second column definition was wrong.");
     Assert.AreSame(created, collection[2], "The third column definition was wrong.");
 }
示例#29
0
        private static void AddEntry(int entryIndex, ICollection <StringColumn> targetColumns)
        {
            int numColumns = targetColumns.Count;

            for (int columnIndex = 0; columnIndex < numColumns; columnIndex++)
            {
                StringColumn         column         = targetColumns.ElementAt(columnIndex);
                IEnumerable <string> originalColumn = _list.Columns.ElementAt(columnIndex).GetLastChunk().Entries;

                string entry = originalColumn.ElementAt(entryIndex);
                column.GetLastChunk().AddEntry(entry);
            }
        }
        public static List <StringColumn> GetClonedColumns(AbstractList list)
        {
            List <StringColumn> clonedColumns = new List <StringColumn>();
            List <StringColumn> oldColumns    = list.Columns;

            foreach (StringColumn oldColumn in oldColumns)
            {
                StringColumn newColumn = new StringColumn(oldColumn.Name);
                newColumn.Data = new List <DataChunk>();
                clonedColumns.Add(newColumn);
            }

            return(clonedColumns);
        }
        public void TestColumnDefinitions_FindByIndex()
        {
            SeparatedValueSchema schema  = new SeparatedValueSchema();
            ColumnDefinition     id      = new Int32Column("id");
            ColumnDefinition     name    = new StringColumn("name");
            ColumnDefinition     created = new DateTimeColumn("created");

            schema.AddColumn(id).AddColumn(name).AddColumn(created);
            ColumnCollection collection = schema.ColumnDefinitions;

            Assert.AreSame(id, collection[0], "The first column definition was wrong.");
            Assert.AreSame(name, collection[1], "The second column definition was wrong.");
            Assert.AreSame(created, collection[2], "The third column definition was wrong.");
        }
示例#32
0
        public void TestColumnDefinitions_FindByIndex()
        {
            SeparatedValueSchema schema  = new SeparatedValueSchema();
            IColumnDefinition    id      = new Int32Column("id");
            IColumnDefinition    name    = new StringColumn("name");
            IColumnDefinition    created = new DateTimeColumn("created");

            schema.AddColumn(id).AddColumn(name).AddColumn(created);
            ColumnCollection collection = schema.ColumnDefinitions;

            Assert.Same(id, collection[0]);
            Assert.Same(name, collection[1]);
            Assert.Same(created, collection[2]);
        }
示例#33
0
        private static void ReplaceTextInSize()
        {
            StringColumn sizeColumn     = ColumnUtils.FindColumn(_list, "Size", out _);
            StringColumn standardColumn = ColumnUtils.FindColumn(_list, "Standard", out _);
            StringColumn nameColumn     = ColumnUtils.FindColumn(_list, "Name", out _);

            for (int chunkIndex = 0; chunkIndex < sizeColumn.Data.Count; chunkIndex++)
            {
                DataChunk sizeChunk     = sizeColumn.Data.ElementAt(chunkIndex);
                DataChunk standardChunk = standardColumn.Data.ElementAt(chunkIndex);
                DataChunk nameChunk     = nameColumn.Data.ElementAt(chunkIndex);

                for (int entryIndex = 0; entryIndex < sizeChunk.Entries.Count; entryIndex++)
                {
                    string sizeEntry     = sizeChunk.Entries.ElementAt(entryIndex);
                    string standardEntry = standardChunk.Entries.ElementAt(entryIndex);
                    string nameEntry     = nameChunk.Entries.ElementAt(entryIndex);

                    sizeEntry = sizeEntry.Replace("BOLT", IsHVM(standardEntry) ? "HVM" : "M")
                                .Replace("NUT", "Nakrętka M")
                                .Replace("WASHER", "Podkładka");

                    while (sizeEntry.Contains(".0"))
                    {
                        sizeEntry = sizeEntry.Replace(".0", ".");
                    }

                    sizeEntry = sizeEntry.Replace(".", string.Empty);

                    if (nameEntry.Contains("HILTI"))
                    {
                        string sizePrefix = nameEntry.Split(" ").ElementAt(1);
                        sizeEntry = sizePrefix + " " + sizeEntry;

                        standardChunk.Entries.Insert(entryIndex, "Kotew HILTI");
                        standardChunk.Entries.RemoveAt(entryIndex + 1);
                    }

                    if (nameEntry.Contains("ANCHORBAR"))
                    {
                        standardChunk.Entries.Insert(entryIndex, "Pręt gwintowany");
                        standardChunk.Entries.RemoveAt(entryIndex + 1);
                    }

                    sizeChunk.Entries.Insert(entryIndex, sizeEntry);
                    sizeChunk.Entries.RemoveAt(entryIndex + 1);
                }
            }
        }
        private static void CalculateTotalWeight()
        {
            List <StringColumn> columns = _list.Columns;

            if (columns.Any(column => column.Name.Contains(TranslateUtils.Translate("Weight"))))
            {
                _weightColumn      = FindColumn("Weight", out int index);
                _quantityColumn    = FindColumn("No.", out _);
                _totalWeightColumn = new StringColumn("Waga całkowita (kg)");

                columns.Insert(index + 1, _totalWeightColumn);

                FillTotalWeight();
            }
        }
        public void TestColumnDefinitions_FindByIndex()
        {
            FixedLengthSchema schema  = new FixedLengthSchema();
            IColumnDefinition id      = new Int32Column("id");
            IColumnDefinition name    = new StringColumn("name");
            IColumnDefinition created = new DateTimeColumn("created");

            schema.AddColumn(id, new Window(10))
            .AddColumn(name, new Window(25))
            .AddColumn(created, new Window(10));
            ColumnCollection collection = schema.ColumnDefinitions;

            Assert.AreSame(id, collection[0]);
            Assert.AreSame(name, collection[1]);
            Assert.AreSame(created, collection[2]);
        }
 public StringPropertyMapping(StringColumn column, PropertyInfo property)
 {
     this.column = column;
     this.property = property;
 }
示例#37
0
 public ColumnAdder<StringResult> Column(StringColumn column)
 {
     return new ColumnAdder<StringResult>(this, column);
 }
示例#38
0
 public Length(StringColumn column, string alias = null)
     : base(column, alias)
 {
 }
示例#39
0
 public InitializedTestTable()
     : base("MyTable")
 {
     DateColumn = new DateColumn(this, "MyDateColumn");
     DateTimeColumn = new DateTimeColumn(this, "MyDateTimeColumn");
     DecimalColumn = new DecimalColumn(this, "MyDecimalColumn");
     DoubleColumn = new DoubleColumn(this, "MyDoubleColumn");
     IntColumn = new IntColumn(this, "MyIntColumn");
     StringColumn = new StringColumn(this, "MyStringColumn");
 }
 public void TestCtor_SetsName_LowerCase_Trimmed()
 {
     StringColumn column = new StringColumn(" Name   ");
     Assert.AreEqual("name", column.ColumnName, "The name was not set as expected.");
 }