001: /*
002: * Jacareto Copyright (c) 2002-2005
003: * Applied Computer Science Research Group, Darmstadt University of
004: * Technology, Institute of Mathematics & Computer Science,
005: * Ludwigsburg University of Education, and Computer Based
006: * Learning Research Group, Aachen University. All rights reserved.
007: *
008: * Jacareto is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation; either
011: * version 2 of the License, or (at your option) any later version.
012: *
013: * Jacareto is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
016: * General Public License for more details.
017: *
018: * You should have received a copy of the GNU General Public
019: * License along with Jacareto; if not, write to the Free
020: * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
021: *
022: */
023:
024: package jacareto.test;
025:
026: import jacareto.system.Environment;
027: import jacareto.system.EnvironmentMember;
028:
029: import java.util.Iterator;
030: import java.util.Vector;
031:
032: /**
033: * A test report collects the results from the performed tests.
034: *
035: * @author <a href="mailto:cspannagel@web.de">Christian Spannagel</a>
036: * @version 1.01
037: */
038: public class TestReport extends EnvironmentMember {
039: /** The vector of the report elements. */
040: public Vector elements;
041:
042: /** The listeners for report changes. */
043: public Vector listeners;
044:
045: /** The number of successes. */
046: public int numberOfSuccesses;
047:
048: /** The number of failures. */
049: public int numberOfFailures;
050:
051: /** The number of corrections. */
052: public int numberOfCorrections;
053:
054: /** The number of ignored failures. */
055: public int numberOfIgnoredFailures;
056:
057: /**
058: * Creates a new test report with the specified values.
059: *
060: * @param env the environment
061: */
062: public TestReport(Environment env) {
063: super (env);
064: elements = new Vector(5, 5);
065: listeners = new Vector(5, 5);
066: clear();
067: }
068:
069: /**
070: * Clears the report.
071: */
072: public void clear() {
073: elements.clear();
074: numberOfSuccesses = 0;
075: numberOfFailures = 0;
076: numberOfCorrections = 0;
077: numberOfIgnoredFailures = 0;
078: fireReportEvent(new TestReportEvent(this ,
079: TestReportEvent.REPORT_CLEARED, null));
080: }
081:
082: /**
083: * Adds a test report element.
084: *
085: * @param element DOCUMENT ME!
086: */
087: public void add(TestReportElement element) {
088: elements.add(element);
089:
090: if (element.getResult()) {
091: numberOfSuccesses++;
092: } else {
093: numberOfFailures++;
094: }
095:
096: if (element.getCorrected()) {
097: numberOfCorrections++;
098: }
099:
100: if (element.getIgnored()) {
101: numberOfIgnoredFailures++;
102: }
103:
104: fireReportEvent(new TestReportEvent(this ,
105: TestReportEvent.REPORT_ELEMENT_ADDED, element));
106: }
107:
108: /**
109: * Returns the number of report elements.
110: *
111: * @return DOCUMENT ME!
112: */
113: public int size() {
114: return elements.size();
115: }
116:
117: /**
118: * Adds a report listener.
119: *
120: * @param listener DOCUMENT ME!
121: */
122: public void addTestReportListener(TestReportListener listener) {
123: if (!listeners.contains(listener)) {
124: listeners.add(listener);
125: }
126: }
127:
128: /**
129: * Return an iterator on the test report elements.
130: *
131: * @return DOCUMENT ME!
132: */
133: public Iterator iterator() {
134: return elements.iterator();
135: }
136:
137: /**
138: * Returns the number of successful tests.
139: *
140: * @return DOCUMENT ME!
141: */
142: public int getNumberOfSuccesses() {
143: return numberOfSuccesses;
144: }
145:
146: /**
147: * Returns the number of failures.
148: *
149: * @return DOCUMENT ME!
150: */
151: public int getNumberOfFailures() {
152: return numberOfFailures;
153: }
154:
155: /**
156: * Returns the number of corrections.
157: *
158: * @return DOCUMENT ME!
159: */
160: public int getNumberOfCorrections() {
161: return numberOfCorrections;
162: }
163:
164: /**
165: * Returns the number of ignored failures.
166: *
167: * @return DOCUMENT ME!
168: */
169: public int getNumberOfIgnoredFailures() {
170: return numberOfIgnoredFailures;
171: }
172:
173: /**
174: * Fires a report event.
175: *
176: * @param event DOCUMENT ME!
177: */
178: protected void fireReportEvent(TestReportEvent event) {
179: Iterator it = listeners.iterator();
180:
181: while (it.hasNext()) {
182: TestReportListener listener = (TestReportListener) it
183: .next();
184:
185: if (event.getID() == TestReportEvent.REPORT_ELEMENT_ADDED) {
186: listener.testReportElementAdded(event);
187: } else if (event.getID() == TestReportEvent.REPORT_CLEARED) {
188: listener.testReportCleared(event);
189: }
190: }
191: }
192:
193: /**
194: * Removes a report listener.
195: *
196: * @param listener DOCUMENT ME!
197: */
198: public void removeTestReportListener(TestReportListener listener) {
199: if (listeners.contains(listener)) {
200: listeners.remove(listener);
201: }
202: }
203: }
|