示例#1
0
        private void ReadMeasure(UUTReport unitTestReport, string[] columns)
        {
            NumericLimitStep numericLimitStep = unitTestReport.GetRootSequenceCall().AddNumericLimitStep(columns[3]);
            double           measure          = double.Parse(columns[4], cultureInfo);

            if (columns[8].Contains("/"))
            {
                string[] lim    = columns[8].Split(new char[] { '/' });
                double   lowLim = double.Parse(lim[1], cultureInfo);
                double   hiLim  = double.Parse(lim[0], cultureInfo);
                numericLimitStep.AddTest(measure, CompOperatorType.GELE, lowLim, hiLim, columns[5]);
            }
            else
            {
                numericLimitStep.AddTest(measure, columns[5]);
            }
            numericLimitStep.Status = StepStatus(columns[6]);
        }
示例#2
0
 private void ReadTests(UUTReport uut, XElement testRun)
 {
     foreach (XElement testGroup in testRun.Elements("testgroup"))
     {
         SequenceCall sequence = uut.GetRootSequenceCall().AddSequenceCall(testGroup.Attribute("name").Value);
         foreach (XElement testFunction in testGroup.Elements("testfunction"))
         {
             XElement       result     = testFunction.Element("result");
             PassFailStep   step       = sequence.AddPassFailStep(testFunction.Attribute("name").Value);
             StepStatusType stepStatus = (StepStatusType)Enum.Parse(typeof(StepStatusType), result.Attribute("value").Value);
             step.AddTest(stepStatus == StepStatusType.Passed, stepStatus);
             step.ReportText = testFunction.Element("text-output").Value;
             if (testFunction.Element("time-taken") != null)
             {
                 step.StepTime = double.Parse(testFunction.Element("time-taken").Value) / 1000.0;
             }
         }
     }
 }
示例#3
0
        private void ReadGraphData(UUTReport unitTestReport, string[] columns, string measureName, string xUnit, string yUnit, ref double[] xValues)
        {
            List <double> values = new List <double>();

            for (int i = 3; i < columns.Length; i++)
            {
                if (!string.IsNullOrEmpty(columns[i]))
                {
                    values.Add(double.Parse(columns[i], cultureInfo));
                }
            }

            if (xValues == null)
            {
                xValues = values.ToArray();
                return;
            }
            NumericLimitStep numericLimitStep = unitTestReport.GetRootSequenceCall().AddNumericLimitStep(measureName);
            Chart            chart            = numericLimitStep.AddChart(ChartType.LineLogY, measureName, "X", xUnit, "Y", yUnit);

            chart.AddSeries(measureName, xValues, values.ToArray());
            xValues = null;
        }
示例#4
0
 private void ReadDataFile(UUTReport uut, string fileName)
 {
     string[] seqName = Path.GetFileNameWithoutExtension(fileName).Split(new char[] { '-' });
     if (currentSequence == null || currentSequence.Name != seqName[0])
     {
         currentSequence = uut.GetRootSequenceCall().AddSequenceCall(seqName[0]);
     }
     using (TextReader reader = new StreamReader(fileName))
     {
         string   line    = reader.ReadLine();
         string[] headers = line.Split(new char[] { '\t' });
         line = reader.ReadLine();
         List <double> x   = new List <double>();
         List <double> y   = new List <double>();
         List <double> min = new List <double>();
         List <double> max = new List <double>();
         while (line != null)
         {
             if (headers[0] == "name") //Single measure
             {
                 NumericLimitStep numericLimitStep = currentSequence.AddNumericLimitStep(line.Split(new char[] { '\t' }).First());
                 double[]         values           = ReadDoubles(line);
                 //Format: name	value	max	min
                 if (double.IsNaN(values[2])) //No limits
                 {
                     numericLimitStep.AddTest(values[1], "");
                 }
                 else if (!double.IsNaN(values[3]) && !double.IsNaN(values[2]))
                 {
                     numericLimitStep.AddTest(values[1], CompOperatorType.GELE, values[3], values[2], "");
                 }
                 else
                 {
                     throw new NotImplementedException("Assumed no limits or max / min");
                 }
             }
             else if (headers[0] == "frq")
             {
                 double[] values = ReadDoubles(line);
                 if (values.Length == 1)
                 {
                 }                           //No Y value, skip
                 else
                 {
                     x.Add(values[0]);
                     y.Add(values[1]);
                     if (values.Length == 4)
                     {
                         max.Add(values[2]);
                         min.Add(values[3]);
                     }
                     else if (values.Length == 3)
                     {
                         max.Add(values[2]);
                     }
                     else
                     {
                         throw new NotImplementedException("Assumed x,y,min,max or x,y,max");
                     }
                 }
             }
             else
             {
                 throw new NotImplementedException("Assumed either name or frq in header");
             }
             line = reader.ReadLine();
         }
         if (headers[0] == "frq")
         {
             NumericLimitStep numericLimitStep = currentSequence.AddNumericLimitStep(headers[1]);
             numericLimitStep.AddMultipleTest(y.Average(), "Hz", "avg");
             if (min.Count > 0)
             {
                 numericLimitStep.AddMultipleTest(y.Min(), "Hz", "min");
             }
             if (max.Count > 0)
             {
                 numericLimitStep.AddMultipleTest(y.Max(), "Hz", "max");
             }
             int errorCount = 0;
             for (int i = 0; i < y.Count; i++)
             {
                 if (i < max.Count && double.IsNaN(max[i])) //Skip if limit is Nan or not exist
                 {
                     continue;
                 }
                 if (i < min.Count && double.IsNaN(min[i]))
                 {
                     continue;
                 }
                 if (y[i] > max[i])
                 {
                     errorCount++;
                 }
                 if (min.Count > 0 && y[i] < min[i])
                 {
                     errorCount++;
                 }
             }
             numericLimitStep.AddMultipleTest(errorCount, CompOperatorType.LT, 1, "#", "OutOfBounds");
             Chart chart = numericLimitStep.AddChart(ChartType.LineLogX, headers[1], "Frequency", "Hz", "res", "");
             chart.AddSeries("values", x.ToArray(), y.ToArray());
             if (min.Count > 0)
             {
                 chart.AddSeries("min", x.ToArray(), min.ToArray());
             }
             if (max.Count > 0)
             {
                 chart.AddSeries("max", x.ToArray(), max.ToArray());
             }
         }
     }
 }