/** * 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.hadoop.hive.ql.optimizer.listbucketingpruner; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import junit.framework.TestCase; import org.apache.hadoop.hive.ql.parse.SemanticException; import org.junit.Assert; import org.junit.Test; /** * * Test {@link DynamicMultiDimeContainer} * */ public class TestDynamicMultiDimeCollection extends TestCase { private static String DEF_DIR = "default"; @Test public void testUniqueElementsList1() { // (1,a,x), (2,b,x), (1,c,x), (2,a,y) List<List<String>> values = new ArrayList<List<String>>(); List<String> v1 = Arrays.asList("1", "a", "x"); List<String> v2 = Arrays.asList("2", "b", "x"); List<String> v3 = Arrays.asList("1", "c", "x"); List<String> v4 = Arrays.asList("2", "a", "y"); values.add(v1); values.add(v2); values.add(v3); values.add(v4); List<List<String>> actuals = ListBucketingPruner.DynamicMultiDimensionalCollection .uniqueElementsList(values, DEF_DIR); List<List<String>> expecteds = new ArrayList<List<String>>(); v1 = Arrays.asList("1", "2", "default"); v2 = Arrays.asList("a", "b", "c", "default"); v3 = Arrays.asList("x", "y", "default"); expecteds.add(v1); expecteds.add(v2); expecteds.add(v3); Assert.assertEquals(expecteds, actuals); } @Test public void testUniqueElementsList2() { // (1,a,x), (2,b,x), (1,c,x), (2,a,y) List<List<String>> values = new ArrayList<List<String>>(); List<String> v1 = Arrays.asList("1", "a", "x"); values.add(v1); List<List<String>> actuals = ListBucketingPruner.DynamicMultiDimensionalCollection .uniqueElementsList(values, DEF_DIR); List<List<String>> expecteds = new ArrayList<List<String>>(); v1 = Arrays.asList("1", "default"); List<String> v2 = Arrays.asList("a", "default"); List<String> v3 = Arrays.asList("x", "default"); expecteds.add(v1); expecteds.add(v2); expecteds.add(v3); Assert.assertEquals(expecteds, actuals); } @Test public void testUniqueElementsList3() { // (1,a,x), (2,b,x), (1,c,x), (2,a,y) List<List<String>> values = new ArrayList<List<String>>(); List<String> v1 = Arrays.asList("1"); List<String> v2 = Arrays.asList("2"); List<String> v3 = Arrays.asList("3"); List<String> v4 = Arrays.asList("4"); values.add(v1); values.add(v2); values.add(v3); values.add(v4); List<List<String>> actuals = ListBucketingPruner.DynamicMultiDimensionalCollection .uniqueElementsList(values, DEF_DIR); List<List<String>> expecteds = new ArrayList<List<String>>(); v1 = Arrays.asList("1", "2", "3", "4", "default"); expecteds.add(v1); Assert.assertEquals(expecteds, actuals); } @Test public void testFlat3() throws SemanticException { List<List<String>> uniqSkewedElements = new ArrayList<List<String>>(); List<String> v1 = Arrays.asList("1", "2", "default"); List<String> v2 = Arrays.asList("a", "b", "c", "default"); List<String> v3 = Arrays.asList("x", "y", "default"); uniqSkewedElements.add(v1); uniqSkewedElements.add(v2); uniqSkewedElements.add(v3); List<List<String>> actuals = ListBucketingPruner.DynamicMultiDimensionalCollection .flat(uniqSkewedElements); Assert.assertTrue(actuals.size() == 36); } @Test public void testFlat2() throws SemanticException { List<List<String>> uniqSkewedElements = new ArrayList<List<String>>(); List<String> v1 = Arrays.asList("1", "2"); uniqSkewedElements.add(v1); List<List<String>> actual = ListBucketingPruner.DynamicMultiDimensionalCollection .flat(uniqSkewedElements); List<List<String>> expected = new ArrayList<List<String>>(); v1 = Arrays.asList("1"); List<String> v2 = Arrays.asList("2"); expected.add(v1); expected.add(v2); Assert.assertEquals(expected, actual); } @Test public void testFlat1() throws SemanticException { List<List<String>> uniqSkewedElements = new ArrayList<List<String>>(); List<String> v1 = Arrays.asList("1", "2"); List<String> v2 = Arrays.asList("3", "4"); uniqSkewedElements.add(v1); uniqSkewedElements.add(v2); List<List<String>> actual = ListBucketingPruner.DynamicMultiDimensionalCollection .flat(uniqSkewedElements); List<List<String>> expected = new ArrayList<List<String>>(); v1 = Arrays.asList("1", "3"); v2 = Arrays.asList("1", "4"); List<String> v3 = Arrays.asList("2", "3"); List<String> v4 = Arrays.asList("2", "4"); expected.add(v1); expected.add(v2); expected.add(v3); expected.add(v4); Assert.assertEquals(expected, actual); } }