@@ -582,6 +582,28 @@ void setReaderOffsetMustThrowOnOversizedIndex(Fixture fixture) {
582582 }
583583 }
584584
585+ @ ParameterizedTest
586+ @ MethodSource ("allocators" )
587+ public void setWriterOffsetMustThrowOutsideOfWritableRegion (Fixture fixture ) {
588+ try (BufferAllocator allocator = fixture .createAllocator ();
589+ Buffer buf = allocator .allocate (8 )) {
590+ // Writer offset cannot be negative.
591+ assertThrows (IndexOutOfBoundsException .class , () -> buf .writerOffset (-1 ));
592+
593+ buf .writerOffset (4 );
594+ buf .readerOffset (4 );
595+
596+ // Cannot set writer offset before reader offset.
597+ assertThrows (IndexOutOfBoundsException .class , () -> buf .writerOffset (3 ));
598+ assertThrows (IndexOutOfBoundsException .class , () -> buf .writerOffset (0 ));
599+
600+ buf .writerOffset (buf .capacity ());
601+
602+ // Cannot set writer offset beyond capacity.
603+ assertThrows (IndexOutOfBoundsException .class , () -> buf .writerOffset (buf .capacity () + 1 ));
604+ }
605+ }
606+
585607 @ ParameterizedTest
586608 @ MethodSource ("allocators" )
587609 void setReaderOffsetMustNotThrowWithinBounds (Fixture fixture ) {
@@ -2454,30 +2476,30 @@ public void readOnlyBufferMustBecomeWritableAgainAfterTogglingReadOnlyOff(Fixtur
24542476 }
24552477
24562478 private static void verifyWriteAccessible (Buffer buf ) {
2457- buf .writerOffset ( 0 ).writeByte ((byte ) 32 );
2458- assertThat (buf .readerOffset ( 0 ). readByte ()).isEqualTo ((byte ) 32 );
2459- buf .writerOffset (0 ).writeUnsignedByte (32 );
2460- assertThat (buf .readerOffset ( 0 ). readUnsignedByte ()).isEqualTo (32 );
2461- buf .writerOffset (0 ).writeChar ('3' );
2462- assertThat (buf .readerOffset ( 0 ). readChar ()).isEqualTo ('3' );
2463- buf .writerOffset (0 ).writeShort ((short ) 32 );
2464- assertThat (buf .readerOffset ( 0 ). readShort ()).isEqualTo ((short ) 32 );
2465- buf .writerOffset (0 ).writeUnsignedShort (32 );
2466- assertThat (buf .readerOffset ( 0 ). readUnsignedShort ()).isEqualTo (32 );
2467- buf .writerOffset (0 ).writeMedium (32 );
2468- assertThat (buf .readerOffset ( 0 ). readMedium ()).isEqualTo (32 );
2469- buf .writerOffset (0 ).writeUnsignedMedium (32 );
2470- assertThat (buf .readerOffset ( 0 ). readUnsignedMedium ()).isEqualTo (32 );
2471- buf .writerOffset (0 ).writeInt (32 );
2472- assertThat (buf .readerOffset ( 0 ). readInt ()).isEqualTo (32 );
2473- buf .writerOffset (0 ).writeUnsignedInt (32 );
2474- assertThat (buf .readerOffset ( 0 ). readUnsignedInt ()).isEqualTo (32L );
2475- buf .writerOffset (0 ).writeFloat (3.2f );
2476- assertThat (buf .readerOffset ( 0 ). readFloat ()).isEqualTo (3.2f );
2477- buf .writerOffset (0 ).writeLong (32 );
2478- assertThat (buf .readerOffset ( 0 ). readLong ()).isEqualTo (32L );
2479- buf .writerOffset (0 ).writeDouble (3.2 );
2480- assertThat (buf .readerOffset ( 0 ). readDouble ()).isEqualTo (3.2 );
2479+ buf .reset ( ).writeByte ((byte ) 32 );
2480+ assertThat (buf .readByte ()).isEqualTo ((byte ) 32 );
2481+ buf .reset (). writerOffset (0 ).writeUnsignedByte (32 );
2482+ assertThat (buf .readUnsignedByte ()).isEqualTo (32 );
2483+ buf .reset (). writerOffset (0 ).writeChar ('3' );
2484+ assertThat (buf .readChar ()).isEqualTo ('3' );
2485+ buf .reset (). writerOffset (0 ).writeShort ((short ) 32 );
2486+ assertThat (buf .readShort ()).isEqualTo ((short ) 32 );
2487+ buf .reset (). writerOffset (0 ).writeUnsignedShort (32 );
2488+ assertThat (buf .readUnsignedShort ()).isEqualTo (32 );
2489+ buf .reset (). writerOffset (0 ).writeMedium (32 );
2490+ assertThat (buf .readMedium ()).isEqualTo (32 );
2491+ buf .reset (). writerOffset (0 ).writeUnsignedMedium (32 );
2492+ assertThat (buf .readUnsignedMedium ()).isEqualTo (32 );
2493+ buf .reset (). writerOffset (0 ).writeInt (32 );
2494+ assertThat (buf .readInt ()).isEqualTo (32 );
2495+ buf .reset (). writerOffset (0 ).writeUnsignedInt (32 );
2496+ assertThat (buf .readUnsignedInt ()).isEqualTo (32L );
2497+ buf .reset (). writerOffset (0 ).writeFloat (3.2f );
2498+ assertThat (buf .readFloat ()).isEqualTo (3.2f );
2499+ buf .reset (). writerOffset (0 ).writeLong (32 );
2500+ assertThat (buf .readLong ()).isEqualTo (32L );
2501+ buf .reset (). writerOffset (0 ).writeDouble (3.2 );
2502+ assertThat (buf .readDouble ()).isEqualTo (3.2 );
24812503
24822504 buf .setByte (0 , (byte ) 32 );
24832505 assertThat (buf .getByte (0 )).isEqualTo ((byte ) 32 );
0 commit comments