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