sebb        2004/07/09 16:01:30

  Modified:    src/functions/org/apache/jmeter/functions Tag: rel-2_0
                        FileRowColContainer.java
  Log:
  29934 CSVRead can't handle blank fields
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.5.2.1   +52 -4     
jakarta-jmeter/src/functions/org/apache/jmeter/functions/FileRowColContainer.java
  
  Index: FileRowColContainer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/functions/org/apache/jmeter/functions/FileRowColContainer.java,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -u -r1.5 -r1.5.2.1
  --- FileRowColContainer.java  30 Mar 2004 18:07:07 -0000      1.5
  +++ FileRowColContainer.java  9 Jul 2004 23:01:30 -0000       1.5.2.1
  @@ -161,11 +161,31 @@
       private static ArrayList splitLine(String theLine,String delim)
       {
           ArrayList result = new ArrayList();
  -        StringTokenizer tokener = new StringTokenizer(theLine,delim);
  +        StringTokenizer tokener = new StringTokenizer(theLine,delim,true);
  +        /* the beginning of the line is a "delimiter" so that 
  +           ,a,b,c returns "" "a" "b" "c" */
  +        boolean lastWasDelim = true;
           while(tokener.hasMoreTokens())
           {
               String token = tokener.nextToken();
  -            result.add(token);
  +            if(token.equals(delim))
  +            {
  +              if(lastWasDelim)
  +              {
  +                // two delimiters in a row; add an empty String
  +                result.add("");
  +              }
  +              lastWasDelim = true;
  +            }
  +            else
  +            {
  +              lastWasDelim = false;
  +              result.add(token);
  +            }
  +        }
  +        if (lastWasDelim) // Catch the trailing delimiter
  +        {
  +             result.add("");
           }
           return result;
       }
  @@ -245,6 +265,34 @@
                        assertEquals(1,myRow);
                        assertEquals("b2",f.getColumn(myRow,1));
                        assertEquals("c2",f.getColumn(myRow,2));
  +             }
  +
  +             public void testEmptyCols() throws Exception
  +             {
  +                     FileRowColContainer f = new 
FileRowColContainer("testfiles/testempty.csv");
  +                     assertNotNull(f);
  +                     assertEquals("Expected 4 lines",4,f.fileData.size());
  +
  +                     int myRow=f.nextRow();
  +                     assertEquals(0,myRow);
  +                     assertEquals("",f.getColumn(myRow,0));
  +                     assertEquals("d1",f.getColumn(myRow,3));
  +
  +                     myRow=f.nextRow();
  +                     assertEquals(1,myRow);
  +                     assertEquals("",f.getColumn(myRow,1));
  +                     assertEquals("c2",f.getColumn(myRow,2));
  +
  +                     myRow=f.nextRow();
  +                     assertEquals(2,myRow);
  +                     assertEquals("b3",f.getColumn(myRow,1));
  +                     assertEquals("",f.getColumn(myRow,2));
  +
  +                     myRow=f.nextRow();
  +                     assertEquals(3,myRow);
  +                     assertEquals("b4",f.getColumn(myRow,1));
  +                     assertEquals("c4",f.getColumn(myRow,2));
  +                     assertEquals("",f.getColumn(myRow,3));
                }
       }
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to