// Copyright © 2011-2013, Esko Luontola <www.orfjackal.net> // This software is released under the Apache License 2.0. // The license text is at http://www.apache.org/licenses/LICENSE-2.0 package fi.jumi.core.ipc.buffer; import org.junit.Test; import java.nio.ByteBuffer; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; public abstract class ByteBufferSequenceContract { protected abstract ByteBufferSequence newByteBufferSequence(); @Test public void different_segments_have_different_data() { ByteBufferSequence sequence = newByteBufferSequence(); ByteBuffer segment0 = sequence.get(0); ByteBuffer segment1 = sequence.get(1); segment0.put(0, (byte) 10); segment1.put(0, (byte) 20); assertThat(segment0.get(0), is((byte) 10)); assertThat(segment1.get(0), is((byte) 20)); } @Test public void many_requests_for_same_segment_always_returns_same_data() { ByteBufferSequence sequence = newByteBufferSequence(); sequence.get(0).put(0, (byte) 10); byte actual = sequence.get(0).get(0); assertThat(actual, is((byte) 10)); } @Test public void the_returned_ByteBuffer_has_its_position_and_limit_at_default_values() { ByteBufferSequence sequence = newByteBufferSequence(); ByteBuffer mutated = sequence.get(0); mutated.position(5).limit(6); ByteBuffer fresh = sequence.get(0); assertThat("position", fresh.position(), is(0)); assertThat("limit", fresh.limit(), is(fresh.capacity())); } }