fix conversion raises, inlining, and min/max test
This commit is contained in:
parent
6480939dcd
commit
80ccea2643
11
stint/io.nim
11
stint/io.nim
|
@ -18,7 +18,7 @@ from stew/byteutils import toHex
|
||||||
|
|
||||||
# Helpers
|
# Helpers
|
||||||
# --------------------------------------------------------
|
# --------------------------------------------------------
|
||||||
{.push raises: [], inline, gcsafe.}
|
{.push raises: [], gcsafe.}
|
||||||
|
|
||||||
template leastSignificantWord*(a: SomeBigInteger): Word =
|
template leastSignificantWord*(a: SomeBigInteger): Word =
|
||||||
mixin limbs
|
mixin limbs
|
||||||
|
@ -79,7 +79,7 @@ func to*(a: SomeUnsignedInt, T: typedesc[StUint]): T =
|
||||||
|
|
||||||
# Conversions
|
# Conversions
|
||||||
# --------------------------------------------------------
|
# --------------------------------------------------------
|
||||||
{.push raises: [], inline, gcsafe.}
|
{.push raises: [], gcsafe.}
|
||||||
|
|
||||||
func truncate*(num: StUint, T: typedesc[SomeInteger]): T {.inline.}=
|
func truncate*(num: StUint, T: typedesc[SomeInteger]): T {.inline.}=
|
||||||
## Extract the int, uint, int8-int64 or uint8-uint64 portion of a multi-precision integer.
|
## Extract the int, uint, int8-int64 or uint8-uint64 portion of a multi-precision integer.
|
||||||
|
@ -106,7 +106,7 @@ func truncate*(num: StInt, T: typedesc[SomeInteger]): T {.inline.}=
|
||||||
|
|
||||||
if num.isNegative:
|
if num.isNegative:
|
||||||
when T is SomeUnsignedInt:
|
when T is SomeUnsignedInt:
|
||||||
doAssert(false, "cannot truncate negative number to unsigned integer")
|
raise newException(OverflowDefect, "cannot truncate negative number to unsigned integer")
|
||||||
elif sizeof(T) <= sizeof(Word):
|
elif sizeof(T) <= sizeof(Word):
|
||||||
if n.leastSignificantWord() == Word(T.high) + 1:
|
if n.leastSignificantWord() == Word(T.high) + 1:
|
||||||
result = low(T)
|
result = low(T)
|
||||||
|
@ -136,7 +136,8 @@ func stuint*(a: StUint, bits: static[int]): StUint[bits] {.inline.} =
|
||||||
func stuint*(a: StInt, bits: static[int]): StUint[bits] {.inline.} =
|
func stuint*(a: StInt, bits: static[int]): StUint[bits] {.inline.} =
|
||||||
## signed int to unsigned int conversion
|
## signed int to unsigned int conversion
|
||||||
## bigger to smaller bits conversion, the result is truncated
|
## bigger to smaller bits conversion, the result is truncated
|
||||||
doAssert(a.isPositive, "Cannot convert negative number to unsigned int")
|
if a.isNegative:
|
||||||
|
raise newException(OverflowDefect, "Cannot convert negative number to unsigned int")
|
||||||
stuint(a.impl, bits)
|
stuint(a.impl, bits)
|
||||||
|
|
||||||
func smallToBig(a: StInt, bits: static[int]): StInt[bits] =
|
func smallToBig(a: StInt, bits: static[int]): StInt[bits] =
|
||||||
|
@ -146,7 +147,7 @@ func smallToBig(a: StInt, bits: static[int]): StInt[bits] =
|
||||||
else:
|
else:
|
||||||
result.impl = stuint(a.impl, bits)
|
result.impl = stuint(a.impl, bits)
|
||||||
|
|
||||||
func stint*(a: StInt, bits: static[int]): StInt[bits] {.inline.} =
|
func stint*(a: StInt, bits: static[int]): StInt[bits] =
|
||||||
## signed int to signed int conversion
|
## signed int to signed int conversion
|
||||||
## will raise exception if input does not fit into destination
|
## will raise exception if input does not fit into destination
|
||||||
when a.bits < bits:
|
when a.bits < bits:
|
||||||
|
|
|
@ -34,14 +34,14 @@ template chkStintToStuint(chk, handleErr: untyped, N, bits: static[int]) =
|
||||||
let z = stint(1, N)
|
let z = stint(1, N)
|
||||||
let v = stint(-1, N)
|
let v = stint(-1, N)
|
||||||
|
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
discard stuint(w, bits)
|
discard stuint(w, bits)
|
||||||
|
|
||||||
let xx = stuint(x, bits)
|
let xx = stuint(x, bits)
|
||||||
let yy = stuint(y, bits)
|
let yy = stuint(y, bits)
|
||||||
let zz = stuint(z, bits)
|
let zz = stuint(z, bits)
|
||||||
|
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
discard stuint(v, bits)
|
discard stuint(v, bits)
|
||||||
|
|
||||||
when N <= bits:
|
when N <= bits:
|
||||||
|
@ -52,7 +52,7 @@ template chkStintToStuint(chk, handleErr: untyped, N, bits: static[int]) =
|
||||||
chk $y == $yy
|
chk $y == $yy
|
||||||
chk $z == $zz
|
chk $z == $zz
|
||||||
|
|
||||||
template chkStintToStint(chk: untyped, N, bits: static[int]) =
|
template chkStintToStint(chk, handleErr: untyped, N, bits: static[int]) =
|
||||||
block:
|
block:
|
||||||
# TODO add low value tests if bug #92 fixed
|
# TODO add low value tests if bug #92 fixed
|
||||||
let y = stint(0, N)
|
let y = stint(0, N)
|
||||||
|
@ -76,6 +76,24 @@ template chkStintToStint(chk: untyped, N, bits: static[int]) =
|
||||||
chk $z == $zz
|
chk $z == $zz
|
||||||
chk $v == $vv
|
chk $v == $vv
|
||||||
|
|
||||||
|
let w = StInt[N].low
|
||||||
|
|
||||||
|
when bits < N:
|
||||||
|
handleErr RangeDefect:
|
||||||
|
discard stint(w, bits)
|
||||||
|
else:
|
||||||
|
let ww = stint(w, bits)
|
||||||
|
chk $w == $ww
|
||||||
|
|
||||||
|
let m = stint(int32.low, N)
|
||||||
|
let n = stint(int64.low, N)
|
||||||
|
|
||||||
|
let mm = stint(m, bits)
|
||||||
|
let nn = stint(n, bits)
|
||||||
|
|
||||||
|
chk $m == $mm
|
||||||
|
chk $n == $nn
|
||||||
|
|
||||||
template chkStuintToStint(chk, handleErr: untyped, N, bits: static[int]) =
|
template chkStuintToStint(chk, handleErr: untyped, N, bits: static[int]) =
|
||||||
block:
|
block:
|
||||||
let y = stuint(0, N)
|
let y = stuint(0, N)
|
||||||
|
@ -139,25 +157,25 @@ template testConversion(chk, tst, handleErr: untyped) =
|
||||||
chkStintToStuint(chk, handleErr, 512, 512)
|
chkStintToStuint(chk, handleErr, 512, 512)
|
||||||
|
|
||||||
tst "stint to stint":
|
tst "stint to stint":
|
||||||
chkStintToStint(chk, 64, 64)
|
chkStintToStint(chk, handleErr, 64, 64)
|
||||||
chkStintToStint(chk, 64, 128)
|
chkStintToStint(chk, handleErr, 64, 128)
|
||||||
chkStintToStint(chk, 64, 256)
|
chkStintToStint(chk, handleErr, 64, 256)
|
||||||
chkStintToStint(chk, 64, 512)
|
chkStintToStint(chk, handleErr, 64, 512)
|
||||||
|
|
||||||
chkStintToStint(chk, 128, 64)
|
chkStintToStint(chk, handleErr, 128, 64)
|
||||||
chkStintToStint(chk, 128, 128)
|
chkStintToStint(chk, handleErr, 128, 128)
|
||||||
chkStintToStint(chk, 128, 256)
|
chkStintToStint(chk, handleErr, 128, 256)
|
||||||
chkStintToStint(chk, 128, 512)
|
chkStintToStint(chk, handleErr, 128, 512)
|
||||||
|
|
||||||
chkStintToStint(chk, 256, 64)
|
chkStintToStint(chk, handleErr, 256, 64)
|
||||||
chkStintToStint(chk, 256, 128)
|
chkStintToStint(chk, handleErr, 256, 128)
|
||||||
chkStintToStint(chk, 256, 256)
|
chkStintToStint(chk, handleErr, 256, 256)
|
||||||
chkStintToStint(chk, 256, 512)
|
chkStintToStint(chk, handleErr, 256, 512)
|
||||||
|
|
||||||
chkStintToStint(chk, 512, 64)
|
chkStintToStint(chk, handleErr, 512, 64)
|
||||||
chkStintToStint(chk, 512, 128)
|
chkStintToStint(chk, handleErr, 512, 128)
|
||||||
chkStintToStint(chk, 512, 256)
|
chkStintToStint(chk, handleErr, 512, 256)
|
||||||
chkStintToStint(chk, 512, 512)
|
chkStintToStint(chk, handleErr, 512, 512)
|
||||||
|
|
||||||
tst "stuint to stint":
|
tst "stuint to stint":
|
||||||
chkStuintToStint(chk, handleErr, 64, 64)
|
chkStuintToStint(chk, handleErr, 64, 64)
|
||||||
|
|
|
@ -316,140 +316,140 @@ template testIO(chk, tst, handleErr: untyped) =
|
||||||
chkTruncateStint(chk, low(int8), int8, 64)
|
chkTruncateStint(chk, low(int8), int8, 64)
|
||||||
chkTruncateStint(chk, high(int8), uint8, 64)
|
chkTruncateStint(chk, high(int8), uint8, 64)
|
||||||
chkTruncateStint(chk, high(int8), int8, 64)
|
chkTruncateStint(chk, high(int8), int8, 64)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int8), uint8, "0x80", 64)
|
chkTruncateStint(chk, low(int8), uint8, "0x80", 64)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint8), uint16, 64)
|
chkTruncateStint(chk, low(uint8), uint16, 64)
|
||||||
chkTruncateStint(chk, low(int8), int16, 64)
|
chkTruncateStint(chk, low(int8), int16, 64)
|
||||||
chkTruncateStint(chk, high(int8), uint16, 64)
|
chkTruncateStint(chk, high(int8), uint16, 64)
|
||||||
chkTruncateStint(chk, high(int8), int16, 64)
|
chkTruncateStint(chk, high(int8), int16, 64)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int8), uint16, "0xFF80", 64)
|
chkTruncateStint(chk, low(int8), uint16, "0xFF80", 64)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint16), uint16, 64)
|
chkTruncateStint(chk, low(uint16), uint16, 64)
|
||||||
chkTruncateStint(chk, low(int16), int16, 64)
|
chkTruncateStint(chk, low(int16), int16, 64)
|
||||||
chkTruncateStint(chk, high(int16), uint16, 64)
|
chkTruncateStint(chk, high(int16), uint16, 64)
|
||||||
chkTruncateStint(chk, high(int16), int16, 64)
|
chkTruncateStint(chk, high(int16), int16, 64)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int16), uint16, "0x8000", 64)
|
chkTruncateStint(chk, low(int16), uint16, "0x8000", 64)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint8), uint32, 64)
|
chkTruncateStint(chk, low(uint8), uint32, 64)
|
||||||
chkTruncateStint(chk, low(int8), int32, 64)
|
chkTruncateStint(chk, low(int8), int32, 64)
|
||||||
chkTruncateStint(chk, high(int8), uint32, 64)
|
chkTruncateStint(chk, high(int8), uint32, 64)
|
||||||
chkTruncateStint(chk, high(int8), int32, 64)
|
chkTruncateStint(chk, high(int8), int32, 64)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int8), uint32, "0xFFFFFF80", 64)
|
chkTruncateStint(chk, low(int8), uint32, "0xFFFFFF80", 64)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint16), uint32, 64)
|
chkTruncateStint(chk, low(uint16), uint32, 64)
|
||||||
chkTruncateStint(chk, low(int16), int32, 64)
|
chkTruncateStint(chk, low(int16), int32, 64)
|
||||||
chkTruncateStint(chk, high(int16), uint32, 64)
|
chkTruncateStint(chk, high(int16), uint32, 64)
|
||||||
chkTruncateStint(chk, high(int16), int32, 64)
|
chkTruncateStint(chk, high(int16), int32, 64)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int16), uint32, "0xFFFF8000", 64)
|
chkTruncateStint(chk, low(int16), uint32, "0xFFFF8000", 64)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint32), uint32, 64)
|
chkTruncateStint(chk, low(uint32), uint32, 64)
|
||||||
chkTruncateStint(chk, low(int32), int32, 64)
|
chkTruncateStint(chk, low(int32), int32, 64)
|
||||||
chkTruncateStint(chk, high(int32), uint32, 64)
|
chkTruncateStint(chk, high(int32), uint32, 64)
|
||||||
chkTruncateStint(chk, high(int32), int32, 64)
|
chkTruncateStint(chk, high(int32), int32, 64)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int32), uint32, "0x80000000", 64)
|
chkTruncateStint(chk, low(int32), uint32, "0x80000000", 64)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint8), uint64, 64)
|
chkTruncateStint(chk, low(uint8), uint64, 64)
|
||||||
chkTruncateStint(chk, low(int8), int64, 64)
|
chkTruncateStint(chk, low(int8), int64, 64)
|
||||||
chkTruncateStint(chk, high(int8), uint64, 64)
|
chkTruncateStint(chk, high(int8), uint64, 64)
|
||||||
chkTruncateStint(chk, high(int8), int64, 64)
|
chkTruncateStint(chk, high(int8), int64, 64)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int8), uint64, "0xFFFFFFFFFFFFFF80", 64)
|
chkTruncateStint(chk, low(int8), uint64, "0xFFFFFFFFFFFFFF80", 64)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint16), uint64, 64)
|
chkTruncateStint(chk, low(uint16), uint64, 64)
|
||||||
chkTruncateStint(chk, low(int16), int64, 64)
|
chkTruncateStint(chk, low(int16), int64, 64)
|
||||||
chkTruncateStint(chk, high(int16), uint64, 64)
|
chkTruncateStint(chk, high(int16), uint64, 64)
|
||||||
chkTruncateStint(chk, high(int16), int64, 64)
|
chkTruncateStint(chk, high(int16), int64, 64)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int16), uint64, "0xFFFFFFFFFFFF8000", 64)
|
chkTruncateStint(chk, low(int16), uint64, "0xFFFFFFFFFFFF8000", 64)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint32), uint64, 64)
|
chkTruncateStint(chk, low(uint32), uint64, 64)
|
||||||
chkTruncateStint(chk, low(int32), int64, 64)
|
chkTruncateStint(chk, low(int32), int64, 64)
|
||||||
chkTruncateStint(chk, high(int32), uint64, 64)
|
chkTruncateStint(chk, high(int32), uint64, 64)
|
||||||
chkTruncateStint(chk, high(int32), int64, 64)
|
chkTruncateStint(chk, high(int32), int64, 64)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int32), uint64, "0xFFFFFFFF80000000", 64)
|
chkTruncateStint(chk, low(int32), uint64, "0xFFFFFFFF80000000", 64)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint64), uint64, 64)
|
chkTruncateStint(chk, low(uint64), uint64, 64)
|
||||||
chkTruncateStint(chk, low(int64), int64, 64)
|
chkTruncateStint(chk, low(int64), int64, 64)
|
||||||
chkTruncateStint(chk, high(int64), uint64, 64)
|
chkTruncateStint(chk, high(int64), uint64, 64)
|
||||||
chkTruncateStint(chk, high(int64), int64, 64)
|
chkTruncateStint(chk, high(int64), int64, 64)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int64), uint64, "0x8000000000000000", 64)
|
chkTruncateStint(chk, low(int64), uint64, "0x8000000000000000", 64)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint8), uint8, 128)
|
chkTruncateStint(chk, low(uint8), uint8, 128)
|
||||||
chkTruncateStint(chk, low(int8), int8, 128)
|
chkTruncateStint(chk, low(int8), int8, 128)
|
||||||
chkTruncateStint(chk, high(int8), uint8, 128)
|
chkTruncateStint(chk, high(int8), uint8, 128)
|
||||||
chkTruncateStint(chk, high(int8), int8, 128)
|
chkTruncateStint(chk, high(int8), int8, 128)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int8), uint8, "0x80", 128)
|
chkTruncateStint(chk, low(int8), uint8, "0x80", 128)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint8), uint16, 128)
|
chkTruncateStint(chk, low(uint8), uint16, 128)
|
||||||
chkTruncateStint(chk, low(int8), int16, 128)
|
chkTruncateStint(chk, low(int8), int16, 128)
|
||||||
chkTruncateStint(chk, high(int8), uint16, 128)
|
chkTruncateStint(chk, high(int8), uint16, 128)
|
||||||
chkTruncateStint(chk, high(int8), int16, 128)
|
chkTruncateStint(chk, high(int8), int16, 128)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int8), uint16, "0xFF80", 128)
|
chkTruncateStint(chk, low(int8), uint16, "0xFF80", 128)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint16), uint16, 128)
|
chkTruncateStint(chk, low(uint16), uint16, 128)
|
||||||
chkTruncateStint(chk, low(int16), int16, 128)
|
chkTruncateStint(chk, low(int16), int16, 128)
|
||||||
chkTruncateStint(chk, high(int16), uint16, 128)
|
chkTruncateStint(chk, high(int16), uint16, 128)
|
||||||
chkTruncateStint(chk, high(int16), int16, 128)
|
chkTruncateStint(chk, high(int16), int16, 128)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int16), uint16, "0x8000", 128)
|
chkTruncateStint(chk, low(int16), uint16, "0x8000", 128)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint8), uint32, 128)
|
chkTruncateStint(chk, low(uint8), uint32, 128)
|
||||||
chkTruncateStint(chk, low(int8), int32, 128)
|
chkTruncateStint(chk, low(int8), int32, 128)
|
||||||
chkTruncateStint(chk, high(int8), uint32, 128)
|
chkTruncateStint(chk, high(int8), uint32, 128)
|
||||||
chkTruncateStint(chk, high(int8), int32, 128)
|
chkTruncateStint(chk, high(int8), int32, 128)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int8), uint32, "0xFFFFFF80", 128)
|
chkTruncateStint(chk, low(int8), uint32, "0xFFFFFF80", 128)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint16), uint32, 128)
|
chkTruncateStint(chk, low(uint16), uint32, 128)
|
||||||
chkTruncateStint(chk, low(int16), int32, 128)
|
chkTruncateStint(chk, low(int16), int32, 128)
|
||||||
chkTruncateStint(chk, high(int16), uint32, 128)
|
chkTruncateStint(chk, high(int16), uint32, 128)
|
||||||
chkTruncateStint(chk, high(int16), int32, 128)
|
chkTruncateStint(chk, high(int16), int32, 128)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int16), uint32, "0xFFFF8000", 128)
|
chkTruncateStint(chk, low(int16), uint32, "0xFFFF8000", 128)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint32), uint32, 128)
|
chkTruncateStint(chk, low(uint32), uint32, 128)
|
||||||
chkTruncateStint(chk, low(int32), int32, 128)
|
chkTruncateStint(chk, low(int32), int32, 128)
|
||||||
chkTruncateStint(chk, high(int32), uint32, 128)
|
chkTruncateStint(chk, high(int32), uint32, 128)
|
||||||
chkTruncateStint(chk, high(int32), int32, 128)
|
chkTruncateStint(chk, high(int32), int32, 128)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int32), uint32, "0x80000000", 128)
|
chkTruncateStint(chk, low(int32), uint32, "0x80000000", 128)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint8), uint64, 128)
|
chkTruncateStint(chk, low(uint8), uint64, 128)
|
||||||
chkTruncateStint(chk, low(int8), int64, 128)
|
chkTruncateStint(chk, low(int8), int64, 128)
|
||||||
chkTruncateStint(chk, high(int8), uint64, 128)
|
chkTruncateStint(chk, high(int8), uint64, 128)
|
||||||
chkTruncateStint(chk, high(int8), int64, 128)
|
chkTruncateStint(chk, high(int8), int64, 128)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int8), uint64, "0xFFFFFFFFFFFFFF80", 128)
|
chkTruncateStint(chk, low(int8), uint64, "0xFFFFFFFFFFFFFF80", 128)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint16), uint64, 128)
|
chkTruncateStint(chk, low(uint16), uint64, 128)
|
||||||
chkTruncateStint(chk, low(int16), int64, 128)
|
chkTruncateStint(chk, low(int16), int64, 128)
|
||||||
chkTruncateStint(chk, high(int16), uint64, 128)
|
chkTruncateStint(chk, high(int16), uint64, 128)
|
||||||
chkTruncateStint(chk, high(int16), int64, 128)
|
chkTruncateStint(chk, high(int16), int64, 128)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int16), uint64, "0xFFFFFFFFFFFF8000", 128)
|
chkTruncateStint(chk, low(int16), uint64, "0xFFFFFFFFFFFF8000", 128)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint32), uint64, 128)
|
chkTruncateStint(chk, low(uint32), uint64, 128)
|
||||||
chkTruncateStint(chk, low(int32), int64, 128)
|
chkTruncateStint(chk, low(int32), int64, 128)
|
||||||
chkTruncateStint(chk, high(int32), uint64, 128)
|
chkTruncateStint(chk, high(int32), uint64, 128)
|
||||||
chkTruncateStint(chk, high(int32), int64, 128)
|
chkTruncateStint(chk, high(int32), int64, 128)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int32), uint64, "0xFFFFFFFF80000000", 128)
|
chkTruncateStint(chk, low(int32), uint64, "0xFFFFFFFF80000000", 128)
|
||||||
|
|
||||||
chkTruncateStint(chk, low(uint64), uint64, 128)
|
chkTruncateStint(chk, low(uint64), uint64, 128)
|
||||||
chkTruncateStint(chk, low(int64), int64, 128)
|
chkTruncateStint(chk, low(int64), int64, 128)
|
||||||
chkTruncateStint(chk, high(int64), uint64, 128)
|
chkTruncateStint(chk, high(int64), uint64, 128)
|
||||||
chkTruncateStint(chk, high(int64), int64, 128)
|
chkTruncateStint(chk, high(int64), int64, 128)
|
||||||
handleErr AssertionDefect:
|
handleErr OverflowDefect:
|
||||||
chkTruncateStint(chk, low(int64), uint64, "0x8000000000000000", 128)
|
chkTruncateStint(chk, low(int64), uint64, "0x8000000000000000", 128)
|
||||||
|
|
||||||
tst "[stuint] parse - toString roundtrip":
|
tst "[stuint] parse - toString roundtrip":
|
||||||
|
@ -943,7 +943,7 @@ proc main() =
|
||||||
test "Parsing an unexpected 0x prefix for a decimal string is a CatchableError and not a defect":
|
test "Parsing an unexpected 0x prefix for a decimal string is a CatchableError and not a defect":
|
||||||
let s = "0x123456"
|
let s = "0x123456"
|
||||||
|
|
||||||
expect(AssertionDefect):
|
expect(OverflowDefect):
|
||||||
discard parse(s, StUint[256], 10)
|
discard parse(s, StUint[256], 10)
|
||||||
|
|
||||||
suite "Testing conversion functions: Hex, Bytes, Endianness using secp256k1 curve":
|
suite "Testing conversion functions: Hex, Bytes, Endianness using secp256k1 curve":
|
||||||
|
|
Loading…
Reference in New Issue