/** * diqube: Distributed Query Base. * * Copyright (C) 2015 Bastian Gloeckle * * This file is part of diqube. * * diqube is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.diqube.metadata; import java.util.Arrays; import java.util.List; import org.diqube.metadata.create.TableMetadataMerger; import org.diqube.metadata.create.TableMetadataMerger.IllegalTableLayoutException; import org.diqube.thrift.base.thrift.FieldType; import org.diqube.thrift.base.thrift.TableMetadata; import org.diqube.util.Triple; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** * Tests {@link TableMetadataMerger}. * * @author Bastian Gloeckle */ public class TableMetadataMergerTest { private TableMetadataMerger merger; @BeforeMethod public void before() { merger = new TableMetadataMerger(); } @Test public void singleTest() throws IllegalTableLayoutException { // GIVEN List<TableMetadata> inputMetadata = Arrays.asList(new TableMetadata[] { // TableMetadataTestUtil.createMetadata( // new Triple<>("a", FieldType.LONG, false), // new Triple<>("b", FieldType.STRING, false) // ) // }); // WHEN TableMetadata metadata = merger.of(inputMetadata).merge(); // THEN Assert.assertEquals(metadata.getTableName(), inputMetadata.get(0).getTableName(), "Expected correct table name"); TableMetadataTestUtil.assertField(metadata, "a", FieldType.LONG, false); TableMetadataTestUtil.assertField(metadata, "b", FieldType.STRING, false); Assert.assertEquals(metadata.getFields().size(), 2, "Expected correct number of fields"); } @Test public void twoEqualTest() throws IllegalTableLayoutException { // GIVEN List<TableMetadata> inputMetadata = Arrays.asList(new TableMetadata[] { // TableMetadataTestUtil.createMetadata( // new Triple<>("a", FieldType.LONG, false), // new Triple<>("b", FieldType.STRING, false) // ), // TableMetadataTestUtil.createMetadata( // new Triple<>("a", FieldType.LONG, false), // new Triple<>("b", FieldType.STRING, false) // ) // }); // WHEN TableMetadata metadata = merger.of(inputMetadata).merge(); // THEN TableMetadataTestUtil.assertField(metadata, "a", FieldType.LONG, false); TableMetadataTestUtil.assertField(metadata, "b", FieldType.STRING, false); Assert.assertEquals(metadata.getFields().size(), 2, "Expected correct number of fields"); } @Test public void twoInequalTest() throws IllegalTableLayoutException { // GIVEN List<TableMetadata> inputMetadata = Arrays.asList(new TableMetadata[] { // TableMetadataTestUtil.createMetadata( // new Triple<>("a", FieldType.LONG, false), // new Triple<>("b", FieldType.STRING, false) // ), // TableMetadataTestUtil.createMetadata( // new Triple<>("a", FieldType.LONG, false), // new Triple<>("c", FieldType.DOUBLE, true) // ) // }); // WHEN TableMetadata metadata = merger.of(inputMetadata).merge(); // THEN TableMetadataTestUtil.assertField(metadata, "a", FieldType.LONG, false); TableMetadataTestUtil.assertField(metadata, "b", FieldType.STRING, false); TableMetadataTestUtil.assertField(metadata, "c", FieldType.DOUBLE, true); Assert.assertEquals(metadata.getFields().size(), 3, "Expected correct number of fields"); } @Test(expectedExceptions = IllegalTableLayoutException.class) public void incompatibleTypesTest() throws IllegalTableLayoutException { // GIVEN List<TableMetadata> inputMetadata = Arrays.asList(new TableMetadata[] { // TableMetadataTestUtil.createMetadata( // new Triple<>("a", FieldType.LONG, false), // new Triple<>("b", FieldType.STRING, false) // ), // TableMetadataTestUtil.createMetadata( // new Triple<>("a", FieldType.STRING, false), // new Triple<>("c", FieldType.DOUBLE, false) // ) // }); // WHEN merger.of(inputMetadata).merge(); // THEN // exception } @Test(expectedExceptions = IllegalTableLayoutException.class) public void incompatibleRepetitionTest() throws IllegalTableLayoutException { // GIVEN List<TableMetadata> inputMetadata = Arrays.asList(new TableMetadata[] { // TableMetadataTestUtil.createMetadata( // new Triple<>("a", FieldType.LONG, false), // new Triple<>("b", FieldType.STRING, false) // ), // TableMetadataTestUtil.createMetadata( // new Triple<>("a", FieldType.LONG, false), // new Triple<>("b", FieldType.DOUBLE, true) // ) // }); // WHEN merger.of(inputMetadata).merge(); // THEN // exception } }