package org.junit.tests.deprecated;

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
import org.junit.Test;
import org.junit.internal.runners.JUnit4ClassRunner;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.RunWith;

/*
 * @deprecated This is a simple smoke test to make sure the old JUnit4ClassRunner basically works.
 * Delete this test when JUnit4ClassRunner goes to the Great Heap In The Sky.
 */
@Deprecated
public class JUnit4ClassRunnerTest {

	@SuppressWarnings("deprecation")
	@RunWith(JUnit4ClassRunner.class)
	public static class Example {
		@Test public void success() {}
		@Test public void failure() {
			fail();
		}
	}
	
	@Test
	public void runWithOldJUnit4ClassRunner() {
		Result result= JUnitCore.runClasses(Example.class);
		assertThat(result.getRunCount(), is(2));
		assertThat(result.getFailureCount(), is(1));
	}

	@SuppressWarnings("deprecation")
	@RunWith(JUnit4ClassRunner.class)
	public static class UnconstructableExample {
		public UnconstructableExample() {
			throw new UnsupportedOperationException();
		}
		@Test public void success() {}
		@Test public void failure() {
			fail();
		}
	}

	
	@Test
	public void runWithOldJUnit4ClassRunnerAndBadConstructor() {
		Result result= JUnitCore.runClasses(UnconstructableExample.class);
		assertThat(result.getRunCount(), is(2));
		assertThat(result.getFailureCount(), is(2));
	}
}
