Github user QiangCai commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2657#discussion_r213886786
--- Diff:
core/src/test/java/org/apache/carbondata/core/util/ByteUtilTest.java ---
@@ -17,156 +17,246 @@
package org.apache.carbondata.core.util;
import junit.framework.TestCase;
+
import org.apache.carbondata.core.constants.CarbonCommonConstants;
import org.apache.carbondata.core.util.ByteUtil.UnsafeComparer;
+
import org.junit.Before;
import org.junit.Test;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
-
/**
* This test will test the functionality of the Byte Util
* for the comparision of 2 byte buffers
*/
public class ByteUtilTest extends TestCase {
- String dimensionValue1 = "aaaaaaaa1235";
- String dimensionValue2 = "aaaaaaaa1234";
- private ByteBuffer buff1;
- private ByteBuffer buff2;
-
- /**
- * This method will form one single byte [] for all the high card dims.
- *
- * @param byteBufferArr
- * @return
- */
- public static byte[] packByteBufferIntoSingleByteArray(
- ByteBuffer[] byteBufferArr) {
- // for empty array means there is no data to remove dictionary.
- if (null == byteBufferArr || byteBufferArr.length == 0) {
- return null;
- }
- int noOfCol = byteBufferArr.length;
- short toDetermineLengthOfByteArr = 2;
- short offsetLen = (short) (noOfCol * 2 +
toDetermineLengthOfByteArr);
- int totalBytes = calculateTotalBytes(byteBufferArr) + offsetLen;
-
- ByteBuffer buffer = ByteBuffer.allocate(totalBytes);
-
- // write the length of the byte [] as first short
- buffer.putShort((short) (totalBytes - toDetermineLengthOfByteArr));
- // writing the offset of the first element.
- buffer.putShort(offsetLen);
-
- // prepare index for byte []
- for (int index = 0; index < byteBufferArr.length - 1; index++) {
- ByteBuffer individualCol = byteBufferArr[index];
- // short lengthOfbytes = individualCol.getShort();
- int noOfBytes = individualCol.capacity();
-
- buffer.putShort((short) (offsetLen + noOfBytes));
- offsetLen += noOfBytes;
- individualCol.rewind();
- }
-
- // put actual data.
- for (int index = 0; index < byteBufferArr.length; index++) {
- ByteBuffer individualCol = byteBufferArr[index];
- buffer.put(individualCol.array());
- }
-
- buffer.rewind();
- return buffer.array();
+ String dimensionValue1 = "aaaaaaaa1235";
+ String dimensionValue2 = "aaaaaaaa1234";
+ private ByteBuffer buff1;
+ private ByteBuffer buff2;
+ /**
+ * This method will form one single byte [] for all the high card dims.
+ *
+ * @param byteBufferArr
+ * @return
+ */
+ public static byte[] packByteBufferIntoSingleByteArray(ByteBuffer[]
byteBufferArr) {
+ // for empty array means there is no data to remove dictionary.
+ if (null == byteBufferArr || byteBufferArr.length == 0) {
+ return null;
}
+ int noOfCol = byteBufferArr.length;
+ short toDetermineLengthOfByteArr = 2;
+ short offsetLen = (short) (noOfCol * 2 + toDetermineLengthOfByteArr);
+ int totalBytes = calculateTotalBytes(byteBufferArr) + offsetLen;
- /**
- * To calculate the total bytes in byte Buffer[].
- *
- * @param byteBufferArr
- * @return
- */
- private static int calculateTotalBytes(ByteBuffer[] byteBufferArr) {
- int total = 0;
- for (int index = 0; index < byteBufferArr.length; index++) {
- total += byteBufferArr[index].capacity();
- }
- return total;
- }
+ ByteBuffer buffer = ByteBuffer.allocate(totalBytes);
- /**
- * @throws Exception
- */
- @Before
- public void setUp() throws Exception {
+ // write the length of the byte [] as first short
+ buffer.putShort((short) (totalBytes - toDetermineLengthOfByteArr));
+ // writing the offset of the first element.
+ buffer.putShort(offsetLen);
- }
-
- @Test
- public void testLessThan() {
- dimensionValue1 = "aaaaa6aa1235";
- dimensionValue2 = "aaaaa5aa1234";
+ // prepare index for byte []
+ for (int index = 0; index < byteBufferArr.length - 1; index++) {
+ ByteBuffer individualCol = byteBufferArr[index];
+ // short lengthOfbytes = individualCol.getShort();
+ int noOfBytes = individualCol.capacity();
- prepareBuffers();
- assertFalse(UnsafeComparer.INSTANCE.compareTo(buff1, buff2) < 0);
+ buffer.putShort((short) (offsetLen + noOfBytes));
+ offsetLen += noOfBytes;
+ individualCol.rewind();
}
- @Test
- public void testIntConversion() {
- byte[] data = new byte[4];
- ByteUtil.setInt(data, 0, 968);
- assertEquals(ByteUtil.toInt(data, 0), 968);
+
+ // put actual data.
+ for (int index = 0; index < byteBufferArr.length; index++) {
+ ByteBuffer individualCol = byteBufferArr[index];
+ buffer.put(individualCol.array());
}
- @Test
- public void testEqualToCase() {
- dimensionValue1 = "aaaaaaaa1234";
- dimensionValue2 = "aaaaaaaa1234";
+ buffer.rewind();
+ return buffer.array();
- prepareBuffers();
- assertTrue(UnsafeComparer.INSTANCE.compareTo(buff1, buff2) == 0);
+ }
+
+ /**
+ * To calculate the total bytes in byte Buffer[].
+ *
+ * @param byteBufferArr
+ * @return
+ */
+ private static int calculateTotalBytes(ByteBuffer[] byteBufferArr) {
+ int total = 0;
+ for (int index = 0; index < byteBufferArr.length; index++) {
+ total += byteBufferArr[index].capacity();
}
+ return total;
+ }
- @Test
- public void testLessThanInBoundaryCondition() {
- dimensionValue1 = "aaaaaaaa12341";
- dimensionValue2 = "aaaaaaaa12344";
+ /**
+ * @throws Exception
+ */
+ @Before public void setUp() throws Exception {
- prepareBuffers();
- assertTrue(UnsafeComparer.INSTANCE.compareTo(buff1, buff2) < 0);
- }
+ }
- /**
- * This will prepare the byte buffers in the required format for
comparision.
- */
- private void prepareBuffers() {
- ByteBuffer[] out1 = new ByteBuffer[1];
- ByteBuffer buffer = ByteBuffer.allocate(dimensionValue1.length());
-
buffer.put(dimensionValue1.getBytes(Charset.forName(CarbonCommonConstants.DEFAULT_CHARSET)));
- buffer.rewind();
- out1[0] = buffer;
+ @Test public void testLessThan() {
+ dimensionValue1 = "aaaaa6aa1235";
+ dimensionValue2 = "aaaaa5aa1234";
+ prepareBuffers();
+ assertFalse(UnsafeComparer.INSTANCE.compareTo(buff1, buff2) < 0);
+ }
- ByteBuffer[] out2 = new ByteBuffer[1];
+ @Test public void testIntConversion() {
+ byte[] data = new byte[4];
+ ByteUtil.setInt(data, 0, 968);
+ assertEquals(ByteUtil.toInt(data, 0), 968);
+ }
- ByteBuffer buffer2 = ByteBuffer.allocate(dimensionValue2.length());
-
buffer2.put(dimensionValue2.getBytes(Charset.forName(CarbonCommonConstants.DEFAULT_CHARSET)));
- buffer2.rewind();
- out2[0] = buffer2;
+ @Test public void testEqualToCase() {
+ dimensionValue1 = "aaaaaaaa1234";
+ dimensionValue2 = "aaaaaaaa1234";
- byte[] arr1 = packByteBufferIntoSingleByteArray(out1);
- byte[] arr2 = packByteBufferIntoSingleByteArray(out2);
+ prepareBuffers();
+ assertTrue(UnsafeComparer.INSTANCE.compareTo(buff1, buff2) == 0);
+ }
- buff1 = ByteBuffer.wrap(arr1);
+ @Test public void testLessThanInBoundaryCondition() {
--- End diff --
fixed
---