Merge pull request #3112 from tfmorris/2997-unescape-csv-test
Add test for changed Apache unescape("csv") behavior - Fixes #2997
This commit is contained in:
commit
c8a721a10b
@ -46,7 +46,7 @@ public class Trim implements Function {
|
|||||||
if (args.length == 1) {
|
if (args.length == 1) {
|
||||||
Object s1 = args[0];
|
Object s1 = args[0];
|
||||||
if (s1 != null && s1 instanceof String) {
|
if (s1 != null && s1 instanceof String) {
|
||||||
return CharMatcher.WHITESPACE.trimFrom((String) s1);
|
return CharMatcher.whitespace().trimFrom((String) s1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new EvalError("Invalid parameters");
|
return new EvalError("Invalid parameters");
|
||||||
|
@ -43,6 +43,7 @@ import java.io.IOException;
|
|||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.powermock.modules.testng.PowerMockTestCase;
|
import org.powermock.modules.testng.PowerMockTestCase;
|
||||||
@ -57,6 +58,8 @@ import com.fasterxml.jackson.databind.node.BooleanNode;
|
|||||||
import com.fasterxml.jackson.databind.node.IntNode;
|
import com.fasterxml.jackson.databind.node.IntNode;
|
||||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
import com.fasterxml.jackson.databind.node.TextNode;
|
import com.fasterxml.jackson.databind.node.TextNode;
|
||||||
|
import com.google.refine.grel.ControlFunctionRegistry;
|
||||||
|
import com.google.refine.grel.Function;
|
||||||
import com.google.refine.importers.SeparatorBasedImporter;
|
import com.google.refine.importers.SeparatorBasedImporter;
|
||||||
import com.google.refine.importing.ImportingJob;
|
import com.google.refine.importing.ImportingJob;
|
||||||
import com.google.refine.importing.ImportingManager;
|
import com.google.refine.importing.ImportingManager;
|
||||||
@ -75,6 +78,8 @@ import edu.mit.simile.butterfly.ButterflyModule;
|
|||||||
*/
|
*/
|
||||||
public class RefineTest extends PowerMockTestCase {
|
public class RefineTest extends PowerMockTestCase {
|
||||||
|
|
||||||
|
protected static Properties bindings = null;
|
||||||
|
|
||||||
protected Logger logger;
|
protected Logger logger;
|
||||||
|
|
||||||
boolean testFailed;
|
boolean testFailed;
|
||||||
@ -308,6 +313,30 @@ public class RefineTest extends PowerMockTestCase {
|
|||||||
verify(options, times(1)).get(name);
|
verify(options, times(1)).get(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lookup a control function by name and invoke it with a variable number of args
|
||||||
|
*/
|
||||||
|
protected static Object invoke(String name, Object... args) {
|
||||||
|
// registry uses static initializer, so no need to set it up
|
||||||
|
Function function = ControlFunctionRegistry.getFunction(name);
|
||||||
|
if (bindings == null) {
|
||||||
|
bindings = new Properties();
|
||||||
|
}
|
||||||
|
if (function == null) {
|
||||||
|
throw new IllegalArgumentException("Unknown function "+name);
|
||||||
|
}
|
||||||
|
if (args == null) {
|
||||||
|
return function.call(bindings,new Object[0]);
|
||||||
|
} else {
|
||||||
|
return function.call(bindings,args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterMethod
|
||||||
|
public void TearDown() throws Exception {
|
||||||
|
bindings = null;
|
||||||
|
}
|
||||||
|
|
||||||
protected ButterflyModule getCoreModule() {
|
protected ButterflyModule getCoreModule() {
|
||||||
ButterflyModule coreModule = mock(ButterflyModule.class);
|
ButterflyModule coreModule = mock(ButterflyModule.class);
|
||||||
when(coreModule.getName()).thenReturn("core");
|
when(coreModule.getName()).thenReturn("core");
|
||||||
|
@ -38,7 +38,6 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
|
|
||||||
import com.google.refine.browsing.Engine;
|
import com.google.refine.browsing.Engine;
|
||||||
import com.google.refine.browsing.EngineConfig;
|
import com.google.refine.browsing.EngineConfig;
|
||||||
import com.google.refine.commands.Command;
|
|
||||||
import com.google.refine.model.Project;
|
import com.google.refine.model.Project;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package com.google.refine.commands;
|
package com.google.refine.commands;
|
||||||
import com.google.refine.commands.CommandTestBase;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.google.refine.commands;
|
package com.google.refine.commands;
|
||||||
|
|
||||||
import com.google.refine.commands.CommandTestBase;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
|
@ -18,7 +18,6 @@ import com.fasterxml.jackson.core.JsonParseException;
|
|||||||
import com.fasterxml.jackson.databind.JsonMappingException;
|
import com.fasterxml.jackson.databind.JsonMappingException;
|
||||||
import com.google.refine.browsing.facets.ScatterplotFacet;
|
import com.google.refine.browsing.facets.ScatterplotFacet;
|
||||||
import com.google.refine.commands.Command;
|
import com.google.refine.commands.Command;
|
||||||
import com.google.refine.commands.browsing.GetScatterplotCommand;
|
|
||||||
import com.google.refine.util.ParsingUtilities;
|
import com.google.refine.util.ParsingUtilities;
|
||||||
|
|
||||||
public class ScatterplotDrawCommandTests {
|
public class ScatterplotDrawCommandTests {
|
||||||
|
@ -8,7 +8,6 @@ import org.testng.annotations.BeforeMethod;
|
|||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.commands.CommandTestBase;
|
import com.google.refine.commands.CommandTestBase;
|
||||||
import com.google.refine.commands.cell.JoinMultiValueCellsCommand;
|
|
||||||
|
|
||||||
public class JoinMultiValueCellsCommandTests extends CommandTestBase {
|
public class JoinMultiValueCellsCommandTests extends CommandTestBase {
|
||||||
|
|
||||||
|
@ -33,8 +33,6 @@ import javax.servlet.ServletException;
|
|||||||
import org.testng.annotations.BeforeMethod;
|
import org.testng.annotations.BeforeMethod;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.commands.expr.GetExpressionHistoryCommand;
|
|
||||||
|
|
||||||
public class GetExpressionHistoryCommandTests extends ExpressionCommandTestBase {
|
public class GetExpressionHistoryCommandTests extends ExpressionCommandTestBase {
|
||||||
|
|
||||||
@BeforeMethod
|
@BeforeMethod
|
||||||
|
@ -33,8 +33,6 @@ import javax.servlet.ServletException;
|
|||||||
import org.testng.annotations.BeforeMethod;
|
import org.testng.annotations.BeforeMethod;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.commands.expr.GetStarredExpressionsCommand;
|
|
||||||
|
|
||||||
public class GetStarredExpressionsCommandTests extends ExpressionCommandTestBase {
|
public class GetStarredExpressionsCommandTests extends ExpressionCommandTestBase {
|
||||||
|
|
||||||
@BeforeMethod
|
@BeforeMethod
|
||||||
|
@ -3,7 +3,6 @@ package com.google.refine.commands.expr;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import com.google.refine.ProjectManager;
|
import com.google.refine.ProjectManager;
|
||||||
import com.google.refine.ProjectManagerStub;
|
|
||||||
import com.google.refine.commands.Command;
|
import com.google.refine.commands.Command;
|
||||||
import com.google.refine.commands.CommandTestBase;
|
import com.google.refine.commands.CommandTestBase;
|
||||||
import com.google.refine.preference.PreferenceStore;
|
import com.google.refine.preference.PreferenceStore;
|
||||||
|
@ -59,7 +59,6 @@ import com.google.refine.ProjectManager;
|
|||||||
import com.google.refine.ProjectMetadata;
|
import com.google.refine.ProjectMetadata;
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.commands.Command;
|
import com.google.refine.commands.Command;
|
||||||
import com.google.refine.commands.project.SetProjectMetadataCommand;
|
|
||||||
import com.google.refine.model.Project;
|
import com.google.refine.model.Project;
|
||||||
import com.google.refine.util.ParsingUtilities;
|
import com.google.refine.util.ParsingUtilities;
|
||||||
|
|
||||||
|
@ -51,7 +51,6 @@ import org.testng.annotations.Test;
|
|||||||
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.browsing.Engine;
|
import com.google.refine.browsing.Engine;
|
||||||
import com.google.refine.exporters.CsvExporter;
|
|
||||||
import com.google.refine.model.Cell;
|
import com.google.refine.model.Cell;
|
||||||
import com.google.refine.model.Column;
|
import com.google.refine.model.Column;
|
||||||
import com.google.refine.model.ModelException;
|
import com.google.refine.model.ModelException;
|
||||||
|
@ -54,8 +54,6 @@ import com.google.refine.ProjectManagerStub;
|
|||||||
import com.google.refine.ProjectMetadata;
|
import com.google.refine.ProjectMetadata;
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.browsing.Engine;
|
import com.google.refine.browsing.Engine;
|
||||||
import com.google.refine.exporters.HtmlTableExporter;
|
|
||||||
import com.google.refine.exporters.WriterExporter;
|
|
||||||
import com.google.refine.model.Cell;
|
import com.google.refine.model.Cell;
|
||||||
import com.google.refine.model.Column;
|
import com.google.refine.model.Column;
|
||||||
import com.google.refine.model.ModelException;
|
import com.google.refine.model.ModelException;
|
||||||
|
@ -52,8 +52,6 @@ import com.google.refine.ProjectManagerStub;
|
|||||||
import com.google.refine.ProjectMetadata;
|
import com.google.refine.ProjectMetadata;
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.browsing.Engine;
|
import com.google.refine.browsing.Engine;
|
||||||
import com.google.refine.exporters.TemplatingExporter;
|
|
||||||
import com.google.refine.exporters.WriterExporter;
|
|
||||||
import com.google.refine.model.Cell;
|
import com.google.refine.model.Cell;
|
||||||
import com.google.refine.model.Column;
|
import com.google.refine.model.Column;
|
||||||
import com.google.refine.model.ModelException;
|
import com.google.refine.model.ModelException;
|
||||||
|
@ -51,7 +51,6 @@ import org.testng.annotations.Test;
|
|||||||
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.browsing.Engine;
|
import com.google.refine.browsing.Engine;
|
||||||
import com.google.refine.exporters.CsvExporter;
|
|
||||||
import com.google.refine.model.Cell;
|
import com.google.refine.model.Cell;
|
||||||
import com.google.refine.model.Column;
|
import com.google.refine.model.Column;
|
||||||
import com.google.refine.model.ModelException;
|
import com.google.refine.model.ModelException;
|
||||||
|
@ -58,8 +58,6 @@ import com.google.refine.ProjectManagerStub;
|
|||||||
import com.google.refine.ProjectMetadata;
|
import com.google.refine.ProjectMetadata;
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.browsing.Engine;
|
import com.google.refine.browsing.Engine;
|
||||||
import com.google.refine.exporters.StreamExporter;
|
|
||||||
import com.google.refine.exporters.XlsExporter;
|
|
||||||
import com.google.refine.model.Cell;
|
import com.google.refine.model.Cell;
|
||||||
import com.google.refine.model.Column;
|
import com.google.refine.model.Column;
|
||||||
import com.google.refine.model.ModelException;
|
import com.google.refine.model.ModelException;
|
||||||
|
@ -61,8 +61,6 @@ import com.google.refine.ProjectManagerStub;
|
|||||||
import com.google.refine.ProjectMetadata;
|
import com.google.refine.ProjectMetadata;
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.browsing.Engine;
|
import com.google.refine.browsing.Engine;
|
||||||
import com.google.refine.exporters.StreamExporter;
|
|
||||||
import com.google.refine.exporters.XlsExporter;
|
|
||||||
import com.google.refine.model.Cell;
|
import com.google.refine.model.Cell;
|
||||||
import com.google.refine.model.Column;
|
import com.google.refine.model.Column;
|
||||||
import com.google.refine.model.ModelException;
|
import com.google.refine.model.ModelException;
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.EvalError;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class EvalErrorTests {
|
public class EvalErrorTests {
|
||||||
|
@ -40,7 +40,6 @@ import org.testng.annotations.BeforeTest;
|
|||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.ExpressionUtils;
|
|
||||||
|
|
||||||
|
|
||||||
public class ExpressionUtilsTests extends RefineTest {
|
public class ExpressionUtilsTests extends RefineTest {
|
||||||
|
@ -44,15 +44,11 @@ import org.testng.annotations.Test;
|
|||||||
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.EvalError;
|
import com.google.refine.expr.EvalError;
|
||||||
import com.google.refine.expr.functions.Coalesce;
|
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
|
|
||||||
public class CoalesceTests extends RefineTest {
|
public class CoalesceTests extends RefineTest {
|
||||||
|
|
||||||
private static Properties bindings;
|
|
||||||
private static final Integer[] ZERO_TO_TWO = new Integer[] {0, 1, 2};
|
private static final Integer[] ZERO_TO_TWO = new Integer[] {0, 1, 2};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -71,22 +67,6 @@ public class CoalesceTests extends RefineTest {
|
|||||||
bindings = null;
|
bindings = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup a control function by name and invoke it with a variable number of args
|
|
||||||
*/
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCoalesceInvalidParams() {
|
public void testCoalesceInvalidParams() {
|
||||||
Assert.assertTrue(invoke("coalesce") instanceof EvalError);
|
Assert.assertTrue(invoke("coalesce") instanceof EvalError);
|
||||||
|
@ -41,8 +41,6 @@ import com.google.refine.expr.EvalError;
|
|||||||
import com.google.refine.expr.HasFieldsListImpl;
|
import com.google.refine.expr.HasFieldsListImpl;
|
||||||
import com.google.refine.expr.WrappedCell;
|
import com.google.refine.expr.WrappedCell;
|
||||||
import com.google.refine.expr.WrappedRow;
|
import com.google.refine.expr.WrappedRow;
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.model.Cell;
|
import com.google.refine.model.Cell;
|
||||||
import com.google.refine.model.Project;
|
import com.google.refine.model.Project;
|
||||||
import com.google.refine.model.Row;
|
import com.google.refine.model.Row;
|
||||||
@ -52,7 +50,6 @@ import com.google.refine.util.TestUtils;
|
|||||||
* Test cases for cross function.
|
* Test cases for cross function.
|
||||||
*/
|
*/
|
||||||
public class CrossTests extends RefineTest {
|
public class CrossTests extends RefineTest {
|
||||||
static Properties bindings;
|
|
||||||
private static OffsetDateTime dateTimeValue = OffsetDateTime.parse("2017-05-12T05:45:00+00:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME);
|
private static OffsetDateTime dateTimeValue = OffsetDateTime.parse("2017-05-12T05:45:00+00:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -374,22 +371,6 @@ public class CrossTests extends RefineTest {
|
|||||||
"cross expects a cell or value, a project name to look up (optional), and a column name in that project (optional)");
|
"cross expects a cell or value, a project name to look up (optional), and a column name in that project (optional)");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup a control function by name and invoke it with a variable number of args
|
|
||||||
*/
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void serializeCross() {
|
public void serializeCross() {
|
||||||
String json = "{\"description\":\"Looks up the given value in the target column of the target project, returns an array of matched rows. Two values match if and only if they have the same string representation. " +
|
String json = "{\"description\":\"Looks up the given value in the target column of the target project, returns an array of matched rows. Two values match if and only if they have the same string representation. " +
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.FacetCount;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class FacetCountTests {
|
public class FacetCountTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.Get;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class GetTests {
|
public class GetTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.HasField;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class HasFieldTests {
|
public class HasFieldTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.Jsonize;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class JsonizeTests {
|
public class JsonizeTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.Length;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class LengthTests {
|
public class LengthTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.Slice;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class SliceTests {
|
public class SliceTests {
|
||||||
|
@ -26,16 +26,85 @@
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package com.google.refine.expr.functions;
|
package com.google.refine.expr.functions;
|
||||||
|
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
import static org.testng.Assert.assertTrue;
|
||||||
|
|
||||||
|
import java.time.OffsetDateTime;
|
||||||
|
import java.util.TimeZone;
|
||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.ToDate;
|
import com.google.refine.RefineTest;
|
||||||
|
import com.google.refine.expr.EvalError;
|
||||||
|
import com.google.refine.expr.util.CalendarParser;
|
||||||
|
import com.google.refine.expr.util.CalendarParserException;
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ToDateTests {
|
public class ToDateTests extends RefineTest {
|
||||||
@Test
|
@Test
|
||||||
public void serializeToDate() {
|
public void serializeToDate() {
|
||||||
String json = "{\"description\":\"Returns o converted to a date object, you can hint if the day or the month is listed first, or give an ordered list of possible formats using this syntax: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html\",\"params\":\"o, boolean month_first / format1, format2, ... (all optional)\",\"returns\":\"date\"}";
|
String json = "{\"description\":\"Returns o converted to a date object, you can hint if the day or the month is listed first, or give an ordered list of possible formats using this syntax: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html\",\"params\":\"o, boolean month_first / format1, format2, ... (all optional)\",\"returns\":\"date\"}";
|
||||||
TestUtils.isSerializedTo(new ToDate(), json);
|
TestUtils.isSerializedTo(new ToDate(), json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testToDate() throws CalendarParserException {
|
||||||
|
TimeZone originalTimeZone = TimeZone.getDefault();
|
||||||
|
try {
|
||||||
|
// Inject a fixed non-UTC timezone
|
||||||
|
TimeZone.setDefault(TimeZone.getTimeZone("JST"));
|
||||||
|
|
||||||
|
assertTrue(invoke("toDate") instanceof EvalError);
|
||||||
|
assertTrue(invoke("toDate", (Object) null) instanceof EvalError);
|
||||||
|
assertTrue(invoke("toDate", "") instanceof EvalError);
|
||||||
|
assertTrue(invoke("toDate", 1.0) instanceof EvalError);
|
||||||
|
assertTrue(invoke("toDate", "2012-03-01", "xxx") instanceof EvalError); // bad format string
|
||||||
|
assertTrue(invoke("toDate", "2012-03-01", 1L) instanceof EvalError); // non-string format arg
|
||||||
|
assertTrue(invoke("toDate", "P1M") instanceof EvalError); // Durations aren't supported
|
||||||
|
|
||||||
|
assertTrue(invoke("toDate", "2012-03-01") instanceof OffsetDateTime);
|
||||||
|
assertEquals(invoke("toDate", "2012-03-01"),CalendarParser.parseAsOffsetDateTime("2012-03-01"));
|
||||||
|
//parse as 'month first' date with and without explicit 'true' parameter
|
||||||
|
assertEquals(invoke("toDate", "01/03/2012"),CalendarParser.parseAsOffsetDateTime("2012-01-03"));
|
||||||
|
assertEquals(invoke("toDate", "01/03/2012",true),CalendarParser.parseAsOffsetDateTime("2012-01-03"));
|
||||||
|
//parse as 'month first' date with 'false' parameter
|
||||||
|
assertEquals(invoke("toDate", "01/03/2012",false),CalendarParser.parseAsOffsetDateTime("2012-03-01"));
|
||||||
|
//parse as 'month first' date without 'false' parameter but with format specified
|
||||||
|
assertEquals(invoke("toDate", "01/03/2012","dd/MM/yyyy"),CalendarParser.parseAsOffsetDateTime("2012-03-01"));
|
||||||
|
assertEquals(invoke("toDate", "2012-03-01","yyyy-MM-dd"),CalendarParser.parseAsOffsetDateTime("2012-03-01"));
|
||||||
|
//Two digit year
|
||||||
|
assertEquals(invoke("toDate", "02-02-01"),CalendarParser.parseAsOffsetDateTime("2001-02-02"));
|
||||||
|
// Multiple format strings should get tried sequentially until one succeeds or all are exhausted
|
||||||
|
assertEquals(invoke("toDate", "2012-03-01","MMM","yyyy-MM-dd"), CalendarParser.parseAsOffsetDateTime("2012-03-01"));
|
||||||
|
|
||||||
|
// Boolean argument combined with Multiple format strings
|
||||||
|
assertEquals(invoke("toDate", "01/03/2012",false, "MMM","yyyy-MM-dd","MM/dd/yyyy"), CalendarParser.parseAsOffsetDateTime("2012-03-01"));
|
||||||
|
|
||||||
|
// First string can be a locale identifier instead of a format string
|
||||||
|
assertEquals(invoke("toDate", "2013-06-01","zh"), CalendarParser.parseAsOffsetDateTime("2013-06-01"));
|
||||||
|
assertEquals(invoke("toDate", "01-六月-2013","zh","dd-MMM-yyyy"), CalendarParser.parseAsOffsetDateTime("2013-06-01"));
|
||||||
|
assertEquals(invoke("toDate", "01-六月-2013", "zh-CN", "dd-MMM-yyyy"), CalendarParser.parseAsOffsetDateTime("2013-06-01"));
|
||||||
|
assertEquals(invoke("toDate", "01-六月-2013", "zh", "MMM-dd-yyyy", "dd-MMM-yyyy"), CalendarParser.parseAsOffsetDateTime("2013-06-01"));
|
||||||
|
|
||||||
|
// If a long, convert to string
|
||||||
|
assertEquals(invoke("toDate", (long) 2012), invoke("toDate", "2012-01-01"));
|
||||||
|
|
||||||
|
// If already a date, leave it alone
|
||||||
|
assertEquals(invoke("toDate", CalendarParser.parseAsOffsetDateTime("2012-03-01")),CalendarParser.parseAsOffsetDateTime("2012-03-01"));
|
||||||
|
|
||||||
|
// FIXME: Date/times without timezone info were interpreted as local up until May 2018 at which point they switch to UTC
|
||||||
|
// assertEquals(invoke("toDate", "2013-06-01T13:12:11"), CalendarParser.parseAsOffsetDateTime("2013-06-01 13:12:11"));
|
||||||
|
|
||||||
|
// These match current behavior, but would fail with the historic (pre-2018) behavior
|
||||||
|
assertEquals(invoke("toDate", "2013-06-01T13:12:11Z"), CalendarParser.parseAsOffsetDateTime("2013-06-01 13:12:11"));
|
||||||
|
assertEquals(invoke("toDate", "2013-06-01Z"), CalendarParser.parseAsOffsetDateTime("2013-06-01"));
|
||||||
|
|
||||||
|
// TODO: more tests for datetimes with timezones and/or offsets
|
||||||
|
// assertEquals(invoke("toDate", "2013-06-01T13:12:11+06:00"), CalendarParser.parseAsOffsetDateTime("2013-06-01 13:12:11"));
|
||||||
|
} finally {
|
||||||
|
TimeZone.setDefault(originalTimeZone);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,11 +33,12 @@ import java.util.Properties;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.EvalError;
|
import com.google.refine.expr.EvalError;
|
||||||
import com.google.refine.grel.Function;
|
import com.google.refine.grel.Function;
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ToNumberTests {
|
public class ToNumberTests extends RefineTest {
|
||||||
|
|
||||||
private static final Double EPSILON = 0.000001;
|
private static final Double EPSILON = 0.000001;
|
||||||
static Properties bindings = new Properties();
|
static Properties bindings = new Properties();
|
||||||
@ -56,5 +57,20 @@ public class ToNumberTests {
|
|||||||
assertTrue((Double)f.call(bindings, new Object[] {"12345.6789"}) - Double.valueOf(12345.6789) < EPSILON);
|
assertTrue((Double)f.call(bindings, new Object[] {"12345.6789"}) - Double.valueOf(12345.6789) < EPSILON);
|
||||||
assertTrue(f.call(bindings, new Object[] {"abc"}) instanceof EvalError);
|
assertTrue(f.call(bindings, new Object[] {"abc"}) instanceof EvalError);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testToNumber() {
|
||||||
|
assertTrue(invoke("toNumber") instanceof EvalError);
|
||||||
|
assertTrue(invoke("toNumber", (Object) null) instanceof EvalError);
|
||||||
|
assertTrue(invoke("toNumber", "") instanceof EvalError);
|
||||||
|
assertTrue(invoke("toNumber", "string") instanceof EvalError);
|
||||||
|
assertEquals(invoke("toNumber", "0.0"), 0.0);
|
||||||
|
assertEquals(invoke("toNumber", "123"), Long.valueOf(123));
|
||||||
|
assertTrue(Math.abs((Double) invoke("toNumber", "123.456") - 123.456) < EPSILON);
|
||||||
|
assertTrue(Math.abs((Double) invoke("toNumber", "001.234") - 1.234) < EPSILON);
|
||||||
|
assertTrue(Math.abs((Double) invoke("toNumber", "1e2") - 100.0) < EPSILON);
|
||||||
|
assertTrue(Math.abs((Double) invoke("toNumber", Double.parseDouble("100.0")) - 100.0) < EPSILON);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,16 +26,44 @@
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package com.google.refine.expr.functions;
|
package com.google.refine.expr.functions;
|
||||||
|
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
import static org.testng.Assert.assertTrue;
|
||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.ToString;
|
import com.google.refine.RefineTest;
|
||||||
|
import com.google.refine.expr.EvalError;
|
||||||
|
import com.google.refine.expr.util.CalendarParser;
|
||||||
|
import com.google.refine.expr.util.CalendarParserException;
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ToStringTests {
|
public class ToStringTests extends RefineTest {
|
||||||
@Test
|
@Test
|
||||||
public void serializeToString() {
|
public void serializeToString() {
|
||||||
String json = "{\"description\":\"Returns o converted to a string\",\"params\":\"o, string format (optional)\",\"returns\":\"string\"}";
|
String json = "{\"description\":\"Returns o converted to a string\",\"params\":\"o, string format (optional)\",\"returns\":\"string\"}";
|
||||||
TestUtils.isSerializedTo(new ToString(), json);
|
TestUtils.isSerializedTo(new ToString(), json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testToString() throws CalendarParserException {
|
||||||
|
assertTrue(invoke("toString") instanceof EvalError);
|
||||||
|
assertEquals(invoke("toString", (Object) null), "");
|
||||||
|
assertEquals(invoke("toString", Long.valueOf(100)), "100");
|
||||||
|
assertEquals(invoke("toString", Double.valueOf(100.0)), "100.0");
|
||||||
|
assertEquals(invoke("toString", Double.valueOf(100.0),"%.0f"), "100");
|
||||||
|
|
||||||
|
String inputDate = "2013-06-01";
|
||||||
|
assertEquals(invoke("toString", CalendarParser.parseAsOffsetDateTime(inputDate)), "2013-06-01T00:00:00Z");
|
||||||
|
assertEquals(invoke("toString", CalendarParser.parseAsOffsetDateTime(inputDate), "yyyy-MM-dd"), "2013-06-01");
|
||||||
|
assertEquals(invoke("toString", CalendarParser.parseAsOffsetDateTime(inputDate), "yyyy/dd/MM"), "2013/01/06");
|
||||||
|
assertEquals(invoke("toString", CalendarParser.parseAsOffsetDateTime(inputDate), "yyyy-MM-dd hh:mm:ss"), "2013-06-01 12:00:00");
|
||||||
|
|
||||||
|
String inputDateTime = "2013-06-01 13:12:11";
|
||||||
|
assertEquals(invoke("toString", CalendarParser.parseAsOffsetDateTime(inputDateTime)), "2013-06-01T13:12:11Z");
|
||||||
|
assertEquals(invoke("toString", CalendarParser.parseAsOffsetDateTime(inputDateTime), "yyyy-MM-dd"), "2013-06-01");
|
||||||
|
assertEquals(invoke("toString", CalendarParser.parseAsOffsetDateTime(inputDateTime), "yyyy-MM-dd hh:mm:ss"), "2013-06-01 01:12:11");
|
||||||
|
assertEquals(invoke("toString", CalendarParser.parseAsOffsetDateTime(inputDateTime), "yyyy-MM-dd HH:mm:ss"), "2013-06-01 13:12:11");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,14 +42,10 @@ import java.util.Properties;
|
|||||||
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.EvalError;
|
import com.google.refine.expr.EvalError;
|
||||||
import com.google.refine.expr.functions.Type;
|
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
|
|
||||||
public class TypeTests extends RefineTest {
|
public class TypeTests extends RefineTest {
|
||||||
private static Properties bindings;
|
|
||||||
static final List<String> listArray = Arrays.asList("v1", "v2", "v3");
|
static final List<String> listArray = Arrays.asList("v1", "v2", "v3");
|
||||||
private static OffsetDateTime dateTimeValue = OffsetDateTime.parse("2017-05-12T05:45:00+00:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME);
|
private static OffsetDateTime dateTimeValue = OffsetDateTime.parse("2017-05-12T05:45:00+00:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME);
|
||||||
|
|
||||||
@ -69,22 +65,6 @@ public class TypeTests extends RefineTest {
|
|||||||
bindings = null;
|
bindings = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup a control function by name and invoke it with a variable number of args
|
|
||||||
*/
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTypeInvalidParams() {
|
public void testTypeInvalidParams() {
|
||||||
Assert.assertTrue(invoke("type") instanceof EvalError);
|
Assert.assertTrue(invoke("type") instanceof EvalError);
|
||||||
|
@ -32,16 +32,11 @@ import java.util.List;
|
|||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.AfterMethod;
|
|
||||||
import org.testng.annotations.BeforeMethod;
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.node.ArrayNode;
|
import com.fasterxml.jackson.databind.node.ArrayNode;
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.EvalError;
|
import com.google.refine.expr.EvalError;
|
||||||
import com.google.refine.expr.functions.arrays.InArray;
|
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class InArrayTests extends RefineTest {
|
public class InArrayTests extends RefineTest {
|
||||||
@ -51,16 +46,6 @@ public class InArrayTests extends RefineTest {
|
|||||||
static final String stringArray[] = {"v1","v2","v3"};
|
static final String stringArray[] = {"v1","v2","v3"};
|
||||||
|
|
||||||
|
|
||||||
@BeforeMethod
|
|
||||||
public void SetUp() {
|
|
||||||
bindings = new Properties();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterMethod
|
|
||||||
public void TearDown() {
|
|
||||||
bindings = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void serializeInArray() {
|
public void serializeInArray() {
|
||||||
String json = "{\"description\":\"Checks if array a contains string s\",\"params\":\"array a, string s\",\"returns\":\"boolean\"}";
|
String json = "{\"description\":\"Checks if array a contains string s\",\"params\":\"array a, string s\",\"returns\":\"boolean\"}";
|
||||||
@ -93,18 +78,5 @@ public class InArrayTests extends RefineTest {
|
|||||||
Assert.assertTrue((boolean) invoke("inArray", arrayNode, "v1"));
|
Assert.assertTrue((boolean) invoke("inArray", arrayNode, "v1"));
|
||||||
Assert.assertFalse((boolean) invoke("inArray", arrayNode, "v4"));
|
Assert.assertFalse((boolean) invoke("inArray", arrayNode, "v4"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.arrays;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.arrays.Join;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class JoinTests {
|
public class JoinTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.arrays;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.arrays.Reverse;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ReverseTests {
|
public class ReverseTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.arrays;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.arrays.Sort;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class SortTests {
|
public class SortTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.arrays;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.arrays.Uniques;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class UniquesTests {
|
public class UniquesTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.booleans;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.booleans.And;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class AndTests {
|
public class AndTests {
|
||||||
|
@ -33,24 +33,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
package com.google.refine.expr.functions.booleans;
|
package com.google.refine.expr.functions.booleans;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.AfterMethod;
|
|
||||||
import org.testng.annotations.BeforeMethod;
|
|
||||||
import org.testng.annotations.BeforeTest;
|
import org.testng.annotations.BeforeTest;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.EvalError;
|
import com.google.refine.expr.EvalError;
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.model.Cell;
|
|
||||||
import com.google.refine.model.ModelException;
|
|
||||||
import com.google.refine.model.Project;
|
|
||||||
import com.google.refine.model.Row;
|
|
||||||
|
|
||||||
|
|
||||||
public class BooleanTests extends RefineTest {
|
public class BooleanTests extends RefineTest {
|
||||||
@ -72,54 +61,12 @@ public class BooleanTests extends RefineTest {
|
|||||||
{"xor","false","true","false","true"},
|
{"xor","false","true","false","true"},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static private Properties bindings;
|
|
||||||
private Project project;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@BeforeTest
|
@BeforeTest
|
||||||
public void init() {
|
public void init() {
|
||||||
logger = LoggerFactory.getLogger(this.getClass());
|
logger = LoggerFactory.getLogger(this.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeMethod
|
|
||||||
public void SetUp() throws IOException, ModelException {
|
|
||||||
bindings = new Properties();
|
|
||||||
project = createProjectWithColumns("BooleanTests", "Column A");
|
|
||||||
|
|
||||||
bindings.put("project", project);
|
|
||||||
|
|
||||||
// Five rows of a's and five of 1s
|
|
||||||
for (int i = 0; i < 10; i++) {
|
|
||||||
Row row = new Row(1);
|
|
||||||
row.setCell(0, new Cell(i < 5 ? "a":new Integer(1), null));
|
|
||||||
project.rows.add(row);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@AfterMethod
|
|
||||||
public void TearDown() {
|
|
||||||
bindings = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup a control function by name and invoke it with a variable number of args
|
|
||||||
*/
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testInvalidParams() {
|
public void testInvalidParams() {
|
||||||
for (String op : new String[] {"and","or","xor"}) {
|
for (String op : new String[] {"and","or","xor"}) {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.booleans;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.booleans.Not;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class NotTests {
|
public class NotTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.booleans;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.booleans.Or;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class OrTests {
|
public class OrTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.booleans;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.booleans.Xor;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class XorTests {
|
public class XorTests {
|
||||||
|
@ -35,15 +35,10 @@ import java.util.TimeZone;
|
|||||||
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.AfterMethod;
|
|
||||||
import org.testng.annotations.BeforeMethod;
|
|
||||||
import org.testng.annotations.BeforeTest;
|
import org.testng.annotations.BeforeTest;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.functions.date.DatePart;
|
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
|
|
||||||
@ -57,32 +52,6 @@ public class DatePartTests extends RefineTest {
|
|||||||
logger = LoggerFactory.getLogger(this.getClass());
|
logger = LoggerFactory.getLogger(this.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeMethod
|
|
||||||
public void SetUp() {
|
|
||||||
bindings = new Properties();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterMethod
|
|
||||||
public void TearDown() {
|
|
||||||
bindings = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup a control function by name and invoke it with a variable number of args
|
|
||||||
*/
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd-HH:mm:ss.SSSSSSSSSX");
|
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd-HH:mm:ss.SSSSSSSSSX");
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -29,25 +29,18 @@ package com.google.refine.expr.functions.date;
|
|||||||
import java.time.OffsetDateTime;
|
import java.time.OffsetDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.AfterMethod;
|
|
||||||
import org.testng.annotations.BeforeMethod;
|
|
||||||
import org.testng.annotations.BeforeTest;
|
import org.testng.annotations.BeforeTest;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.EvalError;
|
import com.google.refine.expr.EvalError;
|
||||||
import com.google.refine.expr.functions.date.Inc;
|
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
|
|
||||||
public class IncTests extends RefineTest {
|
public class IncTests extends RefineTest {
|
||||||
private static Properties bindings;
|
|
||||||
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd-HH:mm:ss.SSSSSSSSSX");
|
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd-HH:mm:ss.SSSSSSSSSX");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -56,32 +49,6 @@ public class IncTests extends RefineTest {
|
|||||||
logger = LoggerFactory.getLogger(this.getClass());
|
logger = LoggerFactory.getLogger(this.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeMethod
|
|
||||||
public void setUp() {
|
|
||||||
bindings = new Properties();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterMethod
|
|
||||||
public void tearDown() {
|
|
||||||
bindings = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup a control function by name and invoke it with a variable number of args
|
|
||||||
*/
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testInc() {
|
public void testInc() {
|
||||||
OffsetDateTime source = OffsetDateTime.parse("20180510-23:55:44.000789000Z",
|
OffsetDateTime source = OffsetDateTime.parse("20180510-23:55:44.000789000Z",
|
||||||
|
@ -28,24 +28,17 @@ package com.google.refine.expr.functions.date;
|
|||||||
|
|
||||||
import java.time.OffsetDateTime;
|
import java.time.OffsetDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.AfterMethod;
|
|
||||||
import org.testng.annotations.BeforeMethod;
|
|
||||||
import org.testng.annotations.BeforeTest;
|
import org.testng.annotations.BeforeTest;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.functions.date.Now;
|
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
|
|
||||||
public class NowTests extends RefineTest {
|
public class NowTests extends RefineTest {
|
||||||
private static Properties bindings;
|
|
||||||
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd-HH:mm:ss.SSSSSSSSSX");
|
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd-HH:mm:ss.SSSSSSSSSX");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -54,32 +47,6 @@ public class NowTests extends RefineTest {
|
|||||||
logger = LoggerFactory.getLogger(this.getClass());
|
logger = LoggerFactory.getLogger(this.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeMethod
|
|
||||||
public void setUp() {
|
|
||||||
bindings = new Properties();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterMethod
|
|
||||||
public void tearDown() {
|
|
||||||
bindings = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup a control function by name and invoke it with a variable number of args
|
|
||||||
*/
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNow() {
|
public void testNow() {
|
||||||
// 2018-4-30 23:55:44
|
// 2018-4-30 23:55:44
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.html;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.html.InnerHtml;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class InnerHtmlTests {
|
public class InnerHtmlTests {
|
||||||
|
@ -33,15 +33,10 @@ import java.util.Properties;
|
|||||||
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.AfterMethod;
|
|
||||||
import org.testng.annotations.BeforeMethod;
|
|
||||||
import org.testng.annotations.BeforeTest;
|
import org.testng.annotations.BeforeTest;
|
||||||
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.EvalError;
|
import com.google.refine.expr.EvalError;
|
||||||
import com.google.refine.expr.functions.html.ParseHtml;
|
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ParseHtmlTests extends RefineTest {
|
public class ParseHtmlTests extends RefineTest {
|
||||||
@ -65,32 +60,6 @@ public class ParseHtmlTests extends RefineTest {
|
|||||||
logger = LoggerFactory.getLogger(this.getClass());
|
logger = LoggerFactory.getLogger(this.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeMethod
|
|
||||||
public void SetUp() {
|
|
||||||
bindings = new Properties();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterMethod
|
|
||||||
public void TearDown() {
|
|
||||||
bindings = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup a control function by name and invoke it with a variable number of args
|
|
||||||
*/
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void serializeParseHtml() {
|
public void serializeParseHtml() {
|
||||||
String json = "{\"description\":\"Parses a string as HTML\",\"params\":\"string s\",\"returns\":\"HTML object\"}";
|
String json = "{\"description\":\"Parses a string as HTML\",\"params\":\"string s\",\"returns\":\"HTML object\"}";
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.ACos;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ACosTests {
|
public class ACosTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.ASin;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ASinTests {
|
public class ASinTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.ATan2;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ATan2Tests {
|
public class ATan2Tests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.ATan;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ATanTests {
|
public class ATanTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Abs;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class AbsTests {
|
public class AbsTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Ceil;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class CeilTests {
|
public class CeilTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Combin;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class CombinTests {
|
public class CombinTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Cos;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class CosTests {
|
public class CosTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Cosh;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class CoshTests {
|
public class CoshTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Degrees;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class DegreesTests {
|
public class DegreesTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Even;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class EvenTests {
|
public class EvenTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Exp;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ExpTests {
|
public class ExpTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.FactN;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class FactNTests {
|
public class FactNTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Fact;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class FactTests {
|
public class FactTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Floor;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class FloorTests {
|
public class FloorTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.GreatestCommonDenominator;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class GreatestCommonDenominatorTests {
|
public class GreatestCommonDenominatorTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.LeastCommonMultiple;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class LeastCommonMultipleTests {
|
public class LeastCommonMultipleTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Ln;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class LnTests {
|
public class LnTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Log;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class LogTests {
|
public class LogTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Max;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class MaxTests {
|
public class MaxTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Min;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class MinTests {
|
public class MinTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Mod;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ModTests {
|
public class ModTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Multinomial;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class MultinomialTests {
|
public class MultinomialTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Odd;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class OddTests {
|
public class OddTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Pow;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class PowTests {
|
public class PowTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Quotient;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class QuotientTests {
|
public class QuotientTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Radians;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class RadiansTests {
|
public class RadiansTests {
|
||||||
|
@ -29,31 +29,15 @@ package com.google.refine.expr.functions.math;
|
|||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.AfterMethod;
|
|
||||||
import org.testng.annotations.BeforeMethod;
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.RandomNumber;
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.EvalError;
|
import com.google.refine.expr.EvalError;
|
||||||
import com.google.refine.expr.functions.arrays.InArray;
|
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class RandomNumberTests extends RefineTest {
|
public class RandomNumberTests extends RefineTest {
|
||||||
static Properties bindings;
|
static Properties bindings;
|
||||||
|
|
||||||
@BeforeMethod
|
|
||||||
public void SetUp() {
|
|
||||||
bindings = new Properties();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterMethod
|
|
||||||
public void TearDown() {
|
|
||||||
bindings = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void serializeRandomNumber() {
|
public void serializeRandomNumber() {
|
||||||
String json = "{\"description\":\"Returns a pseudo-random integer between the lower and upper bound (inclusive)\",\"params\":\"number lower bound, number upper bound\",\"returns\":\"number\"}";
|
String json = "{\"description\":\"Returns a pseudo-random integer between the lower and upper bound (inclusive)\",\"params\":\"number lower bound, number upper bound\",\"returns\":\"number\"}";
|
||||||
@ -73,18 +57,5 @@ public class RandomNumberTests extends RefineTest {
|
|||||||
Object a = invoke("randomNumber", 1, 10);
|
Object a = invoke("randomNumber", 1, 10);
|
||||||
Assert.assertTrue((int) a < 11 && (int) a > 0);
|
Assert.assertTrue((int) a < 11 && (int) a > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Round;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class RoundTests {
|
public class RoundTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Sin;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class SinTests {
|
public class SinTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Sinh;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class SinhTests {
|
public class SinhTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Sum;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class SumTests {
|
public class SumTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Tan;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class TanTests {
|
public class TanTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.math;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.math.Tanh;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class TanhTests {
|
public class TanhTests {
|
||||||
|
@ -26,16 +26,29 @@
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package com.google.refine.expr.functions.strings;
|
package com.google.refine.expr.functions.strings;
|
||||||
|
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.Chomp;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ChompTests {
|
public class ChompTests extends RefineTest {
|
||||||
@Test
|
@Test
|
||||||
public void serializeChomp() {
|
public void serializeChomp() {
|
||||||
String json = "{\"description\":\"Removes separator from the end of str if it's there, otherwise leave it alone.\",\"params\":\"string str, string separator\",\"returns\":\"string\"}";
|
String json = "{\"description\":\"Removes separator from the end of str if it's there, otherwise leave it alone.\",\"params\":\"string str, string separator\",\"returns\":\"string\"}";
|
||||||
TestUtils.isSerializedTo(new Chomp(), json);
|
TestUtils.isSerializedTo(new Chomp(), json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testChomp() {
|
||||||
|
// FIXME: These return null instead of an EvalError
|
||||||
|
// assertTrue(invoke("chomp") instanceof EvalError);
|
||||||
|
// assertTrue(invoke("chomp", "") instanceof EvalError);
|
||||||
|
// assertTrue(invoke("chomp", 1, 1) instanceof EvalError);
|
||||||
|
assertEquals(invoke("chomp", "test,", ","), "test");
|
||||||
|
assertEquals(invoke("chomp", "test,", ":"), "test,");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,55 +26,27 @@
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package com.google.refine.expr.functions.strings;
|
package com.google.refine.expr.functions.strings;
|
||||||
|
|
||||||
import org.testng.annotations.Test;
|
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.Contains;
|
|
||||||
import com.google.refine.util.TestUtils;
|
|
||||||
|
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.AfterMethod;
|
|
||||||
import org.testng.annotations.BeforeMethod;
|
|
||||||
import org.testng.annotations.BeforeTest;
|
import org.testng.annotations.BeforeTest;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.RefineServlet;
|
|
||||||
import com.google.refine.RefineServletStub;
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
import com.google.refine.util.TestUtils;
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test cases for find function.
|
* Test cases for find function.
|
||||||
*/
|
*/
|
||||||
public class ContainsTests extends RefineTest {
|
public class ContainsTests extends RefineTest {
|
||||||
|
|
||||||
static Properties bindings;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@BeforeTest
|
@BeforeTest
|
||||||
public void init() {
|
public void init() {
|
||||||
logger = LoggerFactory.getLogger(this.getClass());
|
logger = LoggerFactory.getLogger(this.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
// dependencies
|
|
||||||
RefineServlet servlet;
|
|
||||||
|
|
||||||
@BeforeMethod
|
|
||||||
public void SetUp() {
|
|
||||||
bindings = new Properties();
|
|
||||||
|
|
||||||
servlet = new RefineServletStub();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterMethod
|
|
||||||
public void TearDown() {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testContainsFunction() {
|
public void testContainsFunction() {
|
||||||
String value = "rose is a rose";
|
String value = "rose is a rose";
|
||||||
@ -84,27 +56,11 @@ public class ContainsTests extends RefineTest {
|
|||||||
Assert.assertEquals(invoke("contains", value, "$"),false);
|
Assert.assertEquals(invoke("contains", value, "$"),false);
|
||||||
Assert.assertEquals(invoke("contains", value, "r.se"),false);
|
Assert.assertEquals(invoke("contains", value, "r.se"),false);
|
||||||
Assert.assertEquals(invoke("contains", value, "\\s+"),false);
|
Assert.assertEquals(invoke("contains", value, "\\s+"),false);
|
||||||
// Input regex pattern in UI with : "/ /" , is intepreted as Pattern
|
// Input regex pattern in UI with : "/ /" , is interpreted as Pattern
|
||||||
Assert.assertEquals(invoke("contains", value, Pattern.compile("$")),true);
|
Assert.assertEquals(invoke("contains", value, Pattern.compile("$")),true);
|
||||||
Assert.assertEquals(invoke("contains", value, Pattern.compile("\\s+")),true);
|
Assert.assertEquals(invoke("contains", value, Pattern.compile("\\s+")),true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup a control function by name and invoke it with a variable number of args
|
|
||||||
*/
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void serializeContains() {
|
public void serializeContains() {
|
||||||
String json = "{\"description\":\"Returns whether s contains frag\",\"params\":\"string s, string frag\",\"returns\":\"boolean\"}";
|
String json = "{\"description\":\"Returns whether s contains frag\",\"params\":\"string s, string frag\",\"returns\":\"boolean\"}";
|
||||||
|
@ -33,16 +33,11 @@ import java.util.Properties;
|
|||||||
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.AfterMethod;
|
|
||||||
import org.testng.annotations.BeforeMethod;
|
|
||||||
import org.testng.annotations.BeforeTest;
|
import org.testng.annotations.BeforeTest;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.EvalError;
|
import com.google.refine.expr.EvalError;
|
||||||
import com.google.refine.expr.functions.strings.Diff;
|
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
|
|
||||||
@ -73,32 +68,6 @@ public class DiffTests extends RefineTest {
|
|||||||
odt8 = OffsetDateTime.of(1923, 4, 21, 12, 0, 0, 0, ZoneOffset.UTC);
|
odt8 = OffsetDateTime.of(1923, 4, 21, 12, 0, 0, 0, ZoneOffset.UTC);
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeMethod
|
|
||||||
public void SetUp() {
|
|
||||||
bindings = new Properties();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterMethod
|
|
||||||
public void TearDown() {
|
|
||||||
bindings = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup a control function by name and invoke it with a variable number of args
|
|
||||||
*/
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDiffInvalidParams() {
|
public void testDiffInvalidParams() {
|
||||||
Assert.assertTrue(invoke("diff") instanceof EvalError);
|
Assert.assertTrue(invoke("diff") instanceof EvalError);
|
||||||
|
@ -26,16 +26,25 @@
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package com.google.refine.expr.functions.strings;
|
package com.google.refine.expr.functions.strings;
|
||||||
|
|
||||||
|
import static org.testng.Assert.assertFalse;
|
||||||
|
import static org.testng.Assert.assertTrue;
|
||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.EndsWith;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class EndsWithTests {
|
public class EndsWithTests extends RefineTest {
|
||||||
@Test
|
@Test
|
||||||
public void serializeEndsWith() {
|
public void serializeEndsWith() {
|
||||||
String json = "{\"description\":\"Returns whether s ends with sub\",\"params\":\"string s, string sub\",\"returns\":\"boolean\"}";
|
String json = "{\"description\":\"Returns whether s ends with sub\",\"params\":\"string s, string sub\",\"returns\":\"boolean\"}";
|
||||||
TestUtils.isSerializedTo(new EndsWith(), json);
|
TestUtils.isSerializedTo(new EndsWith(), json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testStartsWith() {
|
||||||
|
assertTrue((Boolean) invoke("endsWith", "testString", "ing"));
|
||||||
|
assertFalse((Boolean) invoke("startsWith", "testString", "banana"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,16 +26,49 @@
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package com.google.refine.expr.functions.strings;
|
package com.google.refine.expr.functions.strings;
|
||||||
|
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
import static org.testng.Assert.assertNull;
|
||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.Escape;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class EscapeTests {
|
public class EscapeTests extends RefineTest {
|
||||||
@Test
|
@Test
|
||||||
public void serializeEscape() {
|
public void serializeEscape() {
|
||||||
String json = "{\"description\":\"Escapes a string depending on the given escaping mode.\",\"params\":\"string s, string mode ['html','xml','csv','url','javascript']\",\"returns\":\"string\"}";
|
String json = "{\"description\":\"Escapes a string depending on the given escaping mode.\",\"params\":\"string s, string mode ['html','xml','csv','url','javascript']\",\"returns\":\"string\"}";
|
||||||
TestUtils.isSerializedTo(new Escape(), json);
|
TestUtils.isSerializedTo(new Escape(), json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEscape() {
|
||||||
|
assertNull(invoke("escape"));
|
||||||
|
assertEquals(invoke("escape",null,"xml"), "");
|
||||||
|
assertEquals(invoke("escape", "mystring", "html"), "mystring");
|
||||||
|
assertEquals(invoke("escape", "mystring", "xml"), "mystring");
|
||||||
|
assertEquals(invoke("escape", "mystring", "csv"), "mystring");
|
||||||
|
assertEquals(invoke("escape", "mystring", "url"), "mystring");
|
||||||
|
assertEquals(invoke("escape", "mystring", "javascript"), "mystring");
|
||||||
|
assertEquals(invoke("escape", 1, "html") ,"1");
|
||||||
|
assertEquals(invoke("escape", 1, "xml"), "1");
|
||||||
|
assertEquals(invoke("escape", 1, "csv"), "1");
|
||||||
|
assertEquals(invoke("escape", 1, "url"), "1");
|
||||||
|
assertEquals(invoke("escape", 1, "javascript"), "1");
|
||||||
|
assertEquals(invoke("escape", Long.parseLong("1"), "html"), "1");
|
||||||
|
assertEquals(invoke("escape", Long.parseLong("1"), "xml"), "1");
|
||||||
|
assertEquals(invoke("escape", Long.parseLong("1"), "csv"), "1");
|
||||||
|
assertEquals(invoke("escape", Long.parseLong("1"), "url"), "1");
|
||||||
|
assertEquals(invoke("escape", Long.parseLong("1"), "javascript"), "1");
|
||||||
|
assertEquals(invoke("escape", Double.parseDouble("1.23"), "html"), "1.23");
|
||||||
|
assertEquals(invoke("escape", Double.parseDouble("1.23"), "xml"), "1.23");
|
||||||
|
assertEquals(invoke("escape", Double.parseDouble("1.23"), "csv"), "1.23");
|
||||||
|
assertEquals(invoke("escape", Double.parseDouble("1.23"), "url"), "1.23");
|
||||||
|
assertEquals(invoke("escape", Double.parseDouble("1.23"), "javascript"), "1.23");
|
||||||
|
|
||||||
|
assertEquals("\",\"", invoke("escape", ",", "csv")); // commas get quoted
|
||||||
|
assertEquals("\"\n\"", invoke("escape", "\n", "csv")); // newlines get quoted
|
||||||
|
assertEquals("\"\"\"\"", invoke("escape", "\"", "csv")); // quotes get doubled
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,17 +31,11 @@ import java.util.regex.Pattern;
|
|||||||
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.AfterMethod;
|
|
||||||
import org.testng.annotations.BeforeMethod;
|
|
||||||
import org.testng.annotations.BeforeTest;
|
import org.testng.annotations.BeforeTest;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.RefineServlet;
|
import com.google.refine.RefineServlet;
|
||||||
import com.google.refine.RefineServletStub;
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.functions.strings.Find;
|
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,18 +53,6 @@ public class FindTests extends RefineTest {
|
|||||||
// dependencies
|
// dependencies
|
||||||
RefineServlet servlet;
|
RefineServlet servlet;
|
||||||
|
|
||||||
@BeforeMethod
|
|
||||||
public void SetUp() {
|
|
||||||
bindings = new Properties();
|
|
||||||
|
|
||||||
servlet = new RefineServletStub();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterMethod
|
|
||||||
public void TearDown() {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void findFunctionFindAllTest() throws Exception {
|
public void findFunctionFindAllTest() throws Exception {
|
||||||
String[] matches = (String[]) invoke("find", "This is a test string for testing find.", "test");
|
String[] matches = (String[]) invoke("find", "This is a test string for testing find.", "test");
|
||||||
@ -96,20 +78,4 @@ public class FindTests extends RefineTest {
|
|||||||
String json = "{\"description\":\"Returns all the occurances of match given regular expression\",\"params\":\"string or regexp\",\"returns\":\"array of strings\"}";
|
String json = "{\"description\":\"Returns all the occurances of match given regular expression\",\"params\":\"string or regexp\",\"returns\":\"array of strings\"}";
|
||||||
TestUtils.isSerializedTo(new Find(), json);
|
TestUtils.isSerializedTo(new Find(), json);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup a control function by name and invoke it with a variable number of args
|
|
||||||
*/
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -35,15 +35,10 @@ import java.util.Properties;
|
|||||||
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.AfterMethod;
|
|
||||||
import org.testng.annotations.BeforeMethod;
|
|
||||||
import org.testng.annotations.BeforeTest;
|
import org.testng.annotations.BeforeTest;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.functions.strings.Fingerprint;
|
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
|
|
||||||
@ -71,32 +66,6 @@ public class FingerprintTests extends RefineTest {
|
|||||||
logger = LoggerFactory.getLogger(this.getClass());
|
logger = LoggerFactory.getLogger(this.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeMethod
|
|
||||||
public void SetUp() {
|
|
||||||
bindings = new Properties();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterMethod
|
|
||||||
public void TearDown() {
|
|
||||||
bindings = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup a control function by name and invoke it with a variable number of args
|
|
||||||
*/
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function "+name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings,new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings,args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testInvalidParams() {
|
public void testInvalidParams() {
|
||||||
Assert.assertNull(invoke("fingerprint"));
|
Assert.assertNull(invoke("fingerprint"));
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.strings;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.IndexOf;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class IndexOfTests {
|
public class IndexOfTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.strings;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.LastIndexOf;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class LastIndexOfTests {
|
public class LastIndexOfTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.strings;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.MD5;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class MD5Tests {
|
public class MD5Tests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.strings;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.Match;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class MatchTests {
|
public class MatchTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.strings;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.NGramFingerprint;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class NGramFingerprintTests {
|
public class NGramFingerprintTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.strings;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.NGram;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class NGramTests {
|
public class NGramTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.strings;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.ParseJson;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ParseJsonTests {
|
public class ParseJsonTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.strings;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.Partition;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class PartitionTests {
|
public class PartitionTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.strings;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.Phonetic;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class PhoneticTests {
|
public class PhoneticTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.strings;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.RPartition;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class RPartitionTests {
|
public class RPartitionTests {
|
||||||
|
@ -26,20 +26,13 @@
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package com.google.refine.expr.functions.strings;
|
package com.google.refine.expr.functions.strings;
|
||||||
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.AfterMethod;
|
|
||||||
import org.testng.annotations.BeforeMethod;
|
|
||||||
import org.testng.annotations.BeforeTest;
|
import org.testng.annotations.BeforeTest;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.RefineTest;
|
import com.google.refine.RefineTest;
|
||||||
import com.google.refine.expr.EvalError;
|
import com.google.refine.expr.EvalError;
|
||||||
import com.google.refine.expr.functions.strings.Range;
|
|
||||||
import com.google.refine.grel.ControlFunctionRegistry;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -47,8 +40,6 @@ import com.google.refine.util.TestUtils;
|
|||||||
*/
|
*/
|
||||||
public class RangeTests extends RefineTest {
|
public class RangeTests extends RefineTest {
|
||||||
|
|
||||||
private static Properties bindings;
|
|
||||||
|
|
||||||
private static final Integer[] EMPTY_ARRAY = new Integer[0];
|
private static final Integer[] EMPTY_ARRAY = new Integer[0];
|
||||||
|
|
||||||
private static final Integer[] ONE_AND_THREE = new Integer[] {1, 3};
|
private static final Integer[] ONE_AND_THREE = new Integer[] {1, 3};
|
||||||
@ -67,32 +58,6 @@ public class RangeTests extends RefineTest {
|
|||||||
logger = LoggerFactory.getLogger(this.getClass());
|
logger = LoggerFactory.getLogger(this.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeMethod
|
|
||||||
public void setUp() {
|
|
||||||
bindings = new Properties();
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterMethod
|
|
||||||
public void tearDown() {
|
|
||||||
bindings = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Lookup a control function by name and invoke it with a variable number of args
|
|
||||||
*/
|
|
||||||
private static Object invoke(String name,Object... args) {
|
|
||||||
// registry uses static initializer, so no need to set it up
|
|
||||||
Function function = ControlFunctionRegistry.getFunction(name);
|
|
||||||
if (function == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown function " + name);
|
|
||||||
}
|
|
||||||
if (args == null) {
|
|
||||||
return function.call(bindings, new Object[0]);
|
|
||||||
} else {
|
|
||||||
return function.call(bindings, args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRangeInvalidParams() {
|
public void testRangeInvalidParams() {
|
||||||
// Test number of arguments
|
// Test number of arguments
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.strings;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.Reinterpret;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ReinterpretTests {
|
public class ReinterpretTests {
|
||||||
|
@ -28,7 +28,6 @@ package com.google.refine.expr.functions.strings;
|
|||||||
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.refine.expr.functions.strings.ReplaceChars;
|
|
||||||
import com.google.refine.util.TestUtils;
|
import com.google.refine.util.TestUtils;
|
||||||
|
|
||||||
public class ReplaceCharsTests {
|
public class ReplaceCharsTests {
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user