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

Unified Diff: core/src/fxcrt/fx_basic_bstring_unittest.cpp

Issue 1114313006: Make constructors recognize char[n] vs. char* and avoid strlen calls. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Delegated constructors everywhere. Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: core/src/fxcrt/fx_basic_bstring_unittest.cpp
diff --git a/core/src/fxcrt/fx_basic_bstring_unittest.cpp b/core/src/fxcrt/fx_basic_bstring_unittest.cpp
index 9f37cbcf194a2bc8bc6e8e69b65db675ba9c0147..e506f9ddd20081bf78db93dc6499471e0fee2fb5 100644
--- a/core/src/fxcrt/fx_basic_bstring_unittest.cpp
+++ b/core/src/fxcrt/fx_basic_bstring_unittest.cpp
@@ -6,6 +6,32 @@
#include "../../../testing/fx_string_testhelpers.h"
#include "../../include/fxcrt/fx_basic.h"
+TEST(fxcrt, ByteStringNotNull) {
+ CFX_ByteString string3("abc");
+ CFX_ByteString string6("abcdef");
+ CFX_ByteString alternate_string3("abcdef", 3);
+ CFX_ByteStringC illegal_string7("abcdef", 7);
+ EXPECT_EQ(3, string3.GetLength());
+ EXPECT_EQ(6, string6.GetLength());
+ EXPECT_EQ(3, alternate_string3.GetLength());
+ EXPECT_EQ(7, illegal_string7.GetLength());
+
+ // Prove constructor uses sizeof(), not strlen() against literals.
+ CFX_ByteString literal_string("abc\0def");
+ EXPECT_EQ(7, literal_string.GetLength());
+
+ // Prove constructor uses strlen(), not sizeof() against mutable arrays.
+ char array[32];
+ memcpy(array, "abc\0def", 7);
+ CFX_ByteString array_string(array);
+ EXPECT_EQ(3, array_string.GetLength());
+
+ // Prove constructor uses strlen(), not sizeof() against pointers.
+ const char* ptr = "abc\0def";
+ CFX_ByteString pointer_string(ptr);
+ EXPECT_EQ(3, pointer_string.GetLength());
+}
+
TEST(fxcrt, ByteStringOperatorSubscript) {
// CFX_ByteString includes the NUL terminator for non-empty strings.
CFX_ByteString abc("abc");
@@ -192,13 +218,27 @@ TEST(fxcrt, ByteStringCNotNull) {
CFX_ByteStringC alternate_string3("abcdef", 3);
CFX_ByteStringC embedded_nul_string7("abc\0def", 7);
CFX_ByteStringC illegal_string7("abcdef", 7);
-
EXPECT_EQ(3, string3.GetLength());
EXPECT_EQ(6, string6.GetLength());
EXPECT_EQ(3, alternate_string3.GetLength());
EXPECT_EQ(7, embedded_nul_string7.GetLength());
EXPECT_EQ(7, illegal_string7.GetLength());
+ // Prove constructor uses sizeof(), not strlen() against literals.
+ CFX_ByteStringC literal_string("abc\0def");
+ EXPECT_EQ(7, literal_string.GetLength());
+
+ // Prove constructor uses strlen(), not sizeof() against mutable arrays.
+ char array[32];
+ memcpy(array, "abc\0def", 7);
+ CFX_ByteStringC array_string(array);
+ EXPECT_EQ(3, array_string.GetLength());
+
+ // Prove constructor uses strlen(), not sizeof() against pointers.
+ const char* ptr = "abc\0def";
+ CFX_ByteStringC pointer_string(ptr);
+ EXPECT_EQ(3, pointer_string.GetLength());
+
EXPECT_NE(string3, string6);
EXPECT_EQ(string3, alternate_string3);
EXPECT_NE(string3, embedded_nul_string7);

Powered by Google App Engine
This is Rietveld 408576698