You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2018/05/01 22:44:31 UTC

[2/4] calcite git commit: Test case for [CALCITE-2287] FlatList.equals() throws StackOverflowError (Zhen Wang)

Test case for [CALCITE-2287] FlatList.equals() throws StackOverflowError (Zhen Wang)

Close apache/calcite#683


Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/08e43229
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/08e43229
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/08e43229

Branch: refs/heads/master
Commit: 08e432295e202c59427f15b47ec5b54d992db68f
Parents: e78f8c6
Author: zhen wang <zi...@gmail.com>
Authored: Sun Apr 29 16:06:37 2018 +0800
Committer: Julian Hyde <jh...@apache.org>
Committed: Tue May 1 02:01:32 2018 -0700

----------------------------------------------------------------------
 .../java/org/apache/calcite/util/UtilTest.java  | 57 ++++++++++++++++++++
 1 file changed, 57 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/08e43229/core/src/test/java/org/apache/calcite/util/UtilTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/util/UtilTest.java b/core/src/test/java/org/apache/calcite/util/UtilTest.java
index b8a6a7f..96f810f 100644
--- a/core/src/test/java/org/apache/calcite/util/UtilTest.java
+++ b/core/src/test/java/org/apache/calcite/util/UtilTest.java
@@ -1241,6 +1241,63 @@ public class UtilTest {
     return Arrays.asList(e0, e1, e2);
   }
 
+  /** Test case for
+   * <a href="https://issues.apache.org/jira/browse/CALCITE-2287">[CALCITE-2287]
+   * FlatList.equals throws StackOverflowError</a>. */
+  @Test public void testFlat34Equals() {
+    List f3list = FlatLists.of(1, 2, 3);
+    List f4list = FlatLists.of(1, 2, 3, 4);
+    assertThat(f3list.equals(f4list), is(false));
+  }
+
+  @SuppressWarnings("unchecked")
+  @Test public void testFlatListN() {
+    List<List<Object>> list = new ArrayList<>();
+    list.add(FlatLists.of());
+    list.add(FlatLists.<Object>copyOf());
+    list.add(FlatLists.of("A"));
+    list.add(FlatLists.copyOf((Object) "A"));
+    list.add(FlatLists.of("A", "B"));
+    list.add(FlatLists.of((Object) "A", "B"));
+    list.add(Lists.newArrayList(Util.last(list)));
+    list.add(FlatLists.of("A", null));
+    list.add(Lists.newArrayList(Util.last(list)));
+    list.add(FlatLists.of("A", "B", "C"));
+    list.add(Lists.newArrayList(Util.last(list)));
+    list.add(FlatLists.copyOf((Object) "A", "B", "C"));
+    list.add(FlatLists.of("A", null, "C"));
+    list.add(FlatLists.of("A", "B", "C", "D"));
+    list.add(Lists.newArrayList(Util.last(list)));
+    list.add(FlatLists.copyOf((Object) "A", "B", "C", "D"));
+    list.add(FlatLists.of("A", null, "C", "D"));
+    list.add(Lists.newArrayList(Util.last(list)));
+    list.add(FlatLists.of("A", "B", "C", "D", "E"));
+    list.add(Lists.newArrayList(Util.last(list)));
+    list.add(FlatLists.copyOf((Object) "A", "B", "C", "D", "E"));
+    list.add(FlatLists.of("A", null, "C", "D", "E"));
+    list.add(FlatLists.of("A", "B", "C", "D", "E", "F"));
+    list.add(FlatLists.copyOf((Object) "A", "B", "C", "D", "E", "F"));
+    list.add(FlatLists.of("A", null, "C", "D", "E", "F"));
+    list.add((List)
+        FlatLists.of((Comparable) "A", "B", "C", "D", "E", "F", "G"));
+    list.add(FlatLists.copyOf((Object) "A", "B", "C", "D", "E", "F", "G"));
+    list.add(Lists.newArrayList(Util.last(list)));
+    list.add((List)
+        FlatLists.of((Comparable) "A", null, "C", "D", "E", "F", "G"));
+    list.add(Lists.newArrayList(Util.last(list)));
+    for (int i = 0; i < list.size(); i++) {
+      final List<Object> outer = list.get(i);
+      for (List<Object> inner : list) {
+        if (inner.toString().equals("[A, B, C,D]")) {
+          System.out.println(1);
+        }
+        boolean strEq = outer.toString().equals(inner.toString());
+        assertThat(outer.toString() + "=" + inner.toString(),
+            outer.equals(inner), is(strEq));
+      }
+    }
+  }
+
   @Test public void testFlatListProduct() {
     final List<Enumerator<List<String>>> list = new ArrayList<>();
     list.add(Linq4j.enumerator(l2(l1("a"), l1("b"))));