MCPcopy Create free account
hub / github.com/buger/jsonparser / TestReaderParserArrayEach

Function TestReaderParserArrayEach

reader_parser_test.go:96–133  ·  view source on GitHub ↗

Verifies: SYS-REQ-116 (incremental array iteration) SYS-REQ-116:nominal:nominal reqproof:proptest:skip targeted streaming witness; not a property-test subject

(t *testing.T)

Source from the content-addressed store, hash-verified

94// SYS-REQ-116:nominal:nominal
95// reqproof:proptest:skip targeted streaming witness; not a property-test subject
96func TestReaderParserArrayEach(t *testing.T) {
97 const elements = 20000
98 var source strings.Builder
99 source.WriteByte('[')
100 for i := 0; i < elements; i++ {
101 if i > 0 {
102 source.WriteByte(',')
103 }
104 source.WriteString(strconv.Itoa(i))
105 }
106 source.WriteByte(']')
107
108 rp := NewReaderParser(strings.NewReader(source.String()))
109 count := 0
110 err := rp.ArrayEach(func(value []byte, vt ValueType, err error) {
111 if err != nil {
112 t.Errorf("callback %d returned error: %v", count, err)
113 return
114 }
115 if vt != Number {
116 t.Errorf("callback %d type = %v, want Number", count, vt)
117 return
118 }
119 if got, want := string(value), strconv.Itoa(count); got != want {
120 t.Errorf("callback %d value = %q, want %q", count, got, want)
121 }
122 count++
123 })
124 if err != nil {
125 t.Fatalf("ArrayEach returned error: %v", err)
126 }
127 if count != elements {
128 t.Fatalf("ArrayEach callbacks = %d, want %d", count, elements)
129 }
130 if len(rp.buf) > defaultReaderBufferSize {
131 t.Fatalf("sliding buffer retained %d bytes after iteration, want at most %d", len(rp.buf), defaultReaderBufferSize)
132 }
133}
134
135// Verifies: SYS-REQ-116 (bounded window over a large stream)
136// SYS-REQ-116:boundary:nominal

Callers

nothing calls this directly

Calls 3

ArrayEachMethod · 0.95
NewReaderParserFunction · 0.85
StringMethod · 0.45

Tested by

no test coverage detected