public TestCodeGeneratorContext(string testName, TSLScript script, Random masterRandom) { TestName = testName; Script = script; MasterRandom = masterRandom; StructsUsedInProtocols = script.Protocols .Where(p => p.Type != TSLProtocolType.Http) .SelectMany(p => new[] { p.RequestType, p.ResponseType }) .OfType <TSLStruct>() .ToImmutableHashSet(); }
public static TSLScript GetRandomTSLScript(int randomSeed, Random masterRandom) { // generate the top level elements = Struct | Cell | Enum | Protocol | Server | Proxy | Module var context = new TSLGeneratorContext(masterRandom); var topLevelElementNumber = DiscreteUniform.Sample(masterRandom, GeneralSettings.MinTopLevelElementNumber, GeneralSettings.MaxTopLevelElementNumber); // NOTE(leasunhy): to ensure the order of the types of the generated elements, we use (i/total) as typeSelector //var topLevelElementTypeDist = new ContinuousUniform(0.0, 1.0, new Random(masterRandom.Next())); //foreach (var typeSelector in topLevelElementTypeDist.Samples().Take(topLevelElementNumber)) // TopLevelElementGenerator(typeSelector, context, masterRandom); var topLevelElementGenerator = context.GetTopLevelElementGenerator(); for (int i = 0; i < topLevelElementNumber; ++i) { topLevelElementGenerator((double)i / topLevelElementNumber); } Debug.Assert(topLevelElementNumber == context.TopLevelElementCount); var topLevelElements = context.GetAllTopLevelElements().ToImmutableArray(); var script = new TSLScript(context); script.RandomSeedForGeneration = randomSeed; return(script); }
public TSLTemplate(TSLScript script) { Script = script; }