/// <summary> /// Constructor /// </summary> /// <param name="paramType">Strongly typed enum of the new parameter</param> // ReSharper disable once UnusedMember.Global public FrameParamDef(FrameParamKeyType paramType) { var paramDef = FrameParamUtilities.GetParamDefByType(paramType); ParamType = paramDef.ParamType; Name = paramDef.Name; DataType = paramDef.DataType; Description = paramDef.Description; }
/// <summary> /// Get the value for a parameter /// </summary> /// <param name="paramType">Parameter type</param> /// <param name="valueIfMissing">Value to return if the parameter is not defined</param> /// <returns>Value (int)</returns> public int GetValueInt32(FrameParamKeyType paramType, int valueIfMissing) { if (Values.TryGetValue(paramType, out var paramEntry)) { if (FrameParamUtilities.ConvertDynamicToInt32(paramEntry.Value, out int result)) { return(result); } } return(valueIfMissing); }
/// <summary> /// Get the value for a parameter /// </summary> /// <param name="paramType">Parameter type</param> /// <param name="valueIfMissing">Value to return if the parameter is not defined</param> /// <returns>Value (double)</returns> public double GetValueDouble(FrameParamKeyType paramType, double valueIfMissing) { if (Values.TryGetValue(paramType, out var paramEntry)) { if (FrameParamUtilities.ConvertDynamicToDouble(paramEntry.Value, out double result)) { return(result); } } return(valueIfMissing); }
/// <summary> /// Constructor /// </summary> /// <param name="paramDef">Frame parameter definition</param> /// <param name="value">Parameter value</param> public FrameParam(FrameParamDef paramDef, string value) { Definition = paramDef; Value = FrameParamUtilities.ConvertStringToDynamic(paramDef.DataType, value); if (Value == null) { throw new InvalidCastException( string.Format("FrameParam constructor could not convert value of '{0}' for frame parameter {1} to {2}", value, paramDef.ParamType, paramDef.DataType)); } }
/// <summary> /// Constructor /// </summary> /// <param name="paramType">Frame parameter definition</param> /// <param name="value">Parameter value</param> public GlobalParam(GlobalParamKeyType paramType, string value) { InitializeByType(paramType); Value = FrameParamUtilities.ConvertStringToDynamic(DataType, value); if (Value == null) { throw new InvalidCastException( string.Format("GlobalParam constructor could not convert value of '{0}' for global parameter {1} to {2}", value, paramType, DataType)); } }
/// <summary> /// Add or update a parameter's value /// </summary> /// <param name="paramType">Parameter type</param> /// <param name="value">Value (dynamic)</param> private FrameParams AddUpdateValueDynamic(FrameParamKeyType paramType, dynamic value) { if (Values.TryGetValue(paramType, out var paramEntry)) { paramEntry.Value = value; } else { paramEntry = new FrameParam(FrameParamUtilities.GetParamDefByType(paramType), value); Values.Add(paramType, paramEntry); } UpdateCachedParam(paramType, value); return(this); }
public void TestConvertDynamicToInt32(string valueText, bool convertible) { dynamic valueAsDynamic = valueText; var success = FrameParamUtilities.ConvertDynamicToInt32(valueAsDynamic, out int value); if (success) { Console.WriteLine("Converted {0} to {1}", valueText, value); } if (convertible) { Assert.IsTrue(success, "Conversion to int failed for {0}", valueText); } else { Assert.IsFalse(success, "Conversion to int unexpectedly succeeded for {0}", valueText); Console.WriteLine("As expected, could not convert {0} to a int", valueText); } }
public void TestConverFrameParametersToDictionary() { var frameParameters = GetExampleFrameParameters(); var frameParams = FrameParamUtilities.ConvertFrameParameters(frameParameters); var success = frameParams.TryGetValue(FrameParamKeyType.StartTimeMinutes, out var startTime); Assert.IsTrue(success, "Start time could not be retrieved"); Assert.AreEqual(frameParameters.StartTime, startTime, 0.00001); success = frameParams.TryGetValue(FrameParamKeyType.Scans, out var scans); Assert.IsTrue(success, "Scans could not be retrieved"); Assert.AreEqual(frameParameters.Scans, scans); success = frameParams.TryGetValue(FrameParamKeyType.CalibrationSlope, out var calibrationSlope); Assert.IsTrue(success, "CalibrationSlope could not be retrieved"); Assert.AreEqual(frameParameters.CalibrationSlope, calibrationSlope, 0.00001); success = frameParams.TryGetValue(FrameParamKeyType.FrameType, out var frameType); Assert.IsTrue(success, "FrameType could not be retrieved"); Assert.AreEqual((int)frameParameters.FrameType, frameType); }
public void TestConvertStringToDynamic(string value, Type targetType, bool convertible) { var result = FrameParamUtilities.ConvertStringToDynamic(targetType, value); if (result == null) { // Conversion failed if (convertible) { Assert.Fail("Conversion of {0} to {1} should have succeeded", value, targetType); } Console.WriteLine("As expected, could not convert {0} to {1}", value, targetType); return; } if (targetType == typeof(string)) { Assert.AreEqual(value, (string)result); return; } Console.WriteLine("Converted {0} to {1}", value, targetType); }
/// <summary> /// Get the value for a parameter /// </summary> /// <param name="paramType">Parameter type</param> /// <returns>Value (dynamic)</returns> public dynamic GetValue(FrameParamKeyType paramType) { var defaultValue = FrameParamUtilities.GetDefaultValueByType(paramType); return(GetValue(paramType, defaultValue)); }
public void TestConverFrameParametersToClass() { var frameParameters = GetExampleFrameParameters(); var frameParamsByType = FrameParamUtilities.ConvertFrameParameters(frameParameters); var frameParams = FrameParamUtilities.ConvertDynamicParamsToFrameParams(frameParamsByType); var startTime = frameParams.GetValueDouble(FrameParamKeyType.StartTimeMinutes); Assert.AreEqual(frameParameters.StartTime, startTime, 0.00001); var startTimeDynamicInt = frameParams.GetValue(FrameParamKeyType.StartTimeMinutes, 0); Assert.AreEqual(frameParameters.StartTime, startTimeDynamicInt, 0.00001); var startTimeDynamicDouble = frameParams.GetValue(FrameParamKeyType.StartTimeMinutes, 0.0); Assert.AreEqual(frameParameters.StartTime, startTimeDynamicDouble, 0.00001); var startTimeDynamic = frameParams.GetValue(FrameParamKeyType.StartTimeMinutes); Assert.AreEqual(frameParameters.StartTime, startTimeDynamic, 0.00001); var scans = frameParams.GetValueInt32(FrameParamKeyType.Scans); Assert.AreEqual(frameParameters.Scans, scans); var scansDynamicInt = frameParams.GetValue(FrameParamKeyType.Scans, 0); Assert.AreEqual(frameParameters.Scans, scansDynamicInt); var scansDynamicDouble = frameParams.GetValue(FrameParamKeyType.Scans, 0.0); Assert.AreEqual(frameParameters.Scans, scansDynamicDouble, 0.00001); var calibrationSlope = frameParams.GetValueDouble(FrameParamKeyType.CalibrationSlope); Assert.AreEqual(frameParameters.CalibrationSlope, calibrationSlope, 0.00001); var calibrationSlopeDynamicInt = frameParams.GetValue(FrameParamKeyType.CalibrationSlope, 0); Assert.AreEqual(frameParameters.CalibrationSlope, calibrationSlopeDynamicInt); var calibrationSlopeDynamicDouble = frameParams.GetValue(FrameParamKeyType.CalibrationSlope, 0.0); Assert.AreEqual(frameParameters.CalibrationSlope, calibrationSlopeDynamicDouble, 0.00001); // Remove the slope and try again frameParams.Values.Remove(FrameParamKeyType.CalibrationSlope); calibrationSlope = frameParams.GetValueDouble(FrameParamKeyType.CalibrationSlope, 3.4); Assert.AreEqual(3.4, calibrationSlope, 0.00001); calibrationSlopeDynamicInt = frameParams.GetValue(FrameParamKeyType.CalibrationSlope, 2); Assert.AreEqual(2, calibrationSlopeDynamicInt); calibrationSlopeDynamicDouble = frameParams.GetValue(FrameParamKeyType.CalibrationSlope, 2.5); Assert.AreEqual(2.5, calibrationSlopeDynamicDouble, 0.00001); var frameType = frameParams.GetValueInt32(FrameParamKeyType.FrameType); Assert.AreEqual((int)frameParameters.FrameType, frameType); var frameTypeDynamic = frameParams.GetValue(FrameParamKeyType.FrameType, 0); Assert.AreEqual((int)frameParameters.FrameType, frameTypeDynamic); var frameTypeDynamicDouble = frameParams.GetValue(FrameParamKeyType.FrameType, 0.0); Assert.AreEqual((double)frameParameters.FrameType, frameTypeDynamicDouble, 0.00001); var imfProfile = frameParams.GetValue(FrameParamKeyType.MultiplexingEncodingSequence); Assert.AreEqual(imfProfile, "Seq"); var imfProfileWithDefault = frameParams.GetValue(FrameParamKeyType.MultiplexingEncodingSequence, ""); Assert.AreEqual(imfProfileWithDefault, "Seq"); var imfProfileString = frameParams.GetValueString(FrameParamKeyType.MultiplexingEncodingSequence); Assert.AreEqual(imfProfileString, "Seq"); }