public void APropertyReturningMethodInfoReceivesAConcatenationOfInput()
        {
            var gen0 = Gen.Int32();
            var gen1 = Gen.Int32();

            var forAllProperty      = Property.ForAll(gen0, gen1, (x, y) => true);
            var forAllPropertyInput = forAllProperty.Select(x => new object[] { x.Input.Item1, x.Input.Item2 });

            var methodInfoProperty      = Property.Reflect(GetMethod(nameof(ARecursiveProperty)), this);
            var methodInfoPropertyInput = methodInfoProperty.Select(x => x.PresentedInput);

            GenAssert.Equal(forAllPropertyInput, methodInfoPropertyInput, 0, 1);
        }
        public void ABooleanReturningMethodInfoReceivesInputLikeForAll()
        {
            var gen0 = Gen.Int32();
            var gen1 = Gen.Int32();

            var forAllProperty      = Property.ForAll(gen0, gen1, (x, y) => true);
            var forAllPropertyInput = forAllProperty.Select(x => new object[] { x.Input.Item1, x.Input.Item2 });

            Func <int, int, bool> f     = (x, y) => true;
            var methodInfoProperty      = Property.Reflect(f.Method, null);
            var methodInfoPropertyInput = methodInfoProperty.Select(x => x.Input);

            GenAssert.Equal(forAllPropertyInput, methodInfoPropertyInput, 0, 10);
        }
        public void AVoidMethodInfoReceivesInputLikeForAll()
        {
            var gen0 = Gen.Int32();
            var gen1 = Gen.Int32();

            var forAllProperty      = Property.ForAll(gen0, gen1, (x, y) => { });
            var forAllPropertyInput = forAllProperty.Select(x => new object[] { x.Input.Item1, x.Input.Item2 });

            Action <int, int> f         = (x, y) => { };
            var methodInfoProperty      = Property.Reflect(f.Method, null);
            var methodInfoPropertyInput = methodInfoProperty.Select(x => x.Input);

            GenAssert.Equal(forAllPropertyInput, methodInfoPropertyInput, 0, 10);
        }