public void IfTrueSuccess() { // ARRANGE var someFalseValue = false; // ACT Fail.IfTrue(someFalseValue, Violation.Of("this should be false")); }
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")); }
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.")); }