You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2015/11/05 02:54:37 UTC

[23/31] incubator-kylin git commit: KYLIN-752 Fix test case

KYLIN-752 Fix test case


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

Branch: refs/heads/KYLIN-1112
Commit: 42f125433fc20083f886080615d35405e341e8c0
Parents: 07038d9
Author: Li, Yang <ya...@ebay.com>
Authored: Mon Nov 2 17:40:28 2015 +0800
Committer: shaofengshi <sh...@apache.org>
Committed: Thu Nov 5 09:53:17 2015 +0800

----------------------------------------------------------------------
 .../storage/translate/ColumnValueRangeTest.java | 112 +++++++++++++++++++
 1 file changed, 112 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/42f12543/core-storage/src/test/java/org/apache/kylin/storage/translate/ColumnValueRangeTest.java
----------------------------------------------------------------------
diff --git a/core-storage/src/test/java/org/apache/kylin/storage/translate/ColumnValueRangeTest.java b/core-storage/src/test/java/org/apache/kylin/storage/translate/ColumnValueRangeTest.java
new file mode 100644
index 0000000..aaf07fe
--- /dev/null
+++ b/core-storage/src/test/java/org/apache/kylin/storage/translate/ColumnValueRangeTest.java
@@ -0,0 +1,112 @@
+package org.apache.kylin.storage.translate;
+
+import static org.junit.Assert.*;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.kylin.dict.Dictionary;
+import org.apache.kylin.dict.StringBytesConverter;
+import org.apache.kylin.dict.TrieDictionaryBuilder;
+import org.apache.kylin.metadata.filter.TupleFilter.FilterOperatorEnum;
+import org.apache.kylin.metadata.model.ColumnDesc;
+import org.apache.kylin.metadata.model.TableDesc;
+import org.apache.kylin.metadata.model.TblColRef;
+import org.junit.Test;
+
+public class ColumnValueRangeTest {
+
+    @Test
+    public void testPreEvaluateWithDict() {
+        TblColRef col = mockupTblColRef();
+        Dictionary<String> dict = mockupDictionary(col, "CN", "US");
+
+        ColumnValueRange r1 = new ColumnValueRange(col, set("CN", "US", "Other"), FilterOperatorEnum.EQ);
+        r1.preEvaluateWithDict(dict);
+        assertEquals(set("CN", "US"), r1.getEqualValues());
+
+        // less than rounding
+        {
+            ColumnValueRange r2 = new ColumnValueRange(col, set("CN"), FilterOperatorEnum.LT);
+            r2.preEvaluateWithDict(dict);
+            assertEquals(null, r2.getBeginValue());
+            assertEquals("CN", r2.getEndValue());
+
+            ColumnValueRange r3 = new ColumnValueRange(col, set("Other"), FilterOperatorEnum.LT);
+            r3.preEvaluateWithDict(dict);
+            assertEquals(null, r3.getBeginValue());
+            assertEquals("CN", r3.getEndValue());
+
+            ColumnValueRange r4 = new ColumnValueRange(col, set("UT"), FilterOperatorEnum.LT);
+            r4.preEvaluateWithDict(dict);
+            assertEquals(null, r4.getBeginValue());
+            assertEquals("US", r4.getEndValue());
+        }
+
+        // greater than rounding
+        {
+            ColumnValueRange r2 = new ColumnValueRange(col, set("CN"), FilterOperatorEnum.GTE);
+            r2.preEvaluateWithDict(dict);
+            assertEquals("CN", r2.getBeginValue());
+            assertEquals(null, r2.getEndValue());
+
+            ColumnValueRange r3 = new ColumnValueRange(col, set("Other"), FilterOperatorEnum.GTE);
+            r3.preEvaluateWithDict(dict);
+            assertEquals("US", r3.getBeginValue());
+            assertEquals(null, r3.getEndValue());
+
+            ColumnValueRange r4 = new ColumnValueRange(col, set("CI"), FilterOperatorEnum.GTE);
+            r4.preEvaluateWithDict(dict);
+            assertEquals("CN", r4.getBeginValue());
+            assertEquals(null, r4.getEndValue());
+        }
+        
+        // ever false check
+        {
+            ColumnValueRange r2 = new ColumnValueRange(col, set("UT"), FilterOperatorEnum.GTE);
+            r2.preEvaluateWithDict(dict);
+            assertTrue(r2.satisfyNone());
+
+            ColumnValueRange r3 = new ColumnValueRange(col, set("CM"), FilterOperatorEnum.LT);
+            r3.preEvaluateWithDict(dict);
+            assertTrue(r3.satisfyNone());
+        }
+    }
+
+    public static Dictionary<String> mockupDictionary(TblColRef col, String... values) {
+        TrieDictionaryBuilder<String> builder = new TrieDictionaryBuilder<String>(new StringBytesConverter());
+        for (String v : values) {
+            builder.addValue(v);
+        }
+        return builder.build(0);
+    }
+
+    private static Set<String> set(String... values) {
+        HashSet<String> list = new HashSet<String>();
+        list.addAll(Arrays.asList(values));
+        return list;
+    }
+
+    public static TblColRef mockupTblColRef() {
+        TableDesc t = mockupTableDesc("table_a");
+        ColumnDesc c = mockupColumnDesc(t, 1, "col_1", "string");
+        return new TblColRef(c);
+    }
+
+    private static TableDesc mockupTableDesc(String tableName) {
+        TableDesc mockup = new TableDesc();
+        mockup.setName(tableName);
+        return mockup;
+    }
+
+    private static ColumnDesc mockupColumnDesc(TableDesc table, int oneBasedColumnIndex, String name, String datatype) {
+        ColumnDesc desc = new ColumnDesc();
+        String id = "" + oneBasedColumnIndex;
+        desc.setId(id);
+        desc.setName(name);
+        desc.setDatatype(datatype);
+        desc.init(table);
+        return desc;
+    }
+}