This is an automated email from the ASF dual-hosted git repository.
fokko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/avro.git
The following commit(s) were added to refs/heads/master by this push:
new 7c44eef AVRO-2698: Improve and Add Test for skipLong Method (#778)
7c44eef is described below
commit 7c44eef21561056aa0637c72f0f6be0bfd95a292
Author: belugabehr <[email protected]>
AuthorDate: Sun Mar 29 06:37:48 2020 -0400
AVRO-2698: Improve and Add Test for skipLong Method (#778)
Co-authored-by: David Mollitor <[email protected]>
---
.../main/java/org/apache/avro/io/BinaryData.java | 7 ++--
.../java/org/apache/avro/io/TestBinaryData.java | 41 ++++++++++++++++++++++
2 files changed, 44 insertions(+), 4 deletions(-)
diff --git a/lang/java/avro/src/main/java/org/apache/avro/io/BinaryData.java
b/lang/java/avro/src/main/java/org/apache/avro/io/BinaryData.java
index c59ad61..b0fc87a 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/io/BinaryData.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/io/BinaryData.java
@@ -288,11 +288,10 @@ public class BinaryData {
}
/** Skip a binary-encoded long, returning the position after it. */
- public static int skipLong(byte[] bytes, int start) {
- int i = start;
- for (int b = bytes[i++]; ((b & 0x80) != 0); b = bytes[i++]) {
+ public static int skipLong(final byte[] bytes, int start) {
+ while ((bytes[start++] & 0x80) != 0) {
}
- return i;
+ return start;
}
/**
diff --git
a/lang/java/avro/src/test/java/org/apache/avro/io/TestBinaryData.java
b/lang/java/avro/src/test/java/org/apache/avro/io/TestBinaryData.java
new file mode 100644
index 0000000..edbcd0b
--- /dev/null
+++ b/lang/java/avro/src/test/java/org/apache/avro/io/TestBinaryData.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.avro.io;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TestBinaryData {
+
+ /**
+ * Insert a Long value into an Array. The worst-case scenario is
+ * {@link Long#MAX_VALUE} because it requires 9 bytes to encode (instead of
the
+ * normal 8). When skipping it, the next byte should be 10.
+ */
+ @Test
+ public void testSkipLong() {
+ byte[] b = new byte[10];
+ BinaryData.encodeLong(Long.MAX_VALUE, b, 0);
+
+ final int nextIndex = BinaryData.skipLong(b, 0);
+
+ Assert.assertEquals(nextIndex, 10);
+ }
+
+}