...

Source file src/github.com/jedib0t/go-pretty/v6/table/render_csv_test.go

Documentation: github.com/jedib0t/go-pretty/v6/table

     1  package table
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestTable_RenderCSV(t *testing.T) {
    11  	tw := NewWriter()
    12  	tw.AppendHeader(testHeader)
    13  	tw.AppendRows(testRows)
    14  	tw.AppendRow(testRowMultiLine)
    15  	tw.AppendRow(testRowTabs)
    16  	tw.AppendFooter(testFooter)
    17  	tw.SetCaption(testCaption)
    18  	tw.SetTitle(testTitle1)
    19  
    20  	compareOutput(t, tw.RenderCSV(), `Game of Thrones
    21  #,First Name,Last Name,Salary,
    22  1,Arya,Stark,3000,
    23  20,Jon,Snow,2000,"You know nothing\, Jon Snow!"
    24  300,Tyrion,Lannister,5000,
    25  0,Winter,Is,0,"Coming.
    26  The North Remembers!
    27  This is known."
    28  0,Valar,Morghulis,0,Faceless    Men
    29  ,,Total,10000,
    30  A Song of Ice and Fire`)
    31  }
    32  
    33  func TestTable_RenderCSV_AutoIndex(t *testing.T) {
    34  	tw := NewWriter()
    35  	for rowIdx := 0; rowIdx < 10; rowIdx++ {
    36  		row := make(Row, 10)
    37  		for colIdx := 0; colIdx < 10; colIdx++ {
    38  			row[colIdx] = fmt.Sprintf("%s%d", AutoIndexColumnID(colIdx), rowIdx+1)
    39  		}
    40  		tw.AppendRow(row)
    41  	}
    42  	for rowIdx := 0; rowIdx < 1; rowIdx++ {
    43  		row := make(Row, 10)
    44  		for colIdx := 0; colIdx < 10; colIdx++ {
    45  			row[colIdx] = AutoIndexColumnID(colIdx) + "F"
    46  		}
    47  		tw.AppendFooter(row)
    48  	}
    49  	tw.SetAutoIndex(true)
    50  	tw.SetStyle(StyleLight)
    51  
    52  	compareOutput(t, tw.RenderCSV(), `,A,B,C,D,E,F,G,H,I,J
    53  1,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1
    54  2,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2
    55  3,A3,B3,C3,D3,E3,F3,G3,H3,I3,J3
    56  4,A4,B4,C4,D4,E4,F4,G4,H4,I4,J4
    57  5,A5,B5,C5,D5,E5,F5,G5,H5,I5,J5
    58  6,A6,B6,C6,D6,E6,F6,G6,H6,I6,J6
    59  7,A7,B7,C7,D7,E7,F7,G7,H7,I7,J7
    60  8,A8,B8,C8,D8,E8,F8,G8,H8,I8,J8
    61  9,A9,B9,C9,D9,E9,F9,G9,H9,I9,J9
    62  10,A10,B10,C10,D10,E10,F10,G10,H10,I10,J10
    63  ,AF,BF,CF,DF,EF,FF,GF,HF,IF,JF`)
    64  }
    65  
    66  func TestTable_RenderCSV_Empty(t *testing.T) {
    67  	tw := NewWriter()
    68  	assert.Empty(t, tw.RenderCSV())
    69  }
    70  
    71  func TestTable_RenderCSV_HiddenColumns(t *testing.T) {
    72  	tw := NewWriter()
    73  	tw.AppendHeader(testHeader)
    74  	tw.AppendRows(testRows)
    75  	tw.AppendFooter(testFooter)
    76  
    77  	// ensure sorting is done before hiding the columns
    78  	tw.SortBy([]SortBy{
    79  		{Name: "Salary", Mode: DscNumeric},
    80  	})
    81  
    82  	t.Run("every column hidden", func(t *testing.T) {
    83  		tw.SetColumnConfigs(generateColumnConfigsWithHiddenColumns([]int{0, 1, 2, 3, 4}))
    84  
    85  		compareOutput(t, tw.RenderCSV(), "")
    86  	})
    87  
    88  	t.Run("first column hidden", func(t *testing.T) {
    89  		tw.SetColumnConfigs(generateColumnConfigsWithHiddenColumns([]int{0}))
    90  
    91  		compareOutput(t, tw.RenderCSV(), `First Name,Last Name,Salary,
    92  >>Tyrion,Lannister<<,5013,
    93  >>Arya,Stark<<,3013,
    94  >>Jon,Snow<<,2013,"~You know nothing\, Jon Snow!~"
    95  ,Total,10000,`)
    96  	})
    97  
    98  	t.Run("column hidden in the middle", func(t *testing.T) {
    99  		tw.SetColumnConfigs(generateColumnConfigsWithHiddenColumns([]int{1}))
   100  
   101  		compareOutput(t, tw.RenderCSV(), `#,Last Name,Salary,
   102  307,Lannister<<,5013,
   103  8,Stark<<,3013,
   104  27,Snow<<,2013,"~You know nothing\, Jon Snow!~"
   105  ,Total,10000,`)
   106  	})
   107  
   108  	t.Run("last column hidden", func(t *testing.T) {
   109  		tw.SetColumnConfigs(generateColumnConfigsWithHiddenColumns([]int{4}))
   110  
   111  		compareOutput(t, tw.RenderCSV(), `#,First Name,Last Name,Salary
   112  307,>>Tyrion,Lannister<<,5013
   113  8,>>Arya,Stark<<,3013
   114  27,>>Jon,Snow<<,2013
   115  ,,Total,10000`)
   116  	})
   117  }
   118  
   119  func TestTable_RenderCSV_Sorted(t *testing.T) {
   120  	tw := NewWriter()
   121  	tw.AppendHeader(testHeader)
   122  	tw.AppendRows(testRows)
   123  	tw.AppendRow(Row{11, "Sansa", "Stark", 6000})
   124  	tw.AppendFooter(testFooter)
   125  	tw.SortBy([]SortBy{{Name: "Last Name", Mode: Asc}, {Name: "First Name", Mode: Asc}})
   126  
   127  	compareOutput(t, tw.RenderCSV(), `#,First Name,Last Name,Salary,
   128  300,Tyrion,Lannister,5000,
   129  20,Jon,Snow,2000,"You know nothing\, Jon Snow!"
   130  1,Arya,Stark,3000,
   131  11,Sansa,Stark,6000,
   132  ,,Total,10000,`)
   133  }
   134  

View as plain text