mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 17:34:43 +00:00
* 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 `[]`
103 lines
1.9 KiB
Nim
103 lines
1.9 KiB
Nim
discard """
|
|
targets: "c js"
|
|
"""
|
|
|
|
import std/ropes
|
|
|
|
template main() =
|
|
block:
|
|
let r: Rope = nil
|
|
doAssert r[0] == '\0'
|
|
doAssert $r == ""
|
|
|
|
block:
|
|
var
|
|
r1 = rope("Hello, ")
|
|
r2 = rope("Nim-Lang")
|
|
|
|
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'
|
|
|
|
block:
|
|
let r = rope("Hello, Nim-Lang")
|
|
|
|
let s = $r
|
|
doAssert s == "Hello, Nim-Lang"
|
|
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
|
|
doAssert s == "Nim is a great language"
|
|
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
|
|
doAssert s == "My Conquest is the Sea of Stars"
|
|
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")
|
|
|
|
doAssert $r == "My Conquest is the Sea of Stars"
|
|
|
|
var i: int
|
|
for item in r:
|
|
doAssert r[i] == item
|
|
inc i
|
|
|
|
doAssert r[66] == '\0'
|
|
|
|
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()
|