Add tests for grouping of values in text facets
This commit is contained in:
parent
0e954bdb68
commit
420c9bd1a5
@ -0,0 +1,183 @@
|
||||
/*
|
||||
|
||||
Copyright 2018, Owen Stephens
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*/
|
||||
|
||||
package com.google.refine.tests.browsing.util;
|
||||
|
||||
import com.google.refine.expr.MetaParser;
|
||||
import org.testng.annotations.AfterMethod;
|
||||
import org.testng.Assert;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Properties;
|
||||
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.BeforeTest;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.refine.browsing.util.ExpressionNominalValueGrouper;
|
||||
import com.google.refine.expr.Evaluable;
|
||||
import com.google.refine.model.Cell;
|
||||
import com.google.refine.model.ModelException;
|
||||
import com.google.refine.model.Project;
|
||||
import com.google.refine.model.Row;
|
||||
import com.google.refine.tests.RefineTest;
|
||||
import com.google.refine.util.StringUtils;
|
||||
|
||||
|
||||
public class ExpressionNominalValueGrouperTests extends RefineTest {
|
||||
// dependencies
|
||||
//Variables
|
||||
private static Project project;
|
||||
private static Properties bindings;
|
||||
private static final String ENGINE_JSON_LISTFACET = "{\"facets\":[{\"type\":\"list\",\"name\":\"facet A\",\"columnName\":\"Column\",\"expression\":\"value\",\"omitBlank\":false,\"omitError\":false,\"selection\":[],\"selectBlank\":false,\"selectError\":false,\"invert\":false}],\"mode\":\"row-based\"}}";
|
||||
private static String projectid;
|
||||
|
||||
private static OffsetDateTime dateTimeValue = OffsetDateTime.parse("2017-05-12T05:45:00+00:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME);
|
||||
private static String dateTimeStringValue = "2017-05-12T05:45:00Z";
|
||||
private static int integerValue = 1;
|
||||
private static String integerStringValue = "1";
|
||||
private static String stringStringValue = "a";
|
||||
|
||||
private static ExpressionNominalValueGrouper grouper;
|
||||
private static Evaluable eval;
|
||||
private static final int cellIndex = 0;
|
||||
private static final String columnName = "Col1";
|
||||
private static final int numberOfRows = 5;
|
||||
private static final String projectName = "ExpressionNominalValueGrouper";
|
||||
|
||||
|
||||
@Override
|
||||
@BeforeTest
|
||||
public void init() {
|
||||
logger = LoggerFactory.getLogger(this.getClass());
|
||||
}
|
||||
|
||||
@BeforeMethod
|
||||
public void setUp() throws JSONException, IOException, ModelException {
|
||||
project = createProjectWithColumns(projectName, columnName);
|
||||
bindings = new Properties();
|
||||
bindings.put("project", project);
|
||||
}
|
||||
|
||||
@AfterMethod
|
||||
public void TearDown() {
|
||||
project = null;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ExpressionNominalValueGrouperStrings() throws Exception {
|
||||
//populate project
|
||||
// Five rows of a's
|
||||
for (int i = 0; i < numberOfRows; i++) {
|
||||
Row row = new Row(1);
|
||||
row.setCell(0, new Cell(stringStringValue, null));
|
||||
project.rows.add(row);
|
||||
}
|
||||
//create grouper
|
||||
eval = MetaParser.parse("value");
|
||||
grouper = new ExpressionNominalValueGrouper(eval, columnName, cellIndex);
|
||||
try {
|
||||
grouper.start(project);
|
||||
for (int rowIndex = 0; rowIndex < numberOfRows; rowIndex++) {
|
||||
Row row = project.rows.get(rowIndex);
|
||||
grouper.visit(project, rowIndex, row);
|
||||
}
|
||||
} finally {
|
||||
grouper.end(project);
|
||||
}
|
||||
|
||||
Assert.assertEquals(grouper.choices.size(),1);
|
||||
|
||||
Assert.assertTrue(grouper.choices.containsKey(stringStringValue));
|
||||
Assert.assertEquals(grouper.choices.get(stringStringValue).decoratedValue.label,stringStringValue);
|
||||
Assert.assertEquals(grouper.choices.get(stringStringValue).decoratedValue.value.toString(),stringStringValue);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ExpressionNominalValueGrouperInts() throws Exception {
|
||||
//populate project
|
||||
for (int i = 0; i < numberOfRows; i++) {
|
||||
Row row = new Row(1);
|
||||
row.setCell(0, new Cell(integerValue, null));
|
||||
project.rows.add(row);
|
||||
}
|
||||
//create grouper
|
||||
eval = MetaParser.parse("value");
|
||||
grouper = new ExpressionNominalValueGrouper(eval, columnName, cellIndex);
|
||||
try {
|
||||
grouper.start(project);
|
||||
for (int rowIndex = 0; rowIndex < numberOfRows; rowIndex++) {
|
||||
Row row = project.rows.get(rowIndex);
|
||||
grouper.visit(project, rowIndex, row);
|
||||
}
|
||||
} finally {
|
||||
grouper.end(project);
|
||||
}
|
||||
|
||||
Assert.assertEquals(grouper.choices.size(),1);
|
||||
|
||||
Assert.assertTrue(grouper.choices.containsKey(integerStringValue));
|
||||
Assert.assertEquals(grouper.choices.get(integerStringValue).decoratedValue.label,integerStringValue);
|
||||
Assert.assertEquals(grouper.choices.get(integerStringValue).decoratedValue.value.toString(),integerStringValue);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ExpressionNominalValueGrouperDates() throws Exception {
|
||||
//populate project
|
||||
for (int i = 0; i < numberOfRows; i++) {
|
||||
Row row = new Row(1);
|
||||
row.setCell(0, new Cell(dateTimeValue, null));
|
||||
project.rows.add(row);
|
||||
}
|
||||
//create grouper
|
||||
eval = MetaParser.parse("value");
|
||||
grouper = new ExpressionNominalValueGrouper(eval, columnName, cellIndex);
|
||||
try {
|
||||
grouper.start(project);
|
||||
for (int rowIndex = 0; rowIndex < numberOfRows; rowIndex++) {
|
||||
Row row = project.rows.get(rowIndex);
|
||||
grouper.visit(project, rowIndex, row);
|
||||
}
|
||||
} finally {
|
||||
grouper.end(project);
|
||||
}
|
||||
|
||||
Assert.assertEquals(grouper.choices.size(),1);
|
||||
|
||||
Assert.assertTrue(grouper.choices.containsKey(dateTimeStringValue));
|
||||
Assert.assertEquals(grouper.choices.get(dateTimeStringValue).decoratedValue.label,dateTimeStringValue);
|
||||
Assert.assertEquals(grouper.choices.get(dateTimeStringValue).decoratedValue.value.toString(),dateTimeStringValue);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user