mirror of
https://github.com/typst/typst
synced 2025-05-14 04:56:26 +08:00
111 lines
3.3 KiB
Typst
111 lines
3.3 KiB
Typst
--- int-base-alternative ---
|
|
// Test numbers with alternative bases.
|
|
#test(0x10, 16)
|
|
#test(0b1101, 13)
|
|
#test(0xA + 0xa, 0x14)
|
|
|
|
--- int-base-binary-invalid ---
|
|
// Error: 2-7 invalid binary number: 0b123
|
|
#0b123
|
|
|
|
--- int-base-hex-invalid ---
|
|
// Error: 2-8 invalid hexadecimal number: 0x123z
|
|
#0x123z
|
|
|
|
--- int-constructor ---
|
|
// Test conversion to numbers.
|
|
#test(int(false), 0)
|
|
#test(int(true), 1)
|
|
#test(int(10), 10)
|
|
#test(int("150"), 150)
|
|
#test(int("-834"), -834)
|
|
#test(int("\u{2212}79"), -79)
|
|
#test(int(10 / 3), 3)
|
|
#test(int(-58.34), -58)
|
|
#test(int(decimal("92492.193848921")), 92492)
|
|
#test(int(decimal("-224.342211")), -224)
|
|
|
|
--- int-constructor-bad-type ---
|
|
// Error: 6-10 expected integer, boolean, float, decimal, or string, found length
|
|
#int(10pt)
|
|
|
|
--- int-constructor-bad-value ---
|
|
// Error: 6-12 invalid integer: nope
|
|
#int("nope")
|
|
|
|
--- int-constructor-float-too-large ---
|
|
// Error: 6-27 number too large
|
|
#int(9223372036854775809.5)
|
|
|
|
--- int-constructor-float-too-large-min ---
|
|
// Error: 6-28 number too large
|
|
#int(-9223372036854775809.5)
|
|
|
|
--- int-constructor-decimal-too-large ---
|
|
// Error: 6-38 number too large
|
|
#int(decimal("9223372036854775809.5"))
|
|
|
|
--- int-constructor-decimal-too-large-min ---
|
|
// Error: 6-39 number too large
|
|
#int(decimal("-9223372036854775809.5"))
|
|
|
|
--- int-signum ---
|
|
// Test int `signum()`
|
|
#test(int(0).signum(), 0)
|
|
#test(int(1.0).signum(), 1)
|
|
#test(int(-1.0).signum(), -1)
|
|
#test(int(10.0).signum(), 1)
|
|
#test(int(-10.0).signum(), -1)
|
|
|
|
--- int-from-and-to-bytes ---
|
|
// Test `int.from-bytes` and `int.to-bytes`.
|
|
#test(int.from-bytes(bytes(())), 0)
|
|
#test(int.from-bytes(bytes((1, 0, 0, 0, 0, 0, 0, 0)), endian: "little", signed: true), 1)
|
|
#test(int.from-bytes(bytes((1, 0, 0, 0, 0, 0, 0, 0)), endian: "big", signed: true), 72057594037927936)
|
|
#test(int.from-bytes(bytes((1, 0, 0, 0, 0, 0, 0, 0)), endian: "little", signed: false), 1)
|
|
#test(int.from-bytes(bytes((255,)), endian: "big", signed: true), -1)
|
|
#test(int.from-bytes(bytes((255,)), endian: "big", signed: false), 255)
|
|
#test(int.from-bytes((-1000).to-bytes(endian: "big", size: 5), endian: "big", signed: true), -1000)
|
|
#test(int.from-bytes((-1000).to-bytes(endian: "little", size: 5), endian: "little", signed: true), -1000)
|
|
#test(int.from-bytes(1000.to-bytes(endian: "big", size: 5), endian: "big", signed: true), 1000)
|
|
#test(int.from-bytes(1000.to-bytes(endian: "little", size: 5), endian: "little", signed: true), 1000)
|
|
#test(int.from-bytes(1000.to-bytes(endian: "little", size: 5), endian: "little", signed: false), 1000)
|
|
|
|
--- int-from-and-to-bytes-too-many ---
|
|
// Error: 2-34 too many bytes to convert to a 64 bit number
|
|
#int.from-bytes(bytes((0,) * 16))
|
|
|
|
--- int-repr ---
|
|
// Test the `repr` function with integers.
|
|
#test(repr(12), "12")
|
|
#test(repr(1234567890), "1234567890")
|
|
#test(repr(0123456789), "123456789")
|
|
#test(repr(0), "0")
|
|
#test(repr(-0), "0")
|
|
#test(repr(-1), "-1")
|
|
#test(repr(-9876543210), "-9876543210")
|
|
#test(repr(-0987654321), "-987654321")
|
|
#test(repr(4 - 8), "-4")
|
|
|
|
--- int-display ---
|
|
// Test integers.
|
|
#12 \
|
|
#1234567890 \
|
|
#0123456789 \
|
|
#0 \
|
|
#(-0) \
|
|
#(-1) \
|
|
#(-9876543210) \
|
|
#(-0987654321) \
|
|
#(4 - 8)
|
|
|
|
--- issue-int-constructor ---
|
|
// Test that integer -> integer conversion doesn't do a roundtrip through float.
|
|
#let x = 9223372036854775800
|
|
#test(type(x), int)
|
|
#test(int(x), x)
|
|
|
|
--- number-invalid-suffix ---
|
|
// Error: 2-4 invalid number suffix: u
|
|
#1u
|