8065556: (bf) Buffer.position and other methods should include detail in IAE
Add messages to IAEs which have none.
Reviewed-by: alanb
diff --git a/jdk/src/java.base/share/classes/java/nio/Buffer.java b/jdk/src/java.base/share/classes/java/nio/Buffer.java
index 58b4516..ba72f28 100644
--- a/jdk/src/java.base/share/classes/java/nio/Buffer.java
+++ b/jdk/src/java.base/share/classes/java/nio/Buffer.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -197,7 +197,7 @@
//
Buffer(int mark, int pos, int lim, int cap) { // package-private
if (cap < 0)
- throw new IllegalArgumentException("Negative capacity: " + cap);
+ throw createCapacityException(cap);
this.capacity = cap;
limit(lim);
position(pos);
@@ -210,6 +210,34 @@
}
/**
+ * Returns an {@code IllegalArgumentException} indicating that the source
+ * and target are the same {@code Buffer}. Intended for use in
+ * {@code put(src)} when the parameter is the {@code Buffer} on which the
+ * method is being invoked.
+ *
+ * @returns IllegalArgumentException
+ * With a message indicating equal source and target buffers
+ */
+ static IllegalArgumentException createSameBufferException() {
+ return new IllegalArgumentException("The source buffer is this buffer");
+ }
+
+ /**
+ * Verify that the capacity is nonnegative.
+ *
+ * @param capacity
+ * The new buffer's capacity, in $type$s
+ *
+ * @throws IllegalArgumentException
+ * If the <tt>capacity</tt> is a negative integer
+ */
+ static IllegalArgumentException createCapacityException(int capacity) {
+ assert capacity < 0 : "capacity expected to be negative";
+ return new IllegalArgumentException("capacity < 0: ("
+ + capacity + " < 0)");
+ }
+
+ /**
* Returns this buffer's capacity.
*
* @return The capacity of this buffer
@@ -241,14 +269,36 @@
* If the preconditions on <tt>newPosition</tt> do not hold
*/
public Buffer position(int newPosition) {
- if ((newPosition > limit) || (newPosition < 0))
- throw new IllegalArgumentException();
+ if (newPosition > limit | newPosition < 0)
+ throw createPositionException(newPosition);
position = newPosition;
if (mark > position) mark = -1;
return this;
}
/**
+ * Verify that {@code 0 < newPosition <= limit}
+ *
+ * @param newPosition
+ * The new position value
+ *
+ * @throws IllegalArgumentException
+ * If the specified position is out of bounds.
+ */
+ private IllegalArgumentException createPositionException(int newPosition) {
+ String msg = null;
+
+ if (newPosition > limit) {
+ msg = "newPosition > limit: (" + newPosition + " > " + limit + ")";
+ } else { // assume negative
+ assert newPosition < 0 : "newPosition expected to be negative";
+ msg = "newPosition < 0: (" + newPosition + " < 0)";
+ }
+
+ return new IllegalArgumentException(msg);
+ }
+
+ /**
* Returns this buffer's limit.
*
* @return The limit of this buffer
@@ -272,8 +322,8 @@
* If the preconditions on <tt>newLimit</tt> do not hold
*/
public Buffer limit(int newLimit) {
- if ((newLimit > capacity) || (newLimit < 0))
- throw new IllegalArgumentException();
+ if (newLimit > capacity | newLimit < 0)
+ throw createLimitException(newLimit);
limit = newLimit;
if (position > limit) position = limit;
if (mark > limit) mark = -1;
@@ -281,6 +331,28 @@
}
/**
+ * Verify that {@code 0 < newLimit <= capacity}
+ *
+ * @param newLimit
+ * The new limit value
+ *
+ * @throws IllegalArgumentException
+ * If the specified limit is out of bounds.
+ */
+ private IllegalArgumentException createLimitException(int newLimit) {
+ String msg = null;
+
+ if (newLimit > capacity) {
+ msg = "newLimit > capacity: (" + newLimit + " > " + capacity + ")";
+ } else { // assume negative
+ assert newLimit < 0 : "newLimit expected to be negative";
+ msg = "newLimit < 0: (" + newLimit + " < 0)";
+ }
+
+ return new IllegalArgumentException(msg);
+ }
+
+ /**
* Sets this buffer's mark at its position.
*
* @return This buffer
diff --git a/jdk/src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template b/jdk/src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template
index 57801f7..8ef6b8d 100644
--- a/jdk/src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template
+++ b/jdk/src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -314,7 +314,7 @@
#if[rw]
if (src instanceof Direct$Type$Buffer$BO$) {
if (src == this)
- throw new IllegalArgumentException();
+ throw createSameBufferException();
Direct$Type$Buffer$RW$$BO$ sb = (Direct$Type$Buffer$RW$$BO$)src;
int spos = sb.position();
diff --git a/jdk/src/java.base/share/classes/java/nio/Heap-X-Buffer.java.template b/jdk/src/java.base/share/classes/java/nio/Heap-X-Buffer.java.template
index 3876b14..c379014 100644
--- a/jdk/src/java.base/share/classes/java/nio/Heap-X-Buffer.java.template
+++ b/jdk/src/java.base/share/classes/java/nio/Heap-X-Buffer.java.template
@@ -216,7 +216,7 @@
#if[rw]
if (src instanceof Heap$Type$Buffer) {
if (src == this)
- throw new IllegalArgumentException();
+ throw createSameBufferException();
Heap$Type$Buffer sb = (Heap$Type$Buffer)src;
int n = sb.remaining();
if (n > remaining())
diff --git a/jdk/src/java.base/share/classes/java/nio/X-Buffer.java.template b/jdk/src/java.base/share/classes/java/nio/X-Buffer.java.template
index 2ed17e9..78afa40 100644
--- a/jdk/src/java.base/share/classes/java/nio/X-Buffer.java.template
+++ b/jdk/src/java.base/share/classes/java/nio/X-Buffer.java.template
@@ -339,7 +339,7 @@
*/
public static $Type$Buffer allocate(int capacity) {
if (capacity < 0)
- throw new IllegalArgumentException();
+ throw createCapacityException(capacity);
return new Heap$Type$Buffer(capacity, capacity);
}
@@ -797,7 +797,7 @@
*/
public $Type$Buffer put($Type$Buffer src) {
if (src == this)
- throw new IllegalArgumentException();
+ throw createSameBufferException();
if (isReadOnly())
throw new ReadOnlyBufferException();
int n = src.remaining();
diff --git a/jdk/test/java/nio/Buffer/Basic-X.java.template b/jdk/test/java/nio/Buffer/Basic-X.java.template
index cae8c26..b4c3bac 100644
--- a/jdk/test/java/nio/Buffer/Basic-X.java.template
+++ b/jdk/test/java/nio/Buffer/Basic-X.java.template
@@ -128,6 +128,15 @@
c.position(7);
b.put(c);
b.flip();
+ try {
+ b.put(b);
+ fail("IllegalArgumentException expected for put into same buffer");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected from"
+ + " put into same buffer");
+ }
+ }
}
//6231529
@@ -464,6 +473,46 @@
b.reset();
}});
+ try {
+ b.position(b.limit() + 1);
+ fail("IllegalArgumentException expected for position beyond limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " position beyond limit");
+ }
+ }
+
+ try {
+ b.position(-1);
+ fail("IllegalArgumentException expected for negative position");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative position");
+ }
+ }
+
+ try {
+ b.limit(b.capacity() + 1);
+ fail("IllegalArgumentException expected for limit beyond capacity");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " limit beyond capacity");
+ }
+ }
+
+ try {
+ b.limit(-1);
+ fail("IllegalArgumentException expected for negative limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative limit");
+ }
+ }
+
// Values
b.clear();
@@ -502,7 +551,8 @@
ck(b, b.get(), -Float.MIN_VALUE);
ck(b, b.get(), Float.NEGATIVE_INFINITY);
ck(b, b.get(), Float.POSITIVE_INFINITY);
- if (Float.floatToRawIntBits(v = b.get()) != Float.floatToRawIntBits(Float.NaN))
+ if (Float.floatToRawIntBits(v = b.get()) !=
+ Float.floatToRawIntBits(Float.NaN))
fail(b, (long)Float.NaN, (long)v);
ck(b, b.get(), 0.91697687f);
#end[float]
@@ -934,11 +984,27 @@
public void run() {
$Type$Buffer.allocate(-1);
}});
+ try {
+ $Type$Buffer.allocate(-1);
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " attempt to allocate negative capacity buffer");
+ }
+ }
#if[byte]
tryCatch((Buffer) null, IllegalArgumentException.class, new Runnable() {
public void run() {
$Type$Buffer.allocateDirect(-1);
}});
+ try {
+ $Type$Buffer.allocateDirect(-1);
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " attempt to allocate negative capacity direct buffer");
+ }
+ }
#end[byte]
}
diff --git a/jdk/test/java/nio/Buffer/BasicByte.java b/jdk/test/java/nio/Buffer/BasicByte.java
index fc3f7ad..0c9c9b3 100644
--- a/jdk/test/java/nio/Buffer/BasicByte.java
+++ b/jdk/test/java/nio/Buffer/BasicByte.java
@@ -128,6 +128,15 @@
c.position(7);
b.put(c);
b.flip();
+ try {
+ b.put(b);
+ fail("IllegalArgumentException expected for put into same buffer");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected from"
+ + " put into same buffer");
+ }
+ }
}
//6231529
@@ -464,6 +473,46 @@
b.reset();
}});
+ try {
+ b.position(b.limit() + 1);
+ fail("IllegalArgumentException expected for position beyond limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " position beyond limit");
+ }
+ }
+
+ try {
+ b.position(-1);
+ fail("IllegalArgumentException expected for negative position");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative position");
+ }
+ }
+
+ try {
+ b.limit(b.capacity() + 1);
+ fail("IllegalArgumentException expected for limit beyond capacity");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " limit beyond capacity");
+ }
+ }
+
+ try {
+ b.limit(-1);
+ fail("IllegalArgumentException expected for negative limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative limit");
+ }
+ }
+
// Values
b.clear();
@@ -518,6 +567,7 @@
+
// Comparison
b.rewind();
ByteBuffer b2 = ByteBuffer.allocate(b.capacity());
@@ -934,11 +984,27 @@
public void run() {
ByteBuffer.allocate(-1);
}});
+ try {
+ ByteBuffer.allocate(-1);
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " attempt to allocate negative capacity buffer");
+ }
+ }
tryCatch((Buffer) null, IllegalArgumentException.class, new Runnable() {
public void run() {
ByteBuffer.allocateDirect(-1);
}});
+ try {
+ ByteBuffer.allocateDirect(-1);
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " attempt to allocate negative capacity direct buffer");
+ }
+ }
}
diff --git a/jdk/test/java/nio/Buffer/BasicChar.java b/jdk/test/java/nio/Buffer/BasicChar.java
index 1710fcf..1005d3c 100644
--- a/jdk/test/java/nio/Buffer/BasicChar.java
+++ b/jdk/test/java/nio/Buffer/BasicChar.java
@@ -128,6 +128,15 @@
c.position(7);
b.put(c);
b.flip();
+ try {
+ b.put(b);
+ fail("IllegalArgumentException expected for put into same buffer");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected from"
+ + " put into same buffer");
+ }
+ }
}
//6231529
@@ -464,6 +473,46 @@
b.reset();
}});
+ try {
+ b.position(b.limit() + 1);
+ fail("IllegalArgumentException expected for position beyond limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " position beyond limit");
+ }
+ }
+
+ try {
+ b.position(-1);
+ fail("IllegalArgumentException expected for negative position");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative position");
+ }
+ }
+
+ try {
+ b.limit(b.capacity() + 1);
+ fail("IllegalArgumentException expected for limit beyond capacity");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " limit beyond capacity");
+ }
+ }
+
+ try {
+ b.limit(-1);
+ fail("IllegalArgumentException expected for negative limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative limit");
+ }
+ }
+
// Values
b.clear();
@@ -518,6 +567,7 @@
+
// Comparison
b.rewind();
CharBuffer b2 = CharBuffer.allocate(b.capacity());
@@ -934,6 +984,22 @@
public void run() {
CharBuffer.allocate(-1);
}});
+ try {
+ CharBuffer.allocate(-1);
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " attempt to allocate negative capacity buffer");
+ }
+ }
+
+
+
+
+
+
+
+
diff --git a/jdk/test/java/nio/Buffer/BasicDouble.java b/jdk/test/java/nio/Buffer/BasicDouble.java
index 0f95090..9e33460 100644
--- a/jdk/test/java/nio/Buffer/BasicDouble.java
+++ b/jdk/test/java/nio/Buffer/BasicDouble.java
@@ -128,6 +128,15 @@
c.position(7);
b.put(c);
b.flip();
+ try {
+ b.put(b);
+ fail("IllegalArgumentException expected for put into same buffer");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected from"
+ + " put into same buffer");
+ }
+ }
}
//6231529
@@ -464,6 +473,46 @@
b.reset();
}});
+ try {
+ b.position(b.limit() + 1);
+ fail("IllegalArgumentException expected for position beyond limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " position beyond limit");
+ }
+ }
+
+ try {
+ b.position(-1);
+ fail("IllegalArgumentException expected for negative position");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative position");
+ }
+ }
+
+ try {
+ b.limit(b.capacity() + 1);
+ fail("IllegalArgumentException expected for limit beyond capacity");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " limit beyond capacity");
+ }
+ }
+
+ try {
+ b.limit(-1);
+ fail("IllegalArgumentException expected for negative limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative limit");
+ }
+ }
+
// Values
b.clear();
@@ -507,6 +556,7 @@
+
ck(b, b.get(), -Double.MAX_VALUE);
ck(b, b.get(), -Double.MIN_VALUE);
ck(b, b.get(), Double.NEGATIVE_INFINITY);
@@ -934,6 +984,22 @@
public void run() {
DoubleBuffer.allocate(-1);
}});
+ try {
+ DoubleBuffer.allocate(-1);
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " attempt to allocate negative capacity buffer");
+ }
+ }
+
+
+
+
+
+
+
+
diff --git a/jdk/test/java/nio/Buffer/BasicFloat.java b/jdk/test/java/nio/Buffer/BasicFloat.java
index 0ada0ab..c9a22b5 100644
--- a/jdk/test/java/nio/Buffer/BasicFloat.java
+++ b/jdk/test/java/nio/Buffer/BasicFloat.java
@@ -128,6 +128,15 @@
c.position(7);
b.put(c);
b.flip();
+ try {
+ b.put(b);
+ fail("IllegalArgumentException expected for put into same buffer");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected from"
+ + " put into same buffer");
+ }
+ }
}
//6231529
@@ -464,6 +473,46 @@
b.reset();
}});
+ try {
+ b.position(b.limit() + 1);
+ fail("IllegalArgumentException expected for position beyond limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " position beyond limit");
+ }
+ }
+
+ try {
+ b.position(-1);
+ fail("IllegalArgumentException expected for negative position");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative position");
+ }
+ }
+
+ try {
+ b.limit(b.capacity() + 1);
+ fail("IllegalArgumentException expected for limit beyond capacity");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " limit beyond capacity");
+ }
+ }
+
+ try {
+ b.limit(-1);
+ fail("IllegalArgumentException expected for negative limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative limit");
+ }
+ }
+
// Values
b.clear();
@@ -502,7 +551,8 @@
ck(b, b.get(), -Float.MIN_VALUE);
ck(b, b.get(), Float.NEGATIVE_INFINITY);
ck(b, b.get(), Float.POSITIVE_INFINITY);
- if (Float.floatToRawIntBits(v = b.get()) != Float.floatToRawIntBits(Float.NaN))
+ if (Float.floatToRawIntBits(v = b.get()) !=
+ Float.floatToRawIntBits(Float.NaN))
fail(b, (long)Float.NaN, (long)v);
ck(b, b.get(), 0.91697687f);
@@ -934,6 +984,22 @@
public void run() {
FloatBuffer.allocate(-1);
}});
+ try {
+ FloatBuffer.allocate(-1);
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " attempt to allocate negative capacity buffer");
+ }
+ }
+
+
+
+
+
+
+
+
diff --git a/jdk/test/java/nio/Buffer/BasicInt.java b/jdk/test/java/nio/Buffer/BasicInt.java
index 445c971..7137716 100644
--- a/jdk/test/java/nio/Buffer/BasicInt.java
+++ b/jdk/test/java/nio/Buffer/BasicInt.java
@@ -128,6 +128,15 @@
c.position(7);
b.put(c);
b.flip();
+ try {
+ b.put(b);
+ fail("IllegalArgumentException expected for put into same buffer");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected from"
+ + " put into same buffer");
+ }
+ }
}
//6231529
@@ -464,6 +473,46 @@
b.reset();
}});
+ try {
+ b.position(b.limit() + 1);
+ fail("IllegalArgumentException expected for position beyond limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " position beyond limit");
+ }
+ }
+
+ try {
+ b.position(-1);
+ fail("IllegalArgumentException expected for negative position");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative position");
+ }
+ }
+
+ try {
+ b.limit(b.capacity() + 1);
+ fail("IllegalArgumentException expected for limit beyond capacity");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " limit beyond capacity");
+ }
+ }
+
+ try {
+ b.limit(-1);
+ fail("IllegalArgumentException expected for negative limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative limit");
+ }
+ }
+
// Values
b.clear();
@@ -518,6 +567,7 @@
+
// Comparison
b.rewind();
IntBuffer b2 = IntBuffer.allocate(b.capacity());
@@ -934,6 +984,22 @@
public void run() {
IntBuffer.allocate(-1);
}});
+ try {
+ IntBuffer.allocate(-1);
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " attempt to allocate negative capacity buffer");
+ }
+ }
+
+
+
+
+
+
+
+
diff --git a/jdk/test/java/nio/Buffer/BasicLong.java b/jdk/test/java/nio/Buffer/BasicLong.java
index bc8c5f7..05b1a5f 100644
--- a/jdk/test/java/nio/Buffer/BasicLong.java
+++ b/jdk/test/java/nio/Buffer/BasicLong.java
@@ -128,6 +128,15 @@
c.position(7);
b.put(c);
b.flip();
+ try {
+ b.put(b);
+ fail("IllegalArgumentException expected for put into same buffer");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected from"
+ + " put into same buffer");
+ }
+ }
}
//6231529
@@ -464,6 +473,46 @@
b.reset();
}});
+ try {
+ b.position(b.limit() + 1);
+ fail("IllegalArgumentException expected for position beyond limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " position beyond limit");
+ }
+ }
+
+ try {
+ b.position(-1);
+ fail("IllegalArgumentException expected for negative position");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative position");
+ }
+ }
+
+ try {
+ b.limit(b.capacity() + 1);
+ fail("IllegalArgumentException expected for limit beyond capacity");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " limit beyond capacity");
+ }
+ }
+
+ try {
+ b.limit(-1);
+ fail("IllegalArgumentException expected for negative limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative limit");
+ }
+ }
+
// Values
b.clear();
@@ -518,6 +567,7 @@
+
// Comparison
b.rewind();
LongBuffer b2 = LongBuffer.allocate(b.capacity());
@@ -934,6 +984,22 @@
public void run() {
LongBuffer.allocate(-1);
}});
+ try {
+ LongBuffer.allocate(-1);
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " attempt to allocate negative capacity buffer");
+ }
+ }
+
+
+
+
+
+
+
+
diff --git a/jdk/test/java/nio/Buffer/BasicShort.java b/jdk/test/java/nio/Buffer/BasicShort.java
index 3f0a24b..aed3d07 100644
--- a/jdk/test/java/nio/Buffer/BasicShort.java
+++ b/jdk/test/java/nio/Buffer/BasicShort.java
@@ -128,6 +128,15 @@
c.position(7);
b.put(c);
b.flip();
+ try {
+ b.put(b);
+ fail("IllegalArgumentException expected for put into same buffer");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected from"
+ + " put into same buffer");
+ }
+ }
}
//6231529
@@ -464,6 +473,46 @@
b.reset();
}});
+ try {
+ b.position(b.limit() + 1);
+ fail("IllegalArgumentException expected for position beyond limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " position beyond limit");
+ }
+ }
+
+ try {
+ b.position(-1);
+ fail("IllegalArgumentException expected for negative position");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative position");
+ }
+ }
+
+ try {
+ b.limit(b.capacity() + 1);
+ fail("IllegalArgumentException expected for limit beyond capacity");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " limit beyond capacity");
+ }
+ }
+
+ try {
+ b.limit(-1);
+ fail("IllegalArgumentException expected for negative limit");
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " negative limit");
+ }
+ }
+
// Values
b.clear();
@@ -518,6 +567,7 @@
+
// Comparison
b.rewind();
ShortBuffer b2 = ShortBuffer.allocate(b.capacity());
@@ -934,6 +984,22 @@
public void run() {
ShortBuffer.allocate(-1);
}});
+ try {
+ ShortBuffer.allocate(-1);
+ } catch (IllegalArgumentException e) {
+ if (e.getMessage() == null) {
+ fail("Non-null IllegalArgumentException message expected for"
+ + " attempt to allocate negative capacity buffer");
+ }
+ }
+
+
+
+
+
+
+
+