| 368 | |
| 369 | #[test] |
| 370 | fn test_invalid_fields() { |
| 371 | let csv = "a,b\nb,c\na\n"; |
| 372 | let mut decoder = RecordDecoder::new(Reader::new(), 2, false); |
| 373 | let err = decoder.decode(csv.as_bytes(), 4).unwrap_err().to_string(); |
| 374 | |
| 375 | let expected = "Csv error: incorrect number of fields for line 3, expected 2 got 1"; |
| 376 | |
| 377 | assert_eq!(err, expected); |
| 378 | |
| 379 | // Test with initial skip |
| 380 | let mut decoder = RecordDecoder::new(Reader::new(), 2, false); |
| 381 | let (skipped, bytes) = decoder.decode(csv.as_bytes(), 1).unwrap(); |
| 382 | assert_eq!(skipped, 1); |
| 383 | decoder.clear(); |
| 384 | |
| 385 | let remaining = &csv.as_bytes()[bytes..]; |
| 386 | let err = decoder.decode(remaining, 3).unwrap_err().to_string(); |
| 387 | assert_eq!(err, expected); |
| 388 | } |
| 389 | |
| 390 | #[test] |
| 391 | fn test_skip_insufficient_rows() { |