Skip to content

Commit fc2eb99

Browse files
committed
- F ParseInput with 3 parameters now handles arrays as last argument
1 parent 08da976 commit fc2eb99

File tree

2 files changed

+14
-23
lines changed

2 files changed

+14
-23
lines changed

approvaltests-tests/src/test/java/org/approvaltests/Parse3InputTest.java

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package org.approvaltests;
22

3+
import com.spun.util.Tuple;
34
import org.approvaltests.reporters.AutoApproveReporter;
45
import org.approvaltests.reporters.UseReporter;
56
import org.approvaltests.utils.parseinput.ParseInput;
67
import org.junit.jupiter.api.Test;
78
import org.lambda.query.Queryable;
89

10+
import java.util.Arrays;
11+
912
public class Parse3InputTest
1013
{
1114
@Test
@@ -21,35 +24,22 @@ void testWithTypesTransformersAndBoth()
2124
.verifyAll((i, d, b) -> i * d * (b ? 1 : 0));
2225
ParseInput.from(expected).transformTo(Integer::parseInt, Double::parseDouble, Boolean::parseBoolean)
2326
.verifyAll(t -> t.getFirst() * t.getSecond() * (t.getThird() ? 1 : 0));
24-
ParseInput.from(expected).withTypes(Integer.class, Double.class, Boolean.class).transformTo((i, d, b) -> i * d * (b ? 1 : 0))
25-
.verifyAll(t -> t);
26-
}
27-
@Test
28-
void testPersonAge()
29-
{
30-
var expected = """
31-
Llewellyn, 25 -> Person[
32-
name=Llewellyn
33-
label=adult
34-
]
35-
Oliver, 15 -> Person[
36-
name=Oliver
37-
label=teenager
38-
]
39-
""";
40-
ParseInput.from(expected).multiline().withTypes(String.class, Integer.class).transformTo(Person::new)
41-
.verifyAll(Person::toString);
27+
ParseInput.from(expected).withTypes(Integer.class, Double.class, Boolean.class)
28+
.transformTo((i, d, b) -> i * d * (b ? 1 : 0)).verifyAll(t -> t);
4229
}
4330
@Test
4431
@UseReporter(AutoApproveReporter.class)
4532
public void testArrays()
4633
{
4734
var expected = """
48-
1, 1 -> 2.0
49-
10 ,1, 1 -> 12.0
50-
5,5,7,7 -> 24.0
35+
lars, 20, 1,2,3 -> Person[
36+
name=lars
37+
label=teenager
38+
] = 6.0
5139
""";
52-
ParseInput.from(expected).withTypes(Integer[].class).verifyAll(this::sum);
40+
ParseInput.from(expected).multiline().withTypes(String.class, Integer.class, Integer[].class)
41+
.transformTo((s, i, r) -> new Tuple<>(new Person(s, i), r))
42+
.verifyAll(t -> t.getFirst() + " = " + sum(t.getSecond()));
5343
}
5444
private Double sum(Integer[] integers)
5545
{

approvaltests/src/main/java/org/approvaltests/utils/parseinput/ParseInputWith3Parameters.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ public static <IN1, IN2, IN3> ParseInputWith3Parameters<IN1, IN2, IN3> create(St
2626
Queryable<String> temp = Queryable.as(s.split(",")).select(String::trim);
2727
IN1 v1 = t1.call(temp.get(0));
2828
IN2 v2 = t2.call(temp.get(1));
29-
IN3 v3 = t3.call(temp.get(2));
29+
Queryable<String> skip = temp.skip(2);
30+
IN3 v3 = t3.call(skip.size() == 1 ? skip.first() : skip.join(", "));
3031
return new Tuple3<>(v1, v2, v3);
3132
};
3233
return new ParseInputWith3Parameters<>(expected, f, options);

0 commit comments

Comments
 (0)