public void SayHelloFactory_Should_Throw_Aggregate_Exception_When_Two_Duplicates() { var duplicateInstance1 = new English.EnglishHello(); var duplicateInstance2 = new French.FrenchHello(); var instances = new List<ISayHello> { new English.EnglishHello(), new EnglishInformal.EnglishInformalHello(), new French.FrenchHello(), duplicateInstance1, duplicateInstance2 }; var expectedMessage1 = DuplicateLanguageException.GetMessage(duplicateInstance1.Language, instances.IndexOf(duplicateInstance1), duplicateInstance1.GetType()); var expectedMessage2 = DuplicateLanguageException.GetMessage(duplicateInstance2.Language, instances.IndexOf(duplicateInstance2), duplicateInstance2.GetType()); AggregateException exceptionCaught = null; var expectedMessages = new[] {expectedMessage1, expectedMessage2}; try { var dummy = new SayHelloFactory(instances); } catch (Exception ex) { exceptionCaught = ex as AggregateException; } Assert.NotNull(exceptionCaught); exceptionCaught.InnerExceptions.Cast<DuplicateLanguageException>().Select( d => d.Message).Should().BeEquivalentTo(expectedMessages); }
public void SayHelloFactory_Should_Throw_Single_Exception_When_One_Duplicate() { var duplicateInstance = new English.EnglishHello(); var instances = new List<ISayHello> { new English.EnglishHello(), new EnglishInformal.EnglishInformalHello(), new French.FrenchHello(), duplicateInstance }; var expectedMessage = DuplicateLanguageException.GetMessage(duplicateInstance.Language, instances.IndexOf(duplicateInstance), duplicateInstance.GetType()); new Action(() => { var dummy = new SayHelloFactory(instances); }).Should().Throw<DuplicateLanguageException>().WithMessage(expectedMessage); }