public void EvaluateDeferredConfig(IEngineEnvironmentSettings environmentSettings, IVariableCollection vars, IMacroConfig rawConfig, IParameterSet parameters, ParameterSetter setter) { GeneratedSymbolDeferredMacroConfig deferredConfig = rawConfig as GeneratedSymbolDeferredMacroConfig; if (deferredConfig == null) { throw new InvalidCastException("Couldn't cast the rawConfig as a GeneratedSymbolDeferredMacroConfig"); } int low; int high; if (!deferredConfig.Parameters.TryGetValue("low", out JToken lowToken)) { throw new ArgumentNullException("low"); } else { low = lowToken.Value <int>(); } if (!deferredConfig.Parameters.TryGetValue("high", out JToken highToken)) { high = int.MaxValue; } else { high = highToken.Value <int>(); } IMacroConfig realConfig = new RandomMacroConfig(deferredConfig.VariableName, low, high); EvaluateConfig(environmentSettings, vars, realConfig, parameters, setter); }
public void TestRandomConfig(int low, int?high) { string variableName = "myRnd"; RandomMacroConfig macroConfig = new RandomMacroConfig(variableName, low, high); IVariableCollection variables = new VariableCollection(); IRunnableProjectConfig config = new SimpleConfigModel(); IParameterSet parameters = new ParameterSet(config); ParameterSetter setter = MacroTestHelpers.TestParameterSetter(EngineEnvironmentSettings, parameters); RandomMacro macro = new RandomMacro(); macro.EvaluateConfig(EngineEnvironmentSettings, variables, macroConfig, parameters, setter); ITemplateParameter valueParam; Assert.True(parameters.TryGetParameterDefinition(variableName, out valueParam)); long randomValue = (long)parameters.ResolvedValues[valueParam]; Assert.True(randomValue >= low); if (high.HasValue) { Assert.True(randomValue <= high); } }
public void EvaluateConfig(IEngineEnvironmentSettings environmentSettings, IVariableCollection vars, IMacroConfig rawConfig, IParameterSet parameters, ParameterSetter setter) { RandomMacroConfig config = rawConfig as RandomMacroConfig; if (config == null) { throw new InvalidCastException("Couldn't cast the rawConfig as RandomMacroConfig"); } Random rnd = new Random(); int value = rnd.Next(config.Low, config.High); Parameter p; if (parameters.TryGetParameterDefinition(config.VariableName, out ITemplateParameter existingParam)) { // If there is an existing parameter with this name, it must be reused so it can be referenced by name // for other processing, for example: if the parameter had value forms defined for creating variants. // When the param already exists, use its definition, but set IsVariable = true for consistency. p = (Parameter)existingParam; p.IsVariable = true; } else { p = new Parameter { IsVariable = true, Name = config.VariableName }; } vars[config.VariableName] = value.ToString(); setter(p, value.ToString()); }
public IMacroConfig CreateConfig(IEngineEnvironmentSettings environmentSettings, IMacroConfig rawConfig) { GeneratedSymbolDeferredMacroConfig deferredConfig = rawConfig as GeneratedSymbolDeferredMacroConfig; if (deferredConfig == null) { throw new InvalidCastException("Couldn't cast the rawConfig as a GeneratedSymbolDeferredMacroConfig"); } int low; int high; if (!deferredConfig.Parameters.TryGetValue("low", out JToken lowToken)) { throw new ArgumentNullException("low"); } else { low = lowToken.Value <int>(); } if (!deferredConfig.Parameters.TryGetValue("high", out JToken highToken)) { high = int.MaxValue; } else { high = highToken.Value <int>(); } IMacroConfig realConfig = new RandomMacroConfig(deferredConfig.VariableName, deferredConfig.DataType, low, high); return(realConfig); }
public void EvaluateConfig(IEngineEnvironmentSettings environmentSettings, IVariableCollection vars, IMacroConfig rawConfig, IParameterSet parameters, ParameterSetter setter) { RandomMacroConfig config = rawConfig as RandomMacroConfig; if (config == null) { throw new InvalidCastException("Couldn't cast the rawConfig as RandomMacroConfig"); } Random rnd = new Random(); int value = rnd.Next(config.Low, config.High); Parameter p = new Parameter { IsVariable = true, Name = config.VariableName }; setter(p, value.ToString()); }