fix rope index (#16100)

* fix rope index

* add testcase

(cherry picked from commit ab2c082cb3)
This commit is contained in:
flywind
2020-11-23 18:27:09 +08:00
committed by narimiran
parent fbb58343d9
commit 74fa24ce45
2 changed files with 67 additions and 1 deletions

66
tests/stdlib/tropes.nim Normal file
View File

@@ -0,0 +1,66 @@
import ropes
block:
let r: Rope = nil
doAssert r[0] == '\0'
block:
var
r1 = rope("Hello")
r2 = rope("Nim-Lang")
let r = r1 & r2
let s = $r
for i in 0 ..< r.len:
doAssert r[i] == s[i]
doAssert r[66] == '\0'
block:
let r = rope("Hello, Nim-Lang")
let s = $r
for i in 0 ..< r.len:
doAssert r[i] == s[i]
doAssert r[66] == '\0'
block:
var r: Rope
r.add rope("Nim ")
r.add rope("is ")
r.add rope("a ")
r.add rope("great ")
r.add rope("language")
let s = $r
for i in 0 ..< r.len:
doAssert r[i] == s[i]
doAssert r[66] == '\0'
block:
var r: Rope
r.add rope("My Conquest")
r.add rope(" is ")
r.add rope("the Sea of Stars")
let s = $r
for i in 0 ..< r.len:
doAssert r[i] == s[i]
doAssert r[66] == '\0'
block:
var r: Rope
r.add rope("My Conquest")
r.add rope(" is ")
r.add rope("the Sea of Stars")
var i: int
for item in r:
doAssert r[i] == item
inc i
doAssert r[66] == '\0'