Skip to content

Commit

Permalink
BigInt runnableExamples: octal, binary, hex constructor (#16868)
Browse files Browse the repository at this point in the history
Co-authored-by: Timothee Cour <timothee.cour2@gmail.com>
  • Loading branch information
juancarlospaco and timotheecour authored Jan 30, 2021
1 parent 2c70734 commit b8e8eaa
Showing 1 changed file with 19 additions and 11 deletions.
30 changes: 19 additions & 11 deletions lib/std/jsbigints.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit b8e8eaa

Please sign in to comment.