blob: 0273378aa07600e5707671348c7ac6840ce96c3e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2012 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
* Markus Schorn (Wind River Systems)
*******************************************************************************/
/*
* Created on Nov 1, 2004
*/
package org.eclipse.cdt.core.tests;
import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
import junit.framework.TestFailure;
import junit.framework.TestResult;
/**
* Wraps a test case to check for its failure.
* @author aniefer
*/
public class FailingTest extends TestCase {
private TestCase test = null;
private int bugNum = -1;
public FailingTest(TestCase test, int bugNumber) {
this.test = test;
this.bugNum = bugNumber;
String name = "Failing " + test.getName();
if (bugNum > 0) {
name += " [bug " + bugNum + "]";
}
setName(name);
}
public FailingTest(TestCase test) {
this(test, -1);
}
/* (non-Javadoc)
* @see junit.framework.Test#run(junit.framework.TestResult)
*/
@Override
public void run(TestResult result) {
result.startTest(this);
TestResult r = new TestResult();
test.run(r);
if (r.failureCount() == 1) {
TestFailure failure = r.failures().nextElement();
String msg = failure.exceptionMessage();
if (msg != null && msg.startsWith("Method \"" + test.getName() + "\"")) {
result.addFailure(this, new AssertionFailedError(msg));
}
} else if (r.errorCount() == 0 && r.failureCount() == 0) {
String err = "Unexpected success"; //$NON-NLS-1$
if (bugNum != -1)
err += ", bug #" + bugNum; //$NON-NLS-1$
result.addFailure(this, new AssertionFailedError(err));
}
result.endTest(this);
}
}