private void assertValid(final Decoder decoder) { final boolean isValid = decoder.validate(); assertTrue(String.format( "Decoder fails validation due to: %s for tag: %d", decoder.rejectReason(), decoder.invalidTagId()), isValid); }
private void assertInvalid(final Decoder decoder) { final boolean isValid = decoder.validate(); assertFalse(String.format( "Decoder fails validation due to: %s for tag: %d", decoder.rejectReason(), decoder.invalidTagId()), isValid); }
@Test public void shouldValidateIfNoRequiredFieldsMissingInRepeatingGroup() throws Exception { final Decoder decoder = decodeHeartbeat(NO_MISSING_REQUIRED_FIELDS_IN_REPEATING_GROUP_MESSAGE); assertTrue("Failed validation when it should have passed", decoder.validate()); }
@Test public void shouldValidateIfNoRepeatingGroup() throws Exception { final Decoder decoder = decodeHeartbeat(NO_REPEATING_GROUP_IN_REPEATING_GROUP_MESSAGE); assertTrue("Failed validation when it should have passed", decoder.validate()); }
@Test public void shouldLeaveDecoderInUsableIfValidationFailsDuringRepeatingGroup() throws Exception { //Given final Decoder decoder = decodeHeartbeat(FIELD_DEFINED_TWICE_IN_MESSAGE); //When assertFalse("Failed validation when it should have passed", decoder.validate()); assertEquals("Wrong reject reason", TAG_APPEARS_MORE_THAN_ONCE, decoder.rejectReason()); //Then decoder.reset(); decode(NO_MISSING_REQUIRED_FIELDS_IN_REPEATING_GROUP_MESSAGE, decoder); assertTrue("Failed validation when it should have passed", decoder.validate()); }
@Test public void shouldSkipUnknownFieldForMessageAndPassValidation() throws Exception { final Decoder decoder = decodeHeartbeat(INVALID_TAG_NUMBER_MESSAGE); assertTrue("Failed validation with invalid tag number", decoder.validate()); assertEquals(2, getIntField(decoder)); }
@Test public void shouldLeaveDecoderInUsableIfUnknownFieldForRepeatingGroupReachedAndRejectingOn() throws Exception { //Given final Decoder decoder = decodeHeartbeatWithRejectingUnknownFields(REPEATING_GROUP_WITH_UNKNOWN_FIELD); //When assertFalse("Passed validation with missing fields", decoder.validate()); assertEquals("Wrong tag id", 1000, decoder.invalidTagId()); assertEquals("Wrong reject reason", INVALID_TAG_NUMBER, decoder.rejectReason()); //Then decoder.reset(); decode(NO_MISSING_REQUIRED_FIELDS_IN_REPEATING_GROUP_MESSAGE, decoder); assertTrue("Failed validation when it should have passed", decoder.validate()); }
@Test public void shouldResetTheInvalidAccessors() throws Exception { final Decoder decoder = decodeHeartbeat(TAG_APPEARS_MORE_THAN_ONCE_MESSAGE); decoder.validate(); decoder.reset(); assertEquals("Failed to reset tag id", NO_ERROR, decoder.invalidTagId()); assertEquals("Failed to reset reject reason", NO_ERROR, decoder.rejectReason()); }
@Test public void shouldValidateIntBasedEnum() throws Exception { final Decoder decoder = decodeHeartbeat(TAG_SPECIFIED_WHERE_INT_VALUE_IS_INCORRECT_MESSAGE); assertFalse("Passed validation with incorrect value", decoder.validate()); assertEquals("Wrong tag id", 116, decoder.invalidTagId()); assertEquals("Wrong reject reason", VALUE_IS_INCORRECT, decoder.rejectReason()); }
@Test public void shouldValidateStringBasedEnum() throws Exception { final Decoder decoder = decodeHeartbeat(TAG_SPECIFIED_WHERE_STRING_VALUE_IS_INCORRECT_MESSAGE); assertFalse("Passed validation with incorrect value", decoder.validate()); assertEquals("Wrong tag id", 115, decoder.invalidTagId()); assertEquals("Wrong reject reason", VALUE_IS_INCORRECT, decoder.rejectReason()); }
@Test public void shouldValidateTagsAppearingMoreThanOnce() throws Exception { final Decoder decoder = decodeHeartbeat(TAG_APPEARS_MORE_THAN_ONCE_MESSAGE); assertFalse("Passed validation with incorrect value", decoder.validate()); assertEquals("Wrong tag id", 116, decoder.invalidTagId()); assertEquals("Wrong reject reason", TAG_APPEARS_MORE_THAN_ONCE, decoder.rejectReason()); }
@Test public void shouldValidateFirstThreeFieldsAreInOrder() throws Exception { final Decoder decoder = decodeHeartbeat(TAG_SPECIFIED_OUT_OF_REQUIRED_ORDER_MESSAGE); assertFalse("Passed validation with incorrect value", decoder.validate()); assertEquals("Wrong tag id", 9, decoder.invalidTagId()); assertEquals("Wrong reject reason", TAG_SPECIFIED_OUT_OF_REQUIRED_ORDER, decoder.rejectReason()); }
@Test public void shouldValidateTagNumbersWhenUnknownFieldPropIsSet() throws Exception { final Decoder decoder = decodeHeartbeatWithRejectingUnknownFields(INVALID_TAG_NUMBER_MESSAGE); assertFalse("Passed validation with invalid tag number", decoder.validate()); assertEquals("Wrong tag id", 9999, decoder.invalidTagId()); assertEquals("Wrong reject reason", INVALID_TAG_NUMBER, decoder.rejectReason()); }
@Test public void shouldValidateMissingRequiredFields() throws Exception { final Decoder decoder = decodeHeartbeat(MISSING_REQUIRED_FIELDS_MESSAGE); assertFalse("Passed validation with missing fields", decoder.validate()); assertEquals("Wrong tag id", 116, decoder.invalidTagId()); assertEquals("Wrong reject reason", REQUIRED_TAG_MISSING, decoder.rejectReason()); }
@Test public void shouldFailValidationForUnknownFieldInsideRepeatingGroupWhenUnknownFieldPropIsSet() throws Exception { final Decoder decoder = decodeHeartbeatWithRejectingUnknownFields(REPEATING_GROUP_WITH_UNKNOWN_FIELD); assertFalse("Passed validation with missing fields", decoder.validate()); assertEquals("Wrong tag id", 1000, decoder.invalidTagId()); assertEquals("Wrong reject reason", INVALID_TAG_NUMBER, decoder.rejectReason()); }
@Test public void shouldFailValidationRegardingUnknownFieldRatherThanMissingRequiredFieldWhenUnknownFieldPropIsSet() throws Exception { final Decoder decoder = decodeHeartbeatWithRejectingUnknownFields(UNKNOWN_FIELD_MESSAGE); assertFalse("Passed validation with invalid tag number ", decoder.validate()); assertEquals("Wrong tag id", 1000, decoder.invalidTagId()); assertEquals("Wrong reject reason", INVALID_TAG_NUMBER, decoder.rejectReason()); }
@Test public void shouldValidateTagNumbersDefinedForThisMessageWhenUnknownFieldPropIsSet() throws Exception { final Decoder decoder = decodeHeartbeatWithRejectingUnknownFields(TAG_NOT_DEFINED_FOR_THIS_MESSAGE_TYPE_MESSAGE); assertFalse("Passed validation with invalid tag number", decoder.validate()); assertEquals("Wrong tag id", 99, decoder.invalidTagId()); assertEquals("Wrong reject reason", TAG_NOT_DEFINED_FOR_THIS_MESSAGE_TYPE, decoder.rejectReason()); }
@Test public void shouldValidateTagSpecifiedWithMissingValue() throws Exception { final Decoder decoder = decodeHeartbeat(TAG_SPECIFIED_WITHOUT_A_VALUE_MESSAGE); assertFalse("Passed validation with missing value", decoder.validate()); assertEquals("Wrong tag id", 116, decoder.invalidTagId()); assertEquals("Wrong reject reason", TAG_SPECIFIED_WITHOUT_A_VALUE, decoder.rejectReason()); }
@Test public void shouldSkipUnknownFieldInRepeatingGroupAndPassValidation() throws Exception { final Decoder decoder = decodeHeartbeat(REPEATING_GROUP_WITH_UNKNOWN_FIELD); assertTrue("Failed validation with missing fields", decoder.validate()); Object group = get(decoder, "secondEgGroupGroup"); assertEquals("TOM", get(group, "secondGroupFieldAsString")); assertEquals(180, get(group, "thirdGroupField")); group = next(group); assertEquals("Barbara", get(group, "secondGroupFieldAsString")); assertEquals(123, get(group, "thirdGroupField")); }
@Test public void shouldSkipFieldUnknownToMessageButDefinedInFIXSpec() throws Exception { final Decoder decoder = decodeHeartbeat(REPEATING_GROUP_WITH_FIELD_UNKNOWN_TO_MESSAGE_BUT_IN_SPEC); assertTrue("Failed validation with missing fields", decoder.validate()); Object group = get(decoder, "secondEgGroupGroup"); assertEquals("TOM", get(group, "secondGroupFieldAsString")); assertEquals(180, get(group, "thirdGroupField")); group = next(group); assertEquals("Barbara", get(group, "secondGroupFieldAsString")); assertEquals(123, get(group, "thirdGroupField")); }