Skip to content Search Apps Documentation Source Content File Folder Download Copy Actions State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

Community realm. Read the code first. Community realm, deployed by its author. Read the code before you interact or send coins.

mdtable_test.gno

4.06 Kb · 158 lines
  1package mdtable_test
  2
  3import (
  4	"testing"
  5
  6	"gno.land/p/g1magld5ptgzaktqcexxq0pgq5lmdf0kz6re8hlv/mdtable/v0"
  7	"gno.land/p/nt/urequire/v0"
  8)
  9
 10// XXX: switch to `func Example() {}` when supported.
 11func TestExample(t *testing.T) {
 12	table := mdtable.Table{
 13		Headers: []string{"ID", "Title", "Status"},
 14		Rows: [][]string{
 15			{"#1", "Add a new validator", "succeed"},
 16			{"#2", "Change parameter", "timed out"},
 17			{"#3", "Fill pool", "active"},
 18		},
 19	}
 20
 21	got := table.String()
 22	expected := `| ID | Title | Status |
 23| --- | --- | --- |
 24| #1 | Add a new validator | succeed |
 25| #2 | Change parameter | timed out |
 26| #3 | Fill pool | active |
 27`
 28
 29	urequire.Equal(t, got, expected)
 30}
 31
 32func TestTableString(t *testing.T) {
 33	tests := []struct {
 34		name     string
 35		table    mdtable.Table
 36		expected string
 37	}{
 38		{
 39			name: "With Headers and Rows",
 40			table: mdtable.Table{
 41				Headers: []string{"ID", "Title", "Status", "Date"},
 42				Rows: [][]string{
 43					{"#1", "Add a new validator", "succeed", "2024-01-01"},
 44					{"#2", "Change parameter", "timed out", "2024-01-02"},
 45				},
 46			},
 47			expected: `| ID | Title | Status | Date |
 48| --- | --- | --- | --- |
 49| #1 | Add a new validator | succeed | 2024-01-01 |
 50| #2 | Change parameter | timed out | 2024-01-02 |
 51`,
 52		},
 53		{
 54			name: "Without Headers",
 55			table: mdtable.Table{
 56				Rows: [][]string{
 57					{"#1", "Add a new validator", "succeed", "2024-01-01"},
 58					{"#2", "Change parameter", "timed out", "2024-01-02"},
 59				},
 60			},
 61			expected: `|  |  |  |  |
 62| --- | --- | --- | --- |
 63| #1 | Add a new validator | succeed | 2024-01-01 |
 64| #2 | Change parameter | timed out | 2024-01-02 |
 65`,
 66		},
 67		{
 68			name: "Without Rows",
 69			table: mdtable.Table{
 70				Headers: []string{"ID", "Title", "Status", "Date"},
 71			},
 72			expected: `| ID | Title | Status | Date |
 73| --- | --- | --- | --- |
 74`,
 75		},
 76		{
 77			name: "With Pipe Character in Content",
 78			table: mdtable.Table{
 79				Headers: []string{"ID", "Title", "Status", "Date"},
 80				Rows: [][]string{
 81					{"#1", "Add a new | validator", "succeed", "2024-01-01"},
 82					{"#2", "Change parameter", "timed out", "2024-01-02"},
 83				},
 84			},
 85			expected: `| ID | Title | Status | Date |
 86| --- | --- | --- | --- |
 87| #1 | Add a new | validator | succeed | 2024-01-01 |
 88| #2 | Change parameter | timed out | 2024-01-02 |
 89`,
 90		},
 91		{
 92			name: "With Varying Row Sizes", // XXX: should we have a different behavior?
 93			table: mdtable.Table{
 94				Headers: []string{"ID", "Title"},
 95				Rows: [][]string{
 96					{"#1", "Add a new validator"},
 97					{"#2", "Change parameter", "Extra Column"},
 98					{"#3", "Fill pool"},
 99				},
100			},
101			expected: `| ID | Title |
102| --- | --- |
103| #1 | Add a new validator |
104| #2 | Change parameter | Extra Column |
105| #3 | Fill pool |
106`,
107		},
108		{
109			name: "With UTF-8 Characters",
110			table: mdtable.Table{
111				Headers: []string{"ID", "Title", "Status", "Date"},
112				Rows: [][]string{
113					{"#1", "Café", "succeed", "2024-01-01"},
114					{"#2", "München", "timed out", "2024-01-02"},
115					{"#3", "São Paulo", "active", "2024-01-03"},
116				},
117			},
118			expected: `| ID | Title | Status | Date |
119| --- | --- | --- | --- |
120| #1 | Café | succeed | 2024-01-01 |
121| #2 | München | timed out | 2024-01-02 |
122| #3 | São Paulo | active | 2024-01-03 |
123`,
124		},
125		{
126			name:     "With no Headers and no Rows",
127			table:    mdtable.Table{},
128			expected: ``,
129		},
130	}
131
132	for _, tt := range tests {
133		t.Run(tt.name, func(t *testing.T) {
134			got := tt.table.String()
135			urequire.Equal(t, got, tt.expected)
136		})
137	}
138}
139
140func TestTableAppend(t *testing.T) {
141	table := mdtable.Table{
142		Headers: []string{"ID", "Title", "Status", "Date"},
143	}
144
145	// Use the Append method to add rows to the table
146	table.Append([]string{"#1", "Add a new validator", "succeed", "2024-01-01"})
147	table.Append([]string{"#2", "Change parameter", "timed out", "2024-01-02"})
148	table.Append([]string{"#3", "Fill pool", "active", "2024-01-03"})
149	got := table.String()
150
151	expected := `| ID | Title | Status | Date |
152| --- | --- | --- | --- |
153| #1 | Add a new validator | succeed | 2024-01-01 |
154| #2 | Change parameter | timed out | 2024-01-02 |
155| #3 | Fill pool | active | 2024-01-03 |
156`
157	urequire.Equal(t, got, expected)
158}