public void TwoFailuresOneSuccess() { var lots = new List <Lot>(); var lot1 = new LotBuilder() .NotExpired() .Interdicted() .Build(); var lot2 = new LotBuilder() .Expired() .NotInterdicted() .Build(); var lot3 = new LotBuilder() .NotExpired() .NotInterdicted() .Build(); lots.Add(lot1); lots.Add(lot2); lots.Add(lot3); ISpecificationResults <Lot> result = Specification .Create <Lot>(lots) .ThatAreNot <Expired>() .AndAre <Interdicted>() .GetResults(); Assert.False(result.AreAllCandidatesValid); Assert.Single(result.ValidCandidates); Assert.Equal(2, result.InvalidCandidates.Count()); Assert.Equal(3, result.AllCandidates.Count()); Assert.Contains(lot1, result.ValidCandidates); Assert.Contains(lot2, result.InvalidCandidates); Assert.Contains(lot3, result.InvalidCandidates); Assert.False(result.HasError <AvailableOnStock>()); Assert.True(result.HasError <Expired>()); Assert.True(result.HasError <Interdicted>()); Assert.True(result.HasError <Expired>(lot2)); Assert.True(result.HasError <Interdicted>(lot2)); Assert.False(result.HasError <Expired>(lot3)); Assert.True(result.HasError <Interdicted>(lot3)); }
public void SimpleOr() { var lots = new List <Lot>(); var lot1 = new LotBuilder() .NotExpired() .Interdicted() .Build(); var lot2 = new LotBuilder() .NotExpired() .NotInterdicted() .Build(); lots.Add(lot1); lots.Add(lot2); ISpecificationResults <Lot> result = Specification .Create <Lot>(lots) .ThatAre <Expired>() .OrAre <Interdicted>() .GetResults(); Assert.False(result.AreAllCandidatesValid); Assert.Single(result.ValidCandidates); Assert.Single(result.InvalidCandidates); Assert.Equal(2, result.AllCandidates.Count()); Assert.True(result.HasError <Expired>()); Assert.True(result.HasError <Interdicted>()); Assert.False(result.HasError <Expired>(lot1)); Assert.True(result.HasError <Expired>(lot2)); Assert.True(result.HasError <Interdicted>(lot2)); }
public void AllFaling() { var lots = new List <Lot>(); var lot1 = new LotBuilder() .LotNumber("Lot1") .Expired() .Interdicted() .AvailableOnStock() .Build(); var lot2 = new LotBuilder() .LotNumber("Lot2") .Expired() .NotInterdicted() .NotAvailableOnStock() .Build(); var lot3 = new LotBuilder() .LotNumber("Lot3") .NotExpired() .Interdicted() .NotAvailableOnStock() .Build(); lots.Add(lot1); lots.Add(lot2); lots.Add(lot3); string fullErrorMessages = new StringBuilder() .Append(new Interdicted().GetErrorMessageWhenExpectingTrue(lot2)) .ToString(); ISpecificationResults <Lot> result = Specification .Create <Lot>(lots) .ThatAre <Expired>() .AndAre <Interdicted>() .AndAreNot <AvailableOnStock>() .GetResults(); Assert.False(result.AreAllCandidatesValid); Assert.False(result.ValidCandidates.Any()); Assert.Equal(3, result.InvalidCandidates.Count()); Assert.Equal(3, result.AllCandidates.Count()); Assert.True(result.HasError <Expired>()); Assert.True(result.HasError <Interdicted>()); Assert.True(result.HasError <AvailableOnStock>()); Assert.False(result.HasError <Expired>(lot1)); Assert.False(result.HasError <Expired>(lot2)); Assert.True(result.HasError <Expired>(lot3)); Assert.True(result.HasError <Interdicted>(lot2)); Assert.False(result.HasError <Interdicted>(lot1)); Assert.False(result.HasError <Interdicted>(lot3)); Assert.False(result.HasError <AvailableOnStock>(lot2)); Assert.False(result.HasError <AvailableOnStock>(lot3)); Assert.True(result.HasError <AvailableOnStock>(lot1)); Assert.Equal(3, result.TotalOfErrors); Assert.Equal(0, result.TotalOfWarnings); Assert.Equal(fullErrorMessages, result.ErrorMessages); }