mirror of
https://github.com/dart-lang/sdk
synced 2024-09-06 00:59:09 +00:00
![Robert Nystrom](/assets/img/avatar_default.png)
Change-Id: I3a31632ce28fb87a410b759d092c7ebc9393574d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/128306 Commit-Queue: Bob Nystrom <rnystrom@google.com> Auto-Submit: Bob Nystrom <rnystrom@google.com> Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
225 lines
5.2 KiB
Dart
225 lines
5.2 KiB
Dart
// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
// TODO(srdjan): Move StringBuffer to visible names.
|
|
|
|
void testConstructor() {
|
|
StringBuffer bf = new StringBuffer("");
|
|
testBufferLength(0, bf);
|
|
|
|
bf = new StringBuffer("abc");
|
|
testBufferLength(3, bf);
|
|
Expect.equals("abc", bf.toString());
|
|
|
|
bf = new StringBuffer("\x00");
|
|
}
|
|
|
|
void testWrite() {
|
|
StringBuffer bf = new StringBuffer("");
|
|
Expect.equals(true, bf.isEmpty);
|
|
|
|
bf.write("a");
|
|
testBufferLength(1, bf);
|
|
Expect.equals("a", bf.toString());
|
|
|
|
bf = new StringBuffer("");
|
|
bf.write("a");
|
|
bf.write("b");
|
|
Expect.equals("ab", bf.toString());
|
|
|
|
bf = new StringBuffer("abc");
|
|
bf.write("d");
|
|
bf.write("e");
|
|
bf.write("f");
|
|
bf.write("g");
|
|
bf.write("h");
|
|
bf.write("i");
|
|
bf.write("j");
|
|
bf.write("k");
|
|
bf.write("l");
|
|
bf.write("m");
|
|
bf.write("n");
|
|
bf.write("o");
|
|
bf.write("p");
|
|
bf.write("q");
|
|
bf.write("r");
|
|
bf.write("s");
|
|
bf.write("t");
|
|
bf.write("u");
|
|
bf.write("v");
|
|
bf.write("w");
|
|
bf.write("x");
|
|
bf.write("y");
|
|
bf.write("z");
|
|
bf.write("\n");
|
|
bf.write("thequickbrownfoxjumpsoverthelazydog");
|
|
Expect.equals(
|
|
"abcdefghijklmnopqrstuvwxyz\n"
|
|
"thequickbrownfoxjumpsoverthelazydog",
|
|
bf.toString());
|
|
|
|
bf = new StringBuffer("");
|
|
for (int i = 0; i < 100000; i++) {
|
|
bf.write('');
|
|
bf.write("");
|
|
}
|
|
Expect.equals("", bf.toString());
|
|
}
|
|
|
|
void testLength() {
|
|
StringBuffer bf = new StringBuffer("");
|
|
testBufferLength(0, bf);
|
|
bf.write("foo");
|
|
testBufferLength(3, bf);
|
|
bf.write("bar");
|
|
testBufferLength(6, bf);
|
|
bf.write("");
|
|
testBufferLength(6, bf);
|
|
}
|
|
|
|
void testIsEmpty() {
|
|
StringBuffer bf = new StringBuffer("");
|
|
Expect.equals(true, bf.isEmpty);
|
|
bf.write("foo");
|
|
Expect.equals(false, bf.isEmpty);
|
|
}
|
|
|
|
void testWriteAll() {
|
|
StringBuffer bf = new StringBuffer("");
|
|
bf.writeAll(["foo", "bar", "a", "b", "c"]);
|
|
Expect.equals("foobarabc", bf.toString());
|
|
|
|
bf.writeAll([]);
|
|
Expect.equals("foobarabc", bf.toString());
|
|
|
|
bf.writeAll(["", "", ""]);
|
|
Expect.equals("foobarabc", bf.toString());
|
|
|
|
bf.writeAll(["", "", ""], "");
|
|
Expect.equals("foobarabc", bf.toString());
|
|
|
|
StringBuffer bf2 = new StringBuffer("");
|
|
bf2.writeAll([], "s");
|
|
Expect.equals("", bf2.toString());
|
|
|
|
StringBuffer bf3 = new StringBuffer("");
|
|
bf3.writeAll(["a"], "s");
|
|
Expect.equals("a", bf3.toString());
|
|
|
|
StringBuffer bf4 = new StringBuffer("");
|
|
bf4.writeAll(["a", "b"], "s");
|
|
Expect.equals("asb", bf4.toString());
|
|
}
|
|
|
|
void testWriteln() {
|
|
StringBuffer bf1 = new StringBuffer("");
|
|
bf1.writeln("Hello");
|
|
Expect.equals("Hello\n", bf1.toString());
|
|
|
|
StringBuffer bf2 = new StringBuffer("");
|
|
bf2.writeln();
|
|
Expect.equals("\n", bf2.toString());
|
|
|
|
StringBuffer bf3 = new StringBuffer("");
|
|
bf3.writeln("\n");
|
|
bf3.writeln(null);
|
|
bf3.writeln(1);
|
|
Expect.equals("\n\nnull\n1\n", bf3.toString());
|
|
}
|
|
|
|
void testClear() {
|
|
StringBuffer bf = new StringBuffer("");
|
|
bf.write("foo");
|
|
bf.clear();
|
|
Expect.equals("", bf.toString());
|
|
testBufferLength(0, bf);
|
|
|
|
bf.write("bar");
|
|
Expect.equals("bar", bf.toString());
|
|
testBufferLength(3, bf);
|
|
bf.clear();
|
|
Expect.equals("", bf.toString());
|
|
testBufferLength(0, bf);
|
|
}
|
|
|
|
void testToString() {
|
|
StringBuffer bf = new StringBuffer("");
|
|
Expect.equals("", bf.toString());
|
|
|
|
bf = new StringBuffer("foo");
|
|
Expect.equals("foo", bf.toString());
|
|
|
|
bf = new StringBuffer("foo");
|
|
bf.write("bar");
|
|
Expect.equals("foobar", bf.toString());
|
|
}
|
|
|
|
void testChaining() {
|
|
StringBuffer bf = new StringBuffer("");
|
|
StringBuffer bf2 = new StringBuffer("");
|
|
bf2.write("bf2");
|
|
bf..write("foo")..write("bar")..write(bf2)..write(bf2)..write("toto");
|
|
Expect.equals("foobarbf2bf2toto", bf.toString());
|
|
}
|
|
|
|
void testWriteCharCode() {
|
|
StringBuffer bf1 = new StringBuffer();
|
|
StringBuffer bf2 = new StringBuffer();
|
|
bf1.write("a");
|
|
bf2.writeCharCode(0x61); // a
|
|
bf1.write("b");
|
|
bf2.writeCharCode(0x62); // b
|
|
bf1.write("c");
|
|
bf2.writeCharCode(0x63); // c
|
|
bf1.write(new String.fromCharCode(0xD823));
|
|
bf2.writeCharCode(0xD823);
|
|
bf1.write(new String.fromCharCode(0xDC23));
|
|
bf2.writeCharCode(0xDC23);
|
|
bf1.write("\u{1d49e}");
|
|
bf2.writeCharCode(0x1d49e);
|
|
bf1.write("\x00");
|
|
bf2.writeCharCode(0);
|
|
Expect.equals(bf1.toString(), bf2.toString());
|
|
Expect.equals("abc\u{18c23}\u{1d49e}\x00", bf2.toString());
|
|
|
|
// Mixing strings and char-codes.
|
|
bf1.clear();
|
|
bf1.write("abcde");
|
|
bf1.writeCharCode(0x61);
|
|
bf1.writeCharCode(0x62);
|
|
bf1.writeCharCode(0x63);
|
|
bf1.write("d");
|
|
bf1.writeCharCode(0x65);
|
|
Expect.equals("abcdeabcde", bf1.toString());
|
|
|
|
// Out-of-range character codes are not allowed.
|
|
Expect.throws(() {
|
|
bf2.writeCharCode(-1);
|
|
});
|
|
Expect.throws(() {
|
|
bf2.writeCharCode(0x110000);
|
|
});
|
|
}
|
|
|
|
void testBufferLength(int length, StringBuffer bf) {
|
|
Expect.equals(length, bf.length);
|
|
(length == 0 ? Expect.isTrue : Expect.isFalse)(bf.isEmpty);
|
|
(length != 0 ? Expect.isTrue : Expect.isFalse)(bf.isNotEmpty);
|
|
}
|
|
|
|
void main() {
|
|
testToString();
|
|
testConstructor();
|
|
testLength();
|
|
testIsEmpty();
|
|
testWrite();
|
|
testWriteCharCode();
|
|
testWriteAll();
|
|
testWriteln();
|
|
testClear();
|
|
testChaining();
|
|
}
|