(t *testing.T)
| 81 | } |
| 82 | |
| 83 | func TestReadIntfRecursion(t *testing.T) { |
| 84 | var buf bytes.Buffer |
| 85 | dec := NewReader(&buf) |
| 86 | enc := NewWriter(&buf) |
| 87 | // Test array recursion... |
| 88 | for range recursionLimit * 2 { |
| 89 | enc.WriteArrayHeader(1) |
| 90 | } |
| 91 | enc.Flush() |
| 92 | b := buf.Bytes() |
| 93 | _, err := dec.ReadIntf() |
| 94 | if !errors.Is(err, ErrRecursion) { |
| 95 | t.Errorf("unexpected Reader error: %v", err) |
| 96 | } |
| 97 | _, _, err = ReadIntfBytes(b) |
| 98 | if !errors.Is(err, ErrRecursion) { |
| 99 | t.Errorf("unexpected Bytes error: %v", err) |
| 100 | } |
| 101 | // Test JSON |
| 102 | dec.Reset(bytes.NewReader(b)) |
| 103 | _, err = dec.WriteToJSON(io.Discard) |
| 104 | if !errors.Is(err, ErrRecursion) { |
| 105 | t.Errorf("unexpected Reader error: %v", err) |
| 106 | } |
| 107 | _, err = UnmarshalAsJSON(io.Discard, b) |
| 108 | if !errors.Is(err, ErrRecursion) { |
| 109 | t.Errorf("unexpected Bytes error: %v", err) |
| 110 | } |
| 111 | _, err = CopyToJSON(io.Discard, bytes.NewReader(b)) |
| 112 | if !errors.Is(err, ErrRecursion) { |
| 113 | t.Errorf("unexpected Bytes error: %v", err) |
| 114 | } |
| 115 | |
| 116 | // Test map recursion... |
| 117 | buf.Reset() |
| 118 | for range recursionLimit * 2 { |
| 119 | enc.WriteMapHeader(1) |
| 120 | // Write a key... |
| 121 | enc.WriteString("a") |
| 122 | } |
| 123 | enc.Flush() |
| 124 | b = buf.Bytes() |
| 125 | dec.Reset(bytes.NewReader(b)) |
| 126 | _, err = dec.ReadIntf() |
| 127 | if !errors.Is(err, ErrRecursion) { |
| 128 | t.Errorf("unexpected Reader error: %v", err) |
| 129 | } |
| 130 | _, _, err = ReadIntfBytes(b) |
| 131 | if !errors.Is(err, ErrRecursion) { |
| 132 | t.Errorf("unexpected Bytes error: %v", err) |
| 133 | } |
| 134 | |
| 135 | // Test ReadMapStrInt using same input |
| 136 | dec.Reset(bytes.NewReader(b)) |
| 137 | err = dec.ReadMapStrIntf(map[string]any{}) |
| 138 | if !errors.Is(err, ErrRecursion) { |
| 139 | t.Errorf("unexpected Reader error: %v", err) |
| 140 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…