Improve the ropes module (#17145)
* Improve ropes module Improve wording Update runnableExamples Add index bound check for `[]` Minor format changes * Update tests/stdlib/tropes.nim Run on C & JS target Test in VM Add tests for `[]`
This commit is contained in:
parent
d76d79336f
commit
a1f4113705
2 changed files with 130 additions and 117 deletions
|
|
@ -1,73 +1,102 @@
|
|||
import ropes
|
||||
discard """
|
||||
targets: "c js"
|
||||
"""
|
||||
|
||||
import std/ropes
|
||||
|
||||
block:
|
||||
let r: Rope = nil
|
||||
doAssert r[0] == '\0'
|
||||
template main() =
|
||||
block:
|
||||
let r: Rope = nil
|
||||
doAssert r[0] == '\0'
|
||||
doAssert $r == ""
|
||||
|
||||
block:
|
||||
var
|
||||
r1 = rope("Hello")
|
||||
r2 = rope("Nim-Lang")
|
||||
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]
|
||||
let r = r1 & r2
|
||||
let s = $r
|
||||
doAssert s == "Hello, Nim-Lang"
|
||||
for i in 0 ..< r.len:
|
||||
doAssert r[i] == s[i]
|
||||
|
||||
doAssert r[66] == '\0'
|
||||
doAssert r[66] == '\0'
|
||||
|
||||
block:
|
||||
let r = rope("Hello, Nim-Lang")
|
||||
block:
|
||||
let r = rope("Hello, Nim-Lang")
|
||||
|
||||
let s = $r
|
||||
for i in 0 ..< r.len:
|
||||
doAssert r[i] == s[i]
|
||||
let s = $r
|
||||
doAssert s == "Hello, Nim-Lang"
|
||||
for i in 0 ..< r.len:
|
||||
doAssert r[i] == s[i]
|
||||
|
||||
doAssert r[66] == '\0'
|
||||
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")
|
||||
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]
|
||||
let s = $r
|
||||
doAssert s == "Nim is a great language"
|
||||
for i in 0 ..< r.len:
|
||||
doAssert r[i] == s[i]
|
||||
|
||||
doAssert r[66] == '\0'
|
||||
doAssert r[66] == '\0'
|
||||
|
||||
block:
|
||||
var r: Rope
|
||||
r.add rope("My Conquest")
|
||||
r.add rope(" is ")
|
||||
r.add rope("the Sea of Stars")
|
||||
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]
|
||||
let s = $r
|
||||
doAssert s == "My Conquest is the Sea of Stars"
|
||||
for i in 0 ..< r.len:
|
||||
doAssert r[i] == s[i]
|
||||
|
||||
doAssert r[66] == '\0'
|
||||
doAssert r[66] == '\0'
|
||||
|
||||
block:
|
||||
var r: Rope
|
||||
r.add rope("My Conquest")
|
||||
r.add rope(" is ")
|
||||
r.add rope("the Sea of Stars")
|
||||
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 == "My Conquest is the Sea of Stars"
|
||||
|
||||
doAssert r[66] == '\0'
|
||||
var i: int
|
||||
for item in r:
|
||||
doAssert r[i] == item
|
||||
inc i
|
||||
|
||||
block:
|
||||
let r1 = "$1 $2 $3" % [rope("Nim"), rope("is"), rope("a great language")]
|
||||
doAssert $r1 == "Nim is a great language"
|
||||
doAssert r[66] == '\0'
|
||||
|
||||
let r2 = "$# $# $#" % [rope("Nim"), rope("is"), rope("a great language")]
|
||||
doAssert $r2 == "Nim is a great language"
|
||||
block:
|
||||
let r1 = "$1 $2 $3" % [rope("Nim"), rope("is"), rope("a great language")]
|
||||
doAssert $r1 == "Nim is a great language"
|
||||
|
||||
let r2 = "$# $# $#" % [rope("Nim"), rope("is"), rope("a great language")]
|
||||
doAssert $r2 == "Nim is a great language"
|
||||
|
||||
block: # `[]`
|
||||
let r1 = rope("Hello, Nim!")
|
||||
|
||||
doAssert r1[-2] == '\0'
|
||||
doAssert r1[0] == 'H'
|
||||
doAssert r1[7] == 'N'
|
||||
doAssert r1[22] == '\0'
|
||||
|
||||
let r2 = rope("Hello") & rope(", Nim!")
|
||||
|
||||
doAssert r2[-2] == '\0'
|
||||
doAssert r2[0] == 'H'
|
||||
doAssert r2[7] == 'N'
|
||||
doAssert r2[22] == '\0'
|
||||
|
||||
static: main()
|
||||
main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue