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);
        }
示例#3
0
 public TSLTemplate(TSLScript script)
 {
     Script = script;
 }