t.Fatal(err)
}
}
+
+func TestBlobTooDeep(t *testing.T) {
+ bin := []byte{byte(AtomBLOB)}
+ bin = append(bin, bytes.Repeat([]byte{0x01}, 8)...)
+ bin = append(bin, bytes.Repeat([]byte{byte(AtomList)}, 1000)...)
+ if _, err := NewDecoderFromBytes(bin, nil).Decode(); err != ErrBlobBadAtom {
+ t.Fatal(err)
+ }
+}
t.Fatal(err)
}
}
+
+func TestIntTooDeep(t *testing.T) {
+ if _, err := NewDecoderFromBytes(append(
+ []byte{byte(AtomPInt)},
+ bytes.Repeat([]byte{byte(AtomList)}, 1000)...,
+ ), nil).Decode(); err != ErrBadInt {
+ t.Fatal(err)
+ }
+}
t.Fatal(err)
}
}
+
+func TestListTooDeep(t *testing.T) {
+ if _, err := NewDecoderFromBytes(
+ bytes.Repeat([]byte{byte(AtomList)}, 1000),
+ nil).Decode(); err != ErrTooDeep {
+ t.Fatal(err)
+ }
+}
t.Fatal(err)
}
}
+
+func TestMapTooDeep(t *testing.T) {
+ k, err := EncodeBuf("k", nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ k = append([]byte{byte(AtomMap)}, k...)
+ if _, err := NewDecoderFromBytes(
+ bytes.Repeat(k, 1000), nil,
+ ).Decode(); err != ErrTooDeep {
+ t.Fatal(err)
+ }
+}