Changes needed to get FixedWidthImporter test to pass

git-svn-id: http://google-refine.googlecode.com/svn/trunk@2274 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
Tom Morris 2011-10-05 23:49:14 +00:00
parent e064dcce3e
commit 850e147779
3 changed files with 56 additions and 16 deletions

View File

@ -127,4 +127,15 @@ public class RefineTest {
e.printStackTrace(); e.printStackTrace();
} }
} }
// Works for both int, String, and JSON arrays
static public void verifyGetArrayOption(String name, JSONObject options){
verify(options, times(1)).has(name);
try {
verify(options, times(1)).getJSONArray(name);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }

View File

@ -7,6 +7,7 @@ import static org.mockito.Mockito.verify;
import java.io.StringReader; import java.io.StringReader;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterMethod;
@ -53,12 +54,19 @@ public class FixedWidthImporterTests extends ImporterTest {
JSONUtilities.append(columnWidths, 6); JSONUtilities.append(columnWidths, 6);
JSONUtilities.append(columnWidths, 9); JSONUtilities.append(columnWidths, 9);
JSONUtilities.append(columnWidths, 5); JSONUtilities.append(columnWidths, 5);
whenGetArrayOption("columnWidths", options, columnWidths); whenGetArrayOption("columnWidths", options, columnWidths);
JSONArray columnNames = new JSONArray();
JSONUtilities.append(columnNames, "Col 1");
JSONUtilities.append(columnNames, "Col 2");
JSONUtilities.append(columnNames, "Col 3");
whenGetArrayOption("columnNames", options, columnNames);
whenGetIntegerOption("ignoreLines", options, 0); whenGetIntegerOption("ignoreLines", options, 0);
whenGetIntegerOption("headerLines", options, 0); whenGetIntegerOption("headerLines", options, 0);
whenGetIntegerOption("skipDataLines", options, 0); whenGetIntegerOption("skipDataLines", options, 0);
whenGetIntegerOption("limit", options, -1); whenGetIntegerOption("limit", options, -1);
whenGetBooleanOption("storeBlankCellsAsNulls",options,true);
try { try {
parseOneFile(SUT, reader); parseOneFile(SUT, reader);
@ -66,20 +74,27 @@ public class FixedWidthImporterTests extends ImporterTest {
Assert.fail(e.getMessage()); Assert.fail(e.getMessage());
} }
Assert.assertEquals(project.rows.size(), 2); Assert.assertEquals(project.rows.size(), 3); // Column names count as a row?
Assert.assertEquals(project.rows.get(0).cells.size(), 3); // TODO: each row has a null cell at the beginning because 1-based indexes are used
Assert.assertEquals((String)project.rows.get(0).cells.get(0).value, "NDB_No"); Assert.assertEquals(project.rows.get(1).cells.size(), 4);
Assert.assertEquals((String)project.rows.get(0).cells.get(1).value, "Shrt_Desc"); Assert.assertEquals((String)project.rows.get(1).getCellValue(1), "NDB_No");
Assert.assertEquals((String)project.rows.get(0).cells.get(2).value, "Water"); Assert.assertEquals((String)project.rows.get(1).getCellValue(2), "Shrt_Desc");
Assert.assertEquals(project.rows.get(1).cells.size(), 3); Assert.assertEquals((String)project.rows.get(1).getCellValue(3), "Water");
Assert.assertEquals((String)project.rows.get(1).cells.get(0).value, "TooSho"); Assert.assertEquals(project.rows.get(2).cells.size(), 4);
Assert.assertEquals((String)project.rows.get(1).cells.get(1).value, "rt"); Assert.assertEquals((String)project.rows.get(2).getCellValue(1), "TooSho");
Assert.assertNull(project.rows.get(1).cells.get(2)); Assert.assertEquals((String)project.rows.get(2).getCellValue(2), "rt");
Assert.assertNull(project.rows.get(2).getCellValue(3));
JSONUtilities.getIntArray(verify(options, times(1)), "columnWidths"); verifyGetArrayOption("columnNames", options);
verifyGetOption("ignore", options); try {
verifyGetOption("header-lines", options); verify(options, times(1)).getJSONArray("columnWidths");
verifyGetOption("limit", options); verify(options, times(1)).getInt("ignoreLines");
verifyGetOption("skip", options); verify(options, times(1)).getInt("headerLines");
verify(options, times(1)).getInt("skipDataLines");
verify(options, times(1)).getInt("limit");
verify(options, times(1)).getBoolean("storeBlankCellsAsNulls");
} catch (JSONException e) {
Assert.fail("JSON exception",e);
}
} }
} }

View File

@ -2,13 +2,16 @@ package com.google.refine.tests.importers;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader; import java.io.Reader;
import java.util.ArrayList; import java.util.ArrayList;
import org.json.JSONObject; import org.json.JSONObject;
import com.google.refine.ProjectMetadata; import com.google.refine.ProjectMetadata;
import com.google.refine.RefineServlet;
import com.google.refine.importers.ImportingParserBase; import com.google.refine.importers.ImportingParserBase;
import com.google.refine.importers.tree.ImportColumnGroup; import com.google.refine.importers.tree.ImportColumnGroup;
import com.google.refine.importers.tree.TreeImportingParserBase; import com.google.refine.importers.tree.TreeImportingParserBase;
@ -16,6 +19,7 @@ import com.google.refine.importers.tree.XmlImportUtilities;
import com.google.refine.importing.ImportingJob; import com.google.refine.importing.ImportingJob;
import com.google.refine.importing.ImportingManager; import com.google.refine.importing.ImportingManager;
import com.google.refine.model.Project; import com.google.refine.model.Project;
import com.google.refine.tests.RefineServletStub;
import com.google.refine.tests.RefineTest; import com.google.refine.tests.RefineTest;
abstract class ImporterTest extends RefineTest { abstract class ImporterTest extends RefineTest {
@ -23,11 +27,15 @@ abstract class ImporterTest extends RefineTest {
protected Project project; protected Project project;
protected ProjectMetadata metadata; protected ProjectMetadata metadata;
protected ImportingJob job; protected ImportingJob job;
protected RefineServlet servlet;
protected JSONObject options; protected JSONObject options;
public void SetUp(){ public void SetUp(){
//FIXME - should we try and use mock(Project.class); - seems unnecessary complexity //FIXME - should we try and use mock(Project.class); - seems unnecessary complexity
servlet = new RefineServletStub();
ImportingManager.initialize(servlet);
project = new Project(); project = new Project();
metadata = new ProjectMetadata(); metadata = new ProjectMetadata();
job = ImportingManager.createJob(); job = ImportingManager.createJob();
@ -92,12 +100,13 @@ abstract class ImporterTest extends RefineTest {
protected void parseOneFile(TreeImportingParserBase parser, InputStream inputStream) { protected void parseOneFile(TreeImportingParserBase parser, InputStream inputStream) {
ImportColumnGroup rootColumnGroup = new ImportColumnGroup(); ImportColumnGroup rootColumnGroup = new ImportColumnGroup();
Reader reader = new InputStreamReader(inputStream);
parser.parseOneFile( parser.parseOneFile(
project, project,
metadata, metadata,
job, job,
"file-source", "file-source",
inputStream, reader,
rootColumnGroup, rootColumnGroup,
-1, -1,
options, options,
@ -105,5 +114,10 @@ abstract class ImporterTest extends RefineTest {
); );
XmlImportUtilities.createColumnsFromImport(project, rootColumnGroup); XmlImportUtilities.createColumnsFromImport(project, rootColumnGroup);
project.columnModel.update(); project.columnModel.update();
try {
reader.close();
} catch (IOException e) {
//ignore errors on close
}
} }
} }