< prev index next >
test/jdk/java/nio/Buffer/BasicByte.java
Print this page
*** 37,46 ****
--- 37,47 ----
import java.nio.*;
import java.nio.channels.FileChannel;
import java.nio.file.Files;
import java.nio.file.Path;
+ import java.util.Random;
public class BasicByte
extends Basic
*** 490,499 ****
--- 491,532 ----
}
}
} catch (IOException e) {
throw new UncheckedIOException(e);
}
+
+ // alignment identities
+ final int maxPow2 = 12;
+ ByteBuffer bb = ByteBuffer.allocateDirect(1 << maxPow2); // cap 4096
+
+ Random rnd = new Random();
+ long seed = rnd.nextLong();
+ rnd = new Random(seed);
+
+ for (int i = 0; i < 100; i++) {
+ // 1 == 2^0 <= unitSize == 2^k <= bb.capacity()/2
+ int unitSize = 1 << rnd.nextInt(maxPow2);
+ // 0 <= index < 2*unitSize
+ int index = rnd.nextInt(unitSize << 1);
+ int value = bb.alignmentOffset(index, unitSize);
+ try {
+ if (value < 0 || value >= unitSize) {
+ throw new RuntimeException(value + " < 0 || " +
+ value + " >= " + unitSize);
+ }
+ if (value <= index &&
+ bb.alignmentOffset(index - value, unitSize) != 0)
+ throw new RuntimeException("Identity 1");
+ if (bb.alignmentOffset(index + (unitSize - value),
+ unitSize) != 0)
+ throw new RuntimeException("Identity 2");
+ } catch (RuntimeException re) {
+ System.err.format("seed %d, index %d, unitSize %d, value %d%n",
+ seed, index, unitSize, value);
+ throw re;
+ }
+ }
}
private static MappedByteBuffer[] mappedBuffers() throws IOException {
return new MappedByteBuffer[]{
createMappedBuffer(new byte[]{0, 1, 2, 3}),
< prev index next >