/*******************************************************************************
* Copyright (c) 2015 Colin Leitner
* 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:
* Colin Leitner - initial implementation
*******************************************************************************/
package org.eclipse.cdt.testsrunner.testsrunners;
import org.eclipse.cdt.testsrunner.internal.tap.TAPTestsRunnerProvider;
import org.eclipse.cdt.testsrunner.launcher.ITestsRunnerProvider;
import org.eclipse.cdt.testsrunner.model.ITestItem.Status;
import org.eclipse.cdt.testsrunner.model.ITestMessage.Level;
@SuppressWarnings("nls")
public class TAPTestCase extends BaseTestCase {
@Override
protected ITestsRunnerProvider createTestsRunner() {
return new TAPTestsRunnerProvider();
}
//
public void testNoTestCases() {
}
//TAP version 1
public void testIgnoreVersion() {
}
//
//TAP version 1
public void testVersionMustBeOnFirstLine() {
expectTestingException();
}
//ok
//not ok
//ok # skip
//not ok # SKiPped
//ok # todo
//not ok # toDO
public void testBasicTestCases() {
mockModelUpdater.enterTestCase("1");
mockModelUpdater.setTestStatus(Status.Passed);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("2");
mockModelUpdater.setTestStatus(Status.Failed);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("3");
mockModelUpdater.addTestMessage(null, 0, Level.Message, "skip");
mockModelUpdater.setTestStatus(Status.Skipped);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("4");
mockModelUpdater.addTestMessage(null, 0, Level.Message, "SKiPped");
mockModelUpdater.setTestStatus(Status.Skipped);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("5");
mockModelUpdater.addTestMessage(null, 0, Level.Message, "todo");
mockModelUpdater.setTestStatus(Status.NotRun);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("6");
mockModelUpdater.addTestMessage(null, 0, Level.Message, "toDO");
mockModelUpdater.setTestStatus(Status.NotRun);
mockModelUpdater.exitTestCase();
}
//1..3
//ok
//not ok
public void testMorePlannedThanExecutedTestCases() {
mockModelUpdater.enterTestCase("1");
mockModelUpdater.setTestStatus(Status.Passed);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("2");
mockModelUpdater.setTestStatus(Status.Failed);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("3");
mockModelUpdater.setTestStatus(Status.Skipped);
mockModelUpdater.exitTestCase();
}
//ok
//ok 4
public void testForwardJump() {
mockModelUpdater.enterTestCase("1");
mockModelUpdater.setTestStatus(Status.Passed);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("2");
mockModelUpdater.setTestStatus(Status.Skipped);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("3");
mockModelUpdater.setTestStatus(Status.Skipped);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("4");
mockModelUpdater.setTestStatus(Status.Passed);
mockModelUpdater.exitTestCase();
}
//ok
//ok 1
public void testNoBackwardJump() {
mockModelUpdater.enterTestCase("1");
mockModelUpdater.setTestStatus(Status.Passed);
mockModelUpdater.exitTestCase();
expectTestingException();
}
//ok some test name
//not ok 3 other test name
public void testTestCaseName() {
mockModelUpdater.enterTestCase("some test name");
mockModelUpdater.setTestStatus(Status.Passed);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("2");
mockModelUpdater.setTestStatus(Status.Skipped);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("other test name");
mockModelUpdater.setTestStatus(Status.Failed);
mockModelUpdater.exitTestCase();
}
//1..3
//ok 1
//Bail out! because I'm done with this testing
//Ignored trailing data
public void testBailOut() {
mockModelUpdater.enterTestCase("1");
mockModelUpdater.setTestStatus(Status.Passed);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("2");
mockModelUpdater.addTestMessage(null, 0, Level.Message, "because I'm done with this testing");
mockModelUpdater.setTestStatus(Status.Aborted);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("3");
mockModelUpdater.addTestMessage(null, 0, Level.Message, "because I'm done with this testing");
mockModelUpdater.setTestStatus(Status.Aborted);
mockModelUpdater.exitTestCase();
}
//1..3
//ok
//1..2
public void testAtMostOnePlan() {
mockModelUpdater.enterTestCase("1");
mockModelUpdater.setTestStatus(Status.Passed);
mockModelUpdater.exitTestCase();
expectTestingException();
}
//1..2 # skipped for some reason
public void testSkippedAllTestsWithReason() {
mockModelUpdater.enterTestCase("1");
mockModelUpdater.addTestMessage(null, 0, Level.Message, "skipped for some reason");
mockModelUpdater.setTestStatus(Status.Skipped);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("2");
mockModelUpdater.addTestMessage(null, 0, Level.Message, "skipped for some reason");
mockModelUpdater.setTestStatus(Status.Skipped);
mockModelUpdater.exitTestCase();
}
//output for 1 (1)
//output for 1 (2)
//ok
//output for 2 (1)
//output for 2 (2)
//not ok second test # skipped for some reason
//ignored output
public void testOutput() {
mockModelUpdater.enterTestCase("1");
mockModelUpdater.addTestMessage(null, 0, Level.Message, "output for 1 (1)");
mockModelUpdater.addTestMessage(null, 0, Level.Message, "output for 1 (2)");
mockModelUpdater.setTestStatus(Status.Passed);
mockModelUpdater.exitTestCase();
mockModelUpdater.enterTestCase("second test");
mockModelUpdater.addTestMessage(null, 0, Level.Message, "skipped for some reason");
mockModelUpdater.addTestMessage(null, 0, Level.Message, "output for 2 (1)");
mockModelUpdater.addTestMessage(null, 0, Level.Message, "output for 2 (2)");
mockModelUpdater.setTestStatus(Status.Skipped);
mockModelUpdater.exitTestCase();
}
//filenameA: info: info text
//filenameB: warning: warning text
//filenameC:17: error: error text
//ok
public void testGCCDiagnosticOutput() {
mockModelUpdater.enterTestCase("1");
mockModelUpdater.addTestMessage("filenameA", 0, Level.Info, "info text");
mockModelUpdater.addTestMessage("filenameB", 0, Level.Warning, "warning text");
mockModelUpdater.addTestMessage("filenameC", 17, Level.Error, "error text");
mockModelUpdater.setTestStatus(Status.Passed);
mockModelUpdater.exitTestCase();
}
}