@@ -71,10 +71,13 @@ impl CsvReader {
7171 let mut valid_commas = self . comma_bitsets [ i] & !inside_quotations;
7272 let mut valid_whitespace = self . whitespace_bitsets [ i] & !inside_quotations;
7373
74+ dbg ! ( valid_commas, valid_whitespace) ;
75+
7476 let mut first_comma = valid_commas. leading_zeros ( ) as usize ;
7577 let mut first_lf = valid_whitespace. leading_zeros ( ) as usize ;
7678
7779 if first_comma == 0 && first_lf == 0 {
80+ // congratulations, we just skipped 64 bytes.
7881 continue ;
7982 }
8083
@@ -168,6 +171,22 @@ mod tests {
168171 Ok ( ( ) )
169172 }
170173
174+ #[ test]
175+ fn read_basic2 ( ) -> Result < ( ) > {
176+ let data = b"aaa,\" bbb\" ,ccc\n " ;
177+
178+ check_line (
179+ data,
180+ vec ! [ vec![
181+ "aaa" . to_string( ) ,
182+ "\" bbb\" " . to_string( ) ,
183+ "ccc" . to_string( ) ,
184+ ] ] ,
185+ ) ?;
186+
187+ Ok ( ( ) )
188+ }
189+
171190 #[ test]
172191 fn read_nested ( ) -> Result < ( ) > {
173192 let data = b"\" aaa,howdy\" ,\" b\" \" bb\" ,\" ccc\" \n " ;
@@ -184,6 +203,15 @@ mod tests {
184203 Ok ( ( ) )
185204 }
186205
206+ // #[test]
207+ // fn read_nested2() -> Result<()> {
208+ // let data = b"aaa,\"b\"\"\"\n";
209+ //
210+ // check_line(data, vec![vec!["aaa".to_string(), "\"b\"\"\"".to_string()]])?;
211+ //
212+ // Ok(())
213+ // }
214+
187215 #[ test]
188216 fn read_newline_field ( ) -> Result < ( ) > {
189217 let data = b"\" aaa,ho\n wdy\" ,\" b\" \" bb\" ,\" ccc\" \n " ;
@@ -216,10 +244,34 @@ mod tests {
216244 Ok ( ( ) )
217245 }
218246
219- /*
247+ #[ test]
248+ fn read_taxi_zone_lookup_header ( ) -> Result < ( ) > {
249+ let data = b"\" LocationID\" ,\" Borough\" ,\" Zone\" ,\" service_zone\" \r \n " ;
250+
251+ check_line (
252+ data,
253+ vec ! [ vec![
254+ r#""LocationID""# . to_string( ) ,
255+ r#""Borough""# . to_string( ) ,
256+ r#""Zone""# . to_string( ) ,
257+ r#""service_zone""# . to_string( ) ,
258+ ] ] ,
259+ ) ?;
260+
261+ Ok ( ( ) )
262+ }
263+
220264 #[ test]
221265 fn read_taxi_zone_lookup ( ) -> Result < ( ) > {
222266 let data = std:: fs:: read ( "taxi_zone_lookup.csv" ) ?;
267+ assert_eq ! (
268+ b"\" LocationID\" ,\" Borough\" ,\" Zone\" ,\" service_zone\" \r \n " ,
269+ & data[ ..46 ]
270+ ) ;
271+
272+ let rows = CsvReader :: new ( & data) . read ( ) ?;
273+ assert_eq ! ( rows. len( ) , 1 ) ;
274+ dbg ! ( & rows) ;
223275
224276 for row in CsvReader :: new ( & data) . read ( ) ? {
225277 let fields = row
@@ -231,9 +283,6 @@ mod tests {
231283 dbg ! ( fields) ;
232284 }
233285
234- assert!(false, "Just to see the dbg");
235-
236286 Ok ( ( ) )
237287 }
238- */
239288}
0 commit comments