Skip to content

Commit b024946

Browse files
committed
factory method for scalars for concise expressions
1 parent 328d260 commit b024946

30 files changed

+147
-107
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import static net.itarray.automotion.internal.geometry.Direction.*;
2424
import static net.itarray.automotion.internal.geometry.Rectangle.ORIGIN_CORNER;
25+
import static net.itarray.automotion.internal.geometry.Scalar.scalar;
2526
import static org.apache.commons.lang3.text.WordUtils.capitalize;
2627

2728
public class UIElement {
@@ -192,7 +193,7 @@ public boolean hasEqualOppositeOffsets(Direction direction, UIElement page) {
192193
}
193194

194195
public boolean hasSuccessor(Direction direction, UIElement possibleSuccessor) {
195-
return signedDistanceToSuccessor(direction, possibleSuccessor).isGreaterOrEqualTo(new Scalar(0));
196+
return signedDistanceToSuccessor(direction, possibleSuccessor).isGreaterOrEqualTo(scalar(0));
196197
}
197198

198199
public Scalar signedDistanceToSuccessor(Direction direction, UIElement successor) {

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.List;
1818

1919
import static net.itarray.automotion.internal.UIElement.*;
20+
import static net.itarray.automotion.internal.geometry.Scalar.scalar;
2021
import static net.itarray.automotion.validation.properties.Expression.percentOrPixels;
2122
import static net.itarray.automotion.validation.Constants.*;
2223
import static net.itarray.automotion.validation.properties.Condition.*;
@@ -96,7 +97,7 @@ public UIValidatorBase isLeftOf(WebElement element, Condition<Scalar> distanceCo
9697
}
9798

9899
private Expression<Scalar> scalarExpression(int width) {
99-
return isPixels() ? new PixelConstant(new Scalar(width)) : Expression.percent(new Scalar(width), PAGE);
100+
return isPixels() ? new PixelConstant(scalar(width)) : Expression.percent(scalar(width), PAGE);
100101
}
101102

102103
private Condition<Scalar> betweenCondition(int minMargin, int maxMargin) {
@@ -452,7 +453,7 @@ public boolean isNotSwitchedOff(int top, int right, int bottom, int left) {
452453
}
453454

454455
public boolean isNotSwitchedOff(int value, Direction direction) {
455-
return percentOrPixels(value).evaluateIn(getContext(), direction).isGreaterThan(new Scalar(MIN_OFFSET));
456+
return percentOrPixels(value).evaluateIn(getContext(), direction).isGreaterThan(scalar(MIN_OFFSET));
456457
}
457458

458459
public void validateMinOffsetNew(int top, int right, int bottom, int left) {

src/main/java/net/itarray/automotion/internal/geometry/Partition.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import java.util.List;
88
import java.util.function.Function;
99

10+
import static net.itarray.automotion.internal.geometry.Scalar.scalar;
11+
1012
public class Partition <T> {
1113

1214
private final List<List<T>> lists;
@@ -31,7 +33,7 @@ public Partition(List<T> objects, Function<T, Scalar> property) {
3133
public boolean continues(Function<T, Scalar> property, T candidate, T last) {
3234
Scalar lastValue = property.apply(last);
3335
Scalar candidateValue = property.apply(candidate);
34-
return candidateValue.minus(lastValue).isLessOrEqualTo(new Scalar(1));
36+
return candidateValue.minus(lastValue).isLessOrEqualTo(scalar(1));
3537
}
3638

3739
public List<List<T>> getPartitions() {

src/main/java/net/itarray/automotion/internal/geometry/Scalar.java

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,22 @@
77
public class Scalar implements GroupElement<Scalar>, Comparable<Scalar> {
88
private final Fraction fraction;
99

10-
public Scalar(int value) {
10+
private Scalar(int value) {
1111
fraction = new Fraction(value);
1212
}
1313

14-
public Scalar(Fraction fraction) {
14+
private Scalar(Fraction fraction) {
1515
this.fraction = fraction;
1616
}
1717

18+
public static Scalar scalar(int value) {
19+
return new Scalar(value);
20+
}
21+
22+
public static Scalar scalar(Fraction fraction) {
23+
return new Scalar(fraction);
24+
}
25+
1826
@Override
1927
public boolean equals(Object object) {
2028
if (!(object instanceof Scalar)) {
@@ -43,19 +51,19 @@ public int intValue() { // todo: remove usages, this is introspection
4351
}
4452

4553
public Scalar plus(int addend) {
46-
return plus(new Scalar(addend));
54+
return plus(scalar(addend));
4755
}
4856

4957
public Scalar plus(Scalar addend) {
50-
return new Scalar(fraction.add(addend.fraction));
58+
return scalar(fraction.add(addend.fraction));
5159
}
5260

5361
public Scalar minus(int subtrahend) {
54-
return minus(new Scalar(subtrahend));
62+
return minus(scalar(subtrahend));
5563
}
5664

5765
public Scalar minus(Scalar subtrahend) {
58-
return new Scalar(fraction.subtract(subtrahend.fraction));
66+
return scalar(fraction.subtract(subtrahend.fraction));
5967
}
6068

6169
public boolean isLessThan(Scalar other) {
@@ -80,23 +88,23 @@ public int compareTo(Scalar other) {
8088
}
8189

8290
public Scalar negated() {
83-
return new Scalar(fraction.negate());
91+
return scalar(fraction.negate());
8492
}
8593

8694
public Scalar abs() {
87-
return new Scalar(fraction.abs());
95+
return scalar(fraction.abs());
8896
}
8997

9098
public boolean satisfies(Condition condition, Context context, Direction direction) {
9199
return condition.isSatisfiedOn(this, context, direction);
92100
}
93101

94102
public Scalar times(Scalar multiplicator) {
95-
return new Scalar(fraction.multiply(multiplicator.fraction));
103+
return scalar(fraction.multiply(multiplicator.fraction));
96104
}
97105

98106
public Scalar by(Scalar divisor) {
99-
return new Scalar(fraction.divide(divisor.fraction));
107+
return scalar(fraction.divide(divisor.fraction));
100108
}
101109

102110
public Scalar min(Scalar other) {

src/main/java/net/itarray/automotion/internal/geometry/Vector.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package net.itarray.automotion.internal.geometry;
22

3+
import static net.itarray.automotion.internal.geometry.Scalar.scalar;
4+
35
public class Vector implements GroupElement<Vector> {
46
private final Scalar x;
57
private final Scalar y;
@@ -10,7 +12,7 @@ public Vector(Scalar x, Scalar y) {
1012
}
1113

1214
public Vector(int x, int y) {
13-
this(new Scalar(x), new Scalar(y));
15+
this(scalar(x), scalar(y));
1416
}
1517

1618
@Override

src/main/java/net/itarray/automotion/internal/properties/PagePercentage.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import net.itarray.automotion.internal.geometry.Scalar;
66
import net.itarray.automotion.validation.properties.Expression;
77

8+
import static net.itarray.automotion.internal.geometry.Scalar.scalar;
9+
810
public class PagePercentage implements Expression<Scalar> {
911
private final Scalar percentage;
1012

@@ -16,7 +18,7 @@ public PagePercentage(Scalar percentage) {
1618
public Scalar evaluateIn(Context context, Direction direction) {
1719
Rectangle page = context.getPageRectangle();
1820
Scalar screenExtend = direction.extend(page).abs();
19-
return percentage.times(screenExtend).by(new Scalar(100));
21+
return percentage.times(screenExtend).by(scalar(100));
2022
}
2123

2224
@Override

src/main/java/net/itarray/automotion/validation/properties/Condition.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@
99
import net.itarray.automotion.internal.properties.Context;
1010
import net.itarray.automotion.internal.properties.PixelConstant;
1111

12+
import static net.itarray.automotion.internal.geometry.Scalar.scalar;
13+
1214
public interface Condition<T> {
1315

1416
static Condition<Scalar> equalTo(int limit) {
15-
return equalTo(new Scalar(limit));
17+
return equalTo(scalar(limit));
1618
}
1719

1820
static Condition<Scalar> equalTo(Scalar limit) {
@@ -24,7 +26,7 @@ static Condition<Scalar> equalTo(Expression<Scalar> lowerLimit) {
2426
}
2527

2628
static Condition<Scalar> greaterOrEqualTo(int limit) {
27-
return greaterOrEqualTo(new Scalar(limit));
29+
return greaterOrEqualTo(scalar(limit));
2830
}
2931

3032
static Condition<Scalar> greaterOrEqualTo(Scalar limit) {
@@ -36,7 +38,7 @@ static Condition<Scalar> greaterOrEqualTo(Expression<Scalar> lowerLimit) {
3638
}
3739

3840
static Condition<Scalar> greaterThan(int limit) {
39-
return greaterThan(new Scalar(limit));
41+
return greaterThan(scalar(limit));
4042
}
4143

4244
static Condition<Scalar> greaterThan(Scalar limit) {
@@ -48,7 +50,7 @@ static Condition<Scalar> greaterThan(Expression<Scalar> lowerLimit) {
4850
}
4951

5052
static Condition<Scalar> lessOrEqualTo(int limit) {
51-
return lessOrEqualTo(new Scalar(limit));
53+
return lessOrEqualTo(scalar(limit));
5254
}
5355

5456
static Condition<Scalar> lessOrEqualTo(Scalar limit) {
@@ -60,7 +62,7 @@ static Condition<Scalar> lessOrEqualTo(Expression<Scalar> upperLimit) {
6062
}
6163

6264
static Condition<Scalar> lessThan(int limit) {
63-
return lessThan(new Scalar(limit));
65+
return lessThan(scalar(limit));
6466
}
6567

6668
static Condition<Scalar> lessThan(Scalar limit) {
@@ -96,11 +98,11 @@ public LowerLimit(Scalar lowerLimit) {
9698
}
9799

98100
public LowerLimit(int lowerLimit) {
99-
this(new PixelConstant(new Scalar(lowerLimit)));
101+
this(new PixelConstant(scalar(lowerLimit)));
100102
}
101103

102104
public Condition<Scalar> and(int upperLimit) {
103-
return and(new Scalar(upperLimit));
105+
return and(scalar(upperLimit));
104106
}
105107

106108
public Condition<Scalar> and(Scalar upperLimit) {

src/main/java/net/itarray/automotion/validation/properties/Expression.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import net.itarray.automotion.internal.properties.PagePercentageOrPixels;
88
import net.itarray.automotion.internal.properties.PercentReference;
99

10+
import static net.itarray.automotion.internal.geometry.Scalar.scalar;
1011
import static net.itarray.automotion.internal.properties.PercentReference.PAGE;
1112

1213
public interface Expression<T> {
@@ -16,11 +17,11 @@ static PagePercentageOrPixels percentOrPixels(Scalar constant) {
1617
}
1718

1819
static PagePercentageOrPixels percentOrPixels(int constant) {
19-
return percentOrPixels(new Scalar(constant));
20+
return percentOrPixels(scalar(constant));
2021
}
2122

2223
static Expression<Scalar> percent(int percentage, PercentReference reference) {
23-
return percent(new Scalar(percentage), reference);
24+
return percent(scalar(percentage), reference);
2425

2526
}
2627

src/test/java/net/itarray/automotion/tests/geometry/ContainedIntervalsTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,17 @@
55
import org.junit.Test;
66

77
import static net.itarray.automotion.internal.geometry.Interval.interval;
8+
import static net.itarray.automotion.internal.geometry.Scalar.scalar;
89
import static org.assertj.core.api.Assertions.assertThat;
910

1011
public class ContainedIntervalsTest extends TwoIntervalsTest{
1112

1213
public Interval left() {
13-
return interval(new Scalar(12), new Scalar(15));
14+
return interval(scalar(12), scalar(15));
1415
}
1516

1617
public Interval right() {
17-
return interval(new Scalar(20), new Scalar(20));
18+
return interval(scalar(20), scalar(20));
1819
}
1920

2021
@Test

src/test/java/net/itarray/automotion/tests/geometry/DirectionsInRectanglesTest.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@
66
import org.junit.Test;
77

88
import static net.itarray.automotion.internal.geometry.Direction.*;
9+
import static net.itarray.automotion.internal.geometry.Scalar.scalar;
910
import static org.assertj.core.api.Assertions.assertThat;
1011
import static rectangles.DummyWebElement.createElement;
1112

1213
public class DirectionsInRectanglesTest {
1314

1415
private UIElement rectangle;
15-
private Scalar originX = new Scalar(7);
16-
private Scalar cornerX = new Scalar(42);
17-
private Scalar originY = new Scalar(13);
18-
private Scalar cornerY = new Scalar(117);
16+
private Scalar originX = scalar(7);
17+
private Scalar cornerX = scalar(42);
18+
private Scalar originY = scalar(13);
19+
private Scalar cornerY = scalar(117);
1920

2021
@Before
2122
public void setUp() {
@@ -64,22 +65,22 @@ public void upEndIsOriginY() {
6465

6566
@Test
6667
public void rightExtendIsWidth() {
67-
assertThat(rectangle.getExtend(RIGHT)).isEqualTo(new Scalar(35));
68+
assertThat(rectangle.getExtend(RIGHT)).isEqualTo(scalar(35));
6869
}
6970

7071
@Test
7172
public void leftExtendIsNegativeWidth() {
72-
assertThat(rectangle.getExtend(LEFT)).isEqualTo(new Scalar(-35));
73+
assertThat(rectangle.getExtend(LEFT)).isEqualTo(scalar(-35));
7374
}
7475

7576
@Test
7677
public void downExtendIsHeight() {
77-
assertThat(rectangle.getExtend(DOWN)).isEqualTo(new Scalar(104));
78+
assertThat(rectangle.getExtend(DOWN)).isEqualTo(scalar(104));
7879
}
7980

8081
@Test
8182
public void upExtendIsNegativeHeight() {
82-
assertThat(rectangle.getExtend(UP)).isEqualTo(new Scalar(-104));
83+
assertThat(rectangle.getExtend(UP)).isEqualTo(scalar(-104));
8384
}
8485

8586
}

0 commit comments

Comments
 (0)