@@ -703,76 +703,6 @@ public void testGetHeaderComment_NoComment3() throws IOException {
703703 }
704704 }
705705
706- @ Test
707- public void testGetRecordThreeBytesRead () throws Exception {
708- final String code = "id,date,val5,val4\n " +
709- "11111111111111,'4017-09-01',きちんと節分近くには咲いてる~,v4\n " +
710- "22222222222222,'4017-01-01',おはよう私の友人~,v4\n " +
711- "33333333333333,'4017-01-01',きる自然の力ってすごいな~,v4\n " ;
712- final CSVFormat format = CSVFormat .Builder .create ()
713- .setDelimiter (',' )
714- .setQuote ('\'' )
715- .get ();
716- try (CSVParser parser = CSVParser .builder ().setReader (new StringReader (code )).setFormat (format ).setCharset (UTF_8 ).setEnableByteTracking (true ).get () ) {
717- CSVRecord record = new CSVRecord (parser , null , null , 1L , 0L , 0L );
718-
719- assertEquals (0 , parser .getRecordNumber ());
720- assertNotNull (record = parser .nextRecord ());
721- assertEquals (1 , record .getRecordNumber ());
722- assertEquals (code .indexOf ('i' ), record .getCharacterPosition ());
723- assertEquals (record .getBytePosition (), record .getCharacterPosition ());
724-
725- assertNotNull (record = parser .nextRecord ());
726- assertEquals (2 , record .getRecordNumber ());
727- assertEquals (code .indexOf ('1' ), record .getCharacterPosition ());
728- assertEquals (record .getBytePosition (), record .getCharacterPosition ());
729-
730- assertNotNull (record = parser .nextRecord ());
731- assertEquals (3 , record .getRecordNumber ());
732- assertEquals (code .indexOf ('2' ), record .getCharacterPosition ());
733- assertEquals (record .getBytePosition (), 95 );
734-
735- assertNotNull (record = parser .nextRecord ());
736- assertEquals (4 , record .getRecordNumber ());
737- assertEquals (code .indexOf ('3' ), record .getCharacterPosition ());
738- assertEquals (record .getBytePosition (), 154 );
739- }
740- }
741-
742- @ Test
743- public void testGetRecordFourBytesRead () throws Exception {
744- final String code = "id,a,b,c\n " +
745- "1,😊,🤔,😂\n " +
746- "2,😊,🤔,😂\n " +
747- "3,😊,🤔,😂\n " ;
748- final CSVFormat format = CSVFormat .Builder .create ()
749- .setDelimiter (',' )
750- .setQuote ('\'' )
751- .get ();
752- try (CSVParser parser = CSVParser .builder ().setReader (new StringReader (code )).setFormat (format ).setCharset (UTF_8 ).setEnableByteTracking (true ).get ()) {
753- CSVRecord record = new CSVRecord (parser , null , null , 1L , 0L , 0L );
754-
755- assertEquals (0 , parser .getRecordNumber ());
756- assertNotNull (record = parser .nextRecord ());
757- assertEquals (1 , record .getRecordNumber ());
758- assertEquals (code .indexOf ('i' ), record .getCharacterPosition ());
759- assertEquals (record .getBytePosition (), record .getCharacterPosition ());
760-
761- assertNotNull (record = parser .nextRecord ());
762- assertEquals (2 , record .getRecordNumber ());
763- assertEquals (code .indexOf ('1' ), record .getCharacterPosition ());
764- assertEquals (record .getBytePosition (), record .getCharacterPosition ());
765- assertNotNull (record = parser .nextRecord ());
766- assertEquals (3 , record .getRecordNumber ());
767- assertEquals (code .indexOf ('2' ), record .getCharacterPosition ());
768- assertEquals (record .getBytePosition (), 26 );
769- assertNotNull (record = parser .nextRecord ());
770- assertEquals (4 , record .getRecordNumber ());
771- assertEquals (code .indexOf ('3' ), record .getCharacterPosition ());
772- assertEquals (record .getBytePosition (), 43 );
773- }
774- }
775-
776706 @ Test
777707 public void testGetHeaderMap () throws Exception {
778708 try (CSVParser parser = CSVParser .parse ("a,b,c\n 1,2,3\n x,y,z" , CSVFormat .DEFAULT .withHeader ("A" , "B" , "C" ))) {
@@ -878,6 +808,40 @@ public void testGetOneLineOneParser() throws IOException {
878808 }
879809 }
880810
811+ @ Test
812+ public void testGetRecordFourBytesRead () throws Exception {
813+ final String code = "id,a,b,c\n " +
814+ "1,😊,🤔,😂\n " +
815+ "2,😊,🤔,😂\n " +
816+ "3,😊,🤔,😂\n " ;
817+ final CSVFormat format = CSVFormat .Builder .create ()
818+ .setDelimiter (',' )
819+ .setQuote ('\'' )
820+ .get ();
821+ try (CSVParser parser = CSVParser .builder ().setReader (new StringReader (code )).setFormat (format ).setCharset (UTF_8 ).setEnableByteTracking (true ).get ()) {
822+ CSVRecord record = new CSVRecord (parser , null , null , 1L , 0L , 0L );
823+
824+ assertEquals (0 , parser .getRecordNumber ());
825+ assertNotNull (record = parser .nextRecord ());
826+ assertEquals (1 , record .getRecordNumber ());
827+ assertEquals (code .indexOf ('i' ), record .getCharacterPosition ());
828+ assertEquals (record .getBytePosition (), record .getCharacterPosition ());
829+
830+ assertNotNull (record = parser .nextRecord ());
831+ assertEquals (2 , record .getRecordNumber ());
832+ assertEquals (code .indexOf ('1' ), record .getCharacterPosition ());
833+ assertEquals (record .getBytePosition (), record .getCharacterPosition ());
834+ assertNotNull (record = parser .nextRecord ());
835+ assertEquals (3 , record .getRecordNumber ());
836+ assertEquals (code .indexOf ('2' ), record .getCharacterPosition ());
837+ assertEquals (record .getBytePosition (), 26 );
838+ assertNotNull (record = parser .nextRecord ());
839+ assertEquals (4 , record .getRecordNumber ());
840+ assertEquals (code .indexOf ('3' ), record .getCharacterPosition ());
841+ assertEquals (record .getBytePosition (), 43 );
842+ }
843+ }
844+
881845 @ Test
882846 public void testGetRecordNumberWithCR () throws Exception {
883847 validateRecordNumbers (String .valueOf (CR ));
@@ -923,6 +887,42 @@ public void testGetRecordsFromBrokenInputStream() throws IOException {
923887
924888 }
925889
890+ @ Test
891+ public void testGetRecordThreeBytesRead () throws Exception {
892+ final String code = "id,date,val5,val4\n " +
893+ "11111111111111,'4017-09-01',きちんと節分近くには咲いてる~,v4\n " +
894+ "22222222222222,'4017-01-01',おはよう私の友人~,v4\n " +
895+ "33333333333333,'4017-01-01',きる自然の力ってすごいな~,v4\n " ;
896+ final CSVFormat format = CSVFormat .Builder .create ()
897+ .setDelimiter (',' )
898+ .setQuote ('\'' )
899+ .get ();
900+ try (CSVParser parser = CSVParser .builder ().setReader (new StringReader (code )).setFormat (format ).setCharset (UTF_8 ).setEnableByteTracking (true ).get () ) {
901+ CSVRecord record = new CSVRecord (parser , null , null , 1L , 0L , 0L );
902+
903+ assertEquals (0 , parser .getRecordNumber ());
904+ assertNotNull (record = parser .nextRecord ());
905+ assertEquals (1 , record .getRecordNumber ());
906+ assertEquals (code .indexOf ('i' ), record .getCharacterPosition ());
907+ assertEquals (record .getBytePosition (), record .getCharacterPosition ());
908+
909+ assertNotNull (record = parser .nextRecord ());
910+ assertEquals (2 , record .getRecordNumber ());
911+ assertEquals (code .indexOf ('1' ), record .getCharacterPosition ());
912+ assertEquals (record .getBytePosition (), record .getCharacterPosition ());
913+
914+ assertNotNull (record = parser .nextRecord ());
915+ assertEquals (3 , record .getRecordNumber ());
916+ assertEquals (code .indexOf ('2' ), record .getCharacterPosition ());
917+ assertEquals (record .getBytePosition (), 95 );
918+
919+ assertNotNull (record = parser .nextRecord ());
920+ assertEquals (4 , record .getRecordNumber ());
921+ assertEquals (code .indexOf ('3' ), record .getCharacterPosition ());
922+ assertEquals (record .getBytePosition (), 154 );
923+ }
924+ }
925+
926926 @ Test
927927 public void testGetRecordWithMultiLineValues () throws Exception {
928928 try (CSVParser parser = CSVParser .parse ("\" a\r \n 1\" ,\" a\r \n 2\" " + CRLF + "\" b\r \n 1\" ,\" b\r \n 2\" " + CRLF + "\" c\r \n 1\" ,\" c\r \n 2\" " ,
0 commit comments