Skip to content

Commit 287ecab

Browse files
committed
- F multiline support when 1 input
1 parent 2a1419c commit 287ecab

File tree

4 files changed

+49
-31
lines changed

4 files changed

+49
-31
lines changed

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

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

3+
import com.spun.util.JsonUtils;
34
import org.approvaltests.core.Options;
45
import org.junit.jupiter.api.Test;
56
import org.lambda.query.Queryable;
67

8+
import static java.lang.Integer.parseInt;
9+
710
public class Parse1InputTest
811
{
912
@Test
@@ -32,4 +35,20 @@ void testWithTypesTransformersAndBoth()
3235
Queryable<Integer> inputs = ParseInput.from(expected).withTypes(Integer.class).getInputs();
3336
Approvals.verifyAll(inputs, i -> i + " -> " + Integer.toBinaryString(i), new Options().inline(expected));
3437
}
38+
@Test
39+
void testMultiLineSupport()
40+
{
41+
var expected = """
42+
1 -> {
43+
"name": "name",
44+
"age": 1
45+
}
46+
9 -> {
47+
"name": "name",
48+
"age": 9
49+
}
50+
""";
51+
ParseInput.from(expected).multiline().verifyAll(s -> JsonUtils.asJson(new Person("name", Integer.parseInt(s))));
52+
ParseInput.from(expected).multiline().withTypes(Integer.class).transformTo(i -> new Person("name", i)).verifyAll(s -> JsonUtils.asJson(s));
53+
}
3554
}

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

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,21 @@ public class ParseInput<OUT>
1313
private final String expected;
1414
private final Function1<String, Tuple<String, OUT>> transformer;
1515
private boolean multiline;
16-
public static ParseInput<String> from(String expected)
16+
public ParseInput(String expected, Function1<String, Tuple<String, OUT>> transformer, boolean multiline)
1717
{
18-
return new ParseInput<String>(expected, s -> new Tuple<>(s, s));
18+
this.expected = expected;
19+
this.transformer = transformer;
20+
this.multiline = multiline;
1921
}
20-
public static <OUT> ParseInput<OUT> from(String expected, Function1<String, OUT> transformer)
22+
ParseInput(String expected, Function1<String, Tuple<String, OUT>> transformer)
2123
{
22-
return new ParseInput<OUT>(expected, s -> new Tuple<>(s, transformer.call(s)));
24+
this(expected, transformer, false);
2325
}
24-
private ParseInput(String expected, Function1<String, Tuple<String, OUT>> transformer)
26+
public static ParseInput<String> from(String expected)
2527
{
26-
this.expected = expected;
27-
this.transformer = transformer;
28+
return new ParseInput<String>(expected, s -> new Tuple<>(s, s));
2829
}
30+
2931
public static <OUT> ParseInput<OUT> create(String expected, Function1<Queryable<String>, OUT> transformer)
3032
{
3133
return new ParseInput<OUT>(expected, s -> {
@@ -49,11 +51,11 @@ public static <IN1, IN2, OUT> ParseInput<OUT> create(String expected, Function2<
4951
public static <OUT> ParseInput<OUT> from(String expected, Class<OUT> tranformTo)
5052
{
5153
Function1<String, OUT> transformer1 = getTransformerForClass(tranformTo);
52-
return ParseInput.from(expected, transformer1);
54+
return new ParseInput<OUT>(expected, s -> new Tuple<>(s, transformer1.call(s)));
5355
}
5456
public <OUT> ParseInputWith1Parameters<OUT> withTypes(Class<OUT> type1)
5557
{
56-
return ParseInputWith1Parameters.create(expected, type1);
58+
return ParseInputWith1Parameters.create(expected, type1, multiline);
5759
}
5860
// public <OUT> ParseInput<OUT> transformTo(Function1<String, OUT> transformer)
5961
// {
@@ -96,21 +98,21 @@ public void verifyAll(Function1<OUT, Object> transform)
9698
}
9799
public <T1, T2> ParseInputWith2Parameters<T1, T2, Tuple<T1, T2>> withTypes(Class<T1> type1, Class<T2> type2)
98100
{
99-
return ParseInputWith2Parameters.create(expected, type1, type2);
101+
return ParseInputWith2Parameters.create(expected, getTransformerForClass(type1),
102+
getTransformerForClass(type2));
100103
}
101-
public <T1, T2> ParseInputWith2Parameters<T1, T2, Tuple<T1, T2>> transformTo(Function1<String, T1> transformer1, Function1<String, T2> transformer2)
104+
public <T1, T2> ParseInputWith2Parameters<T1, T2, Tuple<T1, T2>> transformTo(Function1<String, T1> transformer1,
105+
Function1<String, T2> transformer2)
102106
{
103107
return ParseInputWith2Parameters.create(expected, transformer1, transformer2);
104-
105108
}
106109
public ParseInput<OUT> multiline()
107110
{
108-
this.multiline = true;
109-
return this;
111+
return new ParseInput<>(expected, transformer, true);
110112
}
111113
public <OUT> ParseInputWith1Parameters<OUT> transformTo(Function1<String, OUT> transformer)
112114
{
113-
return new ParseInputWith1Parameters<>(expected, transformer);
115+
return new ParseInputWith1Parameters<>(expected, transformer, multiline);
114116
}
115117
public Queryable<OUT> getInputs()
116118
{
Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,37 @@
11
package org.approvaltests;
22

3+
import com.spun.util.Tuple;
34
import org.lambda.functions.Function1;
45
import org.lambda.query.Queryable;
56

67
public class ParseInputWith1Parameters<OUT>
78
{
89
private final String expected;
910
private final Function1<String, OUT> transformer;
10-
public ParseInputWith1Parameters(String expected, Function1<String, OUT> transformer)
11+
private final boolean multiline;
12+
public ParseInputWith1Parameters(String expected, Function1<String, OUT> transformer, boolean multiline)
1113
{
1214
this.expected = expected;
1315
this.transformer = transformer;
16+
this.multiline = multiline;
1417
}
15-
public static <OUT> ParseInputWith1Parameters<OUT> create(String expected, Class<OUT> type1)
18+
public static <OUT> ParseInputWith1Parameters<OUT> create(String expected, Class<OUT> type1, boolean multiline)
1619
{
17-
return new ParseInputWith1Parameters<>(expected, ParseInput.getTransformerForClass(type1));
20+
return new ParseInputWith1Parameters<>(expected, ParseInput.getTransformerForClass(type1), multiline);
1821
}
1922
public <OUT2> ParseInputWith1Parameters<OUT2> transformTo(Function1<OUT, OUT2> transformer1)
2023
{
2124
Function1<String, OUT2> transformer2 = (String t) -> transformer1.call(transformer.call(t));
22-
return new ParseInputWith1Parameters<>(expected, transformer2);
25+
return new ParseInputWith1Parameters<>(expected, transformer2, multiline);
2326
}
2427
public void verifyAll(Function1<OUT, Object> transform)
2528
{
26-
ParseInput.from(expected, transformer).verifyAll(transform);
29+
new ParseInput<OUT>(expected, s -> new Tuple<>(s, transformer.call(s)), multiline).verifyAll(transform);
2730
}
2831
public Queryable<OUT> getInputs()
2932
{
30-
return ParseInput.from(expected, transformer).parse().select(t -> t.getSecond());
33+
ParseInput<OUT> parseInput = new ParseInput<OUT>(expected, s -> new Tuple<>(s, transformer.call(s)),
34+
multiline);
35+
return parseInput.parse().select(t -> t.getSecond());
3136
}
3237
}

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

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import org.lambda.functions.Function1;
55
import org.lambda.query.Queryable;
66

7-
import static org.approvaltests.ParseInput.getTransformerForClass;
8-
97
public class ParseInputWith2Parameters<IN1, IN2, OUT>
108
{
119
private final String expected;
@@ -15,13 +13,7 @@ public ParseInputWith2Parameters(String expected, Function1<String, OUT> transfo
1513
this.expected = expected;
1614
this.transformer = transformer;
1715
}
18-
public static <IN1, IN2> ParseInputWith2Parameters<IN1, IN2, Tuple<IN1, IN2>> create(String expected,
19-
Class<IN1> type1, Class<IN2> type2)
20-
{
21-
Function1<String, IN1> t1 = getTransformerForClass(type1);
22-
Function1<String, IN2> t2 = getTransformerForClass(type2);
23-
return create(expected, t1, t2);
24-
}
16+
2517
public static <IN1, IN2> ParseInputWith2Parameters<IN1, IN2, Tuple<IN1, IN2>> create(String expected,
2618
Function1<String, IN1> t1, Function1<String, IN2> t2)
2719
{
@@ -40,6 +32,6 @@ public static <IN1, IN2> ParseInputWith2Parameters<IN1, IN2, Tuple<IN1, IN2>> cr
4032
// }
4133
public void verifyAll(Function1<OUT, Object> transform)
4234
{
43-
ParseInput.from(expected, transformer).verifyAll(transform);
35+
new ParseInput<OUT>(expected, s -> new Tuple<>(s, transformer.call(s))).verifyAll(transform);
4436
}
4537
}

0 commit comments

Comments
 (0)