Beispiel #1
0
        public void GeneratesCorrectType(Type argumentType)
        {
            var generator = new EnumerableGenerator(elementGeneratorType: typeof(ConstantGenerator), elementGeneratorConstructorArguments: 42);
            var random    = new FuzzRandom();

            var generatedValue = generator.Generate(Mock.Of <IFuzzProfile>(), argumentType, random);

            Assert.IsInstanceOfType(generatedValue, argumentType);
        }
Beispiel #2
0
        public override object?Generate(IFuzzProfile profile, Type type, FuzzRandom random)
        {
            var constructor = random.Choice(type.GetConstructors());

            var arguments = constructor.GetParameters()
                            .Select(p => profile.Generate(p.ParameterType, random));

            return(constructor.Invoke(arguments.ToArray()));
        }
Beispiel #3
0
        public void GeneratesString()
        {
            var generator = new NaughtyStringGenerator();
            var random    = new FuzzRandom();

            var generatedValue = generator.Generate(Mock.Of <IFuzzProfile>(), typeof(string), random);

            Assert.That.IsType <string>(generatedValue);
        }
Beispiel #4
0
        public void GeneratesInt()
        {
            var generator = new UniformIntGenerator();
            var random    = new FuzzRandom();

            var generatedValue = generator.Generate(Mock.Of <IFuzzProfile>(), typeof(int), random);

            Assert.IsTrue(generatedValue is int);
        }
Beispiel #5
0
        public void GeneratesEnum()
        {
            var generator = new EnumGenerator();
            var random    = new FuzzRandom();

            var generatedValue = generator.Generate(Mock.Of <IFuzzProfile>(), typeof(TestEnum), random);

            Assert.IsTrue(generatedValue is TestEnum);
        }
Beispiel #6
0
        public override object?Generate(IFuzzProfile profile, Type type, FuzzRandom random)
        {
            // Only find direct subclasses. Indirect subclasses can be found recursively
            var candidateClasses = DirectSubclassesOf(type)
                                   .ToList();

            var generatedType = random.Choice(candidateClasses);

            return(profile.Generate(generatedType, random));
        }
Beispiel #7
0
        public void CollectionGeneratorParams()
        {
            var generator = new ChoiceGenerator(1, 2, 3, 4);
            var random    = new FuzzRandom();

            var generatedValue = generator.Generate(Mock.Of <IFuzzProfile>(), typeof(int), random);

            Assert.That.IsType <int>(generatedValue);
            Assert.IsTrue((int)generatedValue < 5);
            Assert.IsTrue((int)generatedValue > 0);
        }
Beispiel #8
0
        public void DefaultsToProfileElementGenerator()
        {
            var generator = new EnumerableGenerator();
            var random    = new FuzzRandom();

            var profile = new Mock <IFuzzProfile>();

            profile.Setup(c => c.GeneratorFor(typeof(int))).Returns(new ConstantGenerator(42));

            var generatedValue = generator.Generate(profile.Object, typeof(IList <int>), random);

            Assert.IsInstanceOfType(generatedValue, typeof(IList <int>));
        }
Beispiel #9
0
        public override object?Generate(IFuzzProfile profile, Type type, FuzzRandom random)
        {
            var constructor = type.GetConstructor(Array.Empty <Type>()) !;
            var instance    = constructor.Invoke(Array.Empty <object?>());

            foreach (var property in type.GetDataProperties())
            {
                if (!property.CanWrite)
                {
                    continue;
                }

                var value = profile.Generate(property.PropertyType, random);
                property.SetValue(instance, value);
            }

            return(instance);
        }
Beispiel #10
0
 public object?Generate(IFuzzProfile profile, Type type, FuzzRandom random)
 {
     return(null);
 }
Beispiel #11
0
 public override object?Generate(IFuzzProfile profile, Type type, FuzzRandom random)
 {
     return(random.Uniform(Min, Max));
 }
Beispiel #12
0
 public override object?Generate(IFuzzProfile profile, Type type, FuzzRandom random)
 {
     return(_value);
 }
Beispiel #13
0
 public override object?Generate(IFuzzProfile profile, Type type, FuzzRandom random)
 {
     return(random.Poisson(Mean));
 }
Beispiel #14
0
        public override object?Generate(IFuzzProfile profile, Type type, FuzzRandom random)
        {
            Check.IsTrue(type.IsEnum);

            return(random.Choice(type.GetEnumValues()));
        }
Beispiel #15
0
 public override object?Generate(IFuzzProfile profile, Type type, FuzzRandom random)
 {
     return(random.Choice(_items));
 }