Пример #1
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;
             }
         }
     }
 }
Пример #2
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());
             }
         }
     }
 }