Added unit tests for smartSplit() function
This commit is contained in:
parent
e23fef8b66
commit
ca572a6a2d
@ -1,15 +1,100 @@
|
|||||||
package com.google.refine.tests.expr.functions.strings;
|
package com.google.refine.tests.expr.functions.strings;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertArrayEquals;
|
||||||
|
import static org.testng.Assert.assertTrue;
|
||||||
|
import java.util.Properties;
|
||||||
|
import org.testng.annotations.AfterSuite;
|
||||||
|
import org.testng.annotations.BeforeSuite;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.google.refine.expr.EvalError;
|
||||||
import com.google.refine.expr.functions.strings.SmartSplit;
|
import com.google.refine.expr.functions.strings.SmartSplit;
|
||||||
|
import com.google.refine.grel.ControlFunctionRegistry;
|
||||||
|
import com.google.refine.grel.Function;
|
||||||
import com.google.refine.tests.util.TestUtils;
|
import com.google.refine.tests.util.TestUtils;
|
||||||
|
|
||||||
public class SmartSplitTests {
|
public class SmartSplitTests {
|
||||||
|
|
||||||
|
private static Properties bindings;
|
||||||
|
private static String FUNCTION_NAME = "smartSplit";
|
||||||
|
|
||||||
|
@BeforeSuite
|
||||||
|
public void setUp() {
|
||||||
|
bindings = new Properties();
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterSuite
|
||||||
|
public void tearDown() {
|
||||||
|
bindings = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSmartSplitInvalidParams() {
|
||||||
|
assertTrue(invoke(FUNCTION_NAME) instanceof EvalError);
|
||||||
|
assertTrue(invoke(FUNCTION_NAME, "teststring1", 1, "teststring2", 2) instanceof EvalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSmartSplitGuessComma() {
|
||||||
|
String testString = "teststring1,teststring2,teststring3,teststring4";
|
||||||
|
String[] expected = { "teststring1", "teststring2", "teststring3", "teststring4" };
|
||||||
|
String[] actual = (String[]) invoke(FUNCTION_NAME, testString);
|
||||||
|
assertArrayEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSmartSplitGuessTab() {
|
||||||
|
String testString = "teststring1 teststring2 teststring3 teststring4";
|
||||||
|
String[] expected = { "teststring1", "teststring2", "teststring3", "teststring4" };
|
||||||
|
String[] actual = (String[]) invoke(FUNCTION_NAME, testString);
|
||||||
|
assertArrayEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSmartSplitCharSepGiven() {
|
||||||
|
String testString = "teststring1#teststring2#teststring3#teststring4";
|
||||||
|
String[] expected = { "teststring1", "teststring2", "teststring3", "teststring4" };
|
||||||
|
String[] actual = (String[]) invoke(FUNCTION_NAME, testString, '#');
|
||||||
|
assertArrayEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSmartSplitCharSepSpace() {
|
||||||
|
String testString = "teststring1 teststring2 teststring3 teststring4";
|
||||||
|
String[] expected = { "teststring1", "teststring2", "teststring3", "teststring4" };
|
||||||
|
String[] actual = (String[]) invoke(FUNCTION_NAME, testString, ' ');
|
||||||
|
assertArrayEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSmartSplitStringSepGiven() {
|
||||||
|
String testString = "teststring1#@$teststring2#@$teststring3#@$teststring4";
|
||||||
|
String[] expected = { "teststring1", "teststring2", "teststring3", "teststring4" };
|
||||||
|
String[] actual = (String[]) invoke(FUNCTION_NAME, testString, "#@$");
|
||||||
|
assertArrayEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 serializeSmartSplit() {
|
public void serializeSmartSplit() {
|
||||||
String json = "{\"description\":\"Returns the array of strings obtained by splitting s with separator sep. Handles quotes properly. Guesses tab or comma separator if \\\"sep\\\" is not given.\",\"params\":\"string s, optional string sep\",\"returns\":\"array\"}";
|
String json = "{\"description\":\"Returns the array of strings obtained by splitting s with separator sep. Handles quotes properly. Guesses tab or comma separator if \\\"sep\\\" is not given.\",\"params\":\"string s, optional string sep\",\"returns\":\"array\"}";
|
||||||
TestUtils.isSerializedTo(new SmartSplit(), json);
|
TestUtils.isSerializedTo(new SmartSplit(), json);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user