Add tests for range function
This commit is contained in:
parent
bd2c4348fe
commit
d95f5985b9
@ -0,0 +1,127 @@
|
||||
package com.google.refine.tests.expr.functions.strings;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.AfterMethod;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.BeforeTest;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.refine.expr.EvalError;
|
||||
import com.google.refine.grel.ControlFunctionRegistry;
|
||||
import com.google.refine.grel.Function;
|
||||
import com.google.refine.tests.RefineTest;
|
||||
|
||||
|
||||
/**
|
||||
* Tests for the range function.
|
||||
*/
|
||||
public class RangeTests extends RefineTest {
|
||||
|
||||
static Properties bindings;
|
||||
|
||||
@Override
|
||||
@BeforeTest
|
||||
public void init() {
|
||||
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
|
||||
public void testRangeInvalidParams() {
|
||||
// Test number of arguments
|
||||
Assert.assertTrue(invoke("range") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", "") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", "one","two","three") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", 1) instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", 1, 2, 3) instanceof EvalError);
|
||||
|
||||
// Test invalid single string arguments with dash separator
|
||||
Assert.assertTrue(invoke("range", "a") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", "-") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", "a-") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", "-b") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", "a-b") instanceof EvalError);
|
||||
|
||||
Assert.assertTrue(invoke("range", "1") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", "-") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", "1-") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", "-3") instanceof EvalError);
|
||||
|
||||
// Test invalid single string arguments with comma separator
|
||||
Assert.assertTrue(invoke("range", ",") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", "a,") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", ",b") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", "a,b") instanceof EvalError);
|
||||
|
||||
Assert.assertTrue(invoke("range", "1") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", ",") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", "1,") instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", ",3") instanceof EvalError);
|
||||
|
||||
// Test invalid numeric arguments
|
||||
Assert.assertTrue(invoke("range", 1.2, 4.5) instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", -5, 1) instanceof EvalError);
|
||||
Assert.assertTrue(invoke("range", -1, 5) instanceof EvalError);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRangeValidStringParams() {
|
||||
// Test valid string arguments with dash separator
|
||||
Assert.assertEquals((String)(invoke("range", "1-1")),"1");
|
||||
Assert.assertEquals((String)(invoke("range", "1-5")), "1, 2, 3, 4, 5");
|
||||
Assert.assertEquals((String)(invoke("range", "5-1")), "5, 4, 3, 2, 1");
|
||||
|
||||
Assert.assertEquals((String)(invoke("range", " 1-5")), "1, 2, 3, 4, 5");
|
||||
Assert.assertEquals((String)(invoke("range", "1 -5")), "1, 2, 3, 4, 5");
|
||||
Assert.assertEquals((String)(invoke("range", "1- 5")), "1, 2, 3, 4, 5");
|
||||
Assert.assertEquals((String)(invoke("range", "1-5 ")), "1, 2, 3, 4, 5");
|
||||
Assert.assertEquals((String)(invoke("range", "1 - 5")), "1, 2, 3, 4, 5");
|
||||
|
||||
// Test valid string arguments with comma separator
|
||||
Assert.assertEquals((String)(invoke("range", "1,1")), "1");
|
||||
Assert.assertEquals((String)(invoke("range", "1,5")), "1, 2, 3, 4, 5");
|
||||
Assert.assertEquals((String)(invoke("range", "5,1")), "5, 4, 3, 2, 1");
|
||||
|
||||
Assert.assertEquals((String)(invoke("range", " 1,5")), "1, 2, 3, 4, 5");
|
||||
Assert.assertEquals((String)(invoke("range", "1 -5")), "1, 2, 3, 4, 5");
|
||||
Assert.assertEquals((String)(invoke("range", "1- 5")), "1, 2, 3, 4, 5");
|
||||
Assert.assertEquals((String)(invoke("range", "1-5 ")), "1, 2, 3, 4, 5");
|
||||
Assert.assertEquals((String)(invoke("range", "1 - 5")), "1, 2, 3, 4, 5");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRangeValidIntegerParams() {
|
||||
Assert.assertEquals((String)(invoke("range", 1, 1)), "1");
|
||||
Assert.assertEquals((String)(invoke("range", 1, 5)), "1, 2, 3, 4, 5");
|
||||
Assert.assertEquals((String)(invoke("range", 5, 1)), "5, 4, 3, 2, 1");
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user