in java/clickhouse-connector/src/integration-test/java/com/epam/deltix/timebase/connector/clickhouse/FullStreamTests.java [199:271]
private void compareAllTypesValues(Map<String, Object> expected, Map<String, Object> actual, RecordClassDescriptor type, ColumnNamingScheme scheme) throws ParseException {
String typeName = getSimpleName(type.getName());
for (Map.Entry<String, Object> entry : expected.entrySet()) {
if (entry.getKey().equals("objectsListOfNullable") || entry.getKey().equals("objectsList") || entry.getKey().equals("nullableObjectsListOfNullable")
|| entry.getKey().equals("listOfLists") || entry.getKey().equals("nullableObjectsList")) {
Object[] values = (Object[]) entry.getValue();
if (values == null) {
continue;
}
String fieldName = getBaseName(typeName, entry.getKey(), scheme);
for (int i = 0; i < values.length; i++) {
Map<String, Object> value = (Map<String, Object>) values[i];
if (value != null) {
String innerTypeName = getSimpleName(((RecordClassDescriptor) value.get("objectClassName")).getName());
for (Map.Entry<String, Object> innerEntry : value.entrySet()) {
if (innerEntry.getKey().equals(("objectClassName"))) continue;
String innerFieldName = fieldName + "." + getFieldName(innerTypeName, innerEntry.getKey(), scheme);
Object[] nestedArr = (Object[]) actual.get(innerFieldName);
if (innerEntry.getKey().contains("binary")) {
assertEquals(covertBinary(innerEntry.getValue()), nestedArr[i]);
} else if (innerEntry.getKey().contains("estedDecimalList")) {
assertArrayDoubleValues(innerEntry.getValue(), nestedArr[i]);
} else if (innerEntry.getKey().contains("decimal")) {
assertDoubleValues(innerEntry.getValue(), nestedArr[i]);
} else if (innerEntry.getKey().contains("nestedBooleanList")) {
assertArrayEquals(new Object[]{convertByteValues(innerEntry.getValue())}, new Object[]{convertByteValues(nestedArr[i])});
} else {
assertArrayEquals(new Object[]{innerEntry.getValue()}, new Object[]{convertValue(nestedArr[i])});
}
}
}
}
} else if (entry.getKey().equals("lists") || entry.getKey().equals("object")) {
String fieldName = getBaseName(typeName, entry.getKey(), scheme);
Map<String, Object> value = (Map<String, Object>) entry.getValue();
String innerTypeName = getSimpleName(((RecordClassDescriptor) value.get("objectClassName")).getName());
for (Map.Entry<String, Object> innerEntry : value.entrySet()) {
if (innerEntry.getKey().equals(("objectClassName"))) continue;
String classSeparator = scheme == ColumnNamingScheme.NAME_AND_DATATYPE ? "_N_" : "_";
String innerFieldName = fieldName + classSeparator + getFieldName(innerTypeName, innerEntry.getKey(), scheme);
Object nestedVal = actual.get(innerFieldName);
if (innerEntry.getKey().contains("binary")) {
assertEquals(covertBinary(innerEntry.getValue()), nestedVal);
} else if (innerEntry.getKey().contains("estedDecimalList")) {
assertArrayEquals(new Object[]{getBigDecimalArr(innerEntry.getValue())}, new Object[]{nestedVal});
} else if (innerEntry.getKey().contains("decimal")) {
assertDoubleValues(innerEntry.getValue(), nestedVal);
} else if (innerEntry.getKey().contains("imestamp")) {
assertArrayEquals(new Object[]{innerEntry.getValue()}, new Object[]{convertTimestampArray(nestedVal)});
} else {
assertArrayEquals(new Object[]{innerEntry.getValue()}, new Object[]{convertValue(nestedVal)});
}
}
} else {
String fieldName = getFieldName(typeName, entry.getKey(), scheme);
if (entry.getKey().startsWith("nullable") && (entry.getKey().endsWith("List") || entry.getKey().endsWith("ListOfNullable")) && entry.getValue() == null) {
assertEquals(0, ((Object[]) actual.get(fieldName)).length);
} else if (entry.getKey().contains("ecimalList")) {
assertArrayDoubleValues(entry.getValue(), actual.get(fieldName));
} else if (entry.getKey().contains("decimal")) {
assertDoubleValues(entry.getValue(), actual.get(fieldName));
} else if (entry.getKey().contains("ooleanList")) {
assertArrayEquals(new Object[]{convertByteValues(entry.getValue())}, new Object[]{convertByteValues(actual.get(fieldName))});
} else if (entry.getKey().contains("binary")) {
assertEquals(covertBinary(entry.getValue()), actual.get(fieldName));
} else if (entry.getKey().contains("imestamp")) {
assertArrayEquals(new Object[]{entry.getValue()}, new Object[]{convertTimestampArray(actual.get(fieldName))});
} else {
assertArrayEquals(new Object[]{entry.getValue()}, new Object[]{convertValue(actual.get(fieldName))});
}
}
}
}