View Javadoc

1   /**
2    *
3    * Copyright 2005 The Apache Software Foundation
4    *
5    *  Licensed under the Apache License, Version 2.0 (the "License");
6    *  you may not use this file except in compliance with the License.
7    *  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   *  Unless required by applicable law or agreed to in writing, software
12   *  distributed under the License is distributed on an "AS IS" BASIS,
13   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   *  See the License for the specific language governing permissions and
15   *  limitations under the License.
16   */
17  package org.apache.geronimo.gbuild.report;
18  
19  import java.util.Collection;
20  import java.util.Collections;
21  import java.util.Iterator;
22  import java.util.Set;
23  import java.util.SortedMap;
24  import java.util.TreeMap;
25  
26  /**
27   * @version $Rev: 331903 $ $Date$
28   */
29  public class TestSuite {
30      private final String name;
31      private final SortedMap testCases;
32      private final long errorCount;
33      private final long failureCount;
34      private final long totalTime;
35      private final boolean newResult;
36  
37      public TestSuite(String name, Set testCases) {
38          this.name = name;
39  
40          long errorCount = 0;
41          long failureCount = 0;
42          long totalTime = 0;
43          boolean newResult = false;
44          SortedMap testCasesByName = new TreeMap();
45          for (Iterator iterator = testCases.iterator(); iterator.hasNext();) {
46              TestCase testCase = (TestCase) iterator.next();
47              if (testCase.isFailed()) {
48                  failureCount++;
49              } else if (testCase.isError()) {
50                  errorCount++;
51              }
52              totalTime += testCase.getTime();
53              newResult = newResult || testCase.isNewResult();
54              testCasesByName.put(testCase.getName(), testCase);
55          }
56          this.errorCount = errorCount;
57          this.failureCount = failureCount;
58          this.totalTime = totalTime;
59          this.newResult = newResult;
60  
61          this.testCases = Collections.unmodifiableSortedMap(testCasesByName);
62      }
63  
64      public String getName() {
65          return name;
66      }
67  
68      public TestCase getTestCase(String name) {
69          return (TestCase) testCases.get(name);
70      }
71  
72      public Collection getTestCases() {
73          return testCases.values();
74      }
75  
76      public Collection getItems() {
77          return testCases.values();
78      }
79  
80      public long getTestCount() {
81          return testCases.size();
82      }
83  
84      public long getPassCount() {
85          return testCases.size() - errorCount - failureCount;
86      }
87  
88      public long getErrorCount() {
89          return errorCount;
90      }
91  
92      public long getFailureCount() {
93          return failureCount;
94      }
95  
96      public long getTotalTime() {
97          return totalTime;
98      }
99  
100     public String getTotalTimeString() {
101         return ReportUtil.formatTime(getTotalTime());
102     }
103 
104     public boolean isPassed() {
105         return getTestCount() > 0 && failureCount == 0 && errorCount == 0;
106     }
107 
108     public int getPassPercentage() {
109         if (testCases.isEmpty()) {
110             return 0;
111         }
112         return (int) ((0.0 + getPassCount()) * 100 / testCases.size());
113     }
114 
115     public int getPassBarSize() {
116         return getPassPercentage() * 2;
117     }
118 
119     public int getFailBarSize() {
120         return 200 - getPassBarSize();
121     }
122 
123     public boolean isNewResult() {
124         return newResult;
125     }
126 }