Skip to content

Commit 657c632

Browse files
committed
Made simple relational conditions produce binary expressions.
1 parent 0c7a192 commit 657c632

File tree

5 files changed

+18
-14
lines changed

5 files changed

+18
-14
lines changed

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@ public <V extends MetricSpace<V>> T evaluateIn(Context context, ExtendGiving<V>
3131
return contextBiFunction.apply(left.evaluateIn(context, direction), right.evaluateIn(context, direction), context);
3232
}
3333

34-
@Override
35-
public <V extends MetricSpace<V>>String getDescription(Context context, ExtendGiving<V> direction) {
36-
String toleranceDescription = context.getTolerance().equals(scalar(0)) ? "" : String.format(" with tolerance %s", context.getTolerance());
37-
return String.format(
38-
descriptionFormat,
34+
public <V extends MetricSpace<V>> String getDescription(Context context, ExtendGiving<V> direction) {
35+
String toleranceDescription = context.getTolerance().equals(scalar(0)) ? "" : String.format(" (With tolerance %s).", context.getTolerance());
36+
L t = left.evaluateIn(context, direction);
37+
return String.format(descriptionFormat,
3938
left.getDescription(context, direction),
40-
right.getDescription(context, direction)) + toleranceDescription;
39+
right.getDescription(context, direction),
40+
left.getRepeatedDescription(context, direction),
41+
(t instanceof MetricSpace) ? ((MetricSpace) t).toStringWithUnits("px") : t) + toleranceDescription;
4142
}
43+
4244
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@ public BinaryScalarConditionWithFixedOperand(Expression<Scalar> fixedOperand, Co
2525
}
2626

2727
@Override
28-
public <V extends MetricSpace<V>> boolean isSatisfiedOn(Expression<Scalar> toBeConditioned, Context context, ExtendGiving<V> direction) {
29-
return contextPredicate.apply(toBeConditioned.evaluateIn(context, direction), fixedOperand.evaluateIn(context, direction), context);
28+
public Expression<Boolean> applyTo(Expression<Scalar> toBeConditioned) {
29+
String toStringFormat = this.toStringFormat.replace("%s", "%2$s");
30+
return new BinaryExpression<>(toBeConditioned, fixedOperand, contextPredicate,
31+
"Expected %1$s to be " + toStringFormat + ". Actual %3$s is: %4$s");
3032
}
3133

3234
@Override

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,15 @@ static <V extends MetricSpace<V>> Expression<Boolean> equalTo(Expression<V> left
4141
left,
4242
right,
4343
(scalar, other, context) -> scalar.minus(other).norm().isLessOrEqualTo(context.getTolerance()),
44-
"%s to be equal to %s");
44+
"Expected %1$s to be equal to %2$s.");
4545
}
4646

4747
static <V extends MetricSpace<V>> Expression<V> signedDistance(Expression<V> left, Expression<V> right, ExtendGiving<V> extendGiving) {
4848
return new BinaryExpression<>(
4949
left,
5050
right,
5151
(scalar, other, context) -> extendGiving.signedDistance(scalar, other),
52-
"%s to be equal to %s");
52+
"Expected %1$s to be equal to %2$s.");
5353
}
5454

5555
<V extends MetricSpace<V>> T evaluateIn(Context context, ExtendGiving<V> direction);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public void setUp() {
2020
new PixelConstant(scalar(17)),
2121
new PixelConstant(scalar(16)),
2222
Scalar::isLessOrEqualTo,
23-
"%s to be less or equal to %s");
23+
"Expected %1$s to be less or equal to %2$s.");
2424
}
2525

2626
@Test
@@ -32,6 +32,6 @@ public void evaluatesToTheValueOfTheOperationAppliedToTheEvaluatedLeftAndRightEx
3232
@Test
3333
public void shouldName() {
3434
String description = expression.getDescription(new TestContext(), Direction.RIGHT);
35-
assertThat(description).isEqualTo("17px to be less or equal to 16px");
35+
assertThat(description).isEqualTo("Expected 17px to be less or equal to 16px.");
3636
}
3737
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ public void evaluatesToTheValueOfTheOperationAppliedToTheEvaluatedLeftAndRightEx
3838
@Test
3939
public void describesItself() {
4040
String description = expression.getDescription(new TestContext(), Direction.RIGHT);
41-
assertThat(description).isEqualTo("17px to be equal to 16px");
41+
assertThat(description).isEqualTo("Expected 17px to be equal to 16px.");
4242
}
4343

4444
@Test
4545
public void describesItselfWithTolerance() {
4646
String description = expression.getDescription(new TestContext().withTolerance(scalar(1)), Direction.RIGHT);
47-
assertThat(description).isEqualTo("17px to be equal to 16px with tolerance 1");
47+
assertThat(description).isEqualTo("Expected 17px to be equal to 16px. (With tolerance 1).");
4848
}
4949
}

0 commit comments

Comments
 (0)