1+ package org .junit .tests .experimental .theories ;
2+
3+ import static org .hamcrest .CoreMatchers .*;
4+ import org .junit .Assert ;
5+ import org .junit .Test ;
6+ import org .junit .experimental .theories .DataPoint ;
7+ import org .junit .experimental .theories .DataPoints ;
8+ import org .junit .experimental .theories .Theories ;
9+ import org .junit .experimental .theories .Theory ;
10+ import org .junit .runner .JUnitCore ;
11+ import org .junit .runner .Request ;
12+ import org .junit .runner .Result ;
13+ import org .junit .runner .Runner ;
14+ import org .junit .runners .model .InitializationError ;
15+
16+ public class EnumDatapointNamesTest {
17+
18+ @ Test
19+ public void enumErrorsUseEnumNameWithSingleValues () throws InitializationError {
20+ Result result = runTheoryTest (EnumTestWithBadValue .class );
21+
22+ Assert .assertEquals (1 , result .getFailureCount ());
23+
24+ Throwable ex = result .getFailures ().get (0 ).getException ();
25+ Assert .assertThat (ex .getMessage (), containsString (EnumValue .BAD_VALUE .toString ()));
26+ return ;
27+ }
28+
29+ @ Test
30+ public void enumErrorsUseEnumNameWithArrays () throws InitializationError {
31+ Result result = runTheoryTest (EnumTestWithBadValueInArray .class );
32+
33+ Assert .assertEquals (1 , result .getFailureCount ());
34+
35+ Throwable ex = result .getFailures ().get (0 ).getException ();
36+ Assert .assertThat (ex .getMessage (), containsString (EnumValue .BAD_VALUE .toString ()));
37+ return ;
38+ }
39+
40+ private Result runTheoryTest (Class <?> testClass ) throws InitializationError {
41+ JUnitCore junitRunner = new JUnitCore ();
42+ Runner theoryRunner = new Theories (testClass );
43+ Request request = Request .runner (theoryRunner );
44+ return junitRunner .run (request );
45+ }
46+
47+ private enum EnumValue {
48+ ONE_VALUE , BAD_VALUE , ANOTHER_VALUE
49+ }
50+
51+ private static void methodUnderTest (EnumValue param ) {
52+ if (param == EnumValue .BAD_VALUE ) {
53+ throw new IllegalArgumentException ("Bad param" );
54+ }
55+ }
56+
57+ public static class EnumTestWithBadValue {
58+
59+ @ DataPoint
60+ public static EnumValue oneValue = EnumValue .ONE_VALUE ;
61+
62+ @ DataPoint
63+ public static EnumValue badValue = EnumValue .BAD_VALUE ;
64+
65+ @ Theory
66+ public void theoryTest (EnumValue param ) {
67+ methodUnderTest (param );
68+ }
69+
70+ }
71+
72+ public static class EnumTestWithBadValueInArray {
73+
74+ @ DataPoints
75+ public static EnumValue [] allValues = EnumValue .values ();
76+
77+ @ Theory
78+ public void theoryTest (EnumValue param ) {
79+ methodUnderTest (param );
80+ }
81+
82+ }
83+
84+ }
0 commit comments