mirror of
https://github.com/status-im/nim-stew.git
synced 2025-02-10 03:04:33 +00:00
parent
8a1b6ab4dc
commit
665e1d1604
@ -327,7 +327,7 @@ proc len[P,S](iv: Segm[P,S]): S =
|
||||
|
||||
# ------
|
||||
|
||||
proc inc[P,S](a: var P; n: S) =
|
||||
proc incPt[P,S](a: var P; n: S) =
|
||||
## Might not be generally available for point `P` and scalar `S`
|
||||
a = a + n
|
||||
|
||||
@ -616,13 +616,13 @@ proc coveredImpl[P,S](ds: IntervalSetRef[P,S]; start: P; length: S): S =
|
||||
# p: [-------------)
|
||||
# overlap: <------->
|
||||
#
|
||||
result.inc p.right - iv.left
|
||||
result.incPt p.right - iv.left
|
||||
else:
|
||||
# iv: [--------)
|
||||
# p: [--------------------)
|
||||
# overlap: <------->
|
||||
#
|
||||
result.inc iv.len
|
||||
result.incPt iv.len
|
||||
break
|
||||
else:
|
||||
if iv.right < p.right:
|
||||
@ -631,13 +631,13 @@ proc coveredImpl[P,S](ds: IntervalSetRef[P,S]; start: P; length: S): S =
|
||||
# p: [--------------)
|
||||
# overlap: <-------->
|
||||
#
|
||||
result.inc iv.right - p.left
|
||||
result.incPt iv.right - p.left
|
||||
else:
|
||||
# iv: [----------------------)
|
||||
# p: [----------)
|
||||
# overlap: <--------->
|
||||
#
|
||||
result.inc p.len
|
||||
result.incPt p.len
|
||||
|
||||
iv.size = p.left - iv.left
|
||||
# iv: [---)
|
||||
|
@ -117,25 +117,28 @@ suite "SortedSet: Sorted list based on red-black tree":
|
||||
test "Delete items":
|
||||
var seen: seq[int]
|
||||
let sub7 = keyList.len div 7
|
||||
for n in toSeq(countup(0,sub7)).concat(toSeq(countup(3*sub7,4*sub7))):
|
||||
let
|
||||
key = keyList[n]
|
||||
canDeleteOk = (key notin seen)
|
||||
if sl.len == 0:
|
||||
skip()
|
||||
else:
|
||||
for n in toSeq(countup(0,sub7)).concat(toSeq(countup(3*sub7,4*sub7))):
|
||||
let
|
||||
key = keyList[n]
|
||||
canDeleteOk = (key notin seen)
|
||||
|
||||
data = sl.delete(key)
|
||||
slCheck = sl.verify
|
||||
data = sl.delete(key)
|
||||
slCheck = sl.verify
|
||||
|
||||
if key notin seen:
|
||||
seen.add key
|
||||
if key notin seen:
|
||||
seen.add key
|
||||
|
||||
if slCheck.isErr:
|
||||
check slCheck.error[1] == rbOk # force message
|
||||
check data.isOk == canDeleteOk
|
||||
if slCheck.isErr:
|
||||
check slCheck.error[1] == rbOk # force message
|
||||
check data.isOk == canDeleteOk
|
||||
|
||||
if canDeleteOk:
|
||||
check data.value.key == key
|
||||
if data.isOk: # assuming data.isOk == canDeleteOk if correct
|
||||
check data.value.key == key
|
||||
|
||||
check seen.len + sl.len + rej.len == keyList.len
|
||||
check seen.len + sl.len + rej.len == keyList.len
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# End
|
||||
|
Loading…
x
Reference in New Issue
Block a user