blob: 80cfd897642df902014dc71b60cc6d5d1e7ac7bf [file] [log] [blame]
package org.junit.tests.experimental.theories.runner;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;
import java.util.ArrayList;
import java.util.List;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.experimental.theories.DataPoint;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;
@RunWith(Enclosed.class)
public class SuccessfulWithDataPointFields {
@RunWith(Theories.class)
public static class HasATwoParameterTheory {
@DataPoint
public static int ONE = 1;
@Theory
public void allIntsAreEqual(int x, int y) {
assertThat(x, is(y));
}
}
@RunWith(Theories.class)
public static class BeforeAndAfterOnSameInstance {
@DataPoint
public static String A = "A";
private int befores = 0;
@Before
public void incrementBefore() {
befores++;
}
@Theory
public void stringsAreOK(String string) {
assertTrue(befores == 1);
}
}
@RunWith(Theories.class)
public static class NewObjectEachTime {
@DataPoint
public static String A = "A";
@DataPoint
public static String B = "B";
private List<String> list = new ArrayList<String>();
@Theory
public void addToEmptyList(String string) {
list.add(string);
assertThat(list.size(), is(1));
}
}
@RunWith(Theories.class)
public static class PositiveInts {
@DataPoint
public static final int ONE = 1;
private int x;
public PositiveInts(int x) {
assumeTrue(x > 0);
this.x = x;
}
@Theory
public void haveAPostiveSquare() {
assertTrue(x * x > 0);
}
}
@RunWith(Theories.class)
public static class PositiveIntsWithNegativeField {
@DataPoint
public static final int ONE = 1;
@DataPoint
public static final int NEGONE = -1;
private int x;
public PositiveIntsWithNegativeField(int x) {
assumeTrue(x > 0);
this.x = x;
}
@Theory
public void haveAPostiveSquare() {
assertTrue(x > 0);
}
}
@RunWith(Theories.class)
public static class PositiveIntsWithMethodParams {
@DataPoint
public static final int ONE = 1;
private int x;
public PositiveIntsWithMethodParams(int x) {
assumeTrue(x > 0);
this.x = x;
}
@Theory
public void haveAPostiveSquare(int y) {
assumeTrue(y > 0);
assertTrue(x * y > 0);
}
}
@RunWith(Theories.class)
public static class DifferentTypesInConstructor {
@DataPoint
public static final int ONE = 1;
@DataPoint
public static final String A = "A";
public DifferentTypesInConstructor(int x) {
}
@Theory
public void yesIndeed(String a) {
}
}
@RunWith(Theories.class)
public static class BeforeAndAfterEachTime {
public static int befores = 0;
@DataPoint
public static String A = "A";
@DataPoint
public static String B = "B";
@Before
public void incrementBefore() {
befores++;
}
@BeforeClass
public static void resetCalls() {
befores = 0;
}
@Theory
public void stringsAreOK(String string) {
}
@AfterClass
public static void calledTwice() {
assertEquals(2, befores);
}
}
@RunWith(Theories.class)
public static class OneTestTwoAnnotations {
public static int tests = 0;
@DataPoint
public static String A = "A";
@BeforeClass
public static void resetCalls() {
tests = 0;
}
@Theory
@Test
public void stringsAreOK(String string) {
tests++;
}
@AfterClass
public static void calledTwice() {
assertEquals(1, tests);
}
}
@RunWith(Theories.class)
public static class StaticPublicNonDataPoints {
// DataPoint which passes the test
@DataPoint
public static int ZERO = 0;
// Not annotated as a DataPoint and therefore should be ignored:
public static int ONE = 1;
@Theory
public void onlyAnnotatedFields(int i) {
assertTrue(i == 0);
}
}
}