Skip to content

Commit 3141ec5

Browse files
committed
Scalar min and max
1 parent 0c4c8fd commit 3141ec5

File tree

3 files changed

+42
-3
lines changed

3 files changed

+42
-3
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public boolean isEmpty() {
4141

4242
public Interval intersect(Interval interval) {
4343
return new Interval(
44-
begin.isLessOrEqualTo(interval.begin) ? interval.begin : begin,
45-
end.isLessOrEqualTo(interval.end) ? end : interval.end);
44+
begin.max(interval.begin),
45+
end.min(interval.end));
4646
}
4747
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,12 @@ public Scalar times(Scalar multiplicator) {
9898
public Scalar by(Scalar divisor) {
9999
return new Scalar(fraction.divide(divisor.fraction));
100100
}
101+
102+
public Scalar min(Scalar other) {
103+
return isLessOrEqualTo(other) ? this : other;
104+
}
105+
106+
public Scalar max(Scalar other) {
107+
return isGreaterOrEqualTo(other) ? this : other;
108+
}
101109
}

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

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,41 @@ public void isGreaterThanWorks() {
131131
}
132132

133133
@Test
134-
public void shouldName() {
134+
public void minimumWithSmallerScalarReturnsTheSmallerScalar() {
135+
assertThat(scalar.min(scalar.minus(1))).isEqualTo(scalar.minus(1));
136+
}
137+
138+
@Test
139+
public void minimumWithEqualScalarReturnsTheScalar() {
140+
assertThat(scalar.min(scalar)).isEqualTo(scalar);
141+
}
142+
143+
@Test
144+
public void minimumWithLargerScalarReturnsTheScalar() {
145+
assertThat(scalar.min(scalar.plus(1))).isEqualTo(scalar);
146+
}
147+
148+
@Test
149+
public void maximumWithSmallerScalarReturnsTheScalar() {
150+
assertThat(scalar.max(scalar.minus(1))).isEqualTo(scalar);
151+
}
152+
153+
@Test
154+
public void maximumWithEqualScalarReturnsTheScalar() {
155+
assertThat(scalar.max(scalar)).isEqualTo(scalar);
156+
}
157+
158+
@Test
159+
public void maximumWithLargerScalarReturnsTheLargerScalar() {
160+
assertThat(scalar.max(scalar.plus(1))).isEqualTo(scalar.plus(1));
161+
}
162+
163+
@Test
164+
public void satisfies() {
135165
TestContext context = new TestContext();
136166
Direction direction = Direction.RIGHT;
137167
assertThat(scalar.satisfies(Condition.greaterOrEqualTo(value), context, direction)).isTrue();
138168
assertThat(scalar.satisfies(Condition.greaterOrEqualTo(value+1), context, direction)).isFalse();
139169
}
140170
}
171+

0 commit comments

Comments
 (0)