Context StringDomainContext(bool useDefaults, int seed) { return(c => c .Given("string base domain", x => TestDataDomain = configurator => configurator.UseDefaults(useDefaults).UseRandom(new DefaultRandom(seed))) .Given("string evolutionary domain", x => EvolutionaryDomain = configurator => configurator.AddRule(new StringMarryRule())) .Given(DataGeneratorContext()) .Given(StringInitialDataContext())); }
Context PersonDomainContext(int seed = 0, bool useDefaults = true) { return(c => c .Given("person test domain", x => TestDataDomain = configurator => configurator // .UseDefaults(useDefaults).UseRandom(new DefaultRandom(seed)) // .For <Gender> ().AddProvider(context => (Gender)(context.Random.Next(0, 2)))) .Given("person evolution domain", x => EvolutionaryDomain = configurator => configurator // .AddGlobalRule(new WorldRule()) .AddRule(new ProcreationRule()).AddRule(new AgingRule())) .Given(DataGeneratorContext()) .Given(PersonInitialDataContext())); }
/// <summary> /// Creates an evolutionary data generator for the given domain /// </summary> /// <param name="testDataDomainConfiguration">the domain, containing all relevant imformation for the test data generation</param> /// <param name="evolutionaryDomainConfiguration">the domain, containing all relevant information for the evolutionary generation</param> /// <returns>the final test data generator that can be used for data generation</returns> public static RuleBasedDataGenerator Create(TestDataDomainConfiguration testDataDomainConfiguration, [CanBeNull] EvolutionaryDomainConfiguration evolutionaryDomainConfiguration) { var testDataGenerator = TestDataGeneratorFactory.Create(testDataDomainConfiguration); var evolutionaryDomainConfigurator = new RuleBasedDataGeneratorConfigurator(); if (evolutionaryDomainConfiguration != null) { evolutionaryDomainConfigurator = (RuleBasedDataGeneratorConfigurator)evolutionaryDomainConfiguration(evolutionaryDomainConfigurator); } var ruleSet = evolutionaryDomainConfigurator.Build(); return(new RuleBasedDataGenerator(testDataGenerator, ruleSet)); }