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  }