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

Side by Side Diff: third_party/WebKit/Source/platform/SharedBufferTest.cpp

Issue 1571233003: Fix errors caused by unsafe conversions to/from size_t (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: improved ALLOW_NUMERIC_ARG_TYPES_PROMOTABLE_TO Created 4 years, 11 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 TEST(SharedBufferTest, getAsBytes) 43 TEST(SharedBufferTest, getAsBytes)
44 { 44 {
45 char testData0[] = "Hello"; 45 char testData0[] = "Hello";
46 char testData1[] = "World"; 46 char testData1[] = "World";
47 char testData2[] = "Goodbye"; 47 char testData2[] = "Goodbye";
48 48
49 RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(testData0, strlen(t estData0)); 49 RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(testData0, strlen(t estData0));
50 sharedBuffer->append(testData1, strlen(testData1)); 50 sharedBuffer->append(testData1, strlen(testData1));
51 sharedBuffer->append(testData2, strlen(testData2)); 51 sharedBuffer->append(testData2, strlen(testData2));
52 52
53 const unsigned size = sharedBuffer->size(); 53 const size_t size = sharedBuffer->size();
54 OwnPtr<char[]> data = adoptArrayPtr(new char[size]); 54 OwnPtr<char[]> data = adoptArrayPtr(new char[size]);
55 ASSERT_TRUE(sharedBuffer->getAsBytes(data.get(), size)); 55 ASSERT_TRUE(sharedBuffer->getAsBytes(data.get(), size));
56 56
57 char expectedConcatenation[] = "HelloWorldGoodbye"; 57 char expectedConcatenation[] = "HelloWorldGoodbye";
58 ASSERT_EQ(strlen(expectedConcatenation), size); 58 ASSERT_EQ(strlen(expectedConcatenation), size);
59 EXPECT_EQ(0, memcmp(expectedConcatenation, data.get(), strlen(expectedConcat enation))); 59 EXPECT_EQ(0, memcmp(expectedConcatenation, data.get(), strlen(expectedConcat enation)));
60 } 60 }
61 61
62 TEST(SharedBufferTest, getAsBytesLargeSegments) 62 TEST(SharedBufferTest, getAsBytesLargeSegments)
63 { 63 {
64 Vector<char> vector0(0x4000); 64 Vector<char> vector0(0x4000);
65 for (size_t i = 0; i < vector0.size(); ++i) 65 for (size_t i = 0; i < vector0.size(); ++i)
66 vector0[i] = 'a'; 66 vector0[i] = 'a';
67 Vector<char> vector1(0x4000); 67 Vector<char> vector1(0x4000);
68 for (size_t i = 0; i < vector1.size(); ++i) 68 for (size_t i = 0; i < vector1.size(); ++i)
69 vector1[i] = 'b'; 69 vector1[i] = 'b';
70 Vector<char> vector2(0x4000); 70 Vector<char> vector2(0x4000);
71 for (size_t i = 0; i < vector2.size(); ++i) 71 for (size_t i = 0; i < vector2.size(); ++i)
72 vector2[i] = 'c'; 72 vector2[i] = 'c';
73 73
74 RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::adoptVector(vector0); 74 RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::adoptVector(vector0);
75 sharedBuffer->append(vector1); 75 sharedBuffer->append(vector1);
76 sharedBuffer->append(vector2); 76 sharedBuffer->append(vector2);
77 77
78 const unsigned size = sharedBuffer->size(); 78 const size_t size = sharedBuffer->size();
79 OwnPtr<char[]> data = adoptArrayPtr(new char[size]); 79 OwnPtr<char[]> data = adoptArrayPtr(new char[size]);
80 ASSERT_TRUE(sharedBuffer->getAsBytes(data.get(), size)); 80 ASSERT_TRUE(sharedBuffer->getAsBytes(data.get(), size));
81 81
82 ASSERT_EQ(0x4000U + 0x4000U + 0x4000U, size); 82 ASSERT_EQ(0x4000U + 0x4000U + 0x4000U, size);
83 int position = 0; 83 int position = 0;
84 for (int i = 0; i < 0x4000; ++i) { 84 for (int i = 0; i < 0x4000; ++i) {
85 EXPECT_EQ('a', data[position]); 85 EXPECT_EQ('a', data[position]);
86 ++position; 86 ++position;
87 } 87 }
88 for (int i = 0; i < 0x4000; ++i) { 88 for (int i = 0; i < 0x4000; ++i) {
89 EXPECT_EQ('b', data[position]); 89 EXPECT_EQ('b', data[position]);
90 ++position; 90 ++position;
91 } 91 }
92 for (int i = 0; i < 0x4000; ++i) { 92 for (int i = 0; i < 0x4000; ++i) {
93 EXPECT_EQ('c', data[position]); 93 EXPECT_EQ('c', data[position]);
94 ++position; 94 ++position;
95 } 95 }
96 } 96 }
97 97
98 TEST(SharedBufferTest, copy) 98 TEST(SharedBufferTest, copy)
99 { 99 {
100 Vector<char> testData(10000); 100 Vector<char> testData(10000);
101 std::generate(testData.begin(), testData.end(), &std::rand); 101 std::generate(testData.begin(), testData.end(), &std::rand);
102 102
103 unsigned length = testData.size(); 103 size_t length = testData.size();
104 RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(testData.data(), le ngth); 104 RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(testData.data(), le ngth);
105 sharedBuffer->append(testData.data(), length); 105 sharedBuffer->append(testData.data(), length);
106 sharedBuffer->append(testData.data(), length); 106 sharedBuffer->append(testData.data(), length);
107 sharedBuffer->append(testData.data(), length); 107 sharedBuffer->append(testData.data(), length);
108 // sharedBuffer must contain data more than segmentSize (= 0x1000) to check copy(). 108 // sharedBuffer must contain data more than segmentSize (= 0x1000) to check copy().
109 ASSERT_EQ(length * 4, sharedBuffer->size()); 109 ASSERT_EQ(length * 4, sharedBuffer->size());
110 110
111 RefPtr<SharedBuffer> clone = sharedBuffer->copy(); 111 RefPtr<SharedBuffer> clone = sharedBuffer->copy();
112 ASSERT_EQ(length * 4, clone->size()); 112 ASSERT_EQ(length * 4, clone->size());
113 ASSERT_EQ(0, memcmp(clone->data(), sharedBuffer->data(), clone->size())); 113 ASSERT_EQ(0, memcmp(clone->data(), sharedBuffer->data(), clone->size()));
114 114
115 clone->append(testData.data(), length); 115 clone->append(testData.data(), length);
116 ASSERT_EQ(length * 5, clone->size()); 116 ASSERT_EQ(length * 5, clone->size());
117 } 117 }
118 118
119 TEST(SharedBufferTest, constructorWithSizeOnly) 119 TEST(SharedBufferTest, constructorWithSizeOnly)
120 { 120 {
121 unsigned length = 10000; 121 size_t length = 10000;
122 RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(length); 122 RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(length);
123 ASSERT_EQ(length, sharedBuffer->size()); 123 ASSERT_EQ(length, sharedBuffer->size());
124 124
125 // The internal flat buffer should have been resized to |length| therefore g etSomeData() should 125 // The internal flat buffer should have been resized to |length| therefore g etSomeData() should
126 // directly return the full size. 126 // directly return the full size.
127 const char* data; 127 const char* data;
128 ASSERT_EQ(length, sharedBuffer->getSomeData(data, 0)); 128 ASSERT_EQ(length, sharedBuffer->getSomeData(data, static_cast<size_t>(0u)));
129 } 129 }
130 130
131 TEST(SharedBufferTest, createPurgeable) 131 TEST(SharedBufferTest, createPurgeable)
132 { 132 {
133 Vector<char> testData(30000); 133 Vector<char> testData(30000);
134 std::generate(testData.begin(), testData.end(), &std::rand); 134 std::generate(testData.begin(), testData.end(), &std::rand);
135 135
136 TestingPlatformSupport::Config config; 136 TestingPlatformSupport::Config config;
137 config.hasDiscardableMemorySupport = true; 137 config.hasDiscardableMemorySupport = true;
138 TestingPlatformSupport platformWithDiscardableMemorySupport(config); 138 TestingPlatformSupport platformWithDiscardableMemorySupport(config);
139 139
140 unsigned length = testData.size(); 140 size_t length = testData.size();
141 RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::createPurgeable(testData.d ata(), length); 141 RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::createPurgeable(testData.d ata(), length);
142 ASSERT_EQ(length, sharedBuffer->size()); 142 ASSERT_EQ(length, sharedBuffer->size());
143 // Merge the segments into a single vector. 143 // Merge the segments into a single vector.
144 const char* data = sharedBuffer->data(); 144 const char* data = sharedBuffer->data();
145 ASSERT_EQ(0, memcmp(data, testData.data(), length)); 145 ASSERT_EQ(0, memcmp(data, testData.data(), length));
146 146
147 // Do another append + merge the segments again. 147 // Do another append + merge the segments again.
148 size_t previousTestDataSize = testData.size(); 148 size_t previousTestDataSize = testData.size();
149 testData.resize(2 * previousTestDataSize); 149 testData.resize(2 * previousTestDataSize);
150 std::generate(testData.begin() + previousTestDataSize, testData.end(), &std: :rand); 150 std::generate(testData.begin() + previousTestDataSize, testData.end(), &std: :rand);
151 sharedBuffer->append(testData.data() + previousTestDataSize, previousTestDat aSize); 151 sharedBuffer->append(testData.data() + previousTestDataSize, previousTestDat aSize);
152 ASSERT_EQ(0, memcmp(data, testData.data(), length)); 152 ASSERT_EQ(0, memcmp(data, testData.data(), length));
153 } 153 }
154 154
155 } // namespace blink 155 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698