pkg.re/essentialkaos/ek.10@v12.41.0+incompatible/fmtutil/table/table_test.go (about)

     1  package table
     2  
     3  // ////////////////////////////////////////////////////////////////////////////////// //
     4  //                                                                                    //
     5  //                         Copyright (c) 2022 ESSENTIAL KAOS                          //
     6  //      Apache License, Version 2.0 <https://www.apache.org/licenses/LICENSE-2.0>     //
     7  //                                                                                    //
     8  // ////////////////////////////////////////////////////////////////////////////////// //
     9  
    10  import (
    11  	"strings"
    12  	"testing"
    13  
    14  	. "pkg.re/essentialkaos/check.v1"
    15  )
    16  
    17  // ////////////////////////////////////////////////////////////////////////////////// //
    18  
    19  func Test(t *testing.T) { TestingT(t) }
    20  
    21  type TableSuite struct{}
    22  
    23  // ////////////////////////////////////////////////////////////////////////////////// //
    24  
    25  var _ = Suite(&TableSuite{})
    26  
    27  // ////////////////////////////////////////////////////////////////////////////////// //
    28  
    29  func (s *TableSuite) TestNewTable(c *C) {
    30  	c.Assert(NewTable(), NotNil)
    31  }
    32  
    33  func (s *TableSuite) TestSetHeaders(c *C) {
    34  	var t *Table
    35  
    36  	c.Assert(t.SetHeaders("abc"), IsNil)
    37  
    38  	t = NewTable("abc")
    39  
    40  	c.Assert(t.SetHeaders("abc", "def", "123"), NotNil)
    41  	c.Assert(t.Headers, HasLen, 3)
    42  }
    43  
    44  func (s *TableSuite) TestRenderHeaders(c *C) {
    45  	t := NewTable("abc", "def")
    46  	t.RenderHeaders()
    47  }
    48  
    49  func (s *TableSuite) TestSetSizes(c *C) {
    50  	var t *Table
    51  
    52  	c.Assert(t.SetSizes(10, 20, 30), IsNil)
    53  
    54  	t = NewTable()
    55  
    56  	c.Assert(t.SetSizes(10, 20, 30), NotNil)
    57  	c.Assert(t.Sizes, HasLen, 3)
    58  }
    59  
    60  func (s *TableSuite) TestSetAlignments(c *C) {
    61  	var t *Table
    62  
    63  	c.Assert(t.SetAlignments(0, 1, 2), IsNil)
    64  
    65  	t = NewTable()
    66  
    67  	c.Assert(t.SetAlignments(0, 1, 2), NotNil)
    68  	c.Assert(t.Alignment, HasLen, 3)
    69  }
    70  
    71  func (s *TableSuite) TestHasData(c *C) {
    72  	t := NewTable("1", "2", "3")
    73  
    74  	c.Assert(t.HasData(), Equals, false)
    75  
    76  	c.Assert(t.Add(10, "abc", 3.14), NotNil)
    77  
    78  	c.Assert(t.HasData(), Equals, true)
    79  }
    80  
    81  func (s *TableSuite) TestAdd(c *C) {
    82  	var t *Table
    83  
    84  	c.Assert(t.Add(10, "abc", 3.14), IsNil)
    85  
    86  	t = NewTable()
    87  
    88  	c.Assert(t.Add(), NotNil)
    89  	c.Assert(t.Add(10, "abc", 3.14), NotNil)
    90  	c.Assert(t.data, HasLen, 1)
    91  }
    92  
    93  func (s *TableSuite) TestPrint(c *C) {
    94  	var t *Table
    95  
    96  	c.Assert(t.Print(10, "abc", 3.14), IsNil)
    97  
    98  	t = NewTable("ABCD", "ABCDEF", "ABCD")
    99  
   100  	c.Assert(t.Print(10, "abc", 3.14), NotNil)
   101  	c.Assert(t.Print(10, "abĀµ", 3.14, 400), NotNil)
   102  }
   103  
   104  func (s *TableSuite) TestSeparator(c *C) {
   105  	var t *Table
   106  
   107  	c.Assert(t.Separator(), IsNil)
   108  
   109  	t = NewTable()
   110  
   111  	c.Assert(t.Separator(), NotNil)
   112  }
   113  
   114  func (s *TableSuite) TestRender(c *C) {
   115  	var t *Table
   116  
   117  	c.Assert(t.Render(), IsNil)
   118  
   119  	t = NewTable()
   120  
   121  	c.Assert(t.Render(), NotNil)
   122  	c.Assert(t.Print(), NotNil)
   123  
   124  	t = NewTable()
   125  
   126  	c.Assert(t.Render(), NotNil)
   127  
   128  	c.Assert(t.Add(10, "abc", 3.14), NotNil)
   129  	c.Assert(t.Add(11, "ABC", 2.28), NotNil)
   130  	c.Assert(t.Add(11, "ABC", strings.Repeat("ABC123_", 20)), NotNil)
   131  
   132  	c.Assert(t.Render(), NotNil)
   133  
   134  	t.SetHeaders("id", "name", "price")
   135  	t.SetSizes(12, 12, 12)
   136  	t.SetAlignments(ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT)
   137  
   138  	HeaderCapitalize = true
   139  
   140  	c.Assert(t.Add(10, "abc", 3.14), NotNil)
   141  	c.Assert(t.Add(11, "{g}ABC{!}", 2.28, 400), NotNil)
   142  
   143  	c.Assert(t.Render(), NotNil)
   144  
   145  	HeaderCapitalize = false
   146  }
   147  
   148  func (s *TableSuite) TestPrintWithoutInit(c *C) {
   149  	t := NewTable()
   150  	t.Print("abcd", 1234)
   151  }
   152  
   153  func (s *TableSuite) TestAuxi(c *C) {
   154  	t := &Table{Sizes: []int{1, 2, 3, 4}}
   155  
   156  	c.Assert(getColumnsNum(t), Equals, len(t.Sizes))
   157  
   158  	t = &Table{columnSizes: []int{4, 4}}
   159  	renderRowData(t, []string{"ABCDABCDABCD", "ABCDABCDABCD"}, 2)
   160  
   161  	MaxWidth = 80
   162  
   163  	setColumnsSizes(t, 3)
   164  	c.Assert(t.columnSizes[0], Equals, 23)
   165  	c.Assert(t.columnSizes[1], Equals, 23)
   166  	c.Assert(t.columnSizes[2], Equals, 25)
   167  
   168  	MaxWidth = 0
   169  }