Skip to content

Commit 246bf1d

Browse files
committed
Introduced specifying annotations ValidChunks and InvalidChunks.
1 parent b1cf1f8 commit 246bf1d

12 files changed

+121
-2
lines changed

src/test/java/net/itarray/automotion/tests/grid/Chunk.java renamed to src/main/java/net/itarray/automotion/validation/Chunk.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
package net.itarray.automotion.tests.grid;
1+
package net.itarray.automotion.validation;
2+
3+
import net.itarray.automotion.validation.Element;
24

35
import java.lang.annotation.ElementType;
46
import java.lang.annotation.Inherited;
@@ -12,4 +14,5 @@
1214
@Inherited
1315
public @interface Chunk {
1416
Element[] value() default {};
17+
String name() default "";
1518
}

src/main/java/net/itarray/automotion/validation/ChunkUIElementValidator.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,19 @@ public interface ChunkUIElementValidator {
2020
*
2121
* @return this
2222
*/
23+
@ValidChunks({
24+
@Chunk(name = "empty chunk", value={
25+
}),
26+
@Chunk(name = "single element chunk", value={
27+
@Element({10, 20, 30, 35}),
28+
}),
29+
})
30+
@InvalidChunks({
31+
@Chunk(name = "chunk with two overlapping elements", value={
32+
@Element({10, 20, 30, 35}),
33+
@Element({15, 25, 35, 50}),
34+
}),
35+
})
2336
ChunkUIElementValidator areAlignedAsGridCells();
2437

2538
// area

src/test/java/net/itarray/automotion/tests/grid/Element.java renamed to src/main/java/net/itarray/automotion/validation/Element.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.itarray.automotion.tests.grid;
1+
package net.itarray.automotion.validation;
22

33
import java.lang.annotation.Retention;
44
import java.lang.annotation.RetentionPolicy;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package net.itarray.automotion.validation;
2+
3+
import java.lang.annotation.ElementType;
4+
import java.lang.annotation.Inherited;
5+
import java.lang.annotation.Retention;
6+
import java.lang.annotation.RetentionPolicy;
7+
import java.lang.annotation.Target;
8+
9+
10+
@Target(ElementType.METHOD)
11+
@Retention(RetentionPolicy.RUNTIME)
12+
@Inherited
13+
public @interface InvalidChunks {
14+
Chunk[] value() default {};
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package net.itarray.automotion.validation;
2+
3+
import java.lang.annotation.ElementType;
4+
import java.lang.annotation.Inherited;
5+
import java.lang.annotation.Retention;
6+
import java.lang.annotation.RetentionPolicy;
7+
import java.lang.annotation.Target;
8+
9+
10+
@Target(ElementType.METHOD)
11+
@Retention(RetentionPolicy.RUNTIME)
12+
@Inherited
13+
public @interface ValidChunks {
14+
Chunk[] value() default {};
15+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package net.itarray.automotion.tests.grid;
2+
3+
import com.google.common.collect.Lists;
4+
import net.itarray.automotion.validation.Chunk;
5+
import net.itarray.automotion.validation.ChunkUIElementValidator;
6+
import net.itarray.automotion.validation.InvalidChunks;
7+
import net.itarray.automotion.validation.ValidChunks;
8+
import org.junit.Test;
9+
import org.junit.runner.RunWith;
10+
import org.junit.runners.Parameterized;
11+
import org.junit.runners.Parameterized.Parameter;
12+
import org.junit.runners.Parameterized.Parameters;
13+
14+
import java.lang.annotation.Annotation;
15+
import java.lang.reflect.Method;
16+
import java.util.ArrayList;
17+
import java.util.Arrays;
18+
import java.util.Collection;
19+
import java.util.List;
20+
import java.util.Objects;
21+
import java.util.stream.Collectors;
22+
import java.util.stream.Stream;
23+
24+
@RunWith(Parameterized.class)
25+
public class AnnotatedSpecificationTest {
26+
27+
@Parameters(name = "{2}")
28+
public static Collection<Object[]> data() {
29+
Collection<Object[]> result = Lists.newArrayList();
30+
for (Method method : ChunkUIElementValidator.class.getDeclaredMethods()) {
31+
ValidChunks validChunks = method.getAnnotation(ValidChunks.class);
32+
if (validChunks != null) {
33+
for (Chunk chunk : validChunks.value()) {
34+
String name = String.format("%s is valid on %s", method.getName(), chunk.name());
35+
result.add(new Object[]{method, chunk, name});
36+
}
37+
}
38+
InvalidChunks invalidChunks = method.getAnnotation(InvalidChunks.class);
39+
if (validChunks != null) {
40+
for (Chunk chunk : invalidChunks.value()) {
41+
String name = String.format("%s is invalid on %s", method.getName(), chunk.name());
42+
result.add(new Object[]{method, chunk, name});
43+
}
44+
}
45+
}
46+
return result;
47+
}
48+
49+
@Parameter
50+
public Method method;
51+
52+
@Parameter(1)
53+
public Chunk chunk;
54+
55+
@Parameter(2)
56+
public String name;
57+
58+
@Test
59+
public void valid() {
60+
61+
System.out.println("method = " + method);
62+
}
63+
}

src/test/java/net/itarray/automotion/tests/grid/ChunkTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package net.itarray.automotion.tests.grid;
22

33
import net.itarray.automotion.internal.ResponsiveUIValidatorBase;
4+
import net.itarray.automotion.validation.Chunk;
45
import net.itarray.automotion.validation.ChunkUIElementValidator;
6+
import net.itarray.automotion.validation.Element;
57
import net.itarray.automotion.validation.ResponsiveUIValidator;
68
import net.itarray.automotion.validation.UISnapshot;
79
import org.junit.Before;

src/test/java/net/itarray/automotion/tests/grid/NoElementsWithFindOneOrMoreTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.itarray.automotion.tests.grid;
22

3+
import net.itarray.automotion.validation.Chunk;
34
import org.junit.Test;
45

56
@Chunk

src/test/java/net/itarray/automotion/tests/grid/NoElementsWithFindZeroOrMoreElementsTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.itarray.automotion.tests.grid;
22

3+
import net.itarray.automotion.validation.Chunk;
34
import org.junit.Test;
45

56
@Chunk

src/test/java/net/itarray/automotion/tests/grid/OneElementTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package net.itarray.automotion.tests.grid;
22

3+
import net.itarray.automotion.validation.Chunk;
4+
import net.itarray.automotion.validation.Element;
35
import org.junit.Test;
46

57
@Chunk({

0 commit comments

Comments
 (0)