github.com/attic-labs/noms@v0.0.0-20210827224422-e5fa29d95e8b/samples/go/csv/csv_reader_test.go (about) 1 // Copyright 2016 Attic Labs, Inc. All rights reserved. 2 // Licensed under the Apache License, version 2.0: 3 // http://www.apache.org/licenses/LICENSE-2.0 4 5 package csv 6 7 import ( 8 "bytes" 9 "strings" 10 "testing" 11 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestCR(t *testing.T) { 16 testFile := []byte("a,b,c\r1,2,3\r") 17 delimiter, err := StringToRune(",") 18 19 r := NewCSVReader(bytes.NewReader(testFile), delimiter) 20 lines, err := r.ReadAll() 21 22 assert.NoError(t, err, "An error occurred while reading the data: %v", err) 23 if len(lines) != 2 { 24 t.Errorf("Wrong number of lines. Expected 2, got %d", len(lines)) 25 } 26 } 27 28 func TestLF(t *testing.T) { 29 testFile := []byte("a,b,c\n1,2,3\n") 30 delimiter, err := StringToRune(",") 31 32 r := NewCSVReader(bytes.NewReader(testFile), delimiter) 33 lines, err := r.ReadAll() 34 35 assert.NoError(t, err, "An error occurred while reading the data: %v", err) 36 if len(lines) != 2 { 37 t.Errorf("Wrong number of lines. Expected 2, got %d", len(lines)) 38 } 39 } 40 41 func TestCRLF(t *testing.T) { 42 testFile := []byte("a,b,c\r\n1,2,3\r\n") 43 delimiter, err := StringToRune(",") 44 45 r := NewCSVReader(bytes.NewReader(testFile), delimiter) 46 lines, err := r.ReadAll() 47 48 assert.NoError(t, err, "An error occurred while reading the data: %v", err) 49 if len(lines) != 2 { 50 t.Errorf("Wrong number of lines. Expected 2, got %d", len(lines)) 51 } 52 } 53 54 func TestCRInQuote(t *testing.T) { 55 testFile := []byte("a,\"foo,\rbar\",c\r1,\"2\r\n2\",3\r") 56 delimiter, err := StringToRune(",") 57 58 r := NewCSVReader(bytes.NewReader(testFile), delimiter) 59 lines, err := r.ReadAll() 60 61 assert.NoError(t, err, "An error occurred while reading the data: %v", err) 62 if len(lines) != 2 { 63 t.Errorf("Wrong number of lines. Expected 2, got %d", len(lines)) 64 } 65 if strings.Contains(lines[1][1], "\n\n") { 66 t.Error("The CRLF was converted to a LFLF") 67 } 68 } 69 70 func TestCRLFEndOfBufferLength(t *testing.T) { 71 testFile := make([]byte, 4096*2, 4096*2) 72 testFile[4095] = 13 // \r byte 73 testFile[4096] = 10 // \n byte 74 delimiter, err := StringToRune(",") 75 76 r := NewCSVReader(bytes.NewReader(testFile), delimiter) 77 lines, err := r.ReadAll() 78 79 assert.NoError(t, err, "An error occurred while reading the data: %v", err) 80 if len(lines) != 2 { 81 t.Errorf("Wrong number of lines. Expected 2, got %d", len(lines)) 82 } 83 }