41 lines
1.1 KiB
Plaintext
41 lines
1.1 KiB
Plaintext
--- json ---
|
|
// Test reading JSON data.
|
|
#let data = json("/assets/data/zoo.json")
|
|
#test(data.len(), 3)
|
|
#test(data.at(0).name, "Debby")
|
|
#test(data.at(2).weight, 150)
|
|
|
|
--- json-invalid ---
|
|
// Error: "/assets/data/bad.json" 3:14 failed to parse JSON (expected value at line 3 column 14)
|
|
#json("/assets/data/bad.json")
|
|
|
|
--- json-decode-deprecated ---
|
|
// Warning: 15-21 `json.decode` is deprecated, directly pass bytes to `json` instead
|
|
// Hint: 15-21 it will be removed in Typst 0.15.0
|
|
#let _ = json.decode
|
|
|
|
--- issue-3363-json-large-number ---
|
|
// Big numbers (larger than what i64 can store) should just lose some precision
|
|
// but not overflow
|
|
#let bignum = json("/assets/data/big-number.json")
|
|
#bignum
|
|
|
|
--- json-decode-number ---
|
|
#import "edge-case.typ": large-integer, representable-integer
|
|
|
|
#for (name, source) in representable-integer {
|
|
assert.eq(
|
|
type(json(bytes(source))),
|
|
int,
|
|
message: "failed to decode " + name,
|
|
)
|
|
}
|
|
|
|
#for (name, source) in large-integer {
|
|
assert.eq(
|
|
type(json(bytes(source))),
|
|
float,
|
|
message: "failed to approximately decode " + name,
|
|
)
|
|
}
|