-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c7c5711
commit 0f98528
Showing
2 changed files
with
57 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
import std/unittest | ||
import std/strformat | ||
|
||
import pkg/stint | ||
import pkg/questionable | ||
|
||
import ethers/blocktag | ||
|
||
|
||
type | ||
PredefinedTags = enum earliest, latest, pending | ||
|
||
suite "BlockTag": | ||
for predefinedTag in PredefinedTags: | ||
test fmt"can be created with predefined special type: {predefinedTag}": | ||
var blockTag: BlockTag | ||
case predefinedTag: | ||
of earliest: blockTag = BlockTag.earliest | ||
of latest: blockTag = BlockTag.latest | ||
of pending: blockTag = BlockTag.pending | ||
check $blockTag == $predefinedTag | ||
|
||
test "can be created with a number": | ||
let blockTag = BlockTag.init(42.u256) | ||
check blockTag.number == 42.u256.some | ||
|
||
test "can be converted to string in hex format for BlockTags with number": | ||
let blockTag = BlockTag.init(42.u256) | ||
check $blockTag == "0x2a" | ||
|
||
test "can be compared for equality when BlockTag with number": | ||
let blockTag1 = BlockTag.init(42.u256) | ||
let blockTag2 = BlockTag.init(42.u256) | ||
let blockTag3 = BlockTag.init(43.u256) | ||
check blockTag1 == blockTag2 | ||
check blockTag1 != blockTag3 | ||
|
||
for predefinedTag in [BlockTag.earliest, BlockTag.latest, BlockTag.pending]: | ||
test fmt"can be compared for equality when predefined tag: {predefinedTag}": | ||
case $predefinedTag: | ||
of "earliest": | ||
check predefinedTag == BlockTag.earliest | ||
check predefinedTag != BlockTag.latest | ||
check predefinedTag != BlockTag.pending | ||
of "latest": | ||
check predefinedTag != BlockTag.earliest | ||
check predefinedTag == BlockTag.latest | ||
check predefinedTag != BlockTag.pending | ||
of "pending": | ||
check predefinedTag != BlockTag.earliest | ||
check predefinedTag != BlockTag.latest | ||
check predefinedTag == BlockTag.pending | ||
|
||
for predefinedTag in [BlockTag.earliest, BlockTag.latest, BlockTag.pending]: | ||
test fmt"number accessor returns None for BlockTags with string: {predefinedTag}": | ||
check predefinedTag.number == UInt256.none |