Skip to content

Commit c9406a5

Browse files
committed
generalized direction parameter for expressions and conditions
1 parent 36c0c29 commit c9406a5

File tree

11 files changed

+43
-25
lines changed

11 files changed

+43
-25
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package net.itarray.automotion.internal.properties;
22

33
import net.itarray.automotion.internal.geometry.Direction;
4+
import net.itarray.automotion.internal.geometry.ExtendGiving;
5+
import net.itarray.automotion.internal.geometry.MetricSpace;
46
import net.itarray.automotion.internal.geometry.Scalar;
57
import net.itarray.automotion.validation.properties.Condition;
68
import net.itarray.automotion.validation.properties.Expression;
@@ -20,12 +22,12 @@ public Between(Expression<Scalar> lowerLimit, Expression<Scalar> upperLimit) {
2022
}
2123

2224
@Override
23-
public boolean isSatisfiedOn(Scalar value, Context context, Direction direction) {
25+
public <V extends MetricSpace<V>> boolean isSatisfiedOn(Scalar value, Context context, ExtendGiving<V> direction) {
2426
return lowerLimit.isSatisfiedOn(value, context, direction) && upperLimit.isSatisfiedOn(value, context, direction);
2527
}
2628

2729
@Override
28-
public String getDescription(Context context, Direction direction) {
30+
public <V extends MetricSpace<V>> String getDescription(Context context, ExtendGiving<V> direction) {
2931
return String.format("between %s and %s", lowerLimitExpression.getDescription(context, direction), upperLimitExpression.getDescription(context, direction));
3032
}
3133

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package net.itarray.automotion.internal.properties;
22

33
import net.itarray.automotion.internal.geometry.Direction;
4+
import net.itarray.automotion.internal.geometry.ExtendGiving;
5+
import net.itarray.automotion.internal.geometry.MetricSpace;
46
import net.itarray.automotion.internal.geometry.Scalar;
57
import net.itarray.automotion.validation.properties.Expression;
68

@@ -27,12 +29,12 @@ public BinaryExpression(Expression<L> left, Expression<R> right, BiFunction<L, R
2729
}
2830

2931
@Override
30-
public T evaluateIn(Context context, Direction direction) {
32+
public <V extends MetricSpace<V>> T evaluateIn(Context context, ExtendGiving<V> direction) {
3133
return contextBiFunction.apply(left.evaluateIn(context, direction), right.evaluateIn(context, direction), context);
3234
}
3335

3436
@Override
35-
public String getDescription(Context context, Direction direction) {
37+
public <V extends MetricSpace<V>>String getDescription(Context context, ExtendGiving<V> direction) {
3638
String toleranceDescription = context.getTolerance().equals(scalar(0)) ? "" : String.format(" with tolerance %s", context.getTolerance());
3739
return String.format(
3840
descriptionFormat,

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.webfirmframework.wffweb.tag.html.formatting.S;
44
import net.itarray.automotion.internal.geometry.Direction;
5+
import net.itarray.automotion.internal.geometry.ExtendGiving;
6+
import net.itarray.automotion.internal.geometry.MetricSpace;
57
import net.itarray.automotion.internal.geometry.Scalar;
68
import net.itarray.automotion.validation.properties.Condition;
79
import net.itarray.automotion.validation.properties.Expression;
@@ -28,12 +30,12 @@ protected boolean applyTo(Scalar operand, Scalar fixedOperand) {
2830
}
2931

3032
@Override
31-
public boolean isSatisfiedOn(Scalar value, Context context, Direction direction) {
33+
public <V extends MetricSpace<V>> boolean isSatisfiedOn(Scalar value, Context context, ExtendGiving<V> direction) {
3234
return applyTo(value, fixedOperand.evaluateIn(context, direction));
3335
}
3436

3537
@Override
36-
public String getDescription(Context context, Direction direction) {
38+
public <V extends MetricSpace<V>> String getDescription(Context context, ExtendGiving<V> direction) {
3739
return String.format(toStringFormat, fixedOperand.getDescription(context, direction));
3840
}
3941

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package net.itarray.automotion.internal.properties;
22

33
import net.itarray.automotion.internal.geometry.Direction;
4+
import net.itarray.automotion.internal.geometry.ExtendGiving;
45
import net.itarray.automotion.internal.geometry.MetricSpace;
56
import net.itarray.automotion.validation.properties.Condition;
67
import net.itarray.automotion.validation.properties.Expression;
@@ -16,12 +17,12 @@ public ConditionedExpression(Expression<T> toBeConditioned, Condition<T> toBeApp
1617
}
1718

1819
@Override
19-
public Boolean evaluateIn(Context context, Direction direction) {
20+
public <V extends MetricSpace<V>> Boolean evaluateIn(Context context, ExtendGiving<V> direction) {
2021
return toBeApplied.isSatisfiedOn(toBeConditioned.evaluateIn(context, direction), context, direction);
2122
}
2223

2324
@Override
24-
public String getDescription(Context context, Direction direction) {
25+
public <V extends MetricSpace<V>> String getDescription(Context context, ExtendGiving<V> direction) {
2526
T t = toBeConditioned.evaluateIn(context, direction);
2627
return String.format("Expected %s to be %s. Actual %s is: %s",
2728
toBeConditioned.getDescription(context, direction),

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package net.itarray.automotion.internal.properties;
22

33
import net.itarray.automotion.internal.geometry.Direction;
4+
import net.itarray.automotion.internal.geometry.ExtendGiving;
5+
import net.itarray.automotion.internal.geometry.MetricSpace;
46
import net.itarray.automotion.internal.geometry.Scalar;
57
import net.itarray.automotion.validation.properties.Expression;
68

@@ -13,12 +15,12 @@ public ConstantExpression(T value) {
1315
}
1416

1517
@Override
16-
public T evaluateIn(Context context, Direction direction) {
18+
public <V extends MetricSpace<V>> T evaluateIn(Context context, ExtendGiving<V> direction) {
1719
return value;
1820
}
1921

2022
@Override
21-
public String getDescription(Context context, Direction direction) {
23+
public <V extends MetricSpace<V>> String getDescription(Context context, ExtendGiving<V> direction) {
2224
return value.toString() + "px";
2325
}
2426

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,17 @@ public static <V extends MetricSpace<V>> ElementPropertyExpression<V> extend(Ext
2424
}
2525

2626
@Override
27-
public T evaluateIn(Context context, Direction direction) {
27+
public <V extends MetricSpace<V>> T evaluateIn(Context context, ExtendGiving<V> direction) {
2828
return property.evaluateOn(element);
2929
}
3030

3131
@Override
32-
public String getDescription(Context context, Direction direction) {
32+
public <V extends MetricSpace<V>> String getDescription(Context context, ExtendGiving<V> direction) {
3333
return property.getDescriptionFor(element);
3434
}
3535

3636
@Override
37-
public String getRepeatedDescription(Context context, Direction direction) {
37+
public <V extends MetricSpace<V>> String getRepeatedDescription(Context context, ExtendGiving<V> direction) {
3838
return property.getName();
3939
}
4040

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package net.itarray.automotion.internal.properties;
22

33
import net.itarray.automotion.internal.geometry.Direction;
4+
import net.itarray.automotion.internal.geometry.ExtendGiving;
5+
import net.itarray.automotion.internal.geometry.MetricSpace;
46
import net.itarray.automotion.internal.geometry.Rectangle;
57
import net.itarray.automotion.internal.geometry.Scalar;
68
import net.itarray.automotion.validation.properties.Expression;
@@ -15,14 +17,14 @@ public PagePercentage(Scalar percentage) {
1517
}
1618

1719
@Override
18-
public Scalar evaluateIn(Context context, Direction direction) {
20+
public <V extends MetricSpace<V>> Scalar evaluateIn(Context context, ExtendGiving<V> direction) {
1921
Rectangle page = context.getPageRectangle();
20-
Scalar screenExtend = direction.extend(page).abs();
22+
Scalar screenExtend = direction.extend(page).norm();
2123
return percentage.times(screenExtend).by(scalar(100));
2224
}
2325

2426
@Override
25-
public String getDescription(Context context, Direction direction) {
27+
public <V extends MetricSpace<V>> String getDescription(Context context, ExtendGiving<V> direction) {
2628
return String.format("%s%% of page (%spx)", percentage, evaluateIn(context, direction));
2729
}
2830

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package net.itarray.automotion.internal.properties;
22

33
import net.itarray.automotion.internal.geometry.Direction;
4+
import net.itarray.automotion.internal.geometry.ExtendGiving;
5+
import net.itarray.automotion.internal.geometry.MetricSpace;
46
import net.itarray.automotion.internal.geometry.Scalar;
57
import net.itarray.automotion.validation.properties.Expression;
68

@@ -35,15 +37,15 @@ public int hashCode() {
3537
}
3638

3739
@Override
38-
public Scalar evaluateIn(Context context, Direction direction) {
40+
public <V extends MetricSpace<V>> Scalar evaluateIn(Context context, ExtendGiving<V> direction) {
3941
if (context.isPixels()) {
4042
return constant.evaluateIn(context, direction);
4143
}
4244
return pagePercentage.evaluateIn(context, direction);
4345
}
4446

4547
@Override
46-
public String getDescription(Context context, Direction direction) {
48+
public <V extends MetricSpace<V>> String getDescription(Context context, ExtendGiving<V> direction) {
4749
return constant.getDescription(context, direction);
4850
}
4951
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package net.itarray.automotion.internal.properties;
22

33
import net.itarray.automotion.internal.geometry.Direction;
4+
import net.itarray.automotion.internal.geometry.ExtendGiving;
5+
import net.itarray.automotion.internal.geometry.MetricSpace;
46
import net.itarray.automotion.internal.geometry.Scalar;
57
import net.itarray.automotion.validation.properties.Expression;
68

@@ -13,12 +15,12 @@ public PixelConstant(Scalar value) {
1315
}
1416

1517
@Override
16-
public Scalar evaluateIn(Context context, Direction direction) {
18+
public <V extends MetricSpace<V>> Scalar evaluateIn(Context context, ExtendGiving<V> direction) {
1719
return value;
1820
}
1921

2022
@Override
21-
public String getDescription(Context context, Direction direction) {
23+
public <V extends MetricSpace<V>> String getDescription(Context context, ExtendGiving<V> direction) {
2224
return value.toString() + "px";
2325
}
2426

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package net.itarray.automotion.validation.properties;
22

33
import net.itarray.automotion.internal.geometry.Direction;
4+
import net.itarray.automotion.internal.geometry.ExtendGiving;
5+
import net.itarray.automotion.internal.geometry.MetricSpace;
46
import net.itarray.automotion.internal.geometry.Scalar;
57
import net.itarray.automotion.internal.properties.Between;
68
import net.itarray.automotion.internal.properties.BinaryScalarConditionWithFixedOperand;
@@ -114,13 +116,13 @@ public Condition<Scalar> and(Expression<Scalar> upperLimit) {
114116
}
115117
}
116118

117-
default boolean isSatisfiedOn(T value, Context context, Direction direction) {
119+
default <V extends MetricSpace<V>> boolean isSatisfiedOn(T value, Context context, ExtendGiving<V> direction) {
118120
return applyTo(new ConstantExpression<T>(value)).evaluateIn(context, direction);
119121
}
120122

121123
default Expression<Boolean> applyTo(Expression<T> toBeConditioned) {
122124
return new ConditionedExpression<>(toBeConditioned, this);
123125
}
124126

125-
String getDescription(Context context, Direction direction);
127+
<V extends MetricSpace<V>> String getDescription(Context context, ExtendGiving<V> direction);
126128
}

0 commit comments

Comments
 (0)