@@ -701,6 +701,84 @@ public void testGetHeaderComment_NoComment3() throws IOException {
701701 }
702702 }
703703
704+ @ Test
705+ public void testGetRecordThreeBytesRead () throws Exception {
706+ String code = "id,date,val5,val4\n " +
707+ "11111111111111,'4017-09-01',きちんと節分近くには咲いてる~,v4\n " +
708+ "22222222222222,'4017-01-01',おはよう私の友人~,v4\n " +
709+ "33333333333333,'4017-01-01',きる自然の力ってすごいな~,v4\n " ;
710+ // String code = "'1',4";
711+ // final CSVFormat format = CSVFormat.newFormat(',').withQuote('\'');
712+ final CSVFormat format = CSVFormat .Builder .create ()
713+ .setDelimiter (',' )
714+ .setQuote ('\'' )
715+ .build ();
716+ // CSVParser parser = new CSVParser(new StringReader(code), format, 0L, 1L, "UTF-8");
717+ CSVParser parser = format .parse (new StringReader (code ), 0L , 1L , "UTF-8" );
718+
719+ CSVRecord record = new CSVRecord (parser , null , null , 1L , 0L , 0L );
720+ assertEquals (0 , parser .getRecordNumber ());
721+ assertNotNull (record = parser .nextRecord ());
722+ assertEquals (1 , record .getRecordNumber ());
723+ assertEquals (code .indexOf ('i' ), record .getCharacterPosition ());
724+ assertEquals (record .getCharacterByte (), record .getCharacterPosition ());
725+
726+ assertNotNull (record = parser .nextRecord ());
727+ assertEquals (2 , record .getRecordNumber ());
728+ assertEquals (code .indexOf ('1' ), record .getCharacterPosition ());
729+ assertEquals (record .getCharacterByte (), record .getCharacterPosition ());
730+
731+ assertNotNull (record = parser .nextRecord ());
732+ assertEquals (3 , record .getRecordNumber ());
733+ assertEquals (code .indexOf ('2' ), record .getCharacterPosition ());
734+ assertEquals (record .getCharacterByte (), 95 );
735+
736+ assertNotNull (record = parser .nextRecord ());
737+ assertEquals (4 , record .getRecordNumber ());
738+ assertEquals (code .indexOf ('3' ), record .getCharacterPosition ());
739+ assertEquals (record .getCharacterByte (), 154 );
740+
741+ parser .close ();
742+
743+ }
744+
745+ @ Test
746+ public void testGetRecordFourBytesRead () throws Exception {
747+ String code = "id,a,b,c\n " +
748+ "1,😊,🤔,😂\n " +
749+ "2,😊,🤔,😂\n " +
750+ "3,😊,🤔,😂\n " ;
751+ // final CSVFormat format = CSVFormat.newFormat(',').withQuote('\'');
752+ final CSVFormat format = CSVFormat .Builder .create ()
753+ .setDelimiter (',' )
754+ .setQuote ('\'' )
755+ .build ();
756+
757+ // CSVParser parser = new CSVParser(new StringReader(code), format, 0L, 1L, "UTF-8");
758+ CSVParser parser = format .parse (new StringReader (code ), 0L , 1L , "UTF-8" );
759+
760+ CSVRecord record ;
761+ assertEquals (0 , parser .getRecordNumber ());
762+ assertNotNull (record = parser .nextRecord ());
763+ assertEquals (1 , record .getRecordNumber ());
764+ assertEquals (code .indexOf ('i' ), record .getCharacterPosition ());
765+ assertEquals (record .getCharacterByte (), record .getCharacterPosition ());
766+
767+ assertNotNull (record = parser .nextRecord ());
768+ assertEquals (2 , record .getRecordNumber ());
769+ assertEquals (code .indexOf ('1' ), record .getCharacterPosition ());
770+ assertEquals (record .getCharacterByte (), record .getCharacterPosition ());
771+ assertNotNull (record = parser .nextRecord ());
772+ assertEquals (3 , record .getRecordNumber ());
773+ assertEquals (code .indexOf ('2' ), record .getCharacterPosition ());
774+ assertEquals (record .getCharacterByte (), 26 );
775+ assertNotNull (record = parser .nextRecord ());
776+ assertEquals (4 , record .getRecordNumber ());
777+ assertEquals (code .indexOf ('3' ), record .getCharacterPosition ());
778+ assertEquals (record .getCharacterByte (), 43 );
779+ parser .close ();
780+ }
781+
704782 @ Test
705783 public void testGetHeaderMap () throws Exception {
706784 try (final CSVParser parser = CSVParser .parse ("a,b,c\n 1,2,3\n x,y,z" , CSVFormat .DEFAULT .withHeader ("A" , "B" , "C" ))) {
0 commit comments