/* * Copyright (c) 2008-2009 Yahoo! Inc. All rights reserved. * The copyrights to the contents of this file are licensed under the MIT License (http://www.opensource.org/licenses/mit-license.php) */ package hudson.plugins.plot; import hudson.FilePath; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.logging.Logger; import au.com.bytecode.opencsv.CSVReader; /** * Test a CSV series. * * @author Allen Reese * */ public class CSVReaderTest extends SeriesTestCase { private static transient final Logger LOGGER = Logger.getLogger(CSVReaderTest.class.getName()); private static final String[] files = { "test.csv", }; private static final int[] lines = { 2, }; private static final int[] columns = { 8, }; public void testCSVReader() { // first create a FilePath to load the test Properties file. File workspaceDirFile = new File ("target/test-classes/"); FilePath workspaceRootDir = new FilePath (workspaceDirFile); LOGGER.info("workspace File path: " + workspaceDirFile.getAbsolutePath()); LOGGER.info("workspace Dir path: " + workspaceRootDir.getName()); CSVReader csvreader = null; InputStream in = null; InputStreamReader inputReader = null; FilePath[] seriesFiles = null; try { seriesFiles = workspaceRootDir.list(files[0]); if (seriesFiles != null && seriesFiles.length < 1) { LOGGER.info("No plot data file found: " + workspaceRootDir.getName() + " " + files[0]); assertFalse(true); } LOGGER.info("Loading plot series data from: " + files[0]); in = seriesFiles[0].read(); inputReader = new InputStreamReader(in); csvreader = new CSVReader(inputReader); // save the header line to use it for the plot labels. String[] nextLine; // read each line of the CSV file and add to rawPlotData int lineNum=0; while ((nextLine = csvreader.readNext()) != null) { // for some reason csvreader returns an empty line sometimes. if (nextLine.length==1 && nextLine[0].length()==0) break; if (columns[0]!=nextLine.length) { StringBuilder msg=new StringBuilder(); msg.append("column count is not equal ").append(nextLine.length); msg.append(" expected ").append(columns[0]).append(" at line "); msg.append(lineNum).append(" line: ").append("'"); for (String s : nextLine) { msg.append("\"").append(s).append("\":").append(s.length()).append(","); } msg.append("' length ").append(nextLine.length); assertTrue(msg.toString(),columns[0]==nextLine.length); } ++lineNum; } assertTrue("Line count is not equal " + lineNum + " expected " + lines[0],lines[0]==lineNum); } catch (IOException e) { assertFalse("Exception "+ e,true); } catch (InterruptedException e) { assertFalse("Exception "+ e,true); } finally { try { if (csvreader != null) csvreader.close(); } catch (IOException e) { } try { if (inputReader != null) inputReader.close(); } catch (IOException e) { } try { if (in != null) in.close(); } catch (IOException e) { } } } }