public IGen <Test> ItWillProducesShrinksThatCanRecreateTheOriginalList() => from minLength in TestGen.MinLength() from list in DomainGen.AnyList().WithCountGreaterThanEqual((minLength + 1) * 2) select Property.ForThese(() => { var func = ShrinkFunc.Bisect <object>(minLength); var shrinks = func(list.ToList()); shrinks.SelectMany(x => x).Should().BeEquivalentTo(list.ToList()); });
public IGen <Test> IfListLengthIsLessThanDoubleMinLength_ItWillNotShrink() => from minLength in TestGen.MinLength(minMinLength: 1) from list in DomainGen.AnyList().WithCountLessThan(minLength * 2) select Property.ForThese(() => { var func = ShrinkFunc.Bisect <object>(minLength); var shrinks = func(list.ToList()); shrinks.Should().BeEmpty(); });
public IGen <Test> IfListHasOneElement_ItWillNotShrink() => from minLength in TestGen.MinLength() from list in DomainGen.AnyList().WithCount(1) select Property.ForThese(() => { var func = ShrinkFunc.Bisect <object>(minLength); var shrinks = func(list.ToList()); shrinks.Should().BeEmpty(); });
public IGen <Test> ItWillProduceTwoShrinksOfSimilarLengths() => from minLength in TestGen.MinLength() from list in DomainGen.AnyList().WithCountGreaterThanEqual((minLength + 1) * 2) select Property.ForThese(() => { var func = ShrinkFunc.Bisect <object>(minLength); var shrinks = func(list.ToList()); shrinks.Should().HaveCount(2); shrinks.First().Count.Should().BeCloseTo(shrinks.Skip(1).Single().Count, 1); });
public IGen <Test> ItWillNotProduceShrinksLessThanMinimumLength() => from minLength in TestGen.MinLength() from list in DomainGen.AnyList().WithCountGreaterThanEqual((minLength + 1) * 2) select Property.ForThese(() => { var func = ShrinkFunc.Bisect <object>(minLength); var shrinks = func(list.ToList()); shrinks.Should() .NotBeEmpty().And .OnlyContain(shrink => shrink.Count >= minLength); });