MCPcopy Create free account
hub / github.com/bcicen/jstream / TestDecoderMultiDoc

Function TestDecoderMultiDoc

decoder_test.go:133–208  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

131}
132
133func TestDecoderMultiDoc(t *testing.T) {
134 var (
135 counter int
136 mv *MetaValue
137 body = `{ "bio": "bada bing bada boom", "id": 1, "name": "Charles" }
138{ "bio": "bada bing bada boom", "id": 2, "name": "Charles" }
139{ "bio": "bada bing bada boom", "id": 3, "name": "Charles" }
140{ "bio": "bada bing bada boom", "id": 4, "name": "Charles" }
141{ "bio": "bada bing bada boom", "id": 5, "name": "Charles" }
142`
143 )
144
145 decoder := NewDecoder(mkReader(body), 0)
146
147 for mv = range decoder.Stream() {
148 if mv.ValueType != Object {
149 t.Fatalf("got %v value type, expected: Object value type", mv.ValueType)
150 }
151 counter++
152 t.Logf("depth=%d offset=%d len=%d (%v)", mv.Depth, mv.Offset, mv.Length, mv.Value)
153 }
154 if err := decoder.Err(); err != nil {
155 t.Fatalf("decoder error: %s", err)
156 }
157 if counter != 5 {
158 t.Fatalf("expected 5 items, got %d", counter)
159 }
160
161 // test at depth level 1
162 counter = 0
163 kvcounter := 0
164 decoder = NewDecoder(mkReader(body), 1)
165
166 for mv = range decoder.Stream() {
167 switch mv.Value.(type) {
168 case KV:
169 kvcounter++
170 default:
171 counter++
172 }
173 t.Logf("depth=%d offset=%d len=%d (%v)", mv.Depth, mv.Offset, mv.Length, mv.Value)
174 }
175 if err := decoder.Err(); err != nil {
176 t.Fatalf("decoder error: %s", err)
177 }
178 if kvcounter != 0 {
179 t.Fatalf("expected 0 keyvalue items, got %d", kvcounter)
180 }
181 if counter != 15 {
182 t.Fatalf("expected 15 items, got %d", counter)
183 }
184
185 // test at depth level 1 w/ emitKV
186 counter = 0
187 kvcounter = 0
188 decoder = NewDecoder(mkReader(body), 1).EmitKV()
189
190 for mv = range decoder.Stream() {

Callers

nothing calls this directly

Calls 5

StreamMethod · 0.95
ErrMethod · 0.95
NewDecoderFunction · 0.85
mkReaderFunction · 0.85
EmitKVMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…