Exemple #1
0
        public void IfTrueSuccess()
        {
            // ARRANGE
            var someFalseValue = false;

            // ACT
            Fail.IfTrue(someFalseValue, Violation.Of("this should be false"));
        }
Exemple #2
0
        public void IfTrueWithMessage()
        {
            // ARRANGE
            var someTrueValue = true;

            // ACT
            var exception = Assert.Throws <DesignByContractViolationException>(
                // ReSharper disable once ConditionIsAlwaysTrueOrFalse
                () => Fail.IfTrue(someTrueValue, Violation.Of("this should be false {0}", 1))
                );

            // ASSERT
            Assert.That(exception.Message, Is.EqualTo("this should be false 1"));
        }
Exemple #3
0
        public void IfTrueWith3Arguments()
        {
            // ARRANGE
            var someTrueValue = true;

            // ACT
            var exception = Assert.Throws <DesignByContractViolationException>(
                // ReSharper disable once ConditionIsAlwaysTrueOrFalse
                () => Fail.IfTrue(someTrueValue, "this should be false {0} {1} {2}", 1, "horrible", "ugly")
                );

            // ASSERT
            Assert.That(exception.Message, Is.EqualTo("this should be false 1 horrible ugly"));
        }
        private void FailIfTransactionStartedDespiteDisablingIt(TransactionsContainer transactionsContainer, [NotNull] ConnectToAttribute[] disabledTransactions)
        {
            Fail.IfArgumentNull(disabledTransactions, nameof(disabledTransactions));

            foreach (ConnectToAttribute disabledTransaction in disabledTransactions)
            {
                IDatabase database = this.GetDatabaseForAutoTransaction(disabledTransaction);
                ISession  session  = transactionsContainer.StartSession(database);
                Fail.IfTrue(
                    session.Transaction.IsActive,
                    "Transaction is started to database {0} and it shouldn't be due to attribute {1}",
                    database,
                    disabledTransaction);
            }
        }
        private static string BuildQuery([NotNull] object contract, string?parentName, bool commaArraySeparator = false)
        {
            Fail.IfNull(contract, nameof(contract));
            var objectType = contract.GetType();

            Fail.IfTrue(IsPrimitiveType(objectType), Violation.Of("You can't build query from primitive"));
            Fail.IfTrue(objectType.IsArray, Violation.Of("You can't build query from array"));

            var properties   = objectType.GetProperties();
            var queryBuilder = new StringBuilder();

            for (var i = 0; i < properties.Length; i++)
            {
                var property       = properties[i];
                var parameterName  = property.Name;
                var parameterValue = property.GetValue(contract);
                var propertyType   = property.PropertyType;
                if (parameterValue == null)
                {
                    continue;
                }

                if (IsPrimitiveType(propertyType))
                {
                    AppendPrimitive(parentName, queryBuilder, parameterName, parameterValue);
                }
                else if (propertyType.IsArray)
                {
                    AppendArray(parentName, commaArraySeparator, parameterValue, queryBuilder, parameterName);
                }
                else
                {
                    queryBuilder.Append(BuildQuery(parameterValue, property.Name, commaArraySeparator));
                }

                if (i + 1 < properties.Length)
                {
                    queryBuilder.Append("&");
                }
            }

            return(queryBuilder.ToString());
        }
        /// <summary>
        /// Add an Edge where successor depends on predecessor
        /// Does not complain if the directed arc is already in
        /// </summary>
        ///<param name="predecessor"></param>
        ///<param name="successor"></param>
        public void Edge([NotNull] T predecessor, [NotNull] T successor)
        {
            // make sure both nodes are there
            this.Node(successor);
            this.Node(predecessor);

            // if successor == predecessor (cycle) fail
            Fail.IfTrue(successor.Equals(predecessor),
                        "There is at least one cycle in the graph. It cannot be sorted topologically.");

            List <T> successorsOfPredecessor = this.nodes[predecessor].Successors;

            // if the Edge is already there, keep silent
            if (!successorsOfPredecessor.Contains(successor))
            {
                // add the sucessor to the predecessor's successors
                successorsOfPredecessor.Add(successor);

                // increment predecessorrCount of successor
                this.nodes[successor].PredecessorCount++;
            }
        }
 public virtual void FailIfLeftInRepairMode()
 {
     Fail.IfTrue(Repair, Violation.Of("Test server is in repair mode. Do not leave it like that."));
 }