parent
b46f23d7cc
commit
7dc8dcb581
1 changed files with 49 additions and 15 deletions
|
|
@ -618,11 +618,19 @@ proc `$`*[A, B](t: OrderedTable[A, B]): string =
|
||||||
proc `==`*[A, B](s, t: OrderedTable[A, B]): bool =
|
proc `==`*[A, B](s, t: OrderedTable[A, B]): bool =
|
||||||
## The `==` operator for ordered hash tables. Returns true iff both the
|
## The `==` operator for ordered hash tables. Returns true iff both the
|
||||||
## content and the order are equal.
|
## content and the order are equal.
|
||||||
if s.counter == t.counter:
|
if s.counter != t.counter:
|
||||||
forAllOrderedPairs:
|
return false
|
||||||
if s.data[h] != t.data[h]: return false
|
var ht = t.first
|
||||||
result = true
|
var hs = s.first
|
||||||
else: result = false
|
while ht >= 0 and hs >= 0:
|
||||||
|
var nxtt = t.data[ht].next
|
||||||
|
var nxts = s.data[hs].next
|
||||||
|
if isFilled(t.data[ht].hcode) and isFilled(s.data[hs].hcode):
|
||||||
|
if (s.data[hs].key != t.data[ht].key) and (s.data[hs].val != t.data[ht].val):
|
||||||
|
return false
|
||||||
|
ht = nxtt
|
||||||
|
hs = nxts
|
||||||
|
return true
|
||||||
|
|
||||||
proc sort*[A, B](t: var OrderedTable[A, B],
|
proc sort*[A, B](t: var OrderedTable[A, B],
|
||||||
cmp: proc (x,y: (A, B)): int) =
|
cmp: proc (x,y: (A, B)): int) =
|
||||||
|
|
@ -1233,14 +1241,15 @@ when isMainModule:
|
||||||
t.inc(testKey,3)
|
t.inc(testKey,3)
|
||||||
doAssert 3 == t.getOrDefault(testKey)
|
doAssert 3 == t.getOrDefault(testKey)
|
||||||
|
|
||||||
# Clear tests
|
block:
|
||||||
var clearTable = newTable[int, string]()
|
# Clear tests
|
||||||
clearTable[42] = "asd"
|
var clearTable = newTable[int, string]()
|
||||||
clearTable[123123] = "piuyqwb "
|
clearTable[42] = "asd"
|
||||||
doAssert clearTable[42] == "asd"
|
clearTable[123123] = "piuyqwb "
|
||||||
clearTable.clear()
|
doAssert clearTable[42] == "asd"
|
||||||
doAssert(not clearTable.hasKey(123123))
|
clearTable.clear()
|
||||||
doAssert clearTable.getOrDefault(42) == nil
|
doAssert(not clearTable.hasKey(123123))
|
||||||
|
doAssert clearTable.getOrDefault(42) == nil
|
||||||
|
|
||||||
block: #5482
|
block: #5482
|
||||||
var a = [("wrong?","foo"), ("wrong?", "foo2")].newOrderedTable()
|
var a = [("wrong?","foo"), ("wrong?", "foo2")].newOrderedTable()
|
||||||
|
|
@ -1255,3 +1264,28 @@ when isMainModule:
|
||||||
b.add("wrong?", "foo")
|
b.add("wrong?", "foo")
|
||||||
b.add("wrong?", "foo2")
|
b.add("wrong?", "foo2")
|
||||||
assert a == b
|
assert a == b
|
||||||
|
|
||||||
|
block: #5487
|
||||||
|
var a = {"wrong?": "foo", "wrong?": "foo2"}.newOrderedTable()
|
||||||
|
var b = newOrderedTable[string, string]() # notice, default size!
|
||||||
|
b.add("wrong?", "foo")
|
||||||
|
b.add("wrong?", "foo2")
|
||||||
|
assert a == b
|
||||||
|
|
||||||
|
block: #5487
|
||||||
|
var a = [("wrong?","foo"), ("wrong?", "foo2")].newOrderedTable()
|
||||||
|
var b = newOrderedTable[string, string]() # notice, default size!
|
||||||
|
b.add("wrong?", "foo")
|
||||||
|
b.add("wrong?", "foo2")
|
||||||
|
assert a == b
|
||||||
|
|
||||||
|
block:
|
||||||
|
var a = {"wrong?": "foo", "wrong?": "foo2"}.newOrderedTable()
|
||||||
|
var b = [("wrong?","foo"), ("wrong?", "foo2")].newOrderedTable()
|
||||||
|
var c = newOrderedTable[string, string]() # notice, default size!
|
||||||
|
c.add("wrong?", "foo")
|
||||||
|
c.add("wrong?", "foo2")
|
||||||
|
assert a == b
|
||||||
|
assert a == c
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue