summaryrefslogtreecommitdiff
path: root/core/src/test/java/org/elasticsearch/common
diff options
context:
space:
mode:
authorIgor Motov <igor@motovs.org>2017-05-04 12:22:54 -0400
committerGitHub <noreply@github.com>2017-05-04 12:22:54 -0400
commit6002b41b5f8d6ccfc5b5569ee00958ca565bb7d2 (patch)
tree76d578e1a6156f21db7a876cd7f13ece2da8f0df /core/src/test/java/org/elasticsearch/common
parente9547d6a709541f775fbff9aa2b30a93d8836eea (diff)
Add StreamInput.readEnum and StreamOutput.writeEnum (#24475)
Implements the common enum serialization/deserialization pattern for enumeration on the StreamInput/StreamOutput.
Diffstat (limited to 'core/src/test/java/org/elasticsearch/common')
-rw-r--r--core/src/test/java/org/elasticsearch/common/io/stream/BytesStreamsTests.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/core/src/test/java/org/elasticsearch/common/io/stream/BytesStreamsTests.java b/core/src/test/java/org/elasticsearch/common/io/stream/BytesStreamsTests.java
index a8b065343c..b67000e2b2 100644
--- a/core/src/test/java/org/elasticsearch/common/io/stream/BytesStreamsTests.java
+++ b/core/src/test/java/org/elasticsearch/common/io/stream/BytesStreamsTests.java
@@ -812,4 +812,34 @@ public class BytesStreamsTests extends ESTestCase {
StreamInput in = new BytesArray(Base64.getDecoder().decode("////////////AQAAAAAAAA==")).streamInput();
assertEquals(-1, in.readVLong());
}
+
+ public enum TestEnum {
+ ONE,
+ TWO,
+ THREE
+ }
+
+ public void testEnum() throws IOException {
+ TestEnum value = randomFrom(TestEnum.values());
+ BytesStreamOutput output = new BytesStreamOutput();
+ output.writeEnum(value);
+ StreamInput input = output.bytes().streamInput();
+ assertEquals(value, input.readEnum(TestEnum.class));
+ assertEquals(0, input.available());
+ }
+
+ public void testInvalidEnum() throws IOException {
+ BytesStreamOutput output = new BytesStreamOutput();
+ int randomNumber = randomInt();
+ boolean validEnum = randomNumber >= 0 && randomNumber < TestEnum.values().length;
+ output.writeVInt(randomNumber);
+ StreamInput input = output.bytes().streamInput();
+ if (validEnum) {
+ assertEquals(TestEnum.values()[randomNumber], input.readEnum(TestEnum.class));
+ } else {
+ IOException ex = expectThrows(IOException.class, () -> input.readEnum(TestEnum.class));
+ assertEquals("Unknown TestEnum ordinal [" + randomNumber + "]", ex.getMessage());
+ }
+ assertEquals(0, input.available());
+ }
}