public void Equals_GivenConditionValues_ShouldReturnTrue(string leftConditionTableName, string leftConditionColumnName, EqualityOperators leftConditionOperator, object leftConditionValue,
                                                                 BooleanOperator booleanOperator,
                                                                 string rightConditionTableName, string rightConditionColumnName, EqualityOperators rightConditionOperator, object rightConditionValue)
        {
            //---------------Set up test pack-------------------
            var leftCondition = new ConditionModel(leftConditionTableName, leftConditionColumnName, leftConditionOperator, leftConditionValue)
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            var rightCondition = new ConditionModel(rightConditionTableName, rightConditionColumnName, rightConditionOperator, rightConditionValue)
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            var conditionModel = new CompoundConditionModel(leftCondition, booleanOperator, rightCondition)
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            var compareCondition = new CompoundConditionModel(leftCondition, booleanOperator, rightCondition)
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var equalResult = conditionModel.Equals(compareCondition);

            //---------------Test Result -----------------------
            Assert.IsTrue(equalResult);
        }
        public void ToString_GivenConditionValues_ShouldReturnExpectedStatement(string leftConditionTableName, string leftConditionColumnName, EqualityOperators leftConditionOperator, object leftConditionValue,
                                                                                BooleanOperator booleanOperator,
                                                                                string rightConditionTableName, string rightConditionColumnName, EqualityOperators rightConditionOperator, object rightConditionValue,
                                                                                string expectedStatement)
        {
            //---------------Set up test pack-------------------
            var leftCondition = new ConditionModel(leftConditionTableName, leftConditionColumnName, leftConditionOperator, leftConditionValue)
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            var rightCondition = new ConditionModel(rightConditionTableName, rightConditionColumnName, rightConditionOperator, rightConditionValue)
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            var compoundCondition = new CompoundConditionModel(leftCondition, booleanOperator, rightCondition)
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var selectStatement = compoundCondition.ToString();

            //---------------Test Result -----------------------
            Assert.AreEqual(expectedStatement, selectStatement);
        }
        public void Constructor()
        {
            //---------------Set up test pack-------------------
            var leftCondition  = Substitute.For <IConditionModel>();
            var rightCondition = Substitute.For <IConditionModel>();
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var model = new CompoundConditionModel(leftCondition, BooleanOperator.And, rightCondition);

            //---------------Test Result -----------------------
            Assert.IsNotNull(model);
        }
        public void GetHashCode_ShouldReturnStringHashCode()
        {
            //---------------Set up test pack-------------------
            var leftCondition = new ConditionModel("Table1", "DifferentColumn1", EqualityOperators.GreaterThan, "Unknown1")
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            var rightCondition = new ConditionModel("Table2", "DifferentColumn2", EqualityOperators.LessThan, "Unknown2")
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            var condition = new CompoundConditionModel(leftCondition, BooleanOperator.And, rightCondition)
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            var hashCode = 0;

            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            Assert.DoesNotThrow(() => hashCode = condition.GetHashCode());
            //---------------Test Result -----------------------
            Assert.IsNotNull(hashCode);
        }
        public void Equals_GivenDifferentConditionValues_ShouldReturnFalse(string leftConditionTableName, string leftConditionColumnName, EqualityOperators leftConditionOperator, object leftConditionValue,
                                                                           BooleanOperator booleanOperator,
                                                                           string rightConditionTableName, string rightConditionColumnName, EqualityOperators rightConditionOperator, object rightConditionValue)
        {
            //---------------Set up test pack-------------------
            var leftCondition = new ConditionModel(leftConditionTableName, leftConditionColumnName, leftConditionOperator, leftConditionValue)
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            var rightCondition = new ConditionModel(rightConditionTableName, rightConditionColumnName, rightConditionOperator, rightConditionValue)
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            var conditionModel = new CompoundConditionModel(leftCondition, booleanOperator, rightCondition)
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };

            var differentLeftCondition = new ConditionModel("", "DifferentColumn1", EqualityOperators.GreaterThan, "Unknown1")
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            var differentRightCondition = new ConditionModel("", "DifferentColumn2", EqualityOperators.LessThan, "Unknown2")
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            var compareCondition = new CompoundConditionModel(differentLeftCondition, BooleanOperator.Or, differentRightCondition)
            {
                DatabaseProvider = new SqlServerDatabaseProvider()
            };
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var equalResult = conditionModel.Equals(compareCondition);

            //---------------Test Result -----------------------
            Assert.IsFalse(equalResult);
        }