Improve Jython tests to cover more cases (#3937)

Co-authored-by: duke326 <448711277@qq.com>
Co-authored-by: chupengrocky <chupengz@icloud.com>
This commit is contained in:
LaiWang2020 2021-05-28 19:28:10 +08:00 committed by GitHub
parent 969c41ecfb
commit f07946e694
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 2 deletions

View File

@ -42,8 +42,8 @@ public class DatabaseConfiguration {
//optional parameters
private boolean useSSL;
public String getConnectionName() {
return connectionName;
}

View File

@ -133,6 +133,7 @@ public class JythonEvaluable implements Evaluable {
return new EvalError(e.toString());
}
}
protected Object unwrap(Object result) {
if (result != null) {

View File

@ -1,7 +1,12 @@
package com.google.refine.jython;
import java.io.File;
import java.util.Properties;
import com.google.refine.expr.EvalError;
import com.google.refine.expr.HasFields;
import org.python.core.*;
import org.python.util.PythonInterpreter;
import org.testng.Assert;
import org.testng.annotations.Test;
@ -16,6 +21,35 @@ import com.google.refine.model.Row;
*/
public class JythonEvaluableTest {
// Reproduces the situation when result is a PyObject
// Version with a test case which only calls the existing evaluate method
@Test
public void unwrapPyObjectTest(){
Properties props = new Properties();
Project project = new Project();
Row row = new Row(2);
row.setCell(0, new Cell("one", null));
row.setCell(0, new Cell("1", null));
props.put("columnName", "number");
props.put("true", "true");
props.put("false", "false");
props.put("rowIndex", "0");
props.put("value", 1);
props.put("project", project);
props.put("call", "number");
props.put("PI", "3.141592654");
props.put("cells", new CellTuple(project, row));
String funcExpression ="class Foo(object):\n" +
" bar = 1\n" +
"\n" +
"return Foo()";
JythonEvaluable eval1 = new JythonEvaluable(funcExpression);
PyObject po = (PyObject) eval1.evaluate(props);
Assert.assertEquals(po.__getattr__("bar").toString(),"1");
}
@Test
public void testJythonConcurrent(){
Properties props = new Properties();