fixes #1413
This commit is contained in:
parent
9d5d3c9fa1
commit
abc8447331
1 changed files with 19 additions and 1 deletions
|
|
@ -713,6 +713,24 @@ proc `$`*[A](s: TOrderedSet[A]): string =
|
||||||
assert s.isValid, "The set needs to be initialized."
|
assert s.isValid, "The set needs to be initialized."
|
||||||
dollarImpl()
|
dollarImpl()
|
||||||
|
|
||||||
|
proc `==`*[A](s, t: TOrderedSet[A]): bool =
|
||||||
|
## Equality for ordered sets.
|
||||||
|
if s.counter != t.counter: return false
|
||||||
|
var h = s.first
|
||||||
|
var g = s.first
|
||||||
|
var compared = 0
|
||||||
|
while h >= 0 and g >= 0:
|
||||||
|
var nxh = s.data[h].next
|
||||||
|
var nxg = t.data[g].next
|
||||||
|
if s.data[h].slot == seFilled and s.data[g].slot == seFilled:
|
||||||
|
if s.data[h].key == s.data[g].key:
|
||||||
|
inc compared
|
||||||
|
else:
|
||||||
|
return false
|
||||||
|
h = nxh
|
||||||
|
g = nxg
|
||||||
|
result = compared == s.counter
|
||||||
|
|
||||||
proc testModule() =
|
proc testModule() =
|
||||||
## Internal micro test to validate docstrings and such.
|
## Internal micro test to validate docstrings and such.
|
||||||
block isValidTest:
|
block isValidTest:
|
||||||
|
|
@ -858,7 +876,7 @@ proc testModule() =
|
||||||
var b = initOrderedSet[int]()
|
var b = initOrderedSet[int]()
|
||||||
for x in [2, 4, 5]: b.incl(x)
|
for x in [2, 4, 5]: b.incl(x)
|
||||||
assert($a == $b)
|
assert($a == $b)
|
||||||
# assert(a == b) # https://github.com/Araq/Nimrod/issues/1413
|
assert(a == b) # https://github.com/Araq/Nimrod/issues/1413
|
||||||
|
|
||||||
block initBlocks:
|
block initBlocks:
|
||||||
var a: TOrderedSet[int]
|
var a: TOrderedSet[int]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue