Skip to content

Commit 9bb239d

Browse files
committed
introduced areAlignedAsGridCells (non functional) and cleaned up grid tests
1 parent 13a7747 commit 9bb239d

File tree

10 files changed

+143
-80
lines changed

10 files changed

+143
-80
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ public ResponsiveUIChunkValidatorBase alignedAsGrid(int horizontalGridSize, int
8484
return this;
8585
}
8686

87+
@Override
88+
public ChunkUIElementValidator areAlignedAsGridCells() {
89+
return this;
90+
}
91+
8792
/**
8893
* Verify that every element in the list is not overlapped with another element from this list
8994
*

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public interface ChunkUIElementValidator {
1313
// areAlignedInColumnsAndRows(numberOfColumns)
1414
ChunkUIElementValidator alignedAsGrid(int horizontalGridSize, int verticalGridSize);
1515

16+
ChunkUIElementValidator areAlignedAsGridCells();
17+
1618
// area
1719

1820
ChunkUIElementValidator doNotOverlap();

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import net.itarray.automotion.internal.AbstractValidator;
44
import net.itarray.automotion.internal.DriverFacade;
55
import net.itarray.automotion.internal.ResponsiveUIChunkValidatorBase;
6+
import net.itarray.automotion.validation.ChunkUIElementValidator;
67
import net.itarray.automotion.validation.UISnapshot;
78
import org.openqa.selenium.WebElement;
89

@@ -83,6 +84,12 @@ public ResponsiveUIChunkValidator alignedAsGrid(int horizontalGridSize, int vert
8384
return this;
8485
}
8586

87+
@Override
88+
public ChunkUIElementValidator areAlignedAsGridCells() {
89+
getBase().areAlignedAsGridCells();
90+
return this;
91+
}
92+
8693
/**
8794
* Verify that every element in the list is not overlapped with another element from this list
8895
*
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package net.itarray.automotion.tests.grid;
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.TYPE)
11+
@Retention(RetentionPolicy.RUNTIME)
12+
@Inherited
13+
public @interface Chunk {
14+
Element[] value() default {};
15+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package net.itarray.automotion.tests.grid;
2+
3+
import net.itarray.automotion.internal.ResponsiveUIValidatorBase;
4+
import net.itarray.automotion.validation.ChunkUIElementValidator;
5+
import net.itarray.automotion.validation.ResponsiveUIValidator;
6+
import net.itarray.automotion.validation.UISnapshot;
7+
import org.junit.Before;
8+
import org.openqa.selenium.Dimension;
9+
import org.openqa.selenium.WebElement;
10+
import rectangles.DummyDriverFacade;
11+
12+
import java.util.List;
13+
14+
import static com.google.common.collect.Lists.newArrayList;
15+
import static org.assertj.core.api.Assertions.assertThat;
16+
import static rectangles.DummyWebElement.createElement;
17+
18+
@PageSize
19+
public abstract class ChunkTest {
20+
protected ChunkUIElementValidator chunkValidator;
21+
22+
@Before
23+
public void setUp() {
24+
DummyDriverFacade driverFacade = new DummyDriverFacade();
25+
26+
PageSize pageSize = getClass().getAnnotation(PageSize.class);
27+
driverFacade.setPageSize(new Dimension(pageSize.xy()[0], pageSize.xy()[1]));
28+
29+
ResponsiveUIValidator uiValidator = new ResponsiveUIValidator(driverFacade);
30+
UISnapshot snapshot = uiValidator.snapshot();
31+
32+
List<WebElement> webElements = newArrayList();
33+
Chunk chunk = getClass().getAnnotation(Chunk.class);
34+
for (Element element : chunk.value()) {
35+
webElements.add(createElement(
36+
element.value()[0],
37+
element.value()[1],
38+
element.value()[2],
39+
element.value()[3]
40+
));
41+
}
42+
chunkValidator = snapshot.findElements(webElements);
43+
}
44+
45+
public void assertValid() {
46+
ResponsiveUIValidatorBase base = (ResponsiveUIValidatorBase) chunkValidator;
47+
String lastMessage = base.getErrors().getLastMessage();
48+
assertThat(lastMessage).isNull();
49+
}
50+
51+
public void assertInvalid() {
52+
ResponsiveUIValidatorBase base = (ResponsiveUIValidatorBase) chunkValidator;
53+
String lastMessage = base.getErrors().getLastMessage();
54+
assertThat(lastMessage).isNotNull();
55+
}
56+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package net.itarray.automotion.tests.grid;
2+
3+
import java.lang.annotation.Retention;
4+
import java.lang.annotation.RetentionPolicy;
5+
6+
@Retention(RetentionPolicy.RUNTIME)
7+
public @interface Element {
8+
int[] value() default {};
9+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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 PageSize {
14+
int[] xy() default {2000, 1000};
15+
}
Lines changed: 14 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,25 @@
11
package net.itarray.automotion.tests.grid;
22

33
import net.itarray.automotion.internal.ResponsiveUIValidatorBase;
4-
import net.itarray.automotion.validation.ChunkUIElementValidator;
5-
import net.itarray.automotion.validation.ResponsiveUIValidator;
6-
import net.itarray.automotion.validation.UISnapshot;
7-
import org.junit.Before;
84
import org.junit.Test;
9-
import org.openqa.selenium.Dimension;
10-
import org.openqa.selenium.WebElement;
11-
import rectangles.DummyDriverFacade;
125

13-
import java.util.List;
14-
15-
import static com.google.common.collect.Lists.newArrayList;
166
import static org.assertj.core.api.Assertions.assertThat;
17-
import static rectangles.DummyWebElement.createElement;
18-
19-
public class SevenElementsInThreeRowsWithDifferentSizesAndGuttersTest {
207

21-
private ChunkUIElementValidator chunkValidator;
8+
@Chunk({
9+
@Element({100, 50, 300, 60}),
10+
@Element({400, 50, 700, 70}),
11+
@Element({900, 50, 1200, 80}),
12+
@Element({100, 150, 300, 160}),
13+
@Element({400, 150, 700, 170}),
14+
@Element({900, 150, 1200, 180}),
15+
@Element({100, 250, 300, 160}),
16+
})
17+
public class SevenElementsInThreeRowsWithDifferentSizesAndGuttersTest extends ChunkTest{
2218

23-
@Before
24-
public void setUp() {
25-
DummyDriverFacade driverFacade = new DummyDriverFacade();
26-
driverFacade.setPageSize(new Dimension(2000, 1000));
27-
ResponsiveUIValidator uiValidator = new ResponsiveUIValidator(driverFacade);
28-
UISnapshot snapshot = uiValidator.snapshot();
29-
List<WebElement> elements = newArrayList(
30-
createElement(100, 50, 300, 60),
31-
createElement(400, 50, 700, 70),
32-
createElement(900, 50, 1200, 80),
33-
createElement(100, 150, 300, 160),
34-
createElement(400, 150, 700, 170),
35-
createElement(900, 150, 1200, 180),
36-
createElement(100, 250, 300, 160)
37-
);
38-
chunkValidator = snapshot.findElements(elements);
19+
@Test
20+
public void areAlignedAsGridCells() {
21+
chunkValidator.areAlignedAsGridCells();
22+
assertValid();
3923
}
4024

4125
@Test
@@ -79,16 +63,4 @@ public void areNotAlignedInFourColumnsAndOneRow() {
7963
chunkValidator.alignedAsGrid(4, 1);
8064
assertInvalid();
8165
}
82-
83-
public void assertValid() {
84-
ResponsiveUIValidatorBase base = (ResponsiveUIValidatorBase) chunkValidator;
85-
String lastMessage = base.getErrors().getLastMessage();
86-
assertThat(lastMessage).isNull();
87-
}
88-
89-
public void assertInvalid() {
90-
ResponsiveUIValidatorBase base = (ResponsiveUIValidatorBase) chunkValidator;
91-
String lastMessage = base.getErrors().getLastMessage();
92-
assertThat(lastMessage).isNotNull();
93-
}
9466
}
Lines changed: 6 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,18 @@
11
package net.itarray.automotion.tests.grid;
22

3-
import com.google.common.collect.Lists;
43
import net.itarray.automotion.internal.ResponsiveUIValidatorBase;
5-
import net.itarray.automotion.validation.ChunkUIElementValidator;
6-
import net.itarray.automotion.validation.ResponsiveUIValidator;
7-
import net.itarray.automotion.validation.UISnapshot;
8-
import org.junit.Before;
94
import org.junit.Test;
10-
import org.openqa.selenium.Dimension;
11-
import org.openqa.selenium.WebElement;
12-
import rectangles.DummyDriverFacade;
13-
14-
import java.util.List;
155

166
import static com.google.common.collect.Lists.newArrayList;
177
import static org.assertj.core.api.Assertions.assertThat;
188
import static rectangles.DummyWebElement.createElement;
199

20-
public class ThreeElementsInARowWithDifferentSizesAndGuttersTest {
21-
22-
private ChunkUIElementValidator chunkValidator;
23-
24-
@Before
25-
public void setUp() {
26-
DummyDriverFacade driverFacade = new DummyDriverFacade();
27-
driverFacade.setPageSize(new Dimension(2000, 1000));
28-
ResponsiveUIValidator uiValidator = new ResponsiveUIValidator(driverFacade);
29-
UISnapshot snapshot = uiValidator.snapshot();
30-
List<WebElement> elements = newArrayList(
31-
createElement(100, 50, 300, 60),
32-
createElement(400, 50, 700, 60),
33-
createElement(900, 50, 1200, 60));
34-
chunkValidator = snapshot.findElements(elements);
35-
}
10+
@Chunk({
11+
@Element({100, 50, 300, 60}),
12+
@Element({400, 50, 700, 60}),
13+
@Element({900, 50, 1200, 60}),
14+
})
15+
public class ThreeElementsInARowWithDifferentSizesAndGuttersTest extends ChunkTest {
3616

3717
@Test
3818
public void areNotAlignedInTwoColumns() {
@@ -75,16 +55,4 @@ public void areNotAlignedInFourColumnsAndTwoRows() {
7555
chunkValidator.alignedAsGrid(4, 2);
7656
assertInvalid();
7757
}
78-
79-
public void assertValid() {
80-
ResponsiveUIValidatorBase base = (ResponsiveUIValidatorBase) chunkValidator;
81-
String lastMessage = base.getErrors().getLastMessage();
82-
assertThat(lastMessage).isNull();
83-
}
84-
85-
public void assertInvalid() {
86-
ResponsiveUIValidatorBase base = (ResponsiveUIValidatorBase) chunkValidator;
87-
String lastMessage = base.getErrors().getLastMessage();
88-
assertThat(lastMessage).isNotNull();
89-
}
9058
}

src/test/java/rectangles/DummyWebElement.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import java.util.List;
1414
import java.util.Map;
1515

16+
import static com.google.common.collect.Lists.newArrayList;
17+
1618
public class DummyWebElement implements WebElement {
1719

1820
private final Point location;
@@ -166,4 +168,16 @@ public static WebElement createElementMovedUpBy(int deltaY) {
166168
public static WebElement createElementMovedUpByHeightPlus(int deltaY) {
167169
return createElementMovedUpBy(RectangleFixture.height+deltaY);
168170
}
171+
172+
public static List<WebElement> createElements(double[][] rects) {
173+
List<WebElement> elements = newArrayList();
174+
for (double[] rect : rects) {
175+
elements.add(createElement(convert(rect[0]), convert(rect[1]), convert(rect[2]), convert(rect[3])));
176+
}
177+
return elements;
178+
}
179+
180+
public static int convert(double value) {
181+
return (int) value;
182+
}
169183
}

0 commit comments

Comments
 (0)