예제 #1
0
        public void FailureRateToMTBFString(double failureRate, TestFlightUtil.MTBFUnits units, bool shortForm,
                                            int maximum, out string output)
        {
            if (sb == null)
            {
                sb = new StringBuilder(256);
            }
            sb.Length = 0;
            var currentUnit = (int)TestFlightUtil.MTBFUnits.SECONDS;
            var mtbf        = FailureRateToMTBF(failureRate, (TestFlightUtil.MTBFUnits)currentUnit);

            while (mtbf > maximum)
            {
                currentUnit++;
                mtbf = FailureRateToMTBF(failureRate, (TestFlightUtil.MTBFUnits)currentUnit);
                if ((TestFlightUtil.MTBFUnits)currentUnit == TestFlightUtil.MTBFUnits.INVALID)
                {
                    break;
                }
            }

            if (shortForm)
            {
                output = sb.AppendFormat("{0:F2}{1}", mtbf,
                                         UnitStringForMTBFUnitShort((TestFlightUtil.MTBFUnits)currentUnit)).ToString();
            }
            else
            {
                output = sb.AppendFormat("{0:F2}{1}", mtbf,
                                         UnitStringForMTBFUnit((TestFlightUtil.MTBFUnits)currentUnit)).ToString();
            }
        }
예제 #2
0
        // Simply converts the failure rate to a MTBF number, without any string formatting
        public double FailureRateToMTBF(double failureRate, TestFlightUtil.MTBFUnits units)
        {
            failureRate = Math.Max(failureRate, TestFlightUtil.MIN_FAILURE_RATE);
            double mtbfSeconds = 1.0f / failureRate;

            switch (units)
            {
            case TestFlightUtil.MTBFUnits.SECONDS:
                return(mtbfSeconds);

            case TestFlightUtil.MTBFUnits.MINUTES:
                return(mtbfSeconds / 60);

            case TestFlightUtil.MTBFUnits.HOURS:
                return(mtbfSeconds / 60 / 60);

            case TestFlightUtil.MTBFUnits.DAYS:
                return(mtbfSeconds / 60 / 60 / 24);

            case TestFlightUtil.MTBFUnits.YEARS:
                return(mtbfSeconds / 60 / 60 / 24 / 365);

            default:
                return(mtbfSeconds);
            }
        }
예제 #3
0
        internal static string UnitStringForMTBFUnitShort(TestFlightUtil.MTBFUnits units)
        {
            switch (units)
            {
            case TestFlightUtil.MTBFUnits.SECONDS:
                return("s");

            case TestFlightUtil.MTBFUnits.MINUTES:
                return("m");

            case TestFlightUtil.MTBFUnits.HOURS:
                return("h");

            case TestFlightUtil.MTBFUnits.DAYS:
                return("d");

            case TestFlightUtil.MTBFUnits.YEARS:
                return("y");

            default:
                return("-");
            }
        }
예제 #4
0
        internal static string UnitStringForMTBFUnit(TestFlightUtil.MTBFUnits units)
        {
            switch (units)
            {
            case TestFlightUtil.MTBFUnits.SECONDS:
                return("seconds");

            case TestFlightUtil.MTBFUnits.MINUTES:
                return("minutes");

            case TestFlightUtil.MTBFUnits.HOURS:
                return("hours");

            case TestFlightUtil.MTBFUnits.DAYS:
                return("days");

            case TestFlightUtil.MTBFUnits.YEARS:
                return("years");

            default:
                return("invalid");
            }
        }
예제 #5
0
        public string FailureRateToMTBFString(double failureRate, TestFlightUtil.MTBFUnits units, bool shortForm, int maximum)
        {
            var currentUnit = (int)TestFlightUtil.MTBFUnits.SECONDS;
            var mtbf        = FailureRateToMTBF(failureRate, (TestFlightUtil.MTBFUnits)currentUnit);

            while (mtbf > maximum)
            {
                currentUnit++;
                mtbf = FailureRateToMTBF(failureRate, (TestFlightUtil.MTBFUnits)currentUnit);
                if ((TestFlightUtil.MTBFUnits)currentUnit == TestFlightUtil.MTBFUnits.INVALID)
                {
                    break;
                }
            }

            if (shortForm)
            {
                return(string.Format("{0:F2}{1}", mtbf, UnitStringForMTBFUnit((TestFlightUtil.MTBFUnits)currentUnit)[0]));
            }
            else
            {
                return(string.Format("{0:F2} {1}", mtbf, UnitStringForMTBFUnit((TestFlightUtil.MTBFUnits)currentUnit)));
            }
        }
예제 #6
0
 // Short version of MTBFString uses a single letter to denote (s)econds, (m)inutes, (h)ours, (d)ays, (y)ears
 // The returned string will be of the format "12.00s" or "0.20d"
 public String FailureRateToMTBFString(double failureRate, TestFlightUtil.MTBFUnits units, bool shortForm)
 {
     return(FailureRateToMTBFString(failureRate, units, shortForm, int.MaxValue));
 }
예제 #7
0
 public String FailureRateToMTBFString(double failureRate, TestFlightUtil.MTBFUnits units, int maximum)
 {
     return(FailureRateToMTBFString(failureRate, units, false, maximum));
 }
예제 #8
0
 // simply converts the failure rate into a MTBF string.  Convenience method
 // Returned string will be of the format "123 units"
 // units should be one of:
 //  seconds, hours, days, years,
 public String FailureRateToMTBFString(double failureRate, TestFlightUtil.MTBFUnits units)
 {
     return(FailureRateToMTBFString(failureRate, units, false, int.MaxValue));
 }
예제 #9
0
 // Simply converts the failure rate to a MTBF number, without any string formatting
 public double FailureRateToMTBF(double failureRate, TestFlightUtil.MTBFUnits units)
 {
     return(TestFlightUtil.FailureRateToMTBF(failureRate, units));
 }
예제 #10
0
 public void FailureRateToMTBFString(double failureRate, TestFlightUtil.MTBFUnits units, bool shortForm,
                                     int maximum, out string output)
 {
     TestFlightUtil.FailureRateToMTBFString(failureRate, units, shortForm, maximum, out output);
 }
예제 #11
0
 public string FailureRateToMTBFString(double failureRate, TestFlightUtil.MTBFUnits units, bool shortForm, int maximum)
 {
     return(TestFlightUtil.FailureRateToMTBFString(failureRate, units, shortForm, maximum));
 }