/******************************************************************************* * Copyright (c) 2004, 2012 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * 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 ); } }