You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2016/03/28 12:03:47 UTC

kylin git commit: KYLIN-1541 add unit test

Repository: kylin
Updated Branches:
  refs/heads/master 82ae39aa2 -> 7c0c176b0


KYLIN-1541 add unit test


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/7c0c176b
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/7c0c176b
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/7c0c176b

Branch: refs/heads/master
Commit: 7c0c176b07e0098f32007b98b16a1c7948be3664
Parents: 82ae39a
Author: Li Yang <li...@apache.org>
Authored: Mon Mar 28 18:03:30 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Mon Mar 28 18:03:30 2016 +0800

----------------------------------------------------------------------
 .../kylin/dimension/IntegerDimEncTest.java      | 129 +++++++++++++++++++
 1 file changed, 129 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/7c0c176b/core-metadata/src/test/java/org/apache/kylin/dimension/IntegerDimEncTest.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/test/java/org/apache/kylin/dimension/IntegerDimEncTest.java b/core-metadata/src/test/java/org/apache/kylin/dimension/IntegerDimEncTest.java
new file mode 100644
index 0000000..2ed4fb3
--- /dev/null
+++ b/core-metadata/src/test/java/org/apache/kylin/dimension/IntegerDimEncTest.java
@@ -0,0 +1,129 @@
+/*
+ * 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
+ *
+ *     http://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.kylin.dimension;
+
+import java.nio.ByteBuffer;
+
+import org.apache.kylin.common.util.Bytes;
+import org.apache.kylin.dimension.DimensionEncoding;
+import org.apache.kylin.dimension.IntegerDimEnc;
+import org.apache.kylin.metadata.datatype.DataTypeSerializer;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class IntegerDimEncTest {
+
+    @Test
+    public void testConstructor() {
+        try {
+            new IntegerDimEnc(0);
+            Assert.fail();
+        } catch (IllegalArgumentException e) {
+            // expect
+        }
+        try {
+            new IntegerDimEnc(9);
+            Assert.fail();
+        } catch (IllegalArgumentException e) {
+            // expect
+        }
+        new IntegerDimEnc(8);
+    }
+
+    @Test
+    public void testNull() {
+        for (int i = 1; i < 9; i++) {
+            IntegerDimEnc enc = new IntegerDimEnc(i);
+            
+            byte[] buf = new byte[enc.getLengthOfEncoding()];
+            enc.encode(null, 0, buf, 0);
+            Assert.assertTrue(DimensionEncoding.isNull(buf, 0, buf.length));
+            String decode = enc.decode(buf, 0, buf.length);
+            Assert.assertEquals(null, decode);
+            
+            buf = new byte[enc.getLengthOfEncoding()];
+            DataTypeSerializer<Object> ser = enc.asDataTypeSerializer();
+            ser.serialize(null, ByteBuffer.wrap(buf));
+            Assert.assertTrue(DimensionEncoding.isNull(buf, 0, buf.length));
+            decode = (String) ser.deserialize(ByteBuffer.wrap(buf));
+            Assert.assertEquals(null, decode);
+        }
+    }
+
+    @Test
+    public void testEncodeDecode() {
+        IntegerDimEnc enc = new IntegerDimEnc(2);
+        testEncodeDecode(enc, 0);
+        testEncodeDecode(enc, 100);
+        testEncodeDecode(enc, 10000);
+        testEncodeDecode(enc, 65534);
+        try {
+            testEncodeDecode(enc, 65535);
+            Assert.fail();
+        } catch (Throwable e) {
+            Assert.assertEquals("expected:<65535> but was:<null>", e.getMessage());
+        }
+        try {
+            testEncodeDecode(enc, 65536);
+            Assert.fail();
+        } catch (Throwable e) {
+            Assert.assertEquals("expected:<[65536]> but was:<[0]>", e.getMessage());
+        }
+    }
+
+    private void testEncodeDecode(IntegerDimEnc enc, long value) {
+        byte[] buf = new byte[enc.getLengthOfEncoding()];
+        String valueStr = "" + value;
+        byte[] bytes = Bytes.toBytes(valueStr);
+        enc.encode(bytes, bytes.length, buf, 0);
+        String decode = enc.decode(buf, 0, buf.length);
+        Assert.assertEquals(valueStr, decode);
+    }
+    
+    @Test
+    public void testSerDes() {
+        IntegerDimEnc enc = new IntegerDimEnc(2);
+        testSerDes(enc, 0);
+        testSerDes(enc, 100);
+        testSerDes(enc, 10000);
+        testSerDes(enc, 65534);
+        try {
+            testSerDes(enc, 65535);
+            Assert.fail();
+        } catch (Throwable e) {
+            Assert.assertEquals("expected:<65535> but was:<null>", e.getMessage());
+        }
+        try {
+            testSerDes(enc, 65536);
+            Assert.fail();
+        } catch (Throwable e) {
+            Assert.assertEquals("expected:<[65536]> but was:<[0]>", e.getMessage());
+        }
+    }
+    
+    private void testSerDes(IntegerDimEnc enc, long value) {
+        DataTypeSerializer<Object> ser = enc.asDataTypeSerializer();
+        byte[] buf = new byte[enc.getLengthOfEncoding()];
+        String valueStr = "" + value;
+        ser.serialize(valueStr, ByteBuffer.wrap(buf));
+        String decode = (String) ser.deserialize(ByteBuffer.wrap(buf));
+        Assert.assertEquals(valueStr, decode);
+    }
+    
+}