/// /// 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; } } /// /// Converts float number to a string with the specified number of significant digits /// /// Float value to be converted to a string /// Number of significant digits: 4, 3, or 2 (otherwise a full precision number is printed) /// String representation of the float number 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"; } } /// /// Converts ErrorFlags integer to string. Supports up to 31 flags (E1..E31). /// /// Input /// Output string 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 } } }