176 lines
7.9 KiB
C#
176 lines
7.9 KiB
C#
///
|
|
/// Copyright (c) 2016 Sensus Metering Systems
|
|
///
|
|
using System;
|
|
using System.Text;
|
|
using Config.Entities;
|
|
|
|
namespace Results
|
|
{
|
|
public static class Utils
|
|
{
|
|
public static string GetTestName(string name, int repeats, int repetitionNr)
|
|
{
|
|
if (repeats == 1) return name;
|
|
return string.Format("{0} ({1}/{2})", name, repetitionNr, repeats);
|
|
}
|
|
|
|
|
|
public static int BenchIdOracle2Asc(int benchIdOracle)
|
|
{
|
|
switch (benchIdOracle)
|
|
{
|
|
case 4: return 35; /// WR9
|
|
case 5: return 33; /// WR10
|
|
case 6: return 34; /// WR11
|
|
case 7: return 29; /// PT7, special
|
|
case 8: return 36; /// WR13
|
|
case 9: return 37; /// WR15
|
|
case 10: return 38; /// WR16
|
|
default: return 0;
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Converts float number to a string with the specified number of significant digits
|
|
/// </summary>
|
|
/// <param name="value">Float value to be converted to a string</param>
|
|
/// <param name="validDigits">Number of significant digits: 4, 3, or 2 (otherwise a full precision number is printed)</param>
|
|
/// <returns>String representation of the float number</returns>
|
|
public static string DoubleToStr(double value, int validDigits)
|
|
{
|
|
if (-float.Epsilon <= value && value <= float.Epsilon)
|
|
{
|
|
return "0";
|
|
}
|
|
else if (validDigits == 4)
|
|
{
|
|
if (value >= 999.5 || value < -999.5) return value.ToString("F0");
|
|
else if (value >= 99.95 || value < -99.95) return value.ToString("F1");
|
|
else if (value >= 9.995 || value < -9.995) return value.ToString("F2");
|
|
else if (value >= 0.9995 || value < -0.9995) return value.ToString("F3");
|
|
else if (value >= 0.09995 || value < -0.09995) return value.ToString("F4");
|
|
else if (value >= 0.009995 || value < -0.009995) return value.ToString("F5");
|
|
else return value.ToString("F6");
|
|
}
|
|
else if (validDigits == 3)
|
|
{
|
|
if (value >= 99.5 || value < -99.5) return value.ToString("F0");
|
|
else if (value >= 9.95 || value < -9.95) return value.ToString("F1");
|
|
else if (value >= 0.995 || value < -0.995) return value.ToString("F2");
|
|
else if (value >= 0.0995 || value < -0.0995) return value.ToString("F3");
|
|
else if (value >= 0.00995 || value < -0.00995) return value.ToString("F4");
|
|
else if (value >= 0.000995 || value < -0.000995) return value.ToString("F5");
|
|
else return value.ToString("F6");
|
|
}
|
|
else if (validDigits == 2)
|
|
{
|
|
if (value >= 9.5 || value < -9.5) return value.ToString("F0");
|
|
else if (value >= 0.95 || value < -0.95) return value.ToString("F1");
|
|
else if (value >= 0.095 || value < -0.095) return value.ToString("F2");
|
|
else if (value >= 0.0095 || value < -0.0095) return value.ToString("F3");
|
|
else if (value >= 0.00095 || value < -0.00095) return value.ToString("F4");
|
|
else return value.ToString("F5");
|
|
}
|
|
else return value.ToString();
|
|
}
|
|
|
|
|
|
public static string SignificantDigitsToFmt(double value, int sigDigits)
|
|
{
|
|
if (sigDigits == 5)
|
|
{
|
|
if (value >= 9999.5 || value < -9999.5) return "F0";
|
|
else if (value >= 999.95 || value < -999.95) return "F1";
|
|
else if (value >= 99.995 || value < -99.995) return "F2";
|
|
else if (value >= 9.9995 || value < -9.9995) return "F3";
|
|
else if (value >= 0.99995 || value < -0.99995) return "F4";
|
|
else if (value >= 0.099995 || value < -0.099995) return "F5";
|
|
else if (value >= 0.0099995 || value < -0.0099995) return "F6";
|
|
else if (value >= 0.00099995 || value < -0.00099995) return "F7";
|
|
else if (value >= 0.000099995 || value < -0.000099995) return "F8";
|
|
else return "F9";
|
|
}
|
|
else if (sigDigits == 4)
|
|
{
|
|
if (value >= 999.5 || value < -999.5) return "F0";
|
|
else if (value >= 99.95 || value < -99.95) return "F1";
|
|
else if (value >= 9.995 || value < -9.995) return "F2";
|
|
else if (value >= 0.9995 || value < -0.9995) return "F3";
|
|
else if (value >= 0.09995 || value < -0.09995) return "F4";
|
|
else if (value >= 0.009995 || value < -0.009995) return "F5";
|
|
else if (value >= 0.0009995 || value < -0.0009995) return "F6";
|
|
else if (value >= 0.00009995 || value < -0.00009995) return "F7";
|
|
else return "F8";
|
|
}
|
|
else if (sigDigits == 3)
|
|
{
|
|
if (value >= 99.5 || value < -99.5) return "F0";
|
|
else if (value >= 9.95 || value < -9.95) return "F1";
|
|
else if (value >= 0.995 || value < -0.995) return "F2";
|
|
else if (value >= 0.0995 || value < -0.0995) return "F3";
|
|
else if (value >= 0.00995 || value < -0.00995) return "F4";
|
|
else if (value >= 0.000995 || value < -0.000995) return "F5";
|
|
else if (value >= 0.0000995 || value < -0.0000995) return "F6";
|
|
else return "F7";
|
|
}
|
|
else if (sigDigits == 2)
|
|
{
|
|
if (value >= 9.5 || value < -9.5) return "F0";
|
|
else if (value >= 0.95 || value < -0.95) return "F1";
|
|
else if (value >= 0.095 || value < -0.095) return "F2";
|
|
else if (value >= 0.0095 || value < -0.0095) return "F3";
|
|
else if (value >= 0.00095 || value < -0.00095) return "F4";
|
|
else if (value >= 0.000095 || value < -0.000095) return "F5";
|
|
else return "F6";
|
|
}
|
|
else /// if (sigDigits == 1)
|
|
{
|
|
if (value >= 0.95 || value < -0.95) return "F0";
|
|
else if (value >= 0.095 || value < -0.095) return "F1";
|
|
else if (value >= 0.0095 || value < -0.0095) return "F2";
|
|
else if (value >= 0.00095 || value < -0.00095) return "F3";
|
|
else if (value >= 0.000095 || value < -0.000095) return "F4";
|
|
else return "F5";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Converts ErrorFlags integer to string. Supports up to 31 flags (E1..E31).
|
|
/// </summary>
|
|
/// <param name="errorFlags">Input</param>
|
|
/// <returns>Output string</returns>
|
|
public static string ErrorFlagsStr(int errorFlags)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
for (int i = 0; i < 30; i++)
|
|
{
|
|
if ((errorFlags & (1 << i)) != 0)
|
|
{
|
|
sb.Append("E");
|
|
sb.Append(i + 1);
|
|
sb.Append(" ");
|
|
}
|
|
}
|
|
return sb.ToString().TrimEnd();
|
|
}
|
|
|
|
public static string PassedColorStr(bool passed, bool useRedGreenColor)
|
|
{
|
|
#if PUCHONG_PT200
|
|
return (useRedGreenColor) ? (passed ? "OK|Green" : "NG|Red") : (passed ? "OK|White" : "NG|White");
|
|
#elif BAHRAIN_50
|
|
return (useRedGreenColor) ? (passed ? "PASSED|Green" : "FAILED|Red") : (passed ? "PASSED|White" : "FAILED|White");
|
|
#elif LANG_PL
|
|
return (useRedGreenColor) ? (passed ? "+|Green" : "-|Red") : (passed ? "+|White" : "-|White");
|
|
#elif LANG_RU
|
|
return (useRedGreenColor) ? (passed ? "годен|Green" : "негоден|Red") : (passed ? "годен|White" : "негоден|White");
|
|
#else
|
|
return (useRedGreenColor) ? (passed ? "OK|Green" : "NOK|Red") : (passed ? "OK|White" : "NOK|White");
|
|
#endif
|
|
}
|
|
|
|
}
|
|
}
|