diff options
Diffstat (limited to 'Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp')
-rw-r--r-- | Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp | 62 |
1 files changed, 60 insertions, 2 deletions
diff --git a/Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp b/Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp index 8ee5c6e04..d1b5b43bd 100644 --- a/Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp +++ b/Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2011 Google Inc. All rights reserved. + * Copyright (C) 2013 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -33,11 +34,11 @@ namespace TestWebKitAPI { -void expectBuilderContent(const char* expected, const StringBuilder& builder) +static void expectBuilderContent(const String& expected, const StringBuilder& builder) { // Not using builder.toString() or builder.toStringPreserveCapacity() because they all // change internal state of builder. - EXPECT_EQ(String(expected), String(builder.characters(), builder.length())); + EXPECT_EQ(expected, String(builder.characters(), builder.length())); } void expectEmpty(const StringBuilder& builder) @@ -85,6 +86,16 @@ TEST(StringBuilderTest, Append) builder2.toStringPreserveCapacity(); // Test after reifyString with buffer preserved. builder2.append("abcd"); ASSERT_EQ(characters, builder2.characters()); + + // Test appending UChar32 characters to StringBuilder. + StringBuilder builderForUChar32Append; + UChar32 frakturAChar = 0x1D504; + builderForUChar32Append.append(frakturAChar); // The fraktur A is not in the BMP, so it's two UTF-16 code units long. + ASSERT_EQ(2U, builderForUChar32Append.length()); + builderForUChar32Append.append(static_cast<UChar32>('A')); + ASSERT_EQ(3U, builderForUChar32Append.length()); + const UChar resultArray[] = { U16_LEAD(frakturAChar), U16_TRAIL(frakturAChar), 'A' }; + expectBuilderContent(String(resultArray, WTF_ARRAY_LENGTH(resultArray)), builderForUChar32Append); } TEST(StringBuilderTest, ToString) @@ -274,4 +285,51 @@ TEST(StringBuilderTest, ToAtomicString) ASSERT_EQ(atomicString2.impl(), string.impl()); } +TEST(StringBuilderTest, ToAtomicStringOnEmpty) +{ + { // Default constructed. + StringBuilder builder; + AtomicString atomicString = builder.toAtomicString(); + ASSERT_EQ(emptyAtom, atomicString); + } + { // With capacity. + StringBuilder builder; + builder.reserveCapacity(64); + AtomicString atomicString = builder.toAtomicString(); + ASSERT_EQ(emptyAtom, atomicString); + } + { // AtomicString constructed from a null string. + StringBuilder builder; + builder.append(String()); + AtomicString atomicString = builder.toAtomicString(); + ASSERT_EQ(emptyAtom, atomicString); + } + { // AtomicString constructed from an empty string. + StringBuilder builder; + builder.append(emptyString()); + AtomicString atomicString = builder.toAtomicString(); + ASSERT_EQ(emptyAtom, atomicString); + } + { // AtomicString constructed from an empty StringBuilder. + StringBuilder builder; + StringBuilder emptyBuilder; + builder.append(emptyBuilder); + AtomicString atomicString = builder.toAtomicString(); + ASSERT_EQ(emptyAtom, atomicString); + } + { // AtomicString constructed from an empty char* string. + StringBuilder builder; + builder.append("", 0); + AtomicString atomicString = builder.toAtomicString(); + ASSERT_EQ(emptyAtom, atomicString); + } + { // Cleared StringBuilder. + StringBuilder builder; + builder.appendLiteral("WebKit"); + builder.clear(); + AtomicString atomicString = builder.toAtomicString(); + ASSERT_EQ(emptyAtom, atomicString); + } +} + } // namespace |