public void Merge() { IValidationLog sourceLog = new DefaultValidationLog(); var exception = new Exception(); TargetClassDefinition bt1 = DefinitionObjectMother.GetActiveTargetClassDefinition(typeof(BaseType1)); TargetClassDefinition bt2 = DefinitionObjectMother.GetActiveTargetClassDefinition_Force(typeof(BaseType2)); TargetClassDefinition bt3 = DefinitionObjectMother.GetActiveTargetClassDefinition(typeof(BaseType3)); TargetClassDefinition bt4 = DefinitionObjectMother.GetActiveTargetClassDefinition_Force(typeof(BaseType4)); sourceLog.ValidationStartsFor(bt1); sourceLog.Succeed(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "Success", "Success")); sourceLog.Warn(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "Warn", "Warn")); sourceLog.Fail(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "Fail", "Fail")); sourceLog.UnexpectedException(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "Except", "Except"), exception); sourceLog.ValidationEndsFor(bt1); sourceLog.ValidationStartsFor(bt4); sourceLog.Succeed(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "Success2", "Success2")); sourceLog.Warn(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "Warn2", "Warn2")); sourceLog.Fail(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "Fail2", "Fail2")); sourceLog.UnexpectedException(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "Except2", "Except2"), exception); sourceLog.ValidationEndsFor(bt4); IValidationLog resultLog = new DefaultValidationLog(); resultLog.ValidationStartsFor(bt2); resultLog.Succeed(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "0", "0")); resultLog.Warn(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "1", "1")); resultLog.Fail(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "2", "2")); resultLog.UnexpectedException(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "3", "3"), exception); resultLog.ValidationEndsFor(bt2); resultLog.ValidationStartsFor(bt1); resultLog.Succeed(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "4", "4")); resultLog.Warn(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "5", "5")); resultLog.Fail(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "6", "6")); resultLog.UnexpectedException(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "7", "7"), exception); resultLog.ValidationEndsFor(bt1); resultLog.ValidationStartsFor(bt3); resultLog.Succeed(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "8", "8")); resultLog.Warn(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "9", "9")); resultLog.Fail(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "10", "10")); resultLog.UnexpectedException(new DelegateValidationRule <TargetClassDefinition> (delegate { }, "11", "11"), exception); resultLog.ValidationEndsFor(bt3); var logData = resultLog.GetData(); logData.Add(sourceLog.GetData()); Assert.That(logData.GetNumberOfSuccesses(), Is.EqualTo(5)); Assert.That(logData.GetNumberOfWarnings(), Is.EqualTo(5)); Assert.That(logData.GetNumberOfFailures(), Is.EqualTo(5)); Assert.That(logData.GetNumberOfUnexpectedExceptions(), Is.EqualTo(5)); var results = new List <ValidationResult> (logData.GetResults()); Assert.That(results.Count, Is.EqualTo(4)); Assert.That(results[0].ValidatedDefinition, Is.EqualTo(bt2)); Assert.That(results[0].Successes.Count, Is.EqualTo(1)); Assert.That(results[0].Failures.Count, Is.EqualTo(1)); Assert.That(results[0].Warnings.Count, Is.EqualTo(1)); Assert.That(results[0].Exceptions.Count, Is.EqualTo(1)); Assert.That(results[1].ValidatedDefinition, Is.EqualTo(bt1)); Assert.That(results[1].Successes.Count, Is.EqualTo(2)); Assert.That(results[1].Successes[0].Message, Is.EqualTo("4")); Assert.That(results[1].Successes[1].Message, Is.EqualTo("Success")); Assert.That(results[1].Warnings.Count, Is.EqualTo(2)); Assert.That(results[1].Warnings[0].Message, Is.EqualTo("5")); Assert.That(results[1].Warnings[1].Message, Is.EqualTo("Warn")); Assert.That(results[1].Failures.Count, Is.EqualTo(2)); Assert.That(results[1].Failures[0].Message, Is.EqualTo("6")); Assert.That(results[1].Failures[1].Message, Is.EqualTo("Fail")); Assert.That(results[1].Exceptions.Count, Is.EqualTo(2)); Assert.That(results[1].Exceptions[0].Exception, Is.EqualTo(exception)); Assert.That(results[1].Exceptions[1].Exception, Is.EqualTo(exception)); Assert.That(results[2].ValidatedDefinition, Is.EqualTo(bt3)); Assert.That(results[2].Successes.Count, Is.EqualTo(1)); Assert.That(results[2].Failures.Count, Is.EqualTo(1)); Assert.That(results[2].Warnings.Count, Is.EqualTo(1)); Assert.That(results[2].Exceptions.Count, Is.EqualTo(1)); Assert.That(results[3].ValidatedDefinition, Is.EqualTo(bt4)); Assert.That(results[3].Successes.Count, Is.EqualTo(1)); Assert.That(results[3].Successes[0].Message, Is.EqualTo("Success2")); Assert.That(results[3].Warnings.Count, Is.EqualTo(1)); Assert.That(results[3].Warnings[0].Message, Is.EqualTo("Warn2")); Assert.That(results[3].Failures.Count, Is.EqualTo(1)); Assert.That(results[3].Failures[0].Message, Is.EqualTo("Fail2")); Assert.That(results[3].Exceptions.Count, Is.EqualTo(1)); Assert.That(results[3].Exceptions[0].Exception, Is.EqualTo(exception)); }