private TesterBase CreateTester(NetworkFunction networkFunction, DCSDataElement dataElement) { // specific types we want to test a certain way switch (networkFunction) { case PushButton button: _ = button; return(new BooleanTester(dataElement)); case Switch switchFunction: return(new SwitchTester(dataElement, switchFunction)); } // infer based on format switch (dataElement.Format) { case "%1d": // only testing 0 and 1 even if this is a switch with multiple values return(new BooleanTester(dataElement)); case null: if (networkFunction is NetworkValue) { // at least simulate 0..1 for generic values return(new NumericTester(dataElement, 3)); } // no tester for values created manually in script (yet) return(new UnsupportedTester(dataElement)); default: Match match = FloatFormat.Match(dataElement.Format); if (match.Success && match.Groups[1].Success && int.TryParse(match.Groups[1].Value, out int precision)) { return(new NumericTester(dataElement, precision)); } break; } return(new UnsupportedTester(dataElement)); }
protected TesterBase(DCSDataElement data) { Data = data; }
public SwitchTester(DCSDataElement dataElement, Switch switchFunction) : base(dataElement) { _values = switchFunction.PositionValues.ToList(); }
/// <summary> /// default tester for value with unknown precision /// </summary> /// <param name="dataElement"></param> public NumericTester(DCSDataElement dataElement) : base(dataElement) { _range = 1d; }
private const double RAMP_TIME = 2d; // number of seconds from 0 to max value (same amount of time taken to ramp back down and again to stay at 0) public NumericTester(DCSDataElement dataElement, int precision) : base(dataElement) { _range = Math.Pow(10, 3 - precision); }
public UnsupportedTester(DCSDataElement dataElement) : base(dataElement) { Logger.Warn("Interface tester does not recognize format {Format} of {Id}", dataElement.Format, dataElement.ID); }
public BooleanTester(DCSDataElement data) : base(data) { // no code }