improve tests for collections (#16328)

* improve tests for collections

* remove remaining code blocks in deques.nim

* improve runnableExamples
This commit is contained in:
Timothee Cour 2020-12-12 00:33:29 -08:00 • committed by GitHub
commit b1c232aca1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 227 additions and 242 deletions

View file

@ -1,9 +1,10 @@
discard """
output: ""
targets: "c js"
"""
import sets, tables, deques, lists, critbits, sequtils
# see also: tdeques, tlists, tcritbits
import sets, tables, sequtils
block tapply:
var x = @[1, 2, 3]
@ -12,19 +13,6 @@ block tapply:
x.applyIt(it+5000)
doAssert x == @[5111, 5112, 5113]
block tdeques:
proc index(self: Deque[int], idx: Natural): int =
self[idx]
proc main =
var testDeque = initDeque[int]()
testDeque.addFirst(1)
assert testDeque.index(0) == 1
main()
block tmapit:
var x = @[1, 2, 3]
# This mapIt call will run with preallocation because ``len`` is available.
@ -75,6 +63,8 @@ doAssert $(toOrderedSet([1, 2, 3])) == "{1, 2, 3}"
doAssert $(toOrderedSet(["1", "2", "3"])) == """{"1", "2", "3"}"""
doAssert $(toOrderedSet(['1', '2', '3'])) == """{'1', '2', '3'}"""
# see also: tcritbitsToString, tlistsToString
# Tests for tables
when defined(nimIntHash1):
doAssert $({1: "1", 2: "2"}.toTable) == """{1: "1", 2: "2"}"""
@ -83,55 +73,6 @@ else:
let tabStr = $({"1": 1, "2": 2}.toTable)
doAssert (tabStr == """{"2": 2, "1": 1}""" or tabStr == """{"1": 1, "2": 2}""")
# Tests for deques
block:
var d = initDeque[int]()
d.addLast(1)
doAssert $d == "[1]"
block:
var d = initDeque[string]()
d.addLast("1")
doAssert $d == """["1"]"""
block:
var d = initDeque[char]()
d.addLast('1')
doAssert $d == "['1']"
# Tests for lists
block:
var l = initDoublyLinkedList[int]()
l.append(1)
l.append(2)
l.append(3)
doAssert $l == "[1, 2, 3]"
block:
var l = initDoublyLinkedList[string]()
l.append("1")
l.append("2")
l.append("3")
doAssert $l == """["1", "2", "3"]"""
block:
var l = initDoublyLinkedList[char]()
l.append('1')
l.append('2')
l.append('3')
doAssert $l == """['1', '2', '3']"""
# Tests for critbits
block:
var t: CritBitTree[int]
t["a"] = 1
doAssert $t == """{"a": 1}"""
block:
var t: CritBitTree[string]
t["a"] = "1"
doAssert $t == """{"a": "1"}"""
block:
var t: CritBitTree[char]
t["a"] = '1'
doAssert $t == """{"a": '1'}"""
# Test escaping behavior
block:
var s = ""