Пример #1
0
        /// <summary>Initializes a new instance of the <see cref="MetricInfoAttribute"/> class.</summary>
        /// <param name="category">The category of the metric.</param>
        /// <param name="defaultMinValue">Min value to be used by default.</param>
        public MetricInfoAttribute([NotNull] string category, DefaultMinMetricValue defaultMinValue)
        {
            Code.NotNullNorEmpty(category, nameof(category));

            Category        = category;
            DefaultMinValue = defaultMinValue;
            MetricColumns   = MetricValueColumns.Default;
        }
Пример #2
0
        /// <summary>Determines if the minimum metric value should be stored.</summary>
        /// <param name="metricRange">The metric range.</param>
        /// <param name="metricUnit">The metric unit.</param>
        /// <param name="defaultMinValue">>Min value to be used by default.</param>
        /// <returns><c>true</c>, if the minimum metric value should be stored.</returns>
        public static bool ShouldStoreMinMetricValue(
            this MetricRange metricRange, MetricUnit metricUnit,
            DefaultMinMetricValue defaultMinValue)
        {
            switch (defaultMinValue)
            {
            case DefaultMinMetricValue.Zero:
                return(!metricRange.Min.Equals(0));

            case DefaultMinMetricValue.NegativeInfinity:
                return(!double.IsInfinity(metricRange.Min));

            case DefaultMinMetricValue.SameAsMax:
                return(double.IsInfinity(metricRange.Min) || !metricRange.MinMaxAreSame(metricUnit));

            default:
                throw CodeExceptions.UnexpectedArgumentValue(nameof(defaultMinValue), defaultMinValue);
            }
        }
Пример #3
0
        /// <summary>Returns minimum metric value.</summary>
        /// <param name="metricMaxValue">The maximum metric value.</param>
        /// <param name="defaultMinValue">>Min value to be used by default.</param>
        /// <returns>Minimum metric value.</returns>
        private static double GetMinMetricValue(this double metricMaxValue, DefaultMinMetricValue defaultMinValue)
        {
            if (metricMaxValue.Equals(0))
            {
                return(0);
            }

            switch (defaultMinValue)
            {
            case DefaultMinMetricValue.Zero:
                return(0);

            case DefaultMinMetricValue.NegativeInfinity:
                return(double.NegativeInfinity);

            case DefaultMinMetricValue.SameAsMax:
                return(double.IsInfinity(metricMaxValue) ? double.NegativeInfinity : metricMaxValue);

            default:
                throw CodeExceptions.UnexpectedArgumentValue(nameof(defaultMinValue), defaultMinValue);
            }
        }