diff options
author | Juan Carlos <juancarlospaco@gmail.com> | 2021-01-29 22:48:47 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-29 17:48:47 -0800 |
commit | b8e8eaae66c3298d25a324e939ca6c1fd69a9652 (patch) | |
tree | 84ead4aa3170004cf9448a2ac979282378354235 | |
parent | 2c70734913c935d3f2f4df332f72bd9aa714661c (diff) | |
download | Nim-b8e8eaae66c3298d25a324e939ca6c1fd69a9652.tar.gz |
BigInt runnableExamples: octal, binary, hex constructor (#16868)
Co-authored-by: Timothee Cour <timothee.cour2@gmail.com>
-rw-r--r-- | lib/std/jsbigints.nim | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/lib/std/jsbigints.nim b/lib/std/jsbigints.nim index b62528abd..ba080f974 100644 --- a/lib/std/jsbigints.nim +++ b/lib/std/jsbigints.nim @@ -10,11 +10,18 @@ func big*(integer: SomeInteger): JsBigInt {.importjs: "BigInt(#)".} = ## Constructor for `JsBigInt`. runnableExamples: doAssert big(1234567890) == big"1234567890" + doAssert 0b1111100111.big == 0o1747.big and 0o1747.big == 999.big func big*(integer: cstring): JsBigInt {.importjs: "BigInt(#)".} = ## Constructor for `JsBigInt`. runnableExamples: doAssert big"-1" == big"1" - big"2" + # supports decimal, binary, octal, hex: + doAssert big"12" == 12.big + doAssert big"0b101" == 0b101.big + doAssert big"0o701" == 0o701.big + doAssert big"0xdeadbeaf" == 0xdeadbeaf.big + doAssert big"0xffffffffffffffff" == (1.big shl 64.big) - 1.big func toCstring*(this: JsBigInt; radix: 2..36): cstring {.importjs: "#.toString(#)".} = ## Converts from `JsBigInt` to `cstring` representation. @@ -190,17 +197,18 @@ proc high*(_: typedesc[JsBigInt]): JsBigInt {.error: runnableExamples: - let big1: JsBigInt = big"2147483647" - let big2: JsBigInt = big"666" - doAssert JsBigInt isnot int - doAssert big1 != big2 - doAssert big1 > big2 - doAssert big1 >= big2 - doAssert big2 < big1 - doAssert big2 <= big1 - doAssert not(big1 == big2) - let z = JsBigInt.default - doAssert $z == "0n" + block: + let big1: JsBigInt = big"2147483647" + let big2: JsBigInt = big"666" + doAssert JsBigInt isnot int + doAssert big1 != big2 + doAssert big1 > big2 + doAssert big1 >= big2 + doAssert big2 < big1 + doAssert big2 <= big1 + doAssert not(big1 == big2) + let z = JsBigInt.default + doAssert $z == "0n" block: var a: seq[JsBigInt] a.setLen 2 |