fix rope index (#16100)

* fix rope index

* add testcase
This commit is contained in:
flywind 2020-11-23 18:27:09 +08:00 • committed by GitHub
commit ab2c082cb3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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'