package com.windowtester.test.runtime;
import com.windowtester.runtime.internal.TestClassManager;
import junit.framework.TestCase;
/**
*
* @author Phil Quitslund
*
*/
public class TestClassManagerTest extends TestCase {
/*******************************************************************************
* Copyright (c) 2012 Google, Inc.
* 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:
* Google, Inc. - initial API and implementation
*******************************************************************************/
private final class TestableManager extends TestClassManager {
TestCase last;
TestCase first;
/* (non-Javadoc)
* @see com.windowtester.runtime.internal.TestClassManager#firstRun(junit.framework.TestCase)
*/
@Override
public void firstRun(TestCase t) {
first = t;
}
/* (non-Javadoc)
* @see com.windowtester.runtime.internal.TestClassManager#lastRun(junit.framework.TestCase)
*/
@Override
public void lastRun(TestCase t) {
last = t;
}
/* (non-Javadoc)
* @see com.windowtester.runtime.internal.TestClassManager#addTest(junit.framework.TestCase)
*/
@Override
public TestableManager toRun(TestCase t) {
// TODO Auto-generated method stub
return (TestableManager) super.toRun(t);
}
}
static class Test1 extends TestCase {}
static class Test2 extends TestCase {}
static class Test3 extends TestCase {}
public void testAddTest() throws Exception {
TestableManager manager = new TestableManager();
TestCase t1 = new Test1();
TestCase t2 = new Test2();
TestCase t3 = new Test3();
manager.toRun(t1).toRun(t2).toRun(t3);
assertEquals(t1, manager.tests().get(0));
assertEquals(t2, manager.tests().get(1));
assertEquals(t3, manager.tests().get(2));
}
public void testHasRun() throws Exception {
TestableManager manager = new TestableManager();
TestCase t1 = new Test1();
manager.toRun(t1);
assertFalse(manager.hasRun(t1));
manager.runFinished(t1);
assertTrue(manager.hasRun(t1));
}
public void testClassHasRun() throws Exception {
TestableManager manager = new TestableManager();
TestCase t1 = new Test1();
manager.toRun(t1);
assertFalse(manager.hasClassRunCompleted(t1.getClass()));
manager.runFinished(t1);
assertTrue(manager.hasClassRunCompleted(t1.getClass()));
}
public void testNoticeFirstRun() throws Exception {
TestableManager manager = new TestableManager();
TestCase t1 = new Test1();
runTest(manager, t1);
assertEquals(t1, manager.first);
}
private void runTest(TestClassManager manager, TestCase t3) throws Exception {
manager.runStarted(t3);
manager.runFinished(t3);
}
public void testNoticeLastRun() throws Exception {
TestableManager manager = new TestableManager();
TestCase t1 = new Test1();
TestCase t2 = new Test2();
TestCase t3 = new Test3();
manager.toRun(t1).toRun(t2).toRun(t3);
runTest(manager, t1);
manager.runStarted(t1);
manager.runFinished(t2);
manager.runStarted(t2);
assertEquals(t2, manager.last);
}
public void testNoticeFirstAndLastRun() throws Exception {
TestableManager manager = new TestableManager();
TestCase t1 = new Test1();
TestCase t2 = new Test2();
TestCase t3 = new Test3();
manager.toRun(t1).toRun(t2).toRun(t3);
runTest(manager, t1);
assertEquals(t1, manager.first);
assertEquals(t1, manager.last);
}
public void testNoticeFirstButNotLastRun() throws Exception {
TestableManager manager = new TestableManager();
TestCase t1 = new Test1();
manager.toRun(t1).toRun(t1);
runTest(manager, t1);
assertEquals(t1, manager.first);
assertEquals(null, manager.last);
}
}