@SuppressWarnings("unchecked")
protected void assertEquals(Map<String, Object> expected, Map<String, Object> actual) {
Assert.assertEquals(expected.get(Constants.GUID), actual.get(Constants.GUID));
Assert.assertEquals(expected.get(getSourceTypeField()), actual.get(getSourceTypeField()));
Double actualThreatTriageField = actual.get(getThreatTriageField()) instanceof Float ?
((Float) actual.get(getThreatTriageField())).doubleValue() : (Double) actual.get(getThreatTriageField());
Assert.assertEquals(expected.get(getThreatTriageField()), actualThreatTriageField);
List<Map<String, Object>> expectedAlerts = (List<Map<String, Object>>) expected.get(ALERT_FIELD);
List<Map<String, Object>> actualAlerts = (List<Map<String, Object>>) actual.get(ALERT_FIELD);
expectedAlerts.sort(Comparator.comparing(o -> ((String) o.get(Constants.GUID))));
actualAlerts.sort(Comparator.comparing(o -> ((String) o.get(Constants.GUID))));
Assert.assertEquals(expectedAlerts, actualAlerts);
Assert.assertEquals(expected.get(STATUS_FIELD), actual.get(STATUS_FIELD));
Assert.assertEquals(expected.get("average"), actual.get("average"));
Assert.assertEquals(expected.get("min"), actual.get("min"));
Assert.assertEquals(expected.get("median"), actual.get("median"));
Assert.assertEquals(expected.get("max"), actual.get("max"));
Integer actualCountField = actual.get("count") instanceof Long ? ((Long) actual.get("count")).intValue() :
(Integer) actual.get("count");
Assert.assertEquals(expected.get("count"), actualCountField);
Assert.assertEquals(expected.get("sum"), actual.get("sum"));
}