1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
discard """
matrix: "--mm:refc; --mm:orc"
targets: "c js"
"""
import std/ropes
import std/assertions
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()
|