-
Notifications
You must be signed in to change notification settings - Fork 0
/
renderer_test.go
125 lines (121 loc) · 2.76 KB
/
renderer_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package tdat
import (
"encoding/json"
"github.com/cvilsmeier/tdat/assert"
"io/ioutil"
"testing"
"time"
)
func TestRenderToString(t *testing.T) {
locBerlin, _ := time.LoadLocation("Europe/Berlin")
model := &Model{
[]*Table{
{
"persons",
[]*Column{
{"id", IntValue},
{"size", FloatValue},
{"flag", BoolValue},
{"name", StringValue},
{"birth", TimeValue},
},
[]*Row{
{
[]*Value{
{Type: IntValue, AsInt: int64(1)},
{Type: FloatValue, AsFloat: float64(1.83)},
{Type: BoolValue, AsBool: true},
{Type: StringValue, AsString: "Joe \u2602 Smith"},
{Type: TimeValue, AsTime: time.Date(2001, 1, 2, 10, 11, 12, 13000000, locBerlin)},
},
},
{
[]*Value{
{Type: IntValue, Null: true},
{Type: FloatValue, Null: true},
{Type: BoolValue, Null: true},
{Type: StringValue, Null: true},
{Type: TimeValue, Null: true},
},
},
},
},
},
}
//
colwidth := 0
txt, err := RenderToString(model, colwidth)
assert.Truef(t, err == nil, "err=%s", err)
exp := "persons\n"
exp += "|id:i|size:f|flag:b|name:s|birth:t\n"
exp += "|1|1.830000|true|\"Joe \u2602 Smith\"|2001-01-02T09:11:12.013\n"
exp += "|||||\n"
exp += "\n"
assert.EqStr(t, exp, txt)
//
colwidth = 10
txt, err = RenderToString(model, colwidth)
assert.Truef(t, err == nil, "error was %s", err)
exp = "persons\n"
exp += "|id:i |size:f |flag:b |name:s |birth:t\n"
exp += "|1 |1.830000 |true |\"Joe \u2602 Smith\"|2001-01-02T09:11:12.013\n"
exp += "| | | | |\n"
exp += "\n"
assert.EqStr(t, exp, txt)
}
func BenchmarkRenderTdat(b *testing.B) {
rowCount := 100 * 1000
rows := make([]*Row, 0, rowCount)
for i := 0; i < rowCount; i++ {
row := &Row{
[]*Value{
{Type: IntValue, AsInt: int64(1)},
{Type: FloatValue, AsFloat: float64(13000.12)},
{Type: BoolValue, AsBool: true},
{Type: StringValue, AsString: "joe"},
},
}
rows = append(rows, row)
}
model := &Model{
[]*Table{
{
"persons",
[]*Column{
{"id", IntValue},
{"rate", FloatValue},
{"flag", BoolValue},
{"name", StringValue},
},
rows,
},
},
}
b.ResetTimer()
err := RenderToWriter(model, 0, ioutil.Discard)
if err != nil {
panic(err)
}
}
func BenchmarkRenderJson(b *testing.B) {
rowCount := 100 * 1000
persons := []map[string]interface{}{}
for i := 0; i < rowCount; i++ {
person := map[string]interface{}{
"id": 1,
"rate": 13000.12,
"flag": true,
"name": "joe",
}
persons = append(persons, person)
}
model := map[string]interface{}{
"persons": persons,
}
b.ResetTimer()
encod := json.NewEncoder(ioutil.Discard)
err := encod.Encode(model)
if err != nil {
panic(err)
}
}