Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/pkg/river/encoding/array_test.go
4095 views
1
package encoding
2
3
import (
4
"encoding/json"
5
"testing"
6
7
"github.com/grafana/agent/pkg/river/internal/value"
8
"github.com/stretchr/testify/require"
9
)
10
11
func TestSimpleArray(t *testing.T) {
12
intArr := make([]int, 10)
13
for i := 0; i < 10; i++ {
14
intArr[i] = i
15
}
16
reqString := `
17
{
18
"type": "array",
19
"value": [
20
{
21
"type": "number",
22
"value": 0
23
},
24
{
25
"type": "number",
26
"value": 1
27
},
28
{
29
"type": "number",
30
"value": 2
31
},
32
{
33
"type": "number",
34
"value": 3
35
},
36
{
37
"type": "number",
38
"value": 4
39
},
40
{
41
"type": "number",
42
"value": 5
43
},
44
{
45
"type": "number",
46
"value": 6
47
},
48
{
49
"type": "number",
50
"value": 7
51
},
52
{
53
"type": "number",
54
"value": 8
55
},
56
{
57
"type": "number",
58
"value": 9
59
}
60
]
61
}
62
`
63
arrF, err := newRiverArray(value.Encode(intArr))
64
require.NoError(t, err)
65
bb, err := json.Marshal(arrF)
66
require.NoError(t, err)
67
require.JSONEq(t, reqString, string(bb))
68
}
69
70
func TestStructArray(t *testing.T) {
71
type sa struct {
72
Age int `river:"age,attr"`
73
}
74
intArr := make([]*sa, 10)
75
for i := 0; i < 10; i++ {
76
intArr[i] = &sa{Age: i}
77
}
78
79
reqString := `
80
{
81
"type": "array",
82
"value": [
83
{
84
"type": "object",
85
"value": [
86
{
87
"value": {
88
"type": "number",
89
"value": 0
90
},
91
"key": "age"
92
}
93
]
94
},
95
{
96
"type": "object",
97
"value": [
98
{
99
"value": {
100
"type": "number",
101
"value": 1
102
},
103
"key": "age"
104
}
105
]
106
},
107
{
108
"type": "object",
109
"value": [
110
{
111
"value": {
112
"type": "number",
113
"value": 2
114
},
115
"key": "age"
116
}
117
]
118
},
119
{
120
"type": "object",
121
"value": [
122
{
123
"value": {
124
"type": "number",
125
"value": 3
126
},
127
"key": "age"
128
}
129
]
130
},
131
{
132
"type": "object",
133
"value": [
134
{
135
"value": {
136
"type": "number",
137
"value": 4
138
},
139
"key": "age"
140
}
141
]
142
},
143
{
144
"type": "object",
145
"value": [
146
{
147
"value": {
148
"type": "number",
149
"value": 5
150
},
151
"key": "age"
152
}
153
]
154
},
155
{
156
"type": "object",
157
"value": [
158
{
159
"value": {
160
"type": "number",
161
"value": 6
162
},
163
"key": "age"
164
}
165
]
166
},
167
{
168
"type": "object",
169
"value": [
170
{
171
"value": {
172
"type": "number",
173
"value": 7
174
},
175
"key": "age"
176
}
177
]
178
},
179
{
180
"type": "object",
181
"value": [
182
{
183
"value": {
184
"type": "number",
185
"value": 8
186
},
187
"key": "age"
188
}
189
]
190
},
191
{
192
"type": "object",
193
"value": [
194
{
195
"value": {
196
"type": "number",
197
"value": 9
198
},
199
"key": "age"
200
}
201
]
202
}
203
]
204
}
205
`
206
arrF, err := newRiverArray(value.Encode(intArr))
207
require.NoError(t, err)
208
bb, err := json.Marshal(arrF)
209
require.NoError(t, err)
210
require.JSONEq(t, reqString, string(bb))
211
}
212
213