summary refs log tree commit diff stats
path: root/tests/stdlib
diff options
context:
space:
mode:
authorflywind <43030857+xflywind@users.noreply.github.com>2020-11-23 18:27:09 +0800
committerGitHub <noreply@github.com>2020-11-23 10:27:09 +0000
commitab2c082cb3e9e411571fa0936776762bc0c8fd94 (patch)
tree93b0d9279491a0bcef241108f31e70a587e17f2e /tests/stdlib
parent6a37c0682ad30701aeef22e146d5cd5bff33b830 (diff)
downloadNim-ab2c082cb3e9e411571fa0936776762bc0c8fd94.tar.gz
fix rope index (#16100)
* fix rope index

* add testcase
Diffstat (limited to 'tests/stdlib')
-rw-r--r--tests/stdlib/tropes.nim66
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/stdlib/tropes.nim b/tests/stdlib/tropes.nim
new file mode 100644
index 000000000..9678e26c3
--- /dev/null
+++ b/tests/stdlib/tropes.nim
@@ -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'