From 2ab91ce94015f69242c8cf9e8e733b0d733657e3 Mon Sep 17 00:00:00 2001
From: Martin Nilsson <nilsson@opera.com>
Date: Tue, 26 Aug 2014 16:49:59 +0200
Subject: [PATCH] Tests for String.Buffer []= and cut.

---
 lib/modules/String.pmod/testsuite.in | 112 +++++++++++++++++++++++++++
 1 file changed, 112 insertions(+)

diff --git a/lib/modules/String.pmod/testsuite.in b/lib/modules/String.pmod/testsuite.in
index 1382a0d53c..aee651dbc1 100644
--- a/lib/modules/String.pmod/testsuite.in
+++ b/lib/modules/String.pmod/testsuite.in
@@ -105,6 +105,118 @@ test_do([[
   return (string) b;
 ]])
 
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("abc");
+  return b[1];
+]], 98)
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("abc");
+  return b[-1];
+]], 99)
+test_runtime_error([[
+  String.Buffer b = String.Buffer();
+  b->add("abc");
+  return b[3];
+]])
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("a\u0100a");
+  return b[1];
+]], 256)
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("a\U00010000a");
+  return b[1];
+]], 65536)
+
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("aaa");
+  return b[1]='b';
+]], 98)
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("aaa");
+  b[1]='b';
+  return (string)b;
+]], "aba")
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("aaa");
+  b[1]=256;
+  return (string)b;
+]], "a\u0100a")
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("aaa");
+  b[1]=65536;
+  return (string)b;
+]], "a\U00010000a")
+
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("1234");
+  b = b[..1];
+  b->add("x");
+  return (string)b;
+]], "12x")
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("1234");
+  return (string)b[1..];
+]], "234")
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("1234");
+  return (string)b[1..2];
+]], "23")
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("1234");
+  return (string)b[..<1];
+]], "123")
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("ab\u0100\u0101\U00010000\U00010001");
+  return (string)b[0..1];
+]], "ab")
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("ab\u0100\u0101\U00010000\U00010001");
+  return (string)b[2..3];
+]], "\u0100\u0101")
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("ab\u0100\u0101\U00010000\U00010001");
+  return (string)b[4..5];
+]], "\U00010000\U00010001")
+
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("ab\u0100\u0101\U00010000\U00010001cd");
+  b->cut(4,5,1);
+  return (string)b;
+]], "ab\u0100\u0101cd")
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("ab\u0100\u0101\U00010000\U00010001cd");
+  b->cut(2,5,1);
+  return (string)b;
+]], "abcd")
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("ab\u0100\u0101\U00010000\U00010001cd");
+  return (string)b->cut(4,5) + "_" + (string)b;
+]], "\U00010000\U00010001_ab\u0100\u0101cd")
+test_any([[
+  String.Buffer b = String.Buffer();
+  b->add("ab\u0100\u0101\U00010000\U00010001cd");
+  return (string)b->cut(2,5) + "_" + (string)b;
+]], "\u0100\u0101\U00010000\U00010001_abcd")
+
+
 test_eq([[ String.count( "", "a" ) ]], 0)
 test_eq([[ String.count( "aaa", "a" ) ]], 3)
 test_eq([[ String.count( "aaa", "aa" ) ]], 1)
-- 
GitLab