Fixes #226 java-codegen: Exapnd List integration tests (#244)

This commit is contained in:
Nick Smith 2019-04-05 12:50:31 +02:00 committed by GitHub
parent 79f8bf0a58
commit 3183973ab9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 81 additions and 0 deletions

View File

@ -21,3 +21,7 @@ data Color = Red | Green | Blue | Indigo | Violet
data ColorListRecord = ColorListRecord
with
colors: [Color]
data ParameterizedListRecord a = ParameterizedListRecord
with
list: [a]

View File

@ -13,9 +13,12 @@ import tests.listtest.*;
import tests.listtest.color.Green;
import tests.listtest.color.Red;
import tests.listtest.listitem.Node;
import tests.varianttest.variantitem.ParameterizedRecordVariant;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import static org.junit.jupiter.api.Assertions.assertEquals;
@ -146,4 +149,78 @@ public class ListTest {
}
@Test
void parameterizedListTestRoundTrip() {
ValueOuterClass.Record protoRecord = ValueOuterClass.Record.newBuilder()
.addFields(
ValueOuterClass.RecordField.newBuilder()
.setLabel("list")
.setValue(
ValueOuterClass.Value.newBuilder()
.setList(ValueOuterClass.List.newBuilder().addAllElements(Arrays.asList(
ValueOuterClass.Value.newBuilder().setText("Element1").build(),
ValueOuterClass.Value.newBuilder().setText("Element2").build())
))
.build()
)
.build()
)
.build();
Record dataRecord = Record.fromProto(protoRecord);
ParameterizedListRecord<String> fromValue = ParameterizedListRecord.<String>fromValue(dataRecord, f -> f.asText().get().getValue());
ParameterizedListRecord<String> fromConstructor = new ParameterizedListRecord<>(Arrays.asList("Element1", "Element2"));
ParameterizedListRecord<String> fromRoundTrip = ParameterizedListRecord.fromValue(fromConstructor.toValue(Text::new), f -> f.asText().get().getValue());
assertEquals(fromValue, fromConstructor);
assertEquals(fromConstructor.toValue(Text::new), dataRecord);
assertEquals(fromConstructor.toValue(Text::new).toProtoRecord(), protoRecord);
assertEquals(fromRoundTrip, fromConstructor);
}
@Test
void parameterizedListOfListTestRoundTrip() {
ValueOuterClass.Record protoRecord = ValueOuterClass.Record.newBuilder()
.addFields(
ValueOuterClass.RecordField.newBuilder()
.setLabel("list")
.setValue(
ValueOuterClass.Value.newBuilder()
.setList(ValueOuterClass.List.newBuilder().addAllElements(Arrays.asList(
ValueOuterClass.Value.newBuilder().setList(
ValueOuterClass.List.newBuilder().addAllElements(Arrays.asList(
ValueOuterClass.Value.newBuilder().setText("Element1").build(),
ValueOuterClass.Value.newBuilder().setText("Element2").build())
).build()
).build(),
ValueOuterClass.Value.newBuilder().setList(
ValueOuterClass.List.newBuilder().addAllElements(Arrays.asList(
ValueOuterClass.Value.newBuilder().setText("Element3").build(),
ValueOuterClass.Value.newBuilder().setText("Element4").build())
).build()
).build()
))
.build()
))
.build()
)
.build();
Record dataRecord = Record.fromProto(protoRecord);
ParameterizedListRecord<List<String>> fromValue = ParameterizedListRecord.<List<String>>fromValue(dataRecord,
f -> f.asList().orElseThrow(() -> new IllegalArgumentException("Expected list to be of type com.daml.ledger.javaapi.data.DamlList")).getValues().stream()
.map(f1 -> f1.asText().orElseThrow(() -> new IllegalArgumentException("Expected list to be of type com.daml.ledger.javaapi.data.Text")).getValue()).collect(Collectors.toList()));
ParameterizedListRecord<List<String>> fromConstructor = new ParameterizedListRecord<List<String>>(Arrays.asList(
Arrays.asList("Element1", "Element2"),
Arrays.asList("Element3", "Element4")
));
assertEquals(fromValue, fromConstructor);
assertEquals(fromConstructor.toValue(f -> new DamlList(f.stream().map(Text::new).collect(Collectors.<Value>toList()))), dataRecord);
}
}