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"))));