2023-07-07 06:22:22 +00:00
|
|
|
# Copyright 2023 Status Research & Development GmbH
|
|
|
|
# Licensed under either of
|
|
|
|
#
|
|
|
|
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
|
|
|
|
# * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
|
|
|
|
#
|
|
|
|
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
|
|
|
|
2023-07-07 10:57:14 +00:00
|
|
|
import
|
|
|
|
../stint,
|
|
|
|
unittest
|
|
|
|
|
|
|
|
template reject(code: untyped) =
|
|
|
|
static: assert(not compiles(code))
|
2023-07-07 06:22:22 +00:00
|
|
|
|
|
|
|
suite "new features":
|
|
|
|
test "custom literal":
|
|
|
|
const
|
|
|
|
a = 0xabcdef0123456'u128
|
|
|
|
b = 0xabcdef0123456'u256
|
|
|
|
c = -100'i128
|
|
|
|
d = -50000'i256
|
|
|
|
|
|
|
|
let
|
|
|
|
x = 0b111100011'u128
|
|
|
|
y = 0o777766666'u256
|
2023-07-07 10:57:14 +00:00
|
|
|
z = 0x1122334455667788991011121314151617181920aabbccddeeffb1b2b3b4b500'u256
|
|
|
|
w = 340282366920938463463374607431768211455'u128
|
2023-07-07 06:22:22 +00:00
|
|
|
|
|
|
|
check:
|
|
|
|
a == 0xabcdef0123456.u128
|
|
|
|
b == 0xabcdef0123456.u256
|
|
|
|
c == -100.i128
|
|
|
|
d == -50000.i256
|
|
|
|
x == 0b111100011.u128
|
|
|
|
y == 0o777766666.u256
|
2023-07-07 10:57:14 +00:00
|
|
|
z == UInt256.fromHex("0x1122334455667788991011121314151617181920aabbccddeeffb1b2b3b4b500")
|
|
|
|
w == UInt128.fromDecimal("340282366920938463463374607431768211455")
|
|
|
|
|
|
|
|
test "custom literal overflow":
|
|
|
|
reject:
|
|
|
|
const
|
|
|
|
z = 0x1122334455667788991011121314151617181920aabbccddeeffb1b2b3b4b5700'u256
|
|
|
|
doAssert(false)
|
|
|
|
|
|
|
|
reject:
|
|
|
|
let
|
|
|
|
z = 0x1122334455667788991011121314151617181920aabbccddeeffb1b2b3b4b5700'u256
|
|
|
|
doAssert(false)
|
|
|
|
|
|
|
|
reject:
|
|
|
|
const
|
|
|
|
w = 1122334455667788991011121314151617181920'u128
|
|
|
|
doAssert(false)
|