Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,10 @@ protected static Map<Object, Object> map(Object... args) {
return dataMap;
}

protected static Row rowWithFieldNames(List<String> fieldNames, List<Object> args) {
return new Row(fieldNames, args);
}

/**
* Creates a row from the provided elements to pass to the test framework
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,12 +116,19 @@ private Pair<TestType, Object> resolveMap(Map<Object, Object> map, TestType keyT

private Pair<TestType, Object> resolveStruct(Row struct, List<TestType> fieldTypes) {
List<TestType> resolvedFieldTypes = new ArrayList<>();
List<String> resolvedFieldNames = new ArrayList<>();
List<Object> resolvedFields = new ArrayList<>();
IntStream.range(0, fieldTypes.size()).forEach(idx -> {
Pair<TestType, Object> resolvedField = resolveParameter(struct.getFields().get(idx), fieldTypes.get(idx));
if (struct.getFieldNames() != null) {
resolvedFieldNames.add(struct.getFieldNames().get(idx));
}
resolvedFieldTypes.add(resolvedField.getLeft());
resolvedFields.add(resolvedField.getRight());
});
return Pair.of(TestTypeFactory.struct(resolvedFieldTypes), new Row(resolvedFields));
if (resolvedFieldNames.isEmpty()) {
return Pair.of(TestTypeFactory.struct(resolvedFieldTypes), new Row(resolvedFields));
}
return Pair.of(TestTypeFactory.struct(resolvedFieldNames, resolvedFieldTypes), new Row(resolvedFieldNames, resolvedFields));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,25 @@
public class Row {

private final List<Object> _fields;
private List<String> _fieldNames;

public Row(List<Object> fields) {
_fields = fields;
}

public Row(List<String> fieldNames, List<Object> fields) {
_fieldNames = fieldNames;
_fields = fields;
}

public List<Object> getFields() {
return _fields;
}

public List<String> getFieldNames() {
return _fieldNames;
}

@Override
public boolean equals(Object o) {
if (this == o) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,14 @@ public static TestType inferTypeFromData(Object data) {
return TestTypeFactory.map(inferCollectionTypeFromData(map.keySet(), "map keys"),
inferCollectionTypeFromData(map.values(), "map values"));
} else if (data instanceof Row) {
Row row = (Row) data;
if (row.getFieldNames() == null) {
return TestTypeFactory.struct(
row.getFields().stream().map(TestTypeUtils::inferTypeFromData).collect(Collectors.toList()));
}
return TestTypeFactory.struct(
((Row) data).getFields().stream().map(TestTypeUtils::inferTypeFromData).collect(Collectors.toList()));
row.getFieldNames(),
row.getFields().stream().map(TestTypeUtils::inferTypeFromData).collect(Collectors.toList()));
} else if (data instanceof FunctionCall) {
return TestTypeFactory.UNKNOWN_TEST_TYPE;
} else {
Expand Down