Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Side by Side Diff: tests/corelib/string_buffer_test.dart

Issue 12421002: Change VM's string-buffer patch to use a Uin16Array as backing buffer. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« runtime/lib/string.cc ('K') | « sdk/lib/core/string_buffer.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // TODO(srdjan): Move StringBuffer to visible names. 5 // TODO(srdjan): Move StringBuffer to visible names.
6 6
7 class StringBufferTest { 7 void testConstructor() {
8 static testConstructor() { 8 StringBuffer bf = new StringBuffer("");
9 StringBuffer bf = new StringBuffer(""); 9 Expect.equals(true, bf.isEmpty);
10 Expect.equals(true, bf.isEmpty);
11 10
12 bf = new StringBuffer("abc"); 11 bf = new StringBuffer("abc");
13 Expect.equals(3, bf.length); 12 Expect.equals(3, bf.length);
14 Expect.equals("abc", bf.toString()); 13 Expect.equals("abc", bf.toString());
15 }
16 14
17 static testAdd() { 15 bf = new StringBuffer("\x00");
18 StringBuffer bf = new StringBuffer("");
19 Expect.equals(true, bf.isEmpty);
20
21 bf.add("a");
22 Expect.equals(1, bf.length);
23 Expect.equals("a", bf.toString());
24
25 bf = new StringBuffer("");
26 bf.add("a");
27 bf.add("b");
28 Expect.equals("ab", bf.toString());
29
30 bf = new StringBuffer("abc");
31 bf.add("d");
32 bf.add("e");
33 bf.add("f");
34 bf.add("g");
35 bf.add("h");
36 bf.add("i");
37 bf.add("j");
38 bf.add("k");
39 bf.add("l");
40 bf.add("m");
41 bf.add("n");
42 bf.add("o");
43 bf.add("p");
44 bf.add("q");
45 bf.add("r");
46 bf.add("s");
47 bf.add("t");
48 bf.add("u");
49 bf.add("v");
50 bf.add("w");
51 bf.add("x");
52 bf.add("y");
53 bf.add("z");
54 bf.add("\n");
55 bf.add("thequickbrownfoxjumpsoverthelazydog");
56 Expect.equals("abcdefghijklmnopqrstuvwxyz\n"
57 "thequickbrownfoxjumpsoverthelazydog",
58 bf.toString());
59
60 bf = new StringBuffer("");
61 for (int i = 0; i < 100000; i++) {
62 bf.add('');
63 bf.add("");
64 }
65 Expect.equals("", bf.toString());
66 }
67
68 static testLength() {
69 StringBuffer bf = new StringBuffer("");
70 Expect.equals(0, bf.length);
71 bf.add("foo");
72 Expect.equals(3, bf.length);
73 bf.add("bar");
74 Expect.equals(6, bf.length);
75 bf.add("");
76 Expect.equals(6, bf.length);
77 }
78
79 static testIsEmpty() {
80 StringBuffer bf = new StringBuffer("");
81 Expect.equals(true, bf.isEmpty);
82 bf.add("foo");
83 Expect.equals(false, bf.isEmpty);
84 }
85
86 static testAddAll() {
87 StringBuffer bf = new StringBuffer("");
88 bf.addAll(["foo", "bar", "a", "b", "c"]);
89 Expect.equals("foobarabc", bf.toString());
90
91 bf.addAll([]);
92 Expect.equals("foobarabc", bf.toString());
93
94 bf.addAll(["", "", ""]);
95 Expect.equals("foobarabc", bf.toString());
96 }
97
98 static testClear() {
99 StringBuffer bf = new StringBuffer("");
100 bf.add("foo");
101 bf.clear();
102 Expect.equals("", bf.toString());
103 Expect.equals(0, bf.length);
104
105 bf.add("bar");
106 Expect.equals("bar", bf.toString());
107 Expect.equals(3, bf.length);
108 bf.clear();
109 Expect.equals("", bf.toString());
110 Expect.equals(0, bf.length);
111 }
112
113 static testToString() {
114 StringBuffer bf = new StringBuffer("");
115 Expect.equals("", bf.toString());
116
117 bf = new StringBuffer("foo");
118 Expect.equals("foo", bf.toString());
119
120 bf = new StringBuffer("foo");
121 bf.add("bar");
122 Expect.equals("foobar", bf.toString());
123 }
124
125 static testChaining() {
126 StringBuffer bf = new StringBuffer("");
127 StringBuffer bf2 = new StringBuffer("");
128 bf2.add("bf2");
129 bf..add("foo")
130 ..add("bar")
131 ..add(bf2)
132 ..add(bf2)
133 ..add("toto");
134 Expect.equals("foobarbf2bf2toto", bf.toString());
135 }
136
137 static testMain() {
138 testToString();
139 testConstructor();
140 testLength();
141 testIsEmpty();
142 testAdd();
143 testAddAll();
144 testClear();
145 testChaining();
146 }
147 } 16 }
148 17
149 main() { 18 void testWrite() {
150 StringBufferTest.testMain(); 19 StringBuffer bf = new StringBuffer("");
20 Expect.equals(true, bf.isEmpty);
21
22 bf.write("a");
23 Expect.equals(1, bf.length);
24 Expect.equals("a", bf.toString());
25
26 bf = new StringBuffer("");
27 bf.write("a");
28 bf.write("b");
29 Expect.equals("ab", bf.toString());
30
31 bf = new StringBuffer("abc");
32 bf.write("d");
33 bf.write("e");
34 bf.write("f");
35 bf.write("g");
36 bf.write("h");
37 bf.write("i");
38 bf.write("j");
39 bf.write("k");
40 bf.write("l");
41 bf.write("m");
42 bf.write("n");
43 bf.write("o");
44 bf.write("p");
45 bf.write("q");
46 bf.write("r");
47 bf.write("s");
48 bf.write("t");
49 bf.write("u");
50 bf.write("v");
51 bf.write("w");
52 bf.write("x");
53 bf.write("y");
54 bf.write("z");
55 bf.write("\n");
56 bf.write("thequickbrownfoxjumpsoverthelazydog");
57 Expect.equals("abcdefghijklmnopqrstuvwxyz\n"
58 "thequickbrownfoxjumpsoverthelazydog",
59 bf.toString());
60
61 bf = new StringBuffer("");
62 for (int i = 0; i < 100000; i++) {
63 bf.write('');
64 bf.write("");
65 }
66 Expect.equals("", bf.toString());
151 } 67 }
68
69 void testLength() {
70 StringBuffer bf = new StringBuffer("");
71 Expect.equals(0, bf.length);
72 bf.write("foo");
73 Expect.equals(3, bf.length);
74 bf.write("bar");
75 Expect.equals(6, bf.length);
76 bf.write("");
77 Expect.equals(6, bf.length);
78 }
79
80 void testIsEmpty() {
81 StringBuffer bf = new StringBuffer("");
82 Expect.equals(true, bf.isEmpty);
83 bf.write("foo");
84 Expect.equals(false, bf.isEmpty);
85 }
86
87 void testWriteAll() {
88 StringBuffer bf = new StringBuffer("");
89 bf.writeAll(["foo", "bar", "a", "b", "c"]);
90 Expect.equals("foobarabc", bf.toString());
91
92 bf.writeAll([]);
93 Expect.equals("foobarabc", bf.toString());
94
95 bf.writeAll(["", "", ""]);
96 Expect.equals("foobarabc", bf.toString());
97 }
98
99 void testClear() {
100 StringBuffer bf = new StringBuffer("");
101 bf.write("foo");
102 bf.clear();
103 Expect.equals("", bf.toString());
104 Expect.equals(0, bf.length);
105
106 bf.write("bar");
107 Expect.equals("bar", bf.toString());
108 Expect.equals(3, bf.length);
109 bf.clear();
110 Expect.equals("", bf.toString());
111 Expect.equals(0, bf.length);
112 }
113
114 void testToString() {
115 StringBuffer bf = new StringBuffer("");
116 Expect.equals("", bf.toString());
117
118 bf = new StringBuffer("foo");
119 Expect.equals("foo", bf.toString());
120
121 bf = new StringBuffer("foo");
122 bf.write("bar");
123 Expect.equals("foobar", bf.toString());
124 }
125
126 void testChaining() {
127 StringBuffer bf = new StringBuffer("");
128 StringBuffer bf2 = new StringBuffer("");
129 bf2.write("bf2");
130 bf..write("foo")
131 ..write("bar")
132 ..write(bf2)
133 ..write(bf2)
134 ..write("toto");
135 Expect.equals("foobarbf2bf2toto", bf.toString());
136 }
137
138 void testWriteCharCode() {
139 StringBuffer bf1 = new StringBuffer();
140 StringBuffer bf2 = new StringBuffer();
141 bf1.write("a");
142 bf2.writeCharCode(0x61); // a
143 bf1.write("b");
144 bf2.writeCharCode(0x62); // b
145 bf1.write("c");
146 bf2.writeCharCode(0x63); // c
147 bf1.write(new String.fromCharCode(0xD823));
148 bf2.writeCharCode(0xD823);
149 bf1.write(new String.fromCharCode(0xDC23));
150 bf2.writeCharCode(0xDC23);
151 bf1.write("\u{1d49e}");
152 bf2.writeCharCode(0x1d49e);
153 bf1.write("\x00");
154 bf2.writeCharCode(0);
155 Expect.equals(bf1.toString(), bf2.toString());
156 Expect.equals("abc\u{18c23}\u{1d49e}\x00", bf2.toString());
157
158 // Mixing strings and char-codes.
159 bf1.clear();
160 bf1.write("abcde");
161 bf1.writeCharCode(0x61);
162 bf1.writeCharCode(0x62);
163 bf1.writeCharCode(0x63);
164 bf1.write("d");
165 bf1.writeCharCode(0x65);
166 Expect.equals("abcdeabcde", bf1.toString());
167
168 // Out-of-range character codes are not allowed.
169 Expect.throws(() { bf2.writeCharCode(-1); });
170 Expect.throws(() { bf2.writeCharCode(0x110000); });
171 }
172
173 void main() {
174 testToString();
175 testConstructor();
176 testLength();
177 testIsEmpty();
178 testWrite();
179 testWriteCharCode();
180 testWriteAll();
181 testClear();
182 testChaining();
183 }
OLDNEW
« runtime/lib/string.cc ('K') | « sdk/lib/core/string_buffer.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698