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); }
<T extends Decoder> T readMessage(final T decoder) { final ByteBuffer buffer = ByteBuffer.allocateDirect(BUFFER_SIZE); final MutableAsciiBuffer asciiBuffer = new MutableAsciiBuffer(buffer); try { final int read = socket.read(buffer); DebugLogger.log(FIX_TEST, "< [" + asciiBuffer.getAscii(OFFSET, read) + "] for attempted: " + decoder.getClass()); decoder.decode(asciiBuffer, OFFSET, read); if (!decoder.validate()) { fail("Failed: " + RejectReason.decode(decoder.rejectReason()) + " for " + decoder.invalidTagId()); } } catch (final IOException ex) { LangUtil.rethrowUnchecked(ex); } return decoder; }
@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 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 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 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 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 shouldValidateMissingRequiredFieldsInRepeatingGroup() throws Exception { final Decoder decoder = decodeHeartbeat(MISSING_REQUIRED_FIELDS_IN_REPEATING_GROUP_MESSAGE); assertFalse("Passed validation with missing fields", decoder.validate()); assertEquals("Wrong tag id", 138, 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()); }
decoder.invalidTagId(), header.msgType(), msgTypeLength,
@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()); }