Committing patches by Iain:
- use OpenCSV parser instead of our own - use TestNG instead of JUnit which is a lot more configurable in test selection (and allows us to do a much better job a leaving the tree green even while developing tests that are known to fail) - integrated TestNG in './gridworks test' - added Iain to the list of contributors in README.txt - changed the Eclipse test launch file to use the TestNG launcher (unfortunately, this is not shipped by default in Eclipse, so you have to install it yourself from the http://beust.com/eclipse update file, I'll add this to the wiki shortly) git-svn-id: http://google-refine.googlecode.com/svn/trunk@782 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
c3934c041f
commit
f28e23e503
@ -24,13 +24,14 @@
|
|||||||
<classpathentry kind="lib" path="lib/httpclient-4.0.1.jar" sourcepath="lib-src/httpclient-4.0.1-sources.jar"/>
|
<classpathentry kind="lib" path="lib/httpclient-4.0.1.jar" sourcepath="lib-src/httpclient-4.0.1-sources.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/signpost-core-1.2.1.1.jar" sourcepath="lib-src/signpost-core-1.2.1.1-sources.jar"/>
|
<classpathentry kind="lib" path="lib/signpost-core-1.2.1.1.jar" sourcepath="lib-src/signpost-core-1.2.1.1-sources.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/signpost-commonshttp4-1.2.1.1.jar" sourcepath="lib-src/signpost-commonshttp4-1.2.1.1-sources.jar"/>
|
<classpathentry kind="lib" path="lib/signpost-commonshttp4-1.2.1.1.jar" sourcepath="lib-src/signpost-commonshttp4-1.2.1.1-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="lib/opencsv-2.2.jar" sourcepath="tests/java/lib-src/opencsv-2.2-sources.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/poi-3.6.jar"/>
|
<classpathentry kind="lib" path="lib/poi-3.6.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/poi-ooxml-3.6.jar"/>
|
<classpathentry kind="lib" path="lib/poi-ooxml-3.6.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/jython-2.5.1.jar"/>
|
<classpathentry kind="lib" path="lib/jython-2.5.1.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/clojure-1.1.0.jar"/>
|
<classpathentry kind="lib" path="lib/clojure-1.1.0.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/jackson-core-asl-1.5.1.jar"/>
|
<classpathentry kind="lib" path="lib/jackson-core-asl-1.5.1.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/marc4j-2.4.jar"/>
|
<classpathentry kind="lib" path="lib/marc4j-2.4.jar"/>
|
||||||
<classpathentry kind="lib" path="tests/java/lib/junit-4.8.1.jar" sourcepath="tests/java/lib-src/junit-4.8.1-sources.jar"/>
|
|
||||||
<classpathentry kind="lib" path="tests/java/lib/mockito-all-1.8.4.jar" sourcepath="tests/java/lib-src/mockito-all-1.8.4-sources.jar"/>
|
<classpathentry kind="lib" path="tests/java/lib/mockito-all-1.8.4.jar" sourcepath="tests/java/lib-src/mockito-all-1.8.4-sources.jar"/>
|
||||||
|
<classpathentry kind="lib" path="tests/java/lib/testng-5.12.1.jar" sourcepath="tests/java/lib-src/testng-5.12.1-sources.jar"/>
|
||||||
<classpathentry kind="output" path="src/main/webapp/WEB-INF/classes"/>
|
<classpathentry kind="output" path="src/main/webapp/WEB-INF/classes"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
@ -55,6 +55,8 @@ licenses/apache2.0.LICENSE.txt
|
|||||||
servlet-api
|
servlet-api
|
||||||
xmlbeans
|
xmlbeans
|
||||||
signpost
|
signpost
|
||||||
|
opencsv
|
||||||
|
textng
|
||||||
|
|
||||||
LGPL
|
LGPL
|
||||||
----
|
----
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
- Jeff Fry <jfry@metaweb.com>
|
- Jeff Fry <jfry@metaweb.com>
|
||||||
- Will Moffat <willmoffat@metaweb.com>
|
- Will Moffat <willmoffat@metaweb.com>
|
||||||
- James Home <jh@metaweb.com>
|
- James Home <jh@metaweb.com>
|
||||||
|
- Iain Sproat <iainsproat@gmail.com>
|
||||||
|
|
||||||
|
|
||||||
- o -
|
- o -
|
||||||
|
@ -529,14 +529,12 @@ server_test() {
|
|||||||
CLASSPATH="$GRIDWORKS_TEST_DIR/java/classes${SEP}$GRIDWORKS_WEBAPP/WEB-INF/classes${SEP}$GRIDWORKS_BUILD_DIR/classes${SEP}$GRIDWORKS_TEST_DIR/java/lib/*${SEP}$GRIDWORKS_LIB_DIR/*${SEP}$GRIDWORKS_WEBAPP/WEB-INF/lib/*"
|
CLASSPATH="$GRIDWORKS_TEST_DIR/java/classes${SEP}$GRIDWORKS_WEBAPP/WEB-INF/classes${SEP}$GRIDWORKS_BUILD_DIR/classes${SEP}$GRIDWORKS_TEST_DIR/java/lib/*${SEP}$GRIDWORKS_LIB_DIR/*${SEP}$GRIDWORKS_WEBAPP/WEB-INF/lib/*"
|
||||||
|
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ]; then
|
||||||
cd "$GRIDWORKS_TEST_DIR/java/classes"
|
TESTS="-excludegroups broken $GRIDWORKS_TEST_DIR/java/conf/tests.xml"
|
||||||
TESTS=`find . -name '*.class' | sed s@/@.@g | sed s@.class@@ | sed s@..@@`
|
|
||||||
cd ../../..
|
|
||||||
else
|
else
|
||||||
TESTS=$1
|
TESTS="-testclass $1"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RUN_CMD="$JAVA -cp $CLASSPATH $OPTS org.junit.runner.JUnitCore $TESTS"
|
RUN_CMD="$JAVA -cp $CLASSPATH $OPTS org.testng.TestNG -d $GRIDWORKS_BUILD_DIR/server_tests -listener org.testng.reporters.DotTestListener $TESTS"
|
||||||
|
|
||||||
#echo "$RUN_CMD"
|
#echo "$RUN_CMD"
|
||||||
#echo ""
|
#echo ""
|
||||||
|
@ -1,19 +1,21 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
|
<launchConfiguration type="org.testng.eclipse.launchconfig">
|
||||||
<stringAttribute key="bad_container_name" value="/gridworks."/>
|
<booleanAttribute key="com.mountainminds.eclemma.core.INPLACE_INSTRUMENTATION" value="false"/>
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
<listAttribute key="com.mountainminds.eclemma.core.INSTRUMENTATION_PATHS">
|
||||||
<listEntry value="/gridworks"/>
|
<listEntry value="/gridworks/src/main/webapp/WEB-INF/classes"/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.testng.remote.RemoteTestNG"/>
|
||||||
<listEntry value="4"/>
|
|
||||||
</listAttribute>
|
|
||||||
<mapAttribute key="org.eclipse.debug.core.preferred_launchers">
|
|
||||||
<mapEntry key="[run]" value="org.eclipse.jdt.junit.launchconfig"/>
|
|
||||||
</mapAttribute>
|
|
||||||
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=gridworks"/>
|
|
||||||
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
|
|
||||||
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
|
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gridworks"/>
|
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gridworks"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:gridworks/build}"/>
|
||||||
|
<mapAttribute key="org.testng.eclipse.ALL_CLASS_METHODS"/>
|
||||||
|
<listAttribute key="org.testng.eclipse.CLASS_TEST_LIST"/>
|
||||||
|
<stringAttribute key="org.testng.eclipse.COMPLIANCE_LEVEL" value="JDK"/>
|
||||||
|
<listAttribute key="org.testng.eclipse.GROUP_LIST"/>
|
||||||
|
<listAttribute key="org.testng.eclipse.GROUP_LIST_CLASS"/>
|
||||||
|
<stringAttribute key="org.testng.eclipse.LOG_LEVEL" value="2"/>
|
||||||
|
<listAttribute key="org.testng.eclipse.PACKAGE_TEST_LIST"/>
|
||||||
|
<listAttribute key="org.testng.eclipse.SUITE_TEST_LIST">
|
||||||
|
<listEntry value="tests/java/conf/tests.xml"/>
|
||||||
|
</listAttribute>
|
||||||
|
<intAttribute key="org.testng.eclipse.TYPE" value="3"/>
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
||||||
|
BIN
lib-src/opencsv-2.2-sources.jar
Normal file
BIN
lib-src/opencsv-2.2-sources.jar
Normal file
Binary file not shown.
BIN
lib/opencsv-2.2.jar
Normal file
BIN
lib/opencsv-2.2.jar
Normal file
Binary file not shown.
@ -15,7 +15,9 @@ public class ImporterUtilities {
|
|||||||
static public Serializable parseCellValue(String text) {
|
static public Serializable parseCellValue(String text) {
|
||||||
if (text.length() > 0) {
|
if (text.length() > 0) {
|
||||||
if (text.length() > 1 && text.startsWith("\"") && text.endsWith("\"")) {
|
if (text.length() > 1 && text.startsWith("\"") && text.endsWith("\"")) {
|
||||||
return text.substring(1, text.length() - 1);
|
return text.substring(1, text.length() - 1); // FIXME is this a good assumption?
|
||||||
|
// what about the following string: '"To be" is almost always followed by "or not to be"'.
|
||||||
|
// This would be emitted as: 'To be" is almost always followed by "or not to be'
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
package com.metaweb.gridworks.importers;
|
package com.metaweb.gridworks.importers;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.LineNumberReader;
|
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import au.com.bytecode.opencsv.CSVReader;
|
||||||
|
|
||||||
import com.metaweb.gridworks.importers.parsers.CSVRowParser;
|
import com.metaweb.gridworks.expr.ExpressionUtils;
|
||||||
import com.metaweb.gridworks.importers.parsers.NonSplitRowParser;
|
import com.metaweb.gridworks.model.Cell;
|
||||||
import com.metaweb.gridworks.importers.parsers.RowParser;
|
|
||||||
import com.metaweb.gridworks.importers.parsers.SeparatorRowParser;
|
|
||||||
import com.metaweb.gridworks.model.Project;
|
import com.metaweb.gridworks.model.Project;
|
||||||
import com.metaweb.gridworks.model.Row;
|
import com.metaweb.gridworks.model.Row;
|
||||||
|
|
||||||
@ -28,70 +27,73 @@ public class TsvCsvImporter implements Importer {
|
|||||||
int skip = ImporterUtilities.getIntegerOption("skip",options,0);
|
int skip = ImporterUtilities.getIntegerOption("skip",options,0);
|
||||||
boolean guessValueType = ImporterUtilities.getBooleanOption("guess-value-type", options, true);
|
boolean guessValueType = ImporterUtilities.getBooleanOption("guess-value-type", options, true);
|
||||||
|
|
||||||
|
// default expected format is CSV
|
||||||
|
char separator = (sep != null && sep.length() == 1 && splitIntoColumns) ? sep.toCharArray()[0] : ',';
|
||||||
|
|
||||||
|
CSVReader CsvReader = new CSVReader(reader, separator);
|
||||||
|
read(CsvReader, project, limit, skip, ignoreLines, headerLines, guessValueType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param reader
|
||||||
|
* @param project
|
||||||
|
* @param limit - negative for no limit.
|
||||||
|
* @param skip
|
||||||
|
* @param ignoreLines
|
||||||
|
* @param headerLines
|
||||||
|
* @param guessValueType
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public void read(CSVReader reader, Project project, int limit, int skip, int ignoreLines, int headerLines, boolean guessValueType ) throws IOException {
|
||||||
|
|
||||||
|
// prevent logic errors below when negative numbers are introduced by defaulting to zero (except limit which is negative to indicate no limit)
|
||||||
|
if (skip < 0) skip = 0;
|
||||||
|
if (ignoreLines < 0) ignoreLines = 0;
|
||||||
|
if (headerLines < 0) headerLines = 0;
|
||||||
|
|
||||||
List<String> columnNames = new ArrayList<String>();
|
List<String> columnNames = new ArrayList<String>();
|
||||||
|
String [] nextLine;
|
||||||
|
int lineCounter = 0;
|
||||||
|
while ((nextLine = reader.readNext()) != null) {
|
||||||
|
lineCounter++;
|
||||||
|
|
||||||
LineNumberReader lnReader = new LineNumberReader(reader);
|
if (limit > 0 && lineCounter > limit + ignoreLines + headerLines + skip) break;
|
||||||
RowParser parser = (sep != null && sep.length() > 0 && splitIntoColumns) ?
|
if (ignoreLines > 0 && lineCounter <= ignoreLines) continue; // initial non-blank lines
|
||||||
new SeparatorRowParser(sep) : null;
|
if (headerLines > 0 && lineCounter <= ignoreLines + headerLines && lineCounter > ignoreLines) {
|
||||||
|
// deal with column headers
|
||||||
String line = null;
|
for (int c = 0; c < nextLine.length; c++) {
|
||||||
int rowsWithData = 0;
|
String cell = nextLine[c].trim();
|
||||||
|
|
||||||
while ((line = lnReader.readLine()) != null) {
|
|
||||||
if (ignoreLines > 0) {
|
|
||||||
ignoreLines--;
|
|
||||||
continue;
|
|
||||||
} else if (StringUtils.isBlank(line)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parser == null) {
|
|
||||||
if (splitIntoColumns) {
|
|
||||||
int tab = line.indexOf('\t');
|
|
||||||
if (tab >= 0) {
|
|
||||||
sep = "\t";
|
|
||||||
parser = new SeparatorRowParser(sep);
|
|
||||||
} else {
|
|
||||||
sep = ",";
|
|
||||||
parser = new CSVRowParser();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
parser = new NonSplitRowParser();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (headerLines > 0) {
|
|
||||||
headerLines--;
|
|
||||||
|
|
||||||
List<String> cells = parser.split(line, lnReader);
|
|
||||||
for (int c = 0; c < cells.size(); c++) {
|
|
||||||
String cell = cells.get(c).trim();
|
|
||||||
|
|
||||||
ImporterUtilities.appendColumnName(columnNames, c, cell);
|
ImporterUtilities.appendColumnName(columnNames, c, cell);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// a data line (or a line below the header)
|
||||||
|
if (skip > 0 && lineCounter <= ignoreLines + headerLines + skip) continue; // skip initial data lines
|
||||||
|
|
||||||
|
// data line
|
||||||
Row row = new Row(columnNames.size());
|
Row row = new Row(columnNames.size());
|
||||||
|
|
||||||
if (parser.parseRow(row, line, guessValueType, lnReader)) {
|
|
||||||
rowsWithData++;
|
|
||||||
|
|
||||||
if (skip <= 0 || rowsWithData > skip) {
|
|
||||||
project.rows.add(row);
|
project.rows.add(row);
|
||||||
project.columnModel.setMaxCellIndex(row.cells.size());
|
project.columnModel.setMaxCellIndex(row.cells.size());
|
||||||
|
for (String s : nextLine) {
|
||||||
|
Serializable value = guessValueType ? ImporterUtilities.parseCellValue(s) : s;
|
||||||
|
|
||||||
|
if (ExpressionUtils.isNonBlankData(value)) {
|
||||||
|
row.cells.add(new Cell(value, null));
|
||||||
|
} else {
|
||||||
|
row.cells.add(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
ImporterUtilities.ensureColumnsInRowExist(columnNames, row);
|
ImporterUtilities.ensureColumnsInRowExist(columnNames, row);
|
||||||
|
|
||||||
if (limit > 0 && project.rows.size() >= limit) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ImporterUtilities.setupColumns(project, columnNames);
|
ImporterUtilities.setupColumns(project, columnNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void DealWithHeaders(String[] nextLine, List<String> columnNames){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void read(InputStream inputStream, Project project, Properties options) throws Exception {
|
public void read(InputStream inputStream, Project project, Properties options) throws Exception {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
9
tests/java/conf/tests.xml
Normal file
9
tests/java/conf/tests.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
|
||||||
|
|
||||||
|
<suite name="Gridworks Unit Tests">
|
||||||
|
<test name="tests">
|
||||||
|
<packages>
|
||||||
|
<package name="com.metaweb.gridworks.tests.*"/>
|
||||||
|
</packages>
|
||||||
|
</test>
|
||||||
|
</suite>
|
Binary file not shown.
BIN
tests/java/lib-src/testng-5.12.1-sources.jar
Normal file
BIN
tests/java/lib-src/testng-5.12.1-sources.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
tests/java/lib/testng-5.12.1.jar
Normal file
BIN
tests/java/lib/testng-5.12.1.jar
Normal file
Binary file not shown.
@ -6,8 +6,6 @@ import javax.servlet.ServletException;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.junit.Ignore;
|
|
||||||
|
|
||||||
import com.metaweb.gridworks.GridworksServlet;
|
import com.metaweb.gridworks.GridworksServlet;
|
||||||
import com.metaweb.gridworks.commands.Command;
|
import com.metaweb.gridworks.commands.Command;
|
||||||
|
|
||||||
@ -15,7 +13,6 @@ import com.metaweb.gridworks.commands.Command;
|
|||||||
* Exposes protected methods of com.metaweb.gridworks.GridworksServlet as public for unit testing
|
* Exposes protected methods of com.metaweb.gridworks.GridworksServlet as public for unit testing
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Ignore
|
|
||||||
public class GridworksServletStub extends GridworksServlet {
|
public class GridworksServletStub extends GridworksServlet {
|
||||||
|
|
||||||
//requirement of extending HttpServlet, not required for testing
|
//requirement of extending HttpServlet, not required for testing
|
||||||
|
@ -11,12 +11,12 @@ import javax.servlet.ServletException;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.junit.After;
|
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.AfterMethod;
|
||||||
|
import org.testng.annotations.BeforeMethod;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.metaweb.gridworks.commands.Command;
|
import com.metaweb.gridworks.commands.Command;
|
||||||
|
|
||||||
@ -38,9 +38,8 @@ public class GridworksServletTests {
|
|||||||
Command command = null;
|
Command command = null;
|
||||||
|
|
||||||
|
|
||||||
@Before
|
@BeforeMethod
|
||||||
public void SetUp()
|
public void SetUp() {
|
||||||
{
|
|
||||||
SUT = new GridworksServletStub();
|
SUT = new GridworksServletStub();
|
||||||
request = mock(HttpServletRequest.class);
|
request = mock(HttpServletRequest.class);
|
||||||
response = mock(HttpServletResponse.class);
|
response = mock(HttpServletResponse.class);
|
||||||
@ -49,7 +48,7 @@ public class GridworksServletTests {
|
|||||||
GridworksServletStub.InsertCommand(TEST_COMMAND_NAME,command); //inject mock into command container
|
GridworksServletStub.InsertCommand(TEST_COMMAND_NAME,command); //inject mock into command container
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@AfterMethod
|
||||||
public void TearDown() {
|
public void TearDown() {
|
||||||
SUT = null;
|
SUT = null;
|
||||||
request = null;
|
request = null;
|
||||||
@ -57,6 +56,7 @@ public class GridworksServletTests {
|
|||||||
command = null;
|
command = null;
|
||||||
GridworksServletStub.RemoveCommand(TEST_COMMAND_NAME); //remove mock to clean command container
|
GridworksServletStub.RemoveCommand(TEST_COMMAND_NAME); //remove mock to clean command container
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------AutoSaveTimerTask tests-----------
|
//-------------------AutoSaveTimerTask tests-----------
|
||||||
//TODO would need to mock Timer and inject it into GridworksServlet. Also need to deal with ProjectManager.singleton
|
//TODO would need to mock Timer and inject it into GridworksServlet. Also need to deal with ProjectManager.singleton
|
||||||
//-------------------init tests------------------------
|
//-------------------init tests------------------------
|
||||||
|
@ -5,7 +5,6 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.junit.Ignore;
|
|
||||||
|
|
||||||
import com.metaweb.gridworks.browsing.Engine;
|
import com.metaweb.gridworks.browsing.Engine;
|
||||||
import com.metaweb.gridworks.commands.Command;
|
import com.metaweb.gridworks.commands.Command;
|
||||||
@ -14,7 +13,6 @@ import com.metaweb.gridworks.model.Project;
|
|||||||
/**
|
/**
|
||||||
* Implementation of abstract class for testing Exposes protected members as public
|
* Implementation of abstract class for testing Exposes protected members as public
|
||||||
*/
|
*/
|
||||||
@Ignore
|
|
||||||
public class CommandStub extends Command {
|
public class CommandStub extends Command {
|
||||||
|
|
||||||
public Project wrapGetProject(HttpServletRequest request)
|
public Project wrapGetProject(HttpServletRequest request)
|
||||||
|
@ -10,12 +10,12 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.junit.After;
|
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.AfterMethod;
|
||||||
|
import org.testng.annotations.BeforeMethod;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.metaweb.gridworks.ProjectManager;
|
import com.metaweb.gridworks.ProjectManager;
|
||||||
import com.metaweb.gridworks.browsing.Engine;
|
import com.metaweb.gridworks.browsing.Engine;
|
||||||
@ -30,7 +30,7 @@ public class CommandTests {
|
|||||||
ProjectManager projectManager = null;
|
ProjectManager projectManager = null;
|
||||||
Project project = null;
|
Project project = null;
|
||||||
|
|
||||||
@Before
|
@BeforeMethod
|
||||||
public void SetUp() {
|
public void SetUp() {
|
||||||
SUT = new CommandStub();
|
SUT = new CommandStub();
|
||||||
request = mock(HttpServletRequest.class);
|
request = mock(HttpServletRequest.class);
|
||||||
@ -38,7 +38,7 @@ public class CommandTests {
|
|||||||
project = mock(Project.class);
|
project = mock(Project.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@AfterMethod
|
||||||
public void TearDown() {
|
public void TearDown() {
|
||||||
SUT = null;
|
SUT = null;
|
||||||
request = null;
|
request = null;
|
||||||
|
@ -13,12 +13,12 @@ import javax.servlet.ServletException;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.junit.After;
|
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.AfterMethod;
|
||||||
|
import org.testng.annotations.BeforeMethod;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.metaweb.gridworks.ProjectManager;
|
import com.metaweb.gridworks.ProjectManager;
|
||||||
import com.metaweb.gridworks.commands.util.CancelProcessesCommand;
|
import com.metaweb.gridworks.commands.util.CancelProcessesCommand;
|
||||||
@ -45,7 +45,7 @@ public class CancelProcessesCommandTests {
|
|||||||
ProcessManager processMan = null;
|
ProcessManager processMan = null;
|
||||||
PrintWriter pw = null;
|
PrintWriter pw = null;
|
||||||
|
|
||||||
@Before
|
@BeforeMethod
|
||||||
public void SetUp() {
|
public void SetUp() {
|
||||||
projMan = mock(ProjectManager.class);
|
projMan = mock(ProjectManager.class);
|
||||||
ProjectManager.singleton = projMan;
|
ProjectManager.singleton = projMan;
|
||||||
@ -58,7 +58,7 @@ public class CancelProcessesCommandTests {
|
|||||||
SUT = new CancelProcessesCommand();
|
SUT = new CancelProcessesCommand();
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@AfterMethod
|
||||||
public void TearDown() {
|
public void TearDown() {
|
||||||
SUT = null;
|
SUT = null;
|
||||||
|
|
||||||
|
@ -0,0 +1,121 @@
|
|||||||
|
package com.metaweb.gridworks.tests.importers;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.metaweb.gridworks.importers.ImporterUtilities;
|
||||||
|
import com.metaweb.gridworks.model.Cell;
|
||||||
|
import com.metaweb.gridworks.model.Project;
|
||||||
|
import com.metaweb.gridworks.model.Row;
|
||||||
|
|
||||||
|
public class ImporterUtilitiesTests {
|
||||||
|
// logging
|
||||||
|
final static protected Logger logger = LoggerFactory.getLogger("ImporterUtilitiesTests");
|
||||||
|
|
||||||
|
@Test(enabled=false)
|
||||||
|
public void parseCellValueWithText(){
|
||||||
|
String END_QUOTES_SHOULD_BE_RETAINED = "\"To be\" is almost always followed by \"or not to be\"";
|
||||||
|
String response = (String) ImporterUtilities.parseCellValue(END_QUOTES_SHOULD_BE_RETAINED);
|
||||||
|
Assert.assertEquals(response, END_QUOTES_SHOULD_BE_RETAINED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getIntegerOption(){
|
||||||
|
Properties options = mock(Properties.class);
|
||||||
|
when(options.containsKey("testInteger")).thenReturn(true);
|
||||||
|
when(options.getProperty("testInteger")).thenReturn("5");
|
||||||
|
int response = ImporterUtilities.getIntegerOption("testInteger", options, -1);
|
||||||
|
Assert.assertEquals(5, response);
|
||||||
|
verify(options, times(1)).containsKey("testInteger");
|
||||||
|
verify(options, times(1)).getProperty("testInteger");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getIntegerOptionReturnsDefaultOnError(){
|
||||||
|
Properties options = mock(Properties.class);
|
||||||
|
when(options.containsKey("testInteger")).thenReturn(true);
|
||||||
|
when(options.getProperty("testInteger")).thenReturn("notAnInteger");
|
||||||
|
int response = ImporterUtilities.getIntegerOption("testInteger", options, -1);
|
||||||
|
Assert.assertEquals(-1, response);
|
||||||
|
verify(options, times(1)).containsKey("testInteger");
|
||||||
|
verify(options, times(1)).getProperty("testInteger");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void appendColumnName(){
|
||||||
|
List<String> columnNames = new ArrayList<String>();
|
||||||
|
|
||||||
|
|
||||||
|
ImporterUtilities.appendColumnName(columnNames, 0, "foo");
|
||||||
|
ImporterUtilities.appendColumnName(columnNames, 1, "bar");
|
||||||
|
Assert.assertEquals(columnNames.size(), 2);
|
||||||
|
Assert.assertEquals(columnNames.get(0), "foo");
|
||||||
|
Assert.assertEquals(columnNames.get(1), "bar");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void appendColumnNameFromMultipleRows(){
|
||||||
|
List<String> columnNames = new ArrayList<String>();
|
||||||
|
|
||||||
|
ImporterUtilities.appendColumnName(columnNames, 0, "foo");
|
||||||
|
ImporterUtilities.appendColumnName(columnNames, 0, "bar");
|
||||||
|
Assert.assertEquals(columnNames.size(), 1);
|
||||||
|
Assert.assertEquals(columnNames.get(0), "foo bar");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ensureColumnsInRowExist(){
|
||||||
|
String VALUE_1 = "value1";
|
||||||
|
String VALUE_2 = "value2";
|
||||||
|
Row row = new Row(2);
|
||||||
|
ArrayList<String> columnNames = new ArrayList<String>(2);
|
||||||
|
columnNames.add(VALUE_1);
|
||||||
|
columnNames.add(VALUE_2);
|
||||||
|
|
||||||
|
ImporterUtilities.ensureColumnsInRowExist(columnNames, row);
|
||||||
|
|
||||||
|
Assert.assertEquals(columnNames.size(), 2);
|
||||||
|
Assert.assertEquals(columnNames.get(0), VALUE_1);
|
||||||
|
Assert.assertEquals(columnNames.get(1), VALUE_2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ensureColumnsInRowExistDoesExpand(){
|
||||||
|
Row row = new Row(4);
|
||||||
|
for(int i = 1; i < 5; i++)
|
||||||
|
row.cells.add(new Cell("value" + i, null));
|
||||||
|
|
||||||
|
ArrayList<String> columnNames = new ArrayList<String>(2);
|
||||||
|
|
||||||
|
|
||||||
|
ImporterUtilities.ensureColumnsInRowExist(columnNames, row);
|
||||||
|
|
||||||
|
Assert.assertEquals(row.cells.size(), 4);
|
||||||
|
Assert.assertEquals(columnNames.size(), 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setupColumns(){
|
||||||
|
Project project = new Project();
|
||||||
|
List<String> columnNames = new ArrayList<String>();
|
||||||
|
columnNames.add("col1");
|
||||||
|
columnNames.add("col2");
|
||||||
|
columnNames.add("");
|
||||||
|
ImporterUtilities.setupColumns(project, columnNames);
|
||||||
|
Assert.assertEquals( project.columnModel.columns.get(0).getName(), "col1" );
|
||||||
|
Assert.assertEquals( project.columnModel.columns.get(1).getName(), "col2" );
|
||||||
|
Assert.assertEquals( project.columnModel.columns.get(2).getName(), "Column");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,179 @@
|
|||||||
|
package com.metaweb.gridworks.tests.importers;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.StringReader;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.AfterMethod;
|
||||||
|
import org.testng.annotations.BeforeMethod;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import au.com.bytecode.opencsv.CSVReader;
|
||||||
|
|
||||||
|
import com.metaweb.gridworks.importers.TsvCsvImporter;
|
||||||
|
import com.metaweb.gridworks.model.Project;
|
||||||
|
|
||||||
|
public class TsvCsvImporterTests {
|
||||||
|
// logging
|
||||||
|
final static protected Logger logger = LoggerFactory.getLogger("TsvCsvImporterTests");
|
||||||
|
|
||||||
|
//constants
|
||||||
|
String SAMPLE_ROW = "NDB_No,Shrt_Desc,Water";
|
||||||
|
|
||||||
|
//System Under Test
|
||||||
|
TsvCsvImporter SUT = null;
|
||||||
|
|
||||||
|
//mock dependencies
|
||||||
|
Project project = null;
|
||||||
|
Properties properties = null;
|
||||||
|
|
||||||
|
@BeforeMethod
|
||||||
|
public void SetUp(){
|
||||||
|
SUT = new TsvCsvImporter();
|
||||||
|
project = new Project(); //FIXME - should we try and use mock(Project.class); - seems unnecessary complexity
|
||||||
|
properties = mock(Properties.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterMethod
|
||||||
|
public void TearDown(){
|
||||||
|
SUT = null;
|
||||||
|
project = null;
|
||||||
|
properties = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void readJustColumns(){
|
||||||
|
String input = "col1,col2,col3";
|
||||||
|
CSVReader reader = new CSVReader(new StringReader(input));
|
||||||
|
|
||||||
|
try {
|
||||||
|
SUT.read(reader, project, -1, 0, 0, 1, false);
|
||||||
|
} catch (IOException e) {
|
||||||
|
Assert.fail();
|
||||||
|
}
|
||||||
|
Assert.assertEquals(project.columnModel.columns.size(), 3);
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1");
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2");
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(2).getName(), "col3");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void readSimpleData_1Header_1Row(){
|
||||||
|
String input = "col1,col2,col3\n" +
|
||||||
|
"data1,data2,data3";
|
||||||
|
CSVReader reader = new CSVReader(new StringReader(input));
|
||||||
|
try {
|
||||||
|
SUT.read(reader, project, -1, 0, 0, 1, false);
|
||||||
|
} catch (IOException e) {
|
||||||
|
Assert.fail();
|
||||||
|
}
|
||||||
|
Assert.assertEquals(project.columnModel.columns.size(), 3);
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1");
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2");
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(2).getName(), "col3");
|
||||||
|
Assert.assertEquals(project.rows.size(), 1);
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.size(), 3);
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.get(0).value, "data1");
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.get(1).value, "data2");
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void readSimpleData_RowLongerThanHeader(){
|
||||||
|
String input = "col1,col2,col3\n" +
|
||||||
|
"data1,data2,data3,data4,data5,data6";
|
||||||
|
CSVReader reader = new CSVReader(new StringReader(input));
|
||||||
|
try {
|
||||||
|
SUT.read(reader, project, -1, 0, 0, 1, false);
|
||||||
|
} catch (IOException e) {
|
||||||
|
Assert.fail();
|
||||||
|
}
|
||||||
|
Assert.assertEquals(project.columnModel.columns.size(), 6);
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1");
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2");
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(2).getName(), "col3");
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(3).getName(), "Column");
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(3).getName(), "Column");
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(3).getName(), "Column");
|
||||||
|
Assert.assertEquals(project.rows.size(), 1);
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.size(), 6);
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.get(0).value, "data1");
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.get(1).value, "data2");
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3");
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.get(3).value, "data4");
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.get(4).value, "data5");
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.get(5).value, "data6");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(enabled = false, groups = { "broken" })
|
||||||
|
public void readQuotedData(){
|
||||||
|
String input = "col1,col2,col3\n" +
|
||||||
|
"\"To Be\" is often followed by \"or not To Be\",data2";
|
||||||
|
CSVReader reader = new CSVReader(new StringReader(input));
|
||||||
|
try {
|
||||||
|
SUT.read(reader, project, -1, 0, 0, 1, false);
|
||||||
|
} catch (IOException e) {
|
||||||
|
Assert.fail();
|
||||||
|
}
|
||||||
|
Assert.assertEquals(project.columnModel.columns.size(), 3);
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "col1");
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "col2");
|
||||||
|
Assert.assertEquals(project.columnModel.columns.get(2).getName(), "col3");
|
||||||
|
Assert.assertEquals(project.rows.size(), 1);
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.size(), 2);
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.get(0).value, "\"To Be\" is often followed by \"or not To Be\"");
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.get(1).value, "data2");
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------read tests------------------------
|
||||||
|
@Test
|
||||||
|
public void readCsvWithProperties(){
|
||||||
|
StringReader reader = new StringReader(SAMPLE_ROW);
|
||||||
|
|
||||||
|
when(properties.getProperty("separator")).thenReturn(",");
|
||||||
|
whenGetIntegerOption("ignore",properties,0);
|
||||||
|
whenGetIntegerOption("header-lines",properties,0);
|
||||||
|
whenGetIntegerOption("limit",properties,-1);
|
||||||
|
whenGetIntegerOption("skip",properties,0);
|
||||||
|
|
||||||
|
try {
|
||||||
|
SUT.read(reader, project, properties);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Assert.fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Assert.assertEquals(project.rows.size(), 1);
|
||||||
|
Assert.assertEquals(project.rows.get(0).cells.size(), 3);
|
||||||
|
Assert.assertEquals((String)project.rows.get(0).cells.get(0).value, "NDB_No");
|
||||||
|
Assert.assertEquals((String)project.rows.get(0).cells.get(1).value, "Shrt_Desc");
|
||||||
|
Assert.assertEquals((String)project.rows.get(0).cells.get(2).value, "Water");
|
||||||
|
|
||||||
|
verify(properties, times(1)).getProperty("separator");
|
||||||
|
verifyGetIntegerOption("ignore",properties);
|
||||||
|
verifyGetIntegerOption("header-lines",properties);
|
||||||
|
verifyGetIntegerOption("limit",properties);
|
||||||
|
verifyGetIntegerOption("skip",properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
//--helpers--
|
||||||
|
|
||||||
|
public void whenGetIntegerOption(String name, Properties properties, int def){
|
||||||
|
when(properties.containsKey(name)).thenReturn(true);
|
||||||
|
when(properties.getProperty(name)).thenReturn(Integer.toString(def));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void verifyGetIntegerOption(String name, Properties properties){
|
||||||
|
verify(properties, times(1)).containsKey(name);
|
||||||
|
verify(properties, times(1)).getProperty(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -9,13 +9,12 @@ import java.io.IOException;
|
|||||||
import java.io.LineNumberReader;
|
import java.io.LineNumberReader;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.junit.After;
|
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Ignore;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.AfterMethod;
|
||||||
|
import org.testng.annotations.BeforeMethod;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.metaweb.gridworks.importers.parsers.CSVRowParser;
|
import com.metaweb.gridworks.importers.parsers.CSVRowParser;
|
||||||
|
|
||||||
@ -38,18 +37,20 @@ public class CSVRowParserTests {
|
|||||||
//mocked dependencies
|
//mocked dependencies
|
||||||
LineNumberReader lineReader = null;
|
LineNumberReader lineReader = null;
|
||||||
|
|
||||||
@Before
|
@BeforeMethod
|
||||||
public void SetUp(){
|
public void SetUp(){
|
||||||
lineReader = mock(LineNumberReader.class);
|
lineReader = mock(LineNumberReader.class);
|
||||||
SUT = new CSVRowParser();
|
SUT = new CSVRowParser();
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@AfterMethod
|
||||||
public void TearDown(){
|
public void TearDown(){
|
||||||
lineReader = null;
|
lineReader = null;
|
||||||
SUT = null;
|
SUT = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------split tests-------------------------
|
//------------split tests-------------------------
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void split(){
|
public void split(){
|
||||||
List<String> splitLine = SUT.split(SAMPLE_ROW, lineReader);
|
List<String> splitLine = SUT.split(SAMPLE_ROW, lineReader);
|
||||||
@ -68,16 +69,18 @@ public class CSVRowParserTests {
|
|||||||
Assert.assertEquals("15.87", splitLine.get(2));
|
Assert.assertEquals("15.87", splitLine.get(2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("CSV parser not doing the right thing yet") @Test
|
@Test(enabled = false, groups = { "broken" })
|
||||||
public void splitWithUnclosedQuote(){
|
public void splitWithUnclosedQuote(){
|
||||||
try {
|
try {
|
||||||
when(lineReader.readLine()).thenReturn("");
|
when(lineReader.readLine()).thenReturn("continuation of row above, with comma\",value2");
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Assert.fail();
|
Assert.fail();
|
||||||
}
|
}
|
||||||
List<String> splitLine = SUT.split(UNCLOSED_QUOTED_ROW, lineReader);
|
List<String> splitLine = SUT.split(UNCLOSED_QUOTED_ROW, lineReader);
|
||||||
Assert.assertEquals(1, splitLine.size());
|
Assert.assertEquals(1, splitLine.size());
|
||||||
Assert.assertEquals(UNCLOSED_QUOTED_ROW, splitLine.get(0));
|
Assert.assertEquals(UNCLOSED_QUOTED_ROW, splitLine.get(0));
|
||||||
|
Assert.assertEquals(UNCLOSED_QUOTED_ROW + "\ncontinuation of row above, with comma\"", splitLine.get(0));
|
||||||
|
Assert.assertEquals("value2", splitLine.get(1));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
verify(lineReader, times(1)).readLine();
|
verify(lineReader, times(1)).readLine();
|
||||||
@ -86,7 +89,7 @@ public class CSVRowParserTests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("CSV parser not doing the right thing yet") @Test
|
@Test(enabled = false, groups = { "broken" })
|
||||||
public void splitWithLeadingQuoteWithComma(){
|
public void splitWithLeadingQuoteWithComma(){
|
||||||
List<String> splitLine = SUT.split(LEADING_QUOTE_WITH_COMMA, lineReader);
|
List<String> splitLine = SUT.split(LEADING_QUOTE_WITH_COMMA, lineReader);
|
||||||
Assert.assertEquals(3, splitLine.size());
|
Assert.assertEquals(3, splitLine.size());
|
||||||
@ -95,7 +98,7 @@ public class CSVRowParserTests {
|
|||||||
Assert.assertEquals("value3", splitLine.get(2));
|
Assert.assertEquals("value3", splitLine.get(2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("CSV parser not doing the right thing yet") @Test
|
@Test(enabled = false, groups = { "broken" })
|
||||||
public void splitWithQuoteInsideValue(){
|
public void splitWithQuoteInsideValue(){
|
||||||
List<String> splitLine = SUT.split(QUOTED, lineReader);
|
List<String> splitLine = SUT.split(QUOTED, lineReader);
|
||||||
Assert.assertEquals(3, splitLine.size());
|
Assert.assertEquals(3, splitLine.size());
|
||||||
|
@ -2,10 +2,10 @@ package com.metaweb.gridworks.tests.util;
|
|||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.metaweb.gridworks.util.ParsingUtilities;
|
import com.metaweb.gridworks.util.ParsingUtilities;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user