Skip to content

Commit 07bfcee

Browse files
committed
made Condition.isSatisfiedOn take Expression instead of Scalar to get to full expressions (single evaluation)
1 parent 6c03eb0 commit 07bfcee

File tree

14 files changed

+84
-106
lines changed

14 files changed

+84
-106
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -328,12 +328,12 @@ public void validateIsAbove(UIElement element, Condition<Scalar> condition, Cont
328328
}
329329

330330
public void validateSuccessor(Direction direction, UIElement toBeValidatedSuccessor, Condition<Scalar> condition, Context context) {
331-
Scalar signedDistance = signedDistanceToSuccessor(direction, toBeValidatedSuccessor);
332-
if (!signedDistance.satisfies(condition, context, direction)) {
331+
ConstantExpression<Scalar> signedDistance = new ConstantExpression<>(signedDistanceToSuccessor(direction, toBeValidatedSuccessor));
332+
if (!condition.isSatisfiedOn(signedDistance, context, direction)) {
333333
context.add(String.format("%s element aligned not properly. Expected margin should be %s. Actual margin is %s",
334334
direction.afterName(),
335335
condition.getDescription(context, direction),
336-
signedDistance.toStringWithUnits(PIXELS)));
336+
signedDistance.evaluateIn(context, direction).toStringWithUnits(PIXELS)));
337337
context.draw(toBeValidatedSuccessor);
338338
}
339339
}
@@ -374,7 +374,7 @@ public void validateBottomOffset(Condition condition, UIElement page, Context co
374374

375375
public void validateOffset(Direction direction, Condition condition, UIElement page, Context context) {
376376
Expression<Scalar> offset = offset(page, direction);
377-
if (!offset.evaluateIn(context, direction).satisfies(condition, context, direction)) {
377+
if (!condition.isSatisfiedOn(offset, context, direction)) {
378378
context.add(
379379
String.format("Expected %s offset of element %s to be %s. Actual %s offset is: %s",
380380
direction.endName(),

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,6 @@ public Scalar abs() {
9999
return scalar(fraction.abs());
100100
}
101101

102-
public boolean satisfies(Condition condition, Context context, Direction direction) {
103-
return condition.isSatisfiedOn(this, context, direction);
104-
}
105-
106102
public Scalar times(Scalar multiplicator) {
107103
return scalar(fraction.multiply(multiplicator.fraction));
108104
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ public Between(Expression<Scalar> lowerLimit, Expression<Scalar> upperLimit) {
2525
}
2626

2727
@Override
28-
public <V extends MetricSpace<V>> boolean isSatisfiedOn(Scalar value, Context context, ExtendGiving<V> direction) {
29-
return lowerLimit.isSatisfiedOn(value, context, direction) && upperLimit.isSatisfiedOn(value, context, direction);
28+
public <V extends MetricSpace<V>> boolean isSatisfiedOn(Expression<Scalar> toBeConditioned, Context context, ExtendGiving<V> direction) {
29+
return lowerLimit.isSatisfiedOn(toBeConditioned, context, direction) && upperLimit.isSatisfiedOn(toBeConditioned, context, direction);
3030
}
3131

3232
@Override

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ public BinaryScalarConditionWithFixedOperand(Expression<Scalar> fixedOperand, Co
3030
}
3131

3232
@Override
33-
public <V extends MetricSpace<V>> boolean isSatisfiedOn(Scalar value, Context context, ExtendGiving<V> direction) {
34-
return contextPredicate.apply(value, fixedOperand.evaluateIn(context, direction), context);
33+
public <V extends MetricSpace<V>> boolean isSatisfiedOn(Expression<Scalar> toBeConditioned, Context context, ExtendGiving<V> direction) {
34+
return contextPredicate.apply(toBeConditioned.evaluateIn(context, direction), fixedOperand.evaluateIn(context, direction), context);
3535
}
3636

3737
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public ConditionedExpression(Expression<T> toBeConditioned, Condition<T> toBeApp
1818

1919
@Override
2020
public <V extends MetricSpace<V>> Boolean evaluateIn(Context context, ExtendGiving<V> direction) {
21-
return toBeApplied.isSatisfiedOn(toBeConditioned.evaluateIn(context, direction), context, direction);
21+
return toBeApplied.isSatisfiedOn(toBeConditioned, context, direction);
2222
}
2323

2424
@Override

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ public Condition<Scalar> and(Expression<Scalar> upperLimit) {
119119
}
120120
}
121121

122-
default <V extends MetricSpace<V>> boolean isSatisfiedOn(T value, Context context, ExtendGiving<V> direction) {
123-
return applyTo(new ConstantExpression<T>(value)).evaluateIn(context, direction);
122+
default <V extends MetricSpace<V>> boolean isSatisfiedOn(Expression<T> toBeConditioned, Context context, ExtendGiving<V> direction) {
123+
return applyTo(toBeConditioned).evaluateIn(context, direction);
124124
}
125125

126126
default Expression<Boolean> applyTo(Expression<T> toBeConditioned) {

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -161,14 +161,6 @@ public void maximumWithLargerScalarReturnsTheLargerScalar() {
161161
assertThat(scalar.max(scalar.plus(1))).isEqualTo(scalar.plus(1));
162162
}
163163

164-
@Test
165-
public void satisfies() {
166-
TestContext context = new TestContext();
167-
Direction direction = Direction.RIGHT;
168-
assertThat(scalar.satisfies(Condition.greaterOrEqualTo(value), context, direction)).isTrue();
169-
assertThat(scalar.satisfies(Condition.greaterOrEqualTo(value+1), context, direction)).isFalse();
170-
}
171-
172164
@Test
173165
public void norm() {
174166
assertThat(scalar.norm()).isEqualTo(scalar);

src/test/java/net/itarray/automotion/tests/properties/ConditionBetweenTest.java

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,57 +10,46 @@
1010
import static net.itarray.automotion.internal.geometry.Scalar.scalar;
1111
import static org.assertj.core.api.Assertions.assertThat;
1212

13-
public class ConditionBetweenTest {
13+
public class ConditionBetweenTest extends ScalarConditionTest {
1414

15-
private Condition<Scalar> condition;
1615
private Scalar lowerLimit;
1716
private Scalar upperLimit;
18-
private Context context;
19-
private Direction direction;
2017

2118
@Before
2219
public void createProperty() {
2320
lowerLimit = scalar(7);
2421
upperLimit = scalar(10);
2522
condition = Condition.between(lowerLimit).and(upperLimit);
26-
context = new TestContext();
27-
direction = Direction.RIGHT;
2823
}
2924

3025
@Test
3126
public void isSatisfiedOnValuesSmallerThanTheLowerLimit() {
32-
boolean result = condition.isSatisfiedOn(lowerLimit.minus(1), context, direction);
33-
assertThat(result).isFalse();
27+
assertThat(satisfiedOn(lowerLimit.minus(1))).isFalse();
3428
}
3529

3630
@Test
3731
public void isSatisfiedOnValuesEqualToTheLowerLimit() {
38-
boolean result = condition.isSatisfiedOn(lowerLimit, context, direction);
39-
assertThat(result).isTrue();
32+
assertThat(satisfiedOn(lowerLimit)).isTrue();
4033
}
4134

4235
@Test
4336
public void isSatisfiedOnValuesGreaterThanTheLowerLimit() {
44-
boolean result = condition.isSatisfiedOn(lowerLimit.plus(1), context, direction);
45-
assertThat(result).isTrue();
37+
assertThat(satisfiedOn(lowerLimit.plus(1))).isTrue();
4638
}
4739

4840
@Test
4941
public void isSatisfiedOnValuesSmallerThanTheLimit() {
50-
boolean result = condition.isSatisfiedOn(upperLimit.minus(1), context, direction);
51-
assertThat(result).isTrue();
42+
assertThat(satisfiedOn(upperLimit.minus(1))).isTrue();
5243
}
5344

5445
@Test
5546
public void isSatisfiedOnValuesEqualToTheLimit() {
56-
boolean result = condition.isSatisfiedOn(upperLimit, context, direction);
57-
assertThat(result).isTrue();
47+
assertThat(satisfiedOn(upperLimit)).isTrue();
5848
}
5949

6050
@Test
6151
public void isSatisfiedOnValuesGreaterThanTheLimit() {
62-
boolean result = condition.isSatisfiedOn(upperLimit.plus(1), context, direction);
63-
assertThat(result).isFalse();
52+
assertThat(satisfiedOn(upperLimit.plus(1))).isFalse();
6453
}
6554

6655
@Test

src/test/java/net/itarray/automotion/tests/properties/ConditionEqualToTest.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,38 +10,33 @@
1010
import static net.itarray.automotion.internal.geometry.Scalar.scalar;
1111
import static org.assertj.core.api.Assertions.assertThat;
1212

13-
public class ConditionEqualToTest {
13+
public class ConditionEqualToTest extends ScalarConditionTest {
1414

15-
private Condition<Scalar> condition;
1615
private Scalar limit;
17-
private TestContext context;
18-
private Direction direction;
1916

2017
@Before
2118
public void createProperty() {
2219
limit = scalar(7);
2320
condition = Condition.equalTo(limit);
24-
context = new TestContext();
25-
direction = Direction.RIGHT;
2621
}
2722

2823
@Test
2924
public void isNotSatisfiedOnValuesSmallerThanTheLimit() {
30-
assertThat(condition.isSatisfiedOn(limit.minus(1), context, direction)).isFalse();
31-
assertThat(condition.isSatisfiedOn(limit.minus(2), context.withTolerance(1), direction)).isFalse();
25+
assertThat(satisfiedOn(limit.minus(1))).isFalse();
26+
assertThat(satisfiedOnWithTolerance(limit.minus(2))).isFalse();
3227
}
3328

3429
@Test
3530
public void isSatisfiedOnValuesEqualToTheLimit() {
36-
assertThat(condition.isSatisfiedOn(limit, context, direction)).isTrue();
37-
assertThat(condition.isSatisfiedOn(limit.minus(1), context.withTolerance(1), direction)).isTrue();
38-
assertThat(condition.isSatisfiedOn(limit, context.withTolerance(1), direction)).isTrue();
39-
assertThat(condition.isSatisfiedOn(limit.plus(1), context.withTolerance(1), direction)).isTrue();
31+
assertThat(satisfiedOn(limit)).isTrue();
32+
assertThat(satisfiedOnWithTolerance(limit.minus(1))).isTrue();
33+
assertThat(satisfiedOnWithTolerance(limit)).isTrue();
34+
assertThat(satisfiedOnWithTolerance(limit.plus(1))).isTrue();
4035
}
4136

4237
@Test
4338
public void isNotSatisfiedOnValuesGreaterThanTheLimit() {
44-
assertThat(condition.isSatisfiedOn(limit.plus(1), context, direction)).isFalse();
45-
assertThat(condition.isSatisfiedOn(limit.plus(2), context.withTolerance(1), direction)).isFalse();
39+
assertThat(satisfiedOn(limit.plus(1))).isFalse();
40+
assertThat(satisfiedOnWithTolerance(limit.plus(2))).isFalse();
4641
}
4742
}

src/test/java/net/itarray/automotion/tests/properties/ConditionGreaterOrEqualToTest.java

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,38 +10,33 @@
1010
import static net.itarray.automotion.internal.geometry.Scalar.scalar;
1111
import static org.assertj.core.api.Assertions.assertThat;
1212

13-
public class ConditionGreaterOrEqualToTest {
13+
public class ConditionGreaterOrEqualToTest extends ScalarConditionTest {
1414

15-
private Condition<Scalar> condition;
1615
private Scalar limit;
17-
private TestContext context;
18-
private Direction direction;
1916

2017
@Before
2118
public void createProperty() {
2219
limit = scalar(7);
2320
condition = Condition.greaterOrEqualTo(limit);
24-
context = new TestContext();
25-
direction = Direction.RIGHT;
2621
}
2722

2823
@Test
2924
public void isSatisfiedOnValuesSmallerThanTheLimit() {
30-
assertThat(condition.isSatisfiedOn(limit.minus(1), context, direction)).isFalse();
31-
assertThat(condition.isSatisfiedOn(limit.minus(2), context.withTolerance(1), direction)).isFalse();
25+
assertThat(satisfiedOn(limit.minus(1))).isFalse();
26+
assertThat(satisfiedOnWithTolerance(limit.minus(2))).isFalse();
3227
}
3328

3429
@Test
3530
public void isSatisfiedOnValuesEqualToTheLimit() {
36-
assertThat(condition.isSatisfiedOn(limit, context, direction)).isTrue();
37-
assertThat(condition.isSatisfiedOn(limit, context.withTolerance(1), direction)).isTrue();
38-
assertThat(condition.isSatisfiedOn(limit.minus(1), context.withTolerance(1), direction)).isTrue();
31+
assertThat(satisfiedOn(limit)).isTrue();
32+
assertThat(satisfiedOnWithTolerance(limit)).isTrue();
33+
assertThat(satisfiedOnWithTolerance(limit.minus(1))).isTrue();
3934
}
4035

4136
@Test
4237
public void isSatisfiedOnValuesGreaterThanTheLimit() {
43-
assertThat(condition.isSatisfiedOn(limit.plus(1), context, direction)).isTrue();
44-
assertThat(condition.isSatisfiedOn(limit.plus(1), context.withTolerance(1), direction)).isTrue();
38+
assertThat(satisfiedOn(limit.plus(1))).isTrue();
39+
assertThat(satisfiedOnWithTolerance(limit.plus(1))).isTrue();
4540
}
4641

4742
@Test

0 commit comments

Comments
 (0)