Esempio n. 1
0
 public NebulaCheck.IGen <Test> ItErrorsWhenMinimumLengthIsGreaterThanMaximumLength() =>
 from minLength in Gen.Int32().Between(1, 100)
 from maxLength in Gen.Int32().GreaterThanEqual(0).LessThan(minLength)
 from seed in DomainGen.Seed()
 from size in DomainGen.Size()
 select Property.ForThese(() =>
 {
Esempio n. 2
0
 public NebulaCheck.IGen <Test> ItHasACountLimitEnabledByDefault() =>
 from seed in DomainGen.Seed()
 from size in DomainGen.Size()
 from elementGen in DomainGen.Gen()
 from excessiveCount in Gen.Int32().Between(1001, 2000)
 select Property.ForThese(() =>
 {
Esempio n. 3
0
 public NebulaCheck.IGen <Test> ItProducesValuesLikeList() =>
 from elementGen in DomainGen.Gen()
 from count in Gen.Int32().Between(0, 20)
 from seed in DomainGen.Seed()
 from size in DomainGen.Size()
 select Property.ForThese(() =>
 {
Esempio n. 4
0
 public NebulaCheck.IGen <Test> IfThereIsOneChoice_ItProducesValuesLikeTheSource() =>
 from choiceGen in DomainGen.Gen()
 from choiceWeight in Gen.Int32().GreaterThan(1)
 from seed in DomainGen.Seed()
 from size in DomainGen.Size()
 select Property.ForThese(() =>
 {
Esempio n. 5
0
        public IGen <Test> ItRendersOneLine() =>
        from value in Gen.Choose(DomainGen.Any(), DomainGen.AnyList())
        select Property.ForThese(() =>
        {
            var rendering = ExampleRenderer.Render(new object[] { value });

            rendering.Should().ContainSingle();
        });
Esempio n. 6
0
 public NebulaCheck.IGen <Test> ItErrorsWhenMinimumCountIsGreaterThanMaximumCount() =>
 from seed in DomainGen.Seed()
 from size in DomainGen.Size()
 from elementGen in DomainGen.Gen()
 from minCount in Gen.Int32().Between(1, 20)
 from maxCount in Gen.Int32().GreaterThanEqual(0).LessThan(minCount)
 select Property.ForThese(() =>
 {
Esempio n. 7
0
 public NebulaCheck.IGen <Test> ItProducesValuesLikeInt32() =>
 from min in Gen.Int16()
 from max in Gen.Int16().GreaterThanEqual(min)
 from origin in Gen.Int16().Between(min, max)
 from bias in DomainGen.Bias()
 from seed in DomainGen.Seed()
 from size in DomainGen.Size()
 select Property.ForThese(() =>
 {
Esempio n. 8
0
 public NebulaCheck.IGen <Test> ItOnlyCallsThePropertyFunctionOnce() =>
 from gen in DomainGen.Gen()
 from func in Gen.Function <object, bool>(Gen.Boolean())
 from seed in Gen.Int32()
 let property0 = gen.ForAll(func)
                 let result0 = property0.Check(seed: seed)
                                   where result0.Falsified
                               select Property.ForThese(() =>
 {
Esempio n. 9
0
        public NebulaCheck.IGen <Test> TheDefaultMinimumIsTheMinimumInt32() =>
        from seed in DomainGen.Seed()
        from size in DomainGen.Size()
        select Property.ForThese(() =>
        {
            var gen0 = GalaxyCheck.Gen.Char();
            var gen1 = GalaxyCheck.Gen.Char(GalaxyCheck.Gen.CharType.All);

            SampleTraversal(gen0, seed, size).Should().BeEquivalentTo(SampleTraversal(gen1, seed, size));
        });
Esempio n. 10
0
        public NebulaCheck.IGen <Test> IfDeepCheckIsDisabled_ForAnEasilyFalsifiableProperty_ItIsLimitedByDeepCheckDisabled() =>
        from seed in DomainGen.Seed()
        select Property.ForThese(() =>
        {
            var property = GalaxyCheck.Gen.Int32().ForAll(x => x < 1);

            var result = property.Check(seed: seed, deepCheck: false);

            result.TerminationReason.Should().Be(GalaxyCheck.Runners.Check.TerminationReason.DeepCheckDisabled);
        });
Esempio n. 11
0
        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();
        });
Esempio n. 12
0
        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 NebulaCheck.IGen <Test> IfCharTypeIsControl_ItOnlyProducesCharactersInControlAsciiSet() =>
        from seed in DomainGen.Seed()
        from size in DomainGen.Size()
        select Property.ForThese(() =>
        {
            var gen = GalaxyCheck.Gen.Char(GalaxyCheck.Gen.CharType.Control);

            var sample = SampleTraversal(gen, seed, size);

            sample.Should().OnlyContain(c => c <= 37 || c == 127);
        });
        public NebulaCheck.IGen <Test> IfCharTypeIsNumeric_ItOnlyProducesNumericCharacters() =>
        from seed in DomainGen.Seed()
        from size in DomainGen.Size()
        select Property.ForThese(() =>
        {
            var gen = GalaxyCheck.Gen.Char(GalaxyCheck.Gen.CharType.Numeric);

            var sample = SampleTraversal(gen, seed, size);

            sample.Should().OnlyContain(c => new Regex(@"[0-9]").IsMatch(c.ToString()));
        });
            public NebulaCheck.IGen <Test> ItIsAffectedByItsArgument() =>
            from variables in Gen.Int32().WithBias(Gen.Bias.None).Two().ListOf().WithCount(10)
            from seed in DomainGen.Seed()
            select Property.ForThese(() =>
            {
                var gen = GalaxyCheck.Gen.Int32().FunctionOf <object, int>();

                var func = gen.SampleOne(seed: seed, size: 100);

                variables.Should().Contain(variable => func(variable.Item1) != func(variable.Item2));
            });
Esempio n. 16
0
        public IGen <Test> ItWillProduceDistinctShrinks() =>
        from minLength in TestGen.MinLength()
        from list in DomainGen.AnyList().WithCountGreaterThan(minLength)
        select Property.ForThese(() =>
        {
            var func = ShrinkFunc.DropOne <object>(minLength);

            var shrinks = func(list.ToList());

            shrinks.Should().OnlyHaveUniqueItems();
        });
Esempio n. 17
0
        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> IfKIsOne_ItProducesAListOfEachSingleElement() =>
        from list in DomainGen.AnyList().WithCountGreaterThanEqual(2)
        select Property.ForThese(() =>
        {
            var func = ShrinkFunc.OtherCombinations <object>(1);

            var shrinks = func(list.ToList());

            shrinks.Should().HaveCount(list.Count);
            shrinks.SelectMany(x => x).Should().BeEquivalentTo(list);
        });
Esempio n. 19
0
        public NebulaCheck.IGen <Test> Otherwise_ItShrinksToNullCharacter() =>
        from seed in DomainGen.Seed()
        from size in DomainGen.Size()
        select Property.ForThese(() =>
        {
            var gen = GalaxyCheck.Gen.Char(GalaxyCheck.Gen.CharType.Control);

            var minimum = gen.Minimum(seed: seed, size: size);

            minimum.Should().Be('\u0000');
        });
        public IGen <Test> IfListCountIsGreaterThanK_ItWillShrink() =>
        from k in Gen.Int32().Between(1, 20)
        from list in DomainGen.AnyList().WithCountGreaterThan(k)
        select Property.ForThese(() =>
        {
            var func = ShrinkFunc.OtherCombinations <object>(k);

            var shrinks = func(list.ToList());

            shrinks.Should().NotBeEmpty();
        });
Esempio n. 21
0
        public NebulaCheck.IGen <Test> ItExhaustsWithAnImpossiblePredicate() =>
        from elementGen in DomainGen.Gen()
        from seed in DomainGen.Seed()
        from size in DomainGen.Size()
        select Property.ForThese(() =>
        {
            var gen = elementGen.Where(_ => false).InfiniteOf();

            Action test = () => gen.SampleOne(seed: seed, size: size).Take(1).ToList();

            test.Should().Throw <GalaxyCheck.Exceptions.GenExhaustionException>();
        });
Esempio n. 22
0
        public NebulaCheck.IGen <Test> IfThePropertyIsInfallible_ItReturnsTheGivenIterations() =>
        from gen in DomainGen.Gen()
        from iterations in DomainGen.Iterations()
        from seed in DomainGen.Seed()
        select Property.ForThese(() =>
        {
            var property = gen.ForAll((_) => true);

            var result = property.Check(iterations: iterations, seed: seed);

            result.Iterations.Should().Be(iterations);
        });
Esempio n. 23
0
        public NebulaCheck.IGen <Test> OtherwiseIfCharTypeHasWhitespace_ItShrinksToSpace() =>
        from charType in TestGen.CharType(GalaxyCheck.Gen.CharType.Alphabetical)
        from seed in DomainGen.Seed()
        from size in DomainGen.Size()
        select Property.ForThese(() =>
        {
            var gen = GalaxyCheck.Gen.Char(GalaxyCheck.Gen.CharType.Whitespace | charType);

            var minimum = gen.Minimum(seed: seed, size: size);

            minimum.Should().Be(' ');
        });
Esempio n. 24
0
        public NebulaCheck.IGen <Test> IfCharTypeHasAlphabetical_ItShrinksToLowercaseA() =>
        from charType in TestGen.CharType()
        from seed in DomainGen.Seed()
        from size in DomainGen.Size()
        select Property.ForThese(() =>
        {
            var gen = GalaxyCheck.Gen.Char(GalaxyCheck.Gen.CharType.Alphabetical | charType);

            var minimum = gen.Minimum(seed: seed, size: size);

            minimum.Should().Be('a');
        });
Esempio n. 25
0
        public NebulaCheck.IGen <Test> ItDoesNotConsumeRandomness() =>
        from value in DomainGen.Any()
        from seed in DomainGen.Seed()
        from size in DomainGen.Size()
        select Property.ForThese(() =>
        {
            var gen = GalaxyCheck.Gen.Constant(value);

            var sample = gen.Advanced.SampleOneWithMetrics(seed: seed, size: size);

            sample.RandomnessConsumption.Should().Be(0);
        });
Esempio n. 26
0
        public NebulaCheck.IGen <Test> ItProducesValuesDeterministically() =>
        from elementGen in DomainGen.Gen()
        from seed in DomainGen.Seed()
        from size in DomainGen.Size()
        select Property.ForThese(() =>
        {
            var gen = elementGen.InfiniteOf();

            var sample = gen.SampleOne(seed: seed, size: size);

            sample.Take(10).Should().BeEquivalentTo(sample.Take(10));
        });
Esempio n. 27
0
        public NebulaCheck.IGen <Test> ItShrinksToTheOrigin() =>
        from bias in DomainGen.Bias()
        from origin in Gen.Int64()
        from seed in DomainGen.Seed()
        select Property.ForThese(() =>
        {
            var gen = GalaxyCheck.Gen.Int64().WithBias(bias).ShrinkTowards(origin);

            var minimum = gen.Minimum(seed: seed);

            minimum.Should().Be(origin);
        });
            public NebulaCheck.IGen <Test> ItIsPure() =>
            from returnGen in DomainGen.Gen()
            from seed in DomainGen.Seed()
            from size in DomainGen.Size()
            select Property.ForThese(() =>
            {
                var gen = returnGen.FunctionOf();

                var func = gen.SampleOne(seed: seed, size: size);

                func().Should().Be(func());
            });
        public NebulaCheck.IGen <Test> ItCanGenerateAnEmptyRecord() =>
        from value in DomainGen.Any()
        from seed in DomainGen.Seed()
        from size in DomainGen.Size()
        select Property.ForThese(() =>
        {
            var gen = GalaxyCheck.Gen.Create <EmptyRecord>();

            var instance = gen.SampleOne(seed: seed, size: size);

            instance.Should().NotBeNull();
        });
Esempio n. 30
0
        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);
        });