Skip to content

Commit 7e1925d

Browse files
committed
introduced useElements, allowing for empty chunks
1 parent de546e9 commit 7e1925d

File tree

8 files changed

+133
-7
lines changed

8 files changed

+133
-7
lines changed

src/main/java/net/itarray/automotion/internal/ResponsiveUIChunkValidatorBase.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,17 @@
1212
import java.util.Map;
1313
import java.util.SortedMap;
1414
import java.util.TreeMap;
15-
import java.util.concurrent.ConcurrentSkipListMap;
16-
import java.util.concurrent.atomic.AtomicLong;
1715

1816
import static net.itarray.automotion.internal.UIElement.*;
1917

2018
public class ResponsiveUIChunkValidatorBase extends ResponsiveUIValidatorBase implements ChunkUIElementValidator {
2119

2220
private final List<UIElement> rootElements;
2321

24-
public ResponsiveUIChunkValidatorBase(UISnapshot snapshot, List<WebElement> webElements) {
22+
public ResponsiveUIChunkValidatorBase(UISnapshot snapshot, List<WebElement> webElements, boolean allowEmpty) {
2523
super(snapshot);
2624
rootElements = asElements(webElements);
27-
if (webElements.isEmpty()) {
25+
if (!allowEmpty && webElements.isEmpty()) {
2826
String message = "Set root web element";
2927
addError(message);
3028
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,11 @@ public UIElementValidator findElement(WebElement webElement, String readableName
5252
}
5353

5454
public ChunkUIElementValidator findElements(List<WebElement> webElements) {
55-
return new ResponsiveUIChunkValidatorBase(this, webElements);
55+
return new ResponsiveUIChunkValidatorBase(this, webElements, false);
56+
}
57+
58+
public ChunkUIElementValidator useElements(List<WebElement> webElements) {
59+
return new ResponsiveUIChunkValidatorBase(this, webElements, true );
5660
}
5761

5862
public File takeScreenshot() {

src/main/java/util/validator/ResponsiveUIChunkValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
public class ResponsiveUIChunkValidator extends AbstractValidator implements ChunkValidator {
1717

1818
public ResponsiveUIChunkValidator(UISnapshot snapshot, DriverFacade driver, List<WebElement> webElements) {
19-
super(driver, new ResponsiveUIChunkValidatorBase(snapshot, webElements));
19+
super(driver, new ResponsiveUIChunkValidatorBase(snapshot, webElements, false));
2020
if (webElements.isEmpty()) {
2121
String message = "Set root web element";
2222
addError(message);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package net.itarray.automotion.tests.grid;
2+
3+
4+
import java.lang.annotation.ElementType;
5+
import java.lang.annotation.Inherited;
6+
import java.lang.annotation.Retention;
7+
import java.lang.annotation.RetentionPolicy;
8+
import java.lang.annotation.Target;
9+
10+
@Target(ElementType.TYPE)
11+
@Retention(RetentionPolicy.RUNTIME)
12+
@Inherited
13+
public @interface AllowEmpty {
14+
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ public void setUp() {
3939
element.value()[3]
4040
));
4141
}
42-
chunkValidator = snapshot.findElements(webElements);
42+
boolean allowEmpty = getClass().getAnnotation(AllowEmpty.class) != null;
43+
chunkValidator =
44+
allowEmpty ?
45+
snapshot.useElements(webElements) :
46+
snapshot.findElements(webElements);
4347
}
4448

4549
public void assertValid() {
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package net.itarray.automotion.tests.grid;
2+
3+
import org.junit.Test;
4+
5+
@Chunk
6+
public class NoElementsTest extends ChunkTest {
7+
8+
@Test
9+
public void areAlignedAsGridCells() {
10+
chunkValidator.areAlignedAsGridCells();
11+
assertInvalid();
12+
}
13+
14+
@Test
15+
public void areNotAlignedInThreeColumns() {
16+
chunkValidator.alignedAsGrid(3);
17+
assertInvalid();
18+
}
19+
20+
@Test
21+
public void areNotAlignedInThreeColumnsAndThreeRows() {
22+
chunkValidator.alignedAsGrid(3, 3);
23+
assertInvalid();
24+
}
25+
26+
27+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package net.itarray.automotion.tests.grid;
2+
3+
import org.junit.Test;
4+
5+
@Chunk
6+
@AllowEmpty
7+
public class NoElementsWithUseElementsTest extends ChunkTest {
8+
9+
@Test
10+
public void areAlignedAsGridCells() {
11+
chunkValidator.areAlignedAsGridCells();
12+
assertValid();
13+
}
14+
15+
@Test
16+
public void areNotAlignedInThreeColumns() {
17+
chunkValidator.alignedAsGrid(3);
18+
assertValid();
19+
}
20+
21+
@Test
22+
public void areNotAlignedInThreeColumnsAndThreeRows() {
23+
chunkValidator.alignedAsGrid(3, 3);
24+
assertInvalid();
25+
}
26+
27+
28+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package net.itarray.automotion.tests.grid;
2+
3+
import org.junit.Test;
4+
5+
@Chunk({
6+
@Element({10, 20, 40, 50})
7+
})
8+
public class OneElementTest extends ChunkTest {
9+
10+
@Test
11+
public void areAlignedAsGridCells() {
12+
chunkValidator.areAlignedAsGridCells();
13+
assertValid();
14+
}
15+
16+
@Test
17+
public void areAlignedInTOneColumn() {
18+
chunkValidator.alignedAsGrid(1);
19+
assertValid();
20+
}
21+
22+
@Test
23+
public void areAlignedInOneColumnAndOneRow() {
24+
chunkValidator.alignedAsGrid(1, 1);
25+
assertValid();
26+
}
27+
28+
@Test
29+
public void areTopAligned() {
30+
chunkValidator.areTopAligned();
31+
assertValid();
32+
}
33+
34+
@Test
35+
public void areBottomAligned() {
36+
chunkValidator.areBottomAligned();
37+
assertValid();
38+
}
39+
40+
@Test
41+
public void areLeftAligned() {
42+
chunkValidator.areLeftAligned();
43+
assertValid();
44+
}
45+
46+
@Test
47+
public void areRightAligned() {
48+
chunkValidator.areRightAligned();
49+
assertValid();
50+
}
51+
}

0 commit comments

Comments
 (0)