| Index: test/codegen/corelib/string_buffer_test.dart
|
| diff --git a/test/codegen/corelib/string_buffer_test.dart b/test/codegen/corelib/string_buffer_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8a24b35a306d702236de56df9f7a21e103bc1e26
|
| --- /dev/null
|
| +++ b/test/codegen/corelib/string_buffer_test.dart
|
| @@ -0,0 +1,236 @@
|
| +// 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 testWriteAll2() {
|
| + // Passing `null` for separator is an error that is checked when the iterable
|
| + // is not empty. This is not specified in the documentation but we want
|
| + // implementations to be consistent.
|
| + StringBuffer bf1 = new StringBuffer("");
|
| + bf1.writeAll([], null);
|
| + Expect.equals("", bf1.toString());
|
| +
|
| + StringBuffer bf2 = new StringBuffer("");
|
| + Expect.throws(() { bf2.writeAll([1], null); });
|
| +}
|
| +
|
| +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();
|
| + testWriteAll2();
|
| + testWriteln();
|
| + testClear();
|
| + testChaining();
|
| +}
|
|
|