private void compareAllTypesValues()

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))});
                }
            }
        }
    }