public void Test_BuildFilterControl_Simple()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder = new FilterControlBuilder(GetControlFactory());
            string    propName           = TestUtil.GetRandomString();
            FilterDef filterDef          = CreateFilterDef_1Property(propName);
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            IFilterControl filterControl = builder.BuildFilterControl(filterDef);

            filterControl.Size = new Size(1000, 800);
            //---------------Test Result -----------------------
            Assert.IsNotNull(filterControl);
            Assert.AreEqual(1, filterControl.Controls.Count, "Always has GroupBox");
            Assert.AreEqual(FilterModes.Filter, filterControl.FilterMode);
            Assert.AreEqual(1, filterControl.FilterControls.Count);
            Assert.IsNotNull(filterControl.GetChildControl(propName));
            Assert.IsInstanceOf(typeof(StringTextBoxFilter), filterControl.FilterControls[0]);
            IPanel filterPanel = filterControl.FilterPanel;

            Assert.AreEqual(2, filterPanel.Controls.Count);
            IControlHabanero label = filterControl.FilterPanel.Controls[0];

            Assert.IsInstanceOf(typeof(ILabel), label);
            Assert.Greater(label.Width, 0);
            Assert.Greater(label.Height, 0);
            Assert.Greater(label.Left, 0);
            Assert.IsTrue(label.Visible);
            IControlHabanero textBox = filterControl.FilterPanel.Controls[1];

            Assert.IsInstanceOf(typeof(ITextBox), textBox);
            //Assert.AreEqual(label.Top, textBox.Top);
            //Assert.GreaterOrEqual(textBox.Left, label.Left + label.Width);
        }
        public void Test_ResizeControl_ShouldPlaceTextBoxInCorrectPosition()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder = new FilterControlBuilder(GetControlFactory());
            string         propName      = TestUtil.GetRandomString();
            FilterDef      filterDef     = CreateFilterDef_1Property(propName);
            IFilterControl filterControl = builder.BuildFilterControl(filterDef);
            //---------------Assert Precondition----------------
            IPanel filterPanel = filterControl.FilterPanel;

            Assert.AreEqual(2, filterPanel.Controls.Count);
            IControlHabanero label = filterControl.FilterPanel.Controls[0];

            Assert.IsInstanceOf(typeof(ILabel), label);
            Assert.GreaterOrEqual(label.Width, 0);
            Assert.GreaterOrEqual(label.Height, 0);
            Assert.GreaterOrEqual(label.Left, 0);
            Assert.IsTrue(label.Visible);
            IControlHabanero textBox = filterControl.FilterPanel.Controls[1];

            Assert.IsInstanceOf(typeof(ITextBox), textBox);
            Assert.LessOrEqual(textBox.Left, label.Left + label.Width);

            //---------------Execute Test ----------------------
            filterControl.Size  = new Size(999, 800);
            filterControl.Width = 1000;
            //---------------Test Result -----------------------

            Assert.GreaterOrEqual(textBox.Left, label.Left + label.Width);
        }
        public void Test_BuildCustomFilter_SetParametersViaReflection_InvalidProperty()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder           = new FilterControlBuilder(GetControlFactory());
            string parameterName                   = TestUtil.GetRandomString();
            Dictionary <string, string> parameters = new Dictionary <string, string>
            {
                { parameterName, TestUtil.GetRandomString() }
            };

            string            propertyName      = TestUtil.GetRandomString();
            const string      filterType        = "BoolCheckBoxFilter";
            FilterPropertyDef filterPropertyDef = new FilterPropertyDef
                                                      (propertyName, TestUtil.GetRandomString(), filterType, "", FilterClauseOperator.OpEquals, parameters);

            //---------------Execute Test ----------------------
            try
            {
                builder.BuildCustomFilter(filterPropertyDef);
                Assert.Fail("Error should have occured because a parameter didn't exist.");

                //---------------Test Result -----------------------
            }
            catch (HabaneroDeveloperException ex)
            {
                StringAssert.Contains
                    (string.Format
                        ("The property '{0}' was not found on a filter of type '{1}' for property '{2}'", parameterName,
                        filterType, propertyName), ex.Message);
            }
        }
        public void Test_BuildFilterControl_FilterMode_FilterIsDefault()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder   = new FilterControlBuilder(GetControlFactory());
            FilterDef            filterDef = CreateFilterDef_1Property();

            //---------------Execute Test ----------------------
            IFilterControl filterControl = builder.BuildFilterControl(filterDef);

            //---------------Test Result -----------------------
            Assert.AreEqual(FilterModes.Filter, filterControl.FilterMode);
        }
        public void Test_BuildCustomFilter_CustomAssembly()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder = new FilterControlBuilder(GetControlFactory());

            FilterPropertyDef filterPropertyDef1 = CreateFilterPropertyDefWithType
                                                       ("Habanero.Faces.Test.Base.FilterController.SimpleFilterStub", "Habanero.Faces.Test.Base");
            //---------------Execute Test ----------------------
            ICustomFilter customFilter = builder.BuildCustomFilter(filterPropertyDef1);

            //---------------Test Result -----------------------
            Assert.IsInstanceOf(typeof(SimpleFilterStub), customFilter);
        }
        public void Test_BuildFilterControl_Layout_0Columns_UsesFlowLayout()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder   = new FilterControlBuilder(GetControlFactory());
            FilterDef            filterDef = CreateFilterDef_1Property();

            //---------------Execute Test ----------------------
            filterDef.Columns = 0;
            IFilterControl filterControl = builder.BuildFilterControl(filterDef);

            //---------------Test Result -----------------------
            Assert.IsInstanceOf(typeof(FlowLayoutManager), filterControl.LayoutManager);
        }
        public void Test_BuildCustomFilter_FilterClauseOperator()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder = new FilterControlBuilder(GetControlFactory());

            const FilterClauseOperator op = FilterClauseOperator.OpLessThanOrEqualTo;
            FilterPropertyDef          filterPropertyDef1 = CreateFilterPropertyDef(op);

            //---------------Execute Test ----------------------
            ICustomFilter customFilter = builder.BuildCustomFilter(filterPropertyDef1);

            //---------------Test Result -----------------------
            Assert.AreEqual(op, customFilter.FilterClauseOperator);
        }
        public void Test_BuildFilterControl_PreviouslyBuiltFilterControl()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder   = new FilterControlBuilder(GetControlFactory());
            FilterDef            filterDef = CreateFilterDef_1Property();

            //---------------Execute Test ----------------------
            IFilterControl filterControl = GetControlFactory().CreateFilterControl();

            builder.BuildFilterControl(filterDef, filterControl);
            builder.BuildFilterControl(filterDef, filterControl);

            //---------------Test Result -----------------------
            Assert.AreEqual(1, filterControl.FilterControls.Count);
        }
        public void Test_BuildFilterControl_TwoProperties_DifferentTypes()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder   = new FilterControlBuilder(GetControlFactory());
            FilterDef            filterDef = CreateFilterDef_2PropertiesWithType("StringTextBoxFilter", "BoolCheckBoxFilter");

            //---------------Execute Test ----------------------
            IFilterControl filterControl = builder.BuildFilterControl(filterDef);

            //---------------Test Result -----------------------
            Assert.AreEqual(2, filterControl.FilterControls.Count);
            Assert.IsInstanceOf(typeof(StringTextBoxFilter), filterControl.FilterControls[0]);
            Assert.IsInstanceOf(typeof(ITextBox), filterControl.FilterControls[0].Control);
            Assert.IsInstanceOf(typeof(BoolCheckBoxFilter), filterControl.FilterControls[1]);
            Assert.IsInstanceOf(typeof(ICheckBox), filterControl.FilterControls[1].Control);
        }
        public void Test_BuildFilterControl_Layout_1OrMoreColumns_UsesGridLayout_MoreThanOneRow()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder   = new FilterControlBuilder(GetControlFactory());
            FilterDef            filterDef = CreateFilterDef_3Properties();

            //---------------Execute Test ----------------------
            filterDef.Columns = 2;
            IFilterControl filterControl = builder.BuildFilterControl(filterDef);

            //---------------Test Result -----------------------
            Assert.IsInstanceOf(typeof(GridLayoutManager), filterControl.LayoutManager);
            GridLayoutManager layoutManager = (GridLayoutManager)filterControl.LayoutManager;

            Assert.AreEqual(4, layoutManager.Columns.Count);
            Assert.AreEqual(2, layoutManager.Rows.Count);
        }
        public void Test_BuildFilterControl_AlreadyConstructedFilterControl()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder            = new FilterControlBuilder(GetControlFactory());
            const string         filterType         = "Habanero.Faces.Test.Base.FilterController.SimpleFilterStub";
            const string         filterTypeAssembly = "Habanero.Faces.Test.Base";
            FilterDef            filterDef          = CreateFilterDef_1PropertyWithTypeAndAssembly(filterType, filterTypeAssembly);

            //---------------Execute Test ----------------------
            IFilterControl filterControl = GetControlFactory().CreateFilterControl();

            builder.BuildFilterControl(filterDef, filterControl);

            //---------------Test Result -----------------------
            Assert.AreEqual(1, filterControl.FilterControls.Count);
            Assert.IsInstanceOf(typeof(SimpleFilterStub), filterControl.FilterControls[0]);
        }
        public void Test_BuildFilterControl_TwoProperties_CheckPropNames()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder = new FilterControlBuilder(GetControlFactory());
            string    testprop1          = TestUtil.GetRandomString();
            string    testprop2          = TestUtil.GetRandomString();
            FilterDef filterDef          = CreateFilterDef_2Properties(testprop1, testprop2);

            //---------------Execute Test ----------------------
            IFilterControl filterControl = builder.BuildFilterControl(filterDef);

            //---------------Test Result -----------------------
            Assert.AreEqual(2, filterControl.FilterControls.Count);
            Assert.AreEqual(testprop1, filterControl.FilterControls[0].PropertyName);
            Assert.AreEqual(testprop2, filterControl.FilterControls[1].PropertyName);
            Assert.AreEqual(FilterClauseOperator.OpEquals, filterControl.FilterControls[0].FilterClauseOperator);
            Assert.AreEqual(FilterClauseOperator.OpLike, filterControl.FilterControls[1].FilterClauseOperator);
        }
        public void Test_BuildFilterControl_Simple_CheckLayout()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder = new FilterControlBuilder(GetControlFactory());
            string    propName           = TestUtil.GetRandomString();
            FilterDef filterDef          = CreateFilterDef_1Property(propName);
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            IFilterControl filterControl = builder.BuildFilterControl(filterDef);

            filterControl.Size = new Size(1000, 800);
            //---------------Test Result -----------------------
            IControlHabanero label   = filterControl.FilterPanel.Controls[0];
            IControlHabanero textBox = filterControl.FilterPanel.Controls[1];

            Assert.AreEqual(label.Top, textBox.Top);
            Assert.GreaterOrEqual(textBox.Left, label.Left + label.Width);
        }
        public void Test_BuildCustomFilter_SetParametersViaReflection()
        {
            //---------------Set up test pack-------------------
            FilterControlBuilder builder = new FilterControlBuilder(GetControlFactory());

            Dictionary <string, string> parameters = new Dictionary <string, string> {
                { "IsChecked", "true" }
            };

            FilterPropertyDef filterPropertyDef = new FilterPropertyDef
                                                      (TestUtil.GetRandomString(), TestUtil.GetRandomString(), "BoolCheckBoxFilter", "",
                                                      FilterClauseOperator.OpEquals, parameters);
            //---------------Assert PreConditions---------------
            //---------------Execute Test ----------------------
            ICustomFilter customFilter = builder.BuildCustomFilter(filterPropertyDef);

            //---------------Test Result -----------------------
            Assert.IsInstanceOf(typeof(BoolCheckBoxFilter), customFilter);
            BoolCheckBoxFilter checkBoxFilter = (BoolCheckBoxFilter)customFilter;

            Assert.IsTrue(checkBoxFilter.IsChecked);
        }
        public void Test_BuildCustomFilter_WhenEnumComboBoxFilter_WithEnumTypeQualifiedNameParameter_ShouldSetupComboItems()
        {
            //---------------Set up test pack-------------------
            var builder               = new FilterControlBuilder(GetControlFactory());
            var filterPropertyDef     = CreateFilterPropertyDefWithType(typeof(EnumComboBoxFilter));
            var assemblyQualifiedName = typeof(LogCategory).AssemblyQualifiedName;

            filterPropertyDef.Parameters.Add("EnumTypeQualifiedName", assemblyQualifiedName);
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var customFilter = builder.BuildCustomFilter(filterPropertyDef);

            //---------------Test Result -----------------------
            Assert.IsInstanceOf <EnumComboBoxFilter>(customFilter);
            var enumComboBoxFilter = (EnumComboBoxFilter)customFilter;
            var comboBox           = (IComboBox)enumComboBoxFilter.Control;

            Assert.IsTrue(comboBox.Items.Contains(""));
            Assert.IsTrue(comboBox.Items.Contains(LogCategory.Debug));
            Assert.IsTrue(comboBox.Items.Contains(LogCategory.Info));
            Assert.IsTrue(comboBox.Items.Contains(LogCategory.Warn));
            Assert.IsTrue(comboBox.Items.Contains(LogCategory.Exception));
            Assert.IsTrue(comboBox.Items.Contains(LogCategory.Fatal));
        }