/*
* Copyright 2014 Red Hat, Inc. and/or its affiliates.
*
* Licensed 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.dashbuilder.dataset;
import org.dashbuilder.DataSetCore;
import org.junit.Before;
import org.junit.Test;
import static org.dashbuilder.dataset.ColumnType.*;
import static org.fest.assertions.api.Assertions.*;
import static org.dashbuilder.dataset.Assertions.*;
public class DataSetLookupConstraintsTest {
public static final String EXPENSE_REPORTS = "expense_reports_dataset";
DataSetManager dataSetManager = DataSetCore.get().getDataSetManager();
DataSetFormatter dataSetFormatter = new DataSetFormatter();
DataSet dataSet;
@Before
public void setUp() throws Exception {
dataSet = ExpenseReportsData.INSTANCE.toDataSet();
dataSet.setUUID(EXPENSE_REPORTS);
dataSetManager.registerDataSet(dataSet);
}
@Test
public void testEmptyConstraints() throws Exception {
DataSetLookupConstraints constraints = new DataSetLookupConstraints()
.setColumnTypes(null)
.setGroupRequired(false);
DataSetLookup lookup = constraints.newDataSetLookup(dataSet.getMetadata());
assertThat(constraints.check(lookup)).isNull();
DataSet result = dataSetManager.lookupDataSet(lookup);
assertThat(result.getColumns().size()).isEqualTo(6);
assertThat(result.getRowCount()).isEqualTo(50);
}
@Test
public void testGroupWithOneCalculation() throws Exception {
DataSetLookupConstraints constraints = new DataSetLookupConstraints()
.setColumnTypes(new ColumnType[] {LABEL, NUMBER})
.setGroupRequired(true);
DataSetLookup lookup = constraints.newDataSetLookup(dataSet.getMetadata());
assertThat(constraints.check(lookup)).isNull();
DataSet result = dataSetManager.lookupDataSet(lookup);
assertDataSetValues(result, dataSetFormatter, new String[][] {
{"Barcelona", "21.00"},
{"Madrid", "57.00"},
{"Brno", "153.00"},
{"Westford", "234.00"},
{"Raleigh", "481.00"},
{"London", "329.00"}
}, 0);
}
@Test
public void testGroupWithLabels() throws Exception {
DataSetLookupConstraints constraints = new DataSetLookupConstraints()
.setColumnTypes(new ColumnType[] {LABEL, LABEL})
.setGroupRequired(true);
DataSetLookup lookup = constraints.newDataSetLookup(dataSet.getMetadata());
assertThat(constraints.check(lookup)).isNull();
DataSet result = dataSetManager.lookupDataSet(lookup);
assertDataSetValues(result, dataSetFormatter, new String[][]{
{"Barcelona", "Engineering"},
{"Madrid", "Services"},
{"Brno", "Support"},
{"Westford", "Engineering"},
{"Raleigh", "Management"},
{"London", "Engineering"}
}, 0);
}
@Test
public void testGroupMultipleColumns() throws Exception {
DataSetLookupConstraints constraints = new DataSetLookupConstraints()
.setColumnTypes(new ColumnType[] {LABEL, NUMBER, NUMBER, NUMBER})
.setGroupRequired(true);
DataSetLookup lookup = constraints.newDataSetLookup(dataSet.getMetadata());
assertThat(constraints.check(lookup)).isNull();
DataSet result = dataSetManager.lookupDataSet(lookup);
assertDataSetValues(result, dataSetFormatter, new String[][] {
{"Barcelona", "21.00", "2,913.14", "21.00"},
{"Madrid", "57.00", "2,453.36", "57.00"},
{"Brno", "153.00", "4,659.24", "153.00"},
{"Westford", "234.00", "3,594.97", "234.00"},
{"Raleigh", "481.00", "4,970.78", "481.00"},
{"London", "329.00", "4,139.77", "329.00"}
}, 0);
}
private void printDataSet(DataSet dataSet) {
System.out.print(dataSetFormatter.formatDataSet(dataSet, "{", "}", ",\n", "\"", "\"", ", ") + "\n\n");
}
}