@Theory public void shouldRoundTripAsciiStringWithoutLength(final MutableDirectBuffer buffer) { final String value = "Hello World"; buffer.putStringWithoutLengthAscii(INDEX, value); assertThat(buffer.getStringWithoutLengthAscii(INDEX, value.length()), is(value)); }
@Theory public void shouldPutNaturalFromEnd(final int[] valueAndLength) { final MutableDirectBuffer buffer = new UnsafeBuffer(new byte[8 * 1024]); final int value = valueAndLength[0]; final int length = valueAndLength[1]; final int start = buffer.putNaturalIntAsciiFromEnd(value, length); assertEquals("for " + Arrays.toString(valueAndLength), 0, start); assertEquals( "for " + Arrays.toString(valueAndLength), String.valueOf(value), buffer.getStringWithoutLengthAscii(0, length)); } }
@Test public void shouldCopyDataUnderTheView() { final String data = "a little bit of ascii"; final int targetBufferOffset = 56; final MutableDirectBuffer targetBuffer = new UnsafeBuffer(new byte[128]); buffer.putStringWithoutLengthAscii(INDEX, data); asciiSequenceView.wrap(buffer, INDEX, data.length()); asciiSequenceView.getBytes(targetBuffer, targetBufferOffset); assertThat(targetBuffer.getStringWithoutLengthAscii(targetBufferOffset, data.length()), is(data)); }
@Theory public void shouldAppendAsciiStringInParts(final MutableDirectBuffer buffer) { final String value = "Hello World Test"; int stringIndex = 0; int bufferIndex = INDEX + SIZE_OF_INT; bufferIndex += buffer.putStringWithoutLengthAscii(bufferIndex, value, stringIndex, 5); stringIndex += 5; bufferIndex += buffer.putStringWithoutLengthAscii(bufferIndex, value, stringIndex, 5); stringIndex += 5; bufferIndex += buffer.putStringWithoutLengthAscii( bufferIndex, value, stringIndex, value.length() - stringIndex); assertThat(bufferIndex, is(value.length() + INDEX + SIZE_OF_INT)); buffer.putInt(INDEX, value.length()); assertThat(buffer.getStringWithoutLengthAscii(INDEX + SIZE_OF_INT, value.length()), is(value)); assertThat(buffer.getStringAscii(INDEX), is(value)); }