From: <zep...@us...> - 2006-10-24 17:33:30
|
Revision: 117 http://svn.sourceforge.net/pzfilereader/?rev=117&view=rev Author: zepernick Date: 2006-10-24 10:33:24 -0700 (Tue, 24 Oct 2006) Log Message: ----------- expanded upon the tests. Made a little more generic. There is an array of delimiters and qualifiers which we can fill in for whatever we want to test. Implemented Benoit's formating suggestions. Modified Paths: -------------- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsSplitLineTest.java Added Paths: ----------- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/utilities/UnitTestUtils.java Modified: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsSplitLineTest.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsSplitLineTest.java 2006-10-24 17:33:17 UTC (rev 116) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/parserutils/ParserUtilsSplitLineTest.java 2006-10-24 17:33:24 UTC (rev 117) @@ -3,6 +3,7 @@ import java.util.List; import net.sf.pzfilereader.util.ParserUtils; +import net.sf.pzfilereader.utilities.UnitTestUtils; import junit.framework.TestCase; /** @@ -10,40 +11,119 @@ * a List of Strings. Each element of the list represents a column created * by the parser from the delimited String. * - * @author zepernick + * @author Paul Zepernick */ public class ParserUtilsSplitLineTest extends TestCase{ - final String[] delimitedDataNoBreaks = {"Column 1","Column 2", "Column 3", "Column 4", "Column 5"}; - final String[] delimitedDataWithBreaks = {"Column 1","Column 2", "Column 3", "Column 4", "Column 5"}; + private static final String[] DELIMITED_DATA_NO_BREAKS = {"Column 1","Column 2", "Column 3", "Column 4", "Column 5"}; + private static final String[] DELIMITED_DATA_WITH_BREAKS = {"Column 1 \r\n\r\n Test After Break \r\n Another Break", + "Column 2", + "Column 3 \r\n\r\n Test After Break", + "Column 4", + "Column 5 \r\n\r\n Test After Break\r\n Another Break"}; + //TODO think of a situation that actually breaks the parse. This still works because of the way it is coded + //to handle the excel CSV. Excel CSV has some elements qualified and others not + private static final String DELIMITED_BAD_DATA = "\"column 1\",\"column 2 ,\"column3\""; + //0 = delimiter + //1 = qualifier + private static final String[][] DELIM_QUAL_PAIR = { + {",","\""}, + {"\t","\""}, + {"|","\""}, + {"_","\""}, + {",",null}, + {"|",null}, + {"\t",null}, + }; + /** - * Test CSV without any line breaks + * Test without any line breaks * */ - public void testCSVNoLineBreaks(){ - - final String delimiter = ","; - final String qualifier = "\""; - final StringBuffer txtToParse = new StringBuffer(); - for (int i = 0; i < delimitedDataNoBreaks.length; i++){ - if (i > 0){ - txtToParse.append(delimiter); + public void testNoLineBreaks(){ + //loop down all delimiter qualifier pairs to test + for (int i = 0; i < DELIM_QUAL_PAIR.length; i++){ + final String d = DELIM_QUAL_PAIR[i][0]; + final String q = DELIM_QUAL_PAIR[i][1]; + + final String txtToParse; + if (q == null){ + txtToParse = UnitTestUtils.buildDelimString(DELIMITED_DATA_NO_BREAKS, + d.charAt(0)); + }else{ + txtToParse = UnitTestUtils.buildDelimString(DELIMITED_DATA_NO_BREAKS, + d.charAt(0), + q.charAt(0)); } - txtToParse.append(qualifier + delimitedDataNoBreaks[i] + qualifier); + + final List splitLineResults = ParserUtils.splitLine(txtToParse.toString(), + d, q); + + + //check to make sure we have the same amount of elements which were expected + assertEquals("Did Not Get Amount Of Elements Expected (d = " + d + " q = " + q + ")", + DELIMITED_DATA_NO_BREAKS.length, splitLineResults.size()); + + //loop through each value and compare what came back + for (int j = 0 ; j < DELIMITED_DATA_NO_BREAKS.length; j ++){ + assertEquals("Data Element Value Does Not Match (d = " + d + " q = " + q + ")", + DELIMITED_DATA_NO_BREAKS[j], (String)splitLineResults.get(j)); + } } - List splitLineResults = ParserUtils.splitLine(txtToParse.toString(), delimiter, qualifier); + } + + /** + * Test without any line breaks + * + */ + public void testLineBreaks(){ + //loop down all delimiter qualifier pairs to test + for (int i = 0; i < DELIM_QUAL_PAIR.length; i++){ + final String d = DELIM_QUAL_PAIR[i][0]; + final String q = DELIM_QUAL_PAIR[i][1]; + + final String txtToParse; + if (DELIM_QUAL_PAIR[i][1] == null){ + txtToParse = UnitTestUtils.buildDelimString(DELIMITED_DATA_WITH_BREAKS, + DELIM_QUAL_PAIR[i][0].charAt(0)); + }else{ + txtToParse = UnitTestUtils.buildDelimString(DELIMITED_DATA_WITH_BREAKS, + DELIM_QUAL_PAIR[i][0].charAt(0), + DELIM_QUAL_PAIR[i][1].charAt(0)); + } - //check to make sure we have the same amount of elements which were expected - assertEquals(delimitedDataNoBreaks.length, splitLineResults.size()); - - //loop through each value and compare what came back - for (int i = 0 ; i < delimitedDataNoBreaks.length; i ++){ - assertEquals(delimitedDataNoBreaks[i], (String)splitLineResults.get(i)); + final List splitLineResults = ParserUtils.splitLine(txtToParse.toString(), + DELIM_QUAL_PAIR[i][0], DELIM_QUAL_PAIR[i][1]); + + + //check to make sure we have the same amount of elements which were expected + assertEquals("Did Not Get Amount Of Elements Expected (d = " + d + " q = " + q + ")", + DELIMITED_DATA_WITH_BREAKS.length, splitLineResults.size()); + + //loop through each value and compare what came back + for (int j = 0 ; j < DELIMITED_DATA_WITH_BREAKS.length; j ++){ + assertEquals("Data Element Value Does Not Match (d = " + d + " q = " + q + ")", + DELIMITED_DATA_WITH_BREAKS[j], (String)splitLineResults.get(j)); + } + } + } + + /** + * Test to make sure we get the correct amount of elements for malformed data + * + * @param args + */ + public void testMalformedData(){ + final List splitLineResults = ParserUtils.splitLine(DELIMITED_BAD_DATA, + ",", "\""); + assertEquals("Expecting 2 Data Elements From The Malformed Data", + 2, splitLineResults.size()); + } public static void main(final String[] args) { Added: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/utilities/UnitTestUtils.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/utilities/UnitTestUtils.java (rev 0) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/utilities/UnitTestUtils.java 2006-10-24 17:33:24 UTC (rev 117) @@ -0,0 +1,50 @@ +package net.sf.pzfilereader.utilities; + +/** + * Static utility methods for Junit tests + * + * @author Paul Zepernick + */ +public class UnitTestUtils { + + /** + * Builds a delimited qualified string containing the elements passed in + * + * @param elements + * Elements To Include In Delimited String + * @param delimiter + * @param qualifier + * @return String + */ + public static String buildDelimString(final String[] elements, final char delimiter, final char qualifier){ + final StringBuffer sb = new StringBuffer(); + for (int i = 0; i < elements.length; i++){ + if (i > 0){ + sb.append(delimiter); + } + sb.append(qualifier).append(elements[i]).append(qualifier); + } + + + return sb.toString(); + } + + /** Builds a delimited string containing the elements passed in + * + * @param elements + * Elements To Include In Delimited String + * @param delimiter + * @return String + */ + public static String buildDelimString(final String[] elements, final char delimiter){ + final StringBuffer sb = new StringBuffer(); + for (int i = 0; i < elements.length; i++){ + if (i > 0){ + sb.append(delimiter); + } + } + + + return sb.toString(); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-11-25 17:22:32
|
Revision: 198 http://svn.sourceforge.net/pzfilereader/?rev=198&view=rev Author: zepernick Date: 2006-11-25 09:22:30 -0800 (Sat, 25 Nov 2006) Log Message: ----------- converted to idataset Modified Paths: -------------- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFile.java trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimited.java Modified: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFile.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFile.java 2006-11-25 17:21:43 UTC (rev 197) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFile.java 2006-11-25 17:22:30 UTC (rev 198) @@ -8,7 +8,6 @@ import java.io.File; import net.sf.pzfilereader.DataError; -import net.sf.pzfilereader.DataSet; import net.sf.pzfilereader.DefaultPZParserFactory; import net.sf.pzfilereader.IDataSet; import net.sf.pzfilereader.PZParser; @@ -23,14 +22,14 @@ */ public class DelimitedColumnNamesInFile { public static void main(final String[] args) throws Exception { - DataSet ds = null; String[] colNames = null; OrderBy orderby = null; // delimited by a comma // text qualified by double quotes // ignore first record - ds = new DataSet(new File("net/sf/pzfilereader/columninfile/PEOPLE-CommaDelimitedWithQualifier.txt"), ",", "\"", false); + final PZParser pzparser = DefaultPZParserFactory.getInstance().newDelimitedParser(new File("net/sf/pzfilereader/columninfile/PEOPLE-CommaDelimitedWithQualifier.txt"), ',', '\"'); + final IDataSet ds = pzparser.parse(); // re order the data set by last name orderby = new OrderBy(); @@ -56,9 +55,6 @@ } } - // clear out the DataSet object for the JVM to collect - ds.freeMemory(); - } // used for Junit test Modified: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimited.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimited.java 2006-11-25 17:21:43 UTC (rev 197) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimited.java 2006-11-25 17:22:30 UTC (rev 198) @@ -8,7 +8,6 @@ import java.io.File; import net.sf.pzfilereader.DataError; -import net.sf.pzfilereader.DataSet; import net.sf.pzfilereader.DefaultPZParserFactory; import net.sf.pzfilereader.IDataSet; import net.sf.pzfilereader.PZParser; @@ -21,7 +20,6 @@ */ public class TabDelimited { public static void main(final String[] args) throws Exception { - DataSet ds = null; String[] colNames = null; File tmpFile = null; @@ -29,9 +27,8 @@ // text qualified by double quotes // ignore first record tmpFile = new File("net/sf/pzfilereader/delim/tab/PEOPLE-TabDelimitedWithQualifier.txt"); - System.out.println("tmp file path: " + tmpFile); - // ds = new DataSet(new FileInputStream(tmpFile),"\t","",true); - ds = new DataSet(tmpFile, "\t", "\"", true); + final PZParser pzparser = DefaultPZParserFactory.getInstance().newDelimitedParser(tmpFile, '\t', '\"'); + final IDataSet ds = pzparser.parse(); // re order the data set by last name /* @@ -58,9 +55,6 @@ } } - // clear out the DataSet object for the JVM to collect - ds.freeMemory(); - } // used for Junit test This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zep...@us...> - 2006-12-15 13:23:26
|
Revision: 218 http://svn.sourceforge.net/pzfilereader/?rev=218&view=rev Author: zepernick Date: 2006-12-15 05:23:24 -0800 (Fri, 15 Dec 2006) Log Message: ----------- removed reference to getRows() Modified Paths: -------------- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFileTest.java trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimitedTest.java Modified: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFileTest.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFileTest.java 2006-12-15 13:17:33 UTC (rev 217) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/columninfile/DelimitedColumnNamesInFileTest.java 2006-12-15 13:23:24 UTC (rev 218) @@ -4,7 +4,7 @@ * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ -package net.sf.pzfilereader.columninfile; +package net.sf.pzfilereader.columninfile; import junit.framework.TestCase; import net.sf.pzfilereader.DataSet; @@ -49,7 +49,7 @@ ds = testDelimted.getDsForTest(); // check that we parsed in the right amount of rows - assertEquals(6, ds.getRows().size()); + assertEquals(6, ds.getRowCount()); } catch (final Exception ex) { ex.printStackTrace(); Modified: trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimitedTest.java =================================================================== --- trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimitedTest.java 2006-12-15 13:17:33 UTC (rev 217) +++ trunk/PZFileReader/src/test/java/net/sf/pzfilereader/delim/tab/TabDelimitedTest.java 2006-12-15 13:23:24 UTC (rev 218) @@ -16,7 +16,7 @@ * Preferences - Java - Code Style - Code Templates */ public class TabDelimitedTest extends TestCase { - public TabDelimitedTest(final String name) { + public TabDelimitedTest(final String name) { super(name); } @@ -46,10 +46,10 @@ try { final TabDelimited testTab = new TabDelimited(); - ds = testTab.getDsForTest(); + ds = testTab.getDsForTest(); // check that we parsed in the right amount of rows - assertEquals(2, ds.getRows().size()); + assertEquals(2, ds.getRowCount()); } catch (final Exception ex) { ex.printStackTrace(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |