예제 #1
0
        /// <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;
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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));
            }
        }
예제 #5
0
        /// <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));
            }
        }
예제 #6
0
        /// <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);
        }
예제 #7
0
        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);
            }
        }
예제 #8
0
        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);
        }
예제 #9
0
        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);
        }
예제 #10
0
        /// <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));
        }
예제 #11
0
        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");
        }