OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/strings/safe_sprintf.h" | 5 #include "base/strings/safe_sprintf.h" |
6 | 6 |
7 #include <stdio.h> | 7 #include <stdio.h> |
8 #include <string.h> | 8 #include <string.h> |
9 | 9 |
10 #include <limits> | 10 #include <limits> |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 EXPECT_EQ('X', buf[1]); | 54 EXPECT_EQ('X', buf[1]); |
55 buf[0] = 'X'; | 55 buf[0] = 'X'; |
56 } | 56 } |
57 | 57 |
58 TEST(SafeSPrintfTest, NoArguments) { | 58 TEST(SafeSPrintfTest, NoArguments) { |
59 // Output a text message that doesn't require any substitutions. This | 59 // Output a text message that doesn't require any substitutions. This |
60 // is roughly equivalent to calling strncpy() (but unlike strncpy(), it does | 60 // is roughly equivalent to calling strncpy() (but unlike strncpy(), it does |
61 // always add a trailing NUL; it always deduplicates '%' characters). | 61 // always add a trailing NUL; it always deduplicates '%' characters). |
62 static const char text[] = "hello world"; | 62 static const char text[] = "hello world"; |
63 char ref[20], buf[20]; | 63 char ref[20], buf[20]; |
64 memset(ref, 'X', sizeof(char) * arraysize(buf)); | 64 memset(ref, 'X', sizeof(ref)); |
65 memcpy(buf, ref, sizeof(buf)); | 65 memcpy(buf, ref, sizeof(buf)); |
66 | 66 |
67 // A negative buffer size should always result in an error. | 67 // A negative buffer size should always result in an error. |
68 EXPECT_EQ(-1, SafeSNPrintf(buf, static_cast<size_t>(-1), text)); | 68 EXPECT_EQ(-1, SafeSNPrintf(buf, static_cast<size_t>(-1), text)); |
69 EXPECT_TRUE(!memcmp(buf, ref, sizeof(buf))); | 69 EXPECT_TRUE(!memcmp(buf, ref, sizeof(buf))); |
70 | 70 |
71 // Zero buffer size should always result in an error. | 71 // Zero buffer size should always result in an error. |
72 EXPECT_EQ(-1, SafeSNPrintf(buf, 0, text)); | 72 EXPECT_EQ(-1, SafeSNPrintf(buf, 0, text)); |
73 EXPECT_TRUE(!memcmp(buf, ref, sizeof(buf))); | 73 EXPECT_TRUE(!memcmp(buf, ref, sizeof(buf))); |
74 | 74 |
(...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
750 void *ptr = str; | 750 void *ptr = str; |
751 char buf[40]; | 751 char buf[40]; |
752 EXPECT_EQ(10, SafeSPrintf(buf, "%p", str)); | 752 EXPECT_EQ(10, SafeSPrintf(buf, "%p", str)); |
753 EXPECT_EQ("0x80000000", std::string(buf)); | 753 EXPECT_EQ("0x80000000", std::string(buf)); |
754 EXPECT_EQ(10, SafeSPrintf(buf, "%p", ptr)); | 754 EXPECT_EQ(10, SafeSPrintf(buf, "%p", ptr)); |
755 EXPECT_EQ("0x80000000", std::string(buf)); | 755 EXPECT_EQ("0x80000000", std::string(buf)); |
756 } | 756 } |
757 | 757 |
758 } // namespace strings | 758 } // namespace strings |
759 } // namespace base | 759 } // namespace base |
OLD | NEW |