--- old/test/jdk/java/nio/Buffer/Basic-X.java.template 2020-01-29 15:48:22.000000000 -0800 +++ new/test/jdk/java/nio/Buffer/Basic-X.java.template 2020-01-29 15:48:22.000000000 -0800 @@ -169,6 +169,45 @@ b.position(42); b.put(7, a, 7, len); ck(b, b.position() == 42); + for (int i = 0; i < len; i++) + ck(b, ($type$)b.get(i + 7), ($type$)ic(i)); + } + + private static void absBulkPutBuffer($Type$Buffer b) { + int n = b.capacity(); + b.clear(); + int lim = n - 7; + int len = lim - 7; + b.limit(lim); + $Type$Buffer a; +#if[byte] + a = b.isDirect() ? ByteBuffer.allocateDirect(len + 7) : + ByteBuffer.allocate(len + 7); +#else[byte] + // $Type$ does not map to class name corresponding to primitive type for + // Char or Int so special cases are required. + int bytes = +#if[char] + Character.BYTES*(len + 7); +#else[char] +#if[int] + Integer.BYTES*(len + 7); +#else[int] + $Type$.BYTES*(len + 7); +#end[int] +#end[char] + a = b.isDirect() ? ByteBuffer.allocateDirect(bytes).as$Type$Buffer() : + ByteBuffer.allocate(bytes).as$Type$Buffer(); +#end[byte] + for (int i = 0; i < len; i++) + a.put(i + 7, ($type$)ic(i)); + a.position(7); + b.position(42); + b.put(7, a, 7, len); + ck(a, a.position() == 7); + ck(b, b.position() == 42); + for (int i = 0; i < len; i++) + ck(b, ($type$)b.get(i + 7), ($type$)ic(i)); } //6231529 @@ -593,6 +632,7 @@ absBulkPutArray(b); absBulkGet(b); + absBulkPutBuffer(b); #if[char] bulkPutString(b); @@ -939,6 +979,7 @@ catchReadOnlyBuffer(b, () -> bulkPutArray(rb)); catchReadOnlyBuffer(b, () -> bulkPutBuffer(rb)); catchReadOnlyBuffer(b, () -> absBulkPutArray(rb)); + catchReadOnlyBuffer(b, () -> absBulkPutBuffer(rb)); // put($Type$Buffer) should not change source position final $Type$Buffer src = $Type$Buffer.allocate(1);