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);
+  }
+
+}

Reply via email to