public void TestConstructorShouldSetName()
        {
            var column = new ColumnBuilder().WithValue(0).Build();
            var root   = new StringFilterTreeRoot("Test", column);

            Assert.That(root.Name, Is.EqualTo("Test"));
        }
        public void TestCreateChildrenShouldNotAddNullNodeIfColumnHasNoNulls()
        {
            var column  = new ColumnBuilder().WithValue(string.Empty).Build();
            var root    = new StringFilterTreeRoot(string.Empty, column);
            var results = root.CreateChildren();

            Assert.That(results.FirstOrDefault() is NullFilterTreeLeaf, Is.False);
        }
        public void TestCreateFilterShouldCreateStringFilterIfColumnDoesNotHasNulls()
        {
            var column = new ColumnBuilder()
                         .WithValue("test")
                         .Build();
            var root   = new StringFilterTreeRoot(string.Empty, column);
            var result = root.CreateFilter();

            Assert.That(result is StringFilter);
        }
        public void TestCreateFilterShouldCreateNullableStringFilterIfColumnHasNulls()
        {
            var column = new ColumnBuilder()
                         .WithNulls()
                         .Build();
            var root   = new StringFilterTreeRoot(string.Empty, column);
            var result = (StringFilter)root.CreateFilter();

            Assert.That(result.Value, Is.EqualTo(string.Empty));
            Assert.That(result.IncludeNull, Is.True);
        }
        public void TestCreateShouldReturnLeavesAfterMaxDepthOfThree()
        {
            var values = CreateDeepValues('A', 20, 4);
            var column = new ColumnBuilder().WithValues(values).Build();
            var root   = new StringFilterTreeRoot(string.Empty, column);
            var node1  = root.CreateChildren().Single();
            var node2  = node1.CreateChildren().Single();
            var node3  = node2.CreateChildren().Single();
            var result = node3.CreateChildren();

            Assert.That(result.All(p => p is StringFilterTreeLeaf));
        }