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