4
4
import java .lang .reflect .Field ;
5
5
import java .util .ArrayList ;
6
6
import java .util .Collection ;
7
+ import java .util .Iterator ;
7
8
import java .util .List ;
8
9
9
10
import org .junit .Assume ;
@@ -76,9 +77,11 @@ private void addMultiPointMethods(ParameterSignature sig, List<PotentialAssignme
76
77
for (FrameworkMethod dataPointsMethod : getDataPointsMethods (sig )) {
77
78
Class <?> returnType = dataPointsMethod .getReturnType ();
78
79
79
- if (returnType .isArray () && sig .canPotentiallyAcceptType (returnType .getComponentType ())) {
80
+ if ((returnType .isArray () && sig .canPotentiallyAcceptType (returnType .getComponentType ())) ||
81
+ Iterable .class .isAssignableFrom (returnType )) {
80
82
try {
81
- addArrayValues (sig , dataPointsMethod .getName (), list , dataPointsMethod .invokeExplosively (null ));
83
+ addDataPointsValues (returnType , sig , dataPointsMethod .getName (), list ,
84
+ dataPointsMethod .invokeExplosively (null ));
82
85
} catch (Throwable throwable ) {
83
86
DataPoints annotation = dataPointsMethod .getAnnotation (DataPoints .class );
84
87
if (annotation != null && isAssignableToAnyOf (annotation .ignoredExceptions (), throwable )) {
@@ -101,9 +104,10 @@ private void addSinglePointMethods(ParameterSignature sig, List<PotentialAssignm
101
104
102
105
private void addMultiPointFields (ParameterSignature sig , List <PotentialAssignment > list ) {
103
106
for (final Field field : getDataPointsFields (sig )) {
104
- addArrayValues (sig , field .getName (), list , getStaticFieldValue (field ));
107
+ Class <?> type = field .getType ();
108
+ addDataPointsValues (type , sig , field .getName (), list , getStaticFieldValue (field ));
105
109
}
106
- }
110
+ }
107
111
108
112
private void addSinglePointFields (ParameterSignature sig , List <PotentialAssignment > list ) {
109
113
for (final Field field : getSingleDataPointFields (sig )) {
@@ -114,6 +118,16 @@ private void addSinglePointFields(ParameterSignature sig, List<PotentialAssignme
114
118
}
115
119
}
116
120
}
121
+
122
+ private void addDataPointsValues (Class <?> type , ParameterSignature sig , String name ,
123
+ List <PotentialAssignment > list , Object value ) {
124
+ if (type .isArray ()) {
125
+ addArrayValues (sig , name , list , value );
126
+ }
127
+ else if (Iterable .class .isAssignableFrom (type )) {
128
+ addIterableValues (sig , name , list , (Iterable <?>) value );
129
+ }
130
+ }
117
131
118
132
private void addArrayValues (ParameterSignature sig , String name , List <PotentialAssignment > list , Object array ) {
119
133
for (int i = 0 ; i < Array .getLength (array ); i ++) {
@@ -123,6 +137,18 @@ private void addArrayValues(ParameterSignature sig, String name, List<PotentialA
123
137
}
124
138
}
125
139
}
140
+
141
+ private void addIterableValues (ParameterSignature sig , String name , List <PotentialAssignment > list , Iterable <?> iterable ) {
142
+ Iterator <?> iterator = iterable .iterator ();
143
+ int i = 0 ;
144
+ while (iterator .hasNext ()) {
145
+ Object value = iterator .next ();
146
+ if (sig .canAcceptValue (value )) {
147
+ list .add (PotentialAssignment .forValue (name + "[" + i + "]" , value ));
148
+ }
149
+ i += 1 ;
150
+ }
151
+ }
126
152
127
153
private Object getStaticFieldValue (final Field field ) {
128
154
try {
0 commit comments