From e38dcdf7a76b21812101828de6e1bdefb6d1d803 Mon Sep 17 00:00:00 2001 From: Owen Stephens Date: Tue, 20 Nov 2018 20:18:58 +0000 Subject: [PATCH] Add intial tests for XML parsing --- .../expr/functions/xml/InnerXmlTests.java | 15 ++++ .../expr/functions/xml/OwnTextTests.java | 15 ++++ .../expr/functions/xml/ParseXmlTests.java | 85 +++++++++++++++++++ .../expr/functions/xml/SelectXmlTests.java | 15 ++++ .../expr/functions/xml/xmlAttrTests.java | 15 ++++ .../expr/functions/xml/xmlTextTests.java | 15 ++++ 6 files changed, 160 insertions(+) create mode 100644 main/tests/server/src/com/google/refine/tests/expr/functions/xml/InnerXmlTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/expr/functions/xml/OwnTextTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/expr/functions/xml/ParseXmlTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/expr/functions/xml/SelectXmlTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/expr/functions/xml/xmlAttrTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/expr/functions/xml/xmlTextTests.java diff --git a/main/tests/server/src/com/google/refine/tests/expr/functions/xml/InnerXmlTests.java b/main/tests/server/src/com/google/refine/tests/expr/functions/xml/InnerXmlTests.java new file mode 100644 index 000000000..af39cbd65 --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/expr/functions/xml/InnerXmlTests.java @@ -0,0 +1,15 @@ +package com.google.refine.tests.expr.functions.xml; + +import org.testng.annotations.Test; + +import com.google.refine.expr.functions.xml.InnerXml; +import com.google.refine.tests.util.TestUtils; + +public class InnerXmlTests { + @Test + public void serializeInnerXml() { + String json = "{\"description\":\"The innerXml/innerHtml of an XML/HTML element\",\"params\":\"Element e\",\"returns\":\"String innerXml/innerHtml\"}"; + TestUtils.isSerializedTo(new InnerXml(), json); + } +} + diff --git a/main/tests/server/src/com/google/refine/tests/expr/functions/xml/OwnTextTests.java b/main/tests/server/src/com/google/refine/tests/expr/functions/xml/OwnTextTests.java new file mode 100644 index 000000000..f1b7c688b --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/expr/functions/xml/OwnTextTests.java @@ -0,0 +1,15 @@ +package com.google.refine.tests.expr.functions.html; + +import org.testng.annotations.Test; + +import com.google.refine.expr.functions.html.OwnText; +import com.google.refine.tests.util.TestUtils; + +public class OwnTextTests { + @Test + public void serializeOwnText() { + String json = "{\"description\":\"Gets the text owned by this XML/HTML element only; does not get the combined text of all children.\",\"params\":\"Element e\",\"returns\":\"String ownText\"}"; + TestUtils.isSerializedTo(new OwnText(), json); + } +} + diff --git a/main/tests/server/src/com/google/refine/tests/expr/functions/xml/ParseXmlTests.java b/main/tests/server/src/com/google/refine/tests/expr/functions/xml/ParseXmlTests.java new file mode 100644 index 000000000..8da1d99fb --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/expr/functions/xml/ParseXmlTests.java @@ -0,0 +1,85 @@ +package com.google.refine.tests.expr.functions.xml; + +import org.testng.annotations.Test; + +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 com.google.refine.expr.EvalError; +import com.google.refine.expr.functions.xml.ParseXml; +import com.google.refine.grel.ControlFunctionRegistry; +import com.google.refine.grel.Function; +import com.google.refine.tests.RefineTest; +import com.google.refine.tests.util.TestUtils; + + +public class ParseXmlTests extends RefineTest { + + static Properties bindings; + static String x = "\n" + + "\n" + + " \n" + + " John Doe\n" + + " head1\n" + + " head2\n" + + " body1\n" + + " \n" + + " \n" + + " \n" + + " Héloïse Dupont\n" + + " head3\n" + + " body2\n" + + " \n" + + " \n" + + ""; + + @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 serializeParseXml() { + String json = "{\"description\":\"Parses a string as XML\",\"params\":\"string s\",\"returns\":\"XML object\"}"; + TestUtils.isSerializedTo(new ParseXml(), json); + } + + @Test + public void testParseXml() { + Assert.assertTrue(invoke("parseXml") instanceof EvalError); + Assert.assertTrue(invoke("parseXml","x") instanceof org.jsoup.nodes.Document); + } +} + diff --git a/main/tests/server/src/com/google/refine/tests/expr/functions/xml/SelectXmlTests.java b/main/tests/server/src/com/google/refine/tests/expr/functions/xml/SelectXmlTests.java new file mode 100644 index 000000000..2bb6459de --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/expr/functions/xml/SelectXmlTests.java @@ -0,0 +1,15 @@ +package com.google.refine.tests.expr.functions.xml; + +import org.testng.annotations.Test; + +import com.google.refine.expr.functions.xml.SelectXml; +import com.google.refine.tests.util.TestUtils; + +public class SelectXmlTests { + @Test + public void serializeSelectXml() { + String json = "{\"description\":\"Selects an element from an XML or HTML element using selector syntax.\",\"params\":\"Element e, String s\",\"returns\":\"XML/HTML Elements\"}"; + TestUtils.isSerializedTo(new SelectXml(), json); + } +} + diff --git a/main/tests/server/src/com/google/refine/tests/expr/functions/xml/xmlAttrTests.java b/main/tests/server/src/com/google/refine/tests/expr/functions/xml/xmlAttrTests.java new file mode 100644 index 000000000..2486452c8 --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/expr/functions/xml/xmlAttrTests.java @@ -0,0 +1,15 @@ +package com.google.refine.tests.expr.functions.xml; + +import org.testng.annotations.Test; + +import com.google.refine.expr.functions.xml.XmlAttr; +import com.google.refine.tests.util.TestUtils; + +public class xmlAttrTests { + @Test + public void serializeXmlAttr() { + String json = "{\"description\":\"Selects a value from an attribute on an xml or html Element.\",\"params\":\"Element e, String s\",\"returns\":\"String attribute Value\"}"; + TestUtils.isSerializedTo(new XmlAttr(), json); + } +} + diff --git a/main/tests/server/src/com/google/refine/tests/expr/functions/xml/xmlTextTests.java b/main/tests/server/src/com/google/refine/tests/expr/functions/xml/xmlTextTests.java new file mode 100644 index 000000000..c13b96367 --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/expr/functions/xml/xmlTextTests.java @@ -0,0 +1,15 @@ +package com.google.refine.tests.expr.functions.xml; + +import org.testng.annotations.Test; + +import com.google.refine.expr.functions.xml.XmlText; +import com.google.refine.tests.util.TestUtils; + +public class xmlTextTests { + @Test + public void serializeXmlText() { + String json = "{\"description\":\"Selects the text from within an element (including all child elements)\",\"params\":\"Element e\",\"returns\":\"String text\"}"; + TestUtils.isSerializedTo(new XmlText(), json); + } +} +