summary refs log tree commit diff stats
path: root/tests/stdlib/tropes.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/stdlib/tropes.nim')
-rw-r--r--tests/stdlib/tropes.nim137
1 files changed, 83 insertions, 54 deletions
diff --git a/tests/stdlib/tropes.nim b/tests/stdlib/tropes.nim
index 0c95d5c5f..5a9150a33 100644
--- a/tests/stdlib/tropes.nim
+++ b/tests/stdlib/tropes.nim
@@ -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()