001: /*
002: * @(#)ITFTestData.java
003: *
004: * Copyright (C) 2002-2003 Matt Albrecht
005: * groboclown@users.sourceforge.net
006: * http://groboutils.sourceforge.net
007: *
008: * Part of the GroboUtils package at:
009: * http://groboutils.sourceforge.net
010: *
011: * Permission is hereby granted, free of charge, to any person obtaining a
012: * copy of this software and associated documentation files (the "Software"),
013: * to deal in the Software without restriction, including without limitation
014: * the rights to use, copy, modify, merge, publish, distribute, sublicense,
015: * and/or sell copies of the Software, and to permit persons to whom the
016: * Software is furnished to do so, subject to the following conditions:
017: *
018: * The above copyright notice and this permission notice shall be included in
019: * all copies or substantial portions of the Software.
020: *
021: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
022: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
023: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
024: * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
025: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
026: * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
027: * DEALINGS IN THE SOFTWARE.
028: */
029: package net.sourceforge.groboutils.pmti.v1.autodoc.v1;
030:
031: import net.sourceforge.groboutils.autodoc.v1.testserver.TestDataFactory;
032: import net.sourceforge.groboutils.autodoc.v1.testserver.DefaultTestData;
033: import net.sourceforge.groboutils.autodoc.v1.testserver.TestInfo;
034:
035: import junit.framework.AssertionFailedError;
036:
037: import java.util.Vector;
038:
039: /**
040: * An interface used to briefly describe a test and the gathered data associated
041: * for the test in a particular framework. These should be created for
042: * a framework through the {@link TestDataFactory} class.
043: *
044: * @author Matt Albrecht <a href="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
045: * @version $Date: 2003/02/10 22:51:56 $
046: * @since March 30, 2002
047: */
048: public class ITFTestData extends DefaultTestData {
049: private Vector issueIDs = new Vector();
050: private Vector errors = new Vector();
051: private Vector failures = new Vector();
052: private int testCount = 0;
053: private long startTime = -1;
054: private long endTime = -1;
055:
056: public ITFTestData(TestInfo info) {
057: super (info);
058: }
059:
060: /**
061: * This may be called multiple times. Each time will add a new issue for
062: * the corresponding test info. If <tt>id</tt> is <tt>null</tt>, then it
063: * will be ignored. Likewise, any duplicate IDs passed in will be ignored.
064: *
065: * @param id the issue id to associate with this test.
066: */
067: public void addIssueID(String id) {
068: if (id != null && !this .issueIDs.contains(id)) {
069: this .issueIDs.addElement(id);
070: }
071: }
072:
073: /**
074: *
075: */
076: public void addError(Throwable error) {
077: if (error != null) {
078: this .errors.addElement(error);
079: }
080: }
081:
082: /**
083: *
084: */
085: public void addFailure(AssertionFailedError failure) {
086: if (failure != null) {
087: this .failures.addElement(failure);
088: }
089: }
090:
091: /**
092: *
093: */
094: public void addTest() {
095: ++this .testCount;
096: }
097:
098: /**
099: *
100: */
101: public void setStartTime(long startTime) {
102: this .startTime = startTime;
103: }
104:
105: /**
106: *
107: */
108: public void setEndTime(long endTime) {
109: this .endTime = endTime;
110: }
111:
112: /**
113: * Retrieves all issue IDs for this TestInfo object. This will never return
114: * <tt>null</tt>, but may return an empty array.
115: */
116: public String[] getIssues() {
117: String[] issues = new String[this .issueIDs.size()];
118: this .issueIDs.copyInto(issues);
119: return issues;
120: }
121:
122: /**
123: *
124: */
125: public Throwable[] getErrors() {
126: Throwable t[] = new Throwable[this .errors.size()];
127: this .errors.copyInto(t);
128: return t;
129: }
130:
131: /**
132: *
133: */
134: public AssertionFailedError[] getFailures() {
135: AssertionFailedError s[] = new AssertionFailedError[this .failures
136: .size()];
137: this .failures.copyInto(s);
138: return s;
139: }
140:
141: /**
142: *
143: */
144: public int getSuccessCount() {
145: int c = this .testCount - this .errors.size()
146: - this .failures.size();
147: if (c < 0) {
148: c = 0;
149: }
150: return c;
151: }
152:
153: /**
154: *
155: */
156: public int getTestCount() {
157: return this .testCount;
158: }
159:
160: /**
161: *
162: */
163: public long getRunTime() {
164: if (this .startTime < 0 || this .endTime < 0) {
165: return -1L;
166: }
167: return this.endTime - this.startTime;
168: }
169: }
|