@@ -2483,6 +2483,56 @@ s,1,3.14,true
24832483 t .Fatal ("want err not to be nil" )
24842484 }
24852485 })
2486+
2487+ t .Run ("align record to header - header longer" , func (t * testing.T ) {
2488+ csvr := csv .NewReader (strings .NewReader ("A,B,C\n a,b" ))
2489+ csvr .FieldsPerRecord = - 1
2490+ dec , err := NewDecoder (csvr )
2491+ if err != nil {
2492+ t .Fatalf ("want err == nil; got %v" , err )
2493+ }
2494+ dec .AlignRecord = true
2495+
2496+ var data []struct {
2497+ A , B , C string
2498+ }
2499+ if err := dec .Decode (& data ); err != nil {
2500+ t .Fatal ("did not expect decode fail with:" , err )
2501+ }
2502+
2503+ if len (data ) != 1 {
2504+ t .Fatalf ("expected data to be of length 1 got: %d" , len (data ))
2505+ }
2506+
2507+ if data [0 ].A != "a" || data [0 ].B != "b" || data [0 ].C != "" {
2508+ t .Errorf ("expected \" a\" , \" b\" and \" \" ; got: %q, %q and %q" , data [0 ].A , data [0 ].B , data [0 ].C )
2509+ }
2510+ })
2511+
2512+ t .Run ("align record to header - header shorter" , func (t * testing.T ) {
2513+ csvr := csv .NewReader (strings .NewReader ("A,B\n a,b,c" ))
2514+ csvr .FieldsPerRecord = - 1
2515+ dec , err := NewDecoder (csvr )
2516+ if err != nil {
2517+ t .Fatalf ("want err == nil; got %v" , err )
2518+ }
2519+ dec .AlignRecord = true
2520+
2521+ var data []struct {
2522+ A , B string
2523+ }
2524+ if err := dec .Decode (& data ); err != nil {
2525+ t .Fatal ("did not expect decode fail with:" , err )
2526+ }
2527+
2528+ if len (data ) != 1 {
2529+ t .Fatalf ("expected data to be of length 1 got: %d" , len (data ))
2530+ }
2531+
2532+ if data [0 ].A != "a" || data [0 ].B != "b" {
2533+ t .Errorf ("expected \" a\" and \" b\" ; got: %q and %q" , data [0 ].A , data [0 ].B )
2534+ }
2535+ })
24862536}
24872537
24882538func BenchmarkDecode (b * testing.B ) {
0 commit comments