| 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/memory/scoped_vector.h" | 8 #include "base/memory/scoped_vector.h" |
| 9 #include "base/strings/string16.h" | 9 #include "base/strings/string16.h" |
| 10 #include "content/common/indexed_db/indexed_db_key.h" | 10 #include "content/common/indexed_db/indexed_db_key.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 12 #include "third_party/WebKit/public/platform/WebIDBKey.h" | |
| 13 | |
| 14 using WebKit::WebIDBKey; | |
| 15 using WebKit::WebVector; | |
| 16 | 12 |
| 17 namespace content { | 13 namespace content { |
| 18 | 14 |
| 19 namespace { | 15 namespace { |
| 20 | 16 |
| 21 TEST(IndexedDBKeyTest, KeySizeEstimates) { | 17 TEST(IndexedDBKeyTest, KeySizeEstimates) { |
| 22 std::vector<IndexedDBKey> keys; | 18 std::vector<IndexedDBKey> keys; |
| 23 std::vector<WebIDBKey> web_keys; | |
| 24 std::vector<size_t> estimates; | 19 std::vector<size_t> estimates; |
| 25 | 20 |
| 26 keys.push_back(IndexedDBKey()); | 21 keys.push_back(IndexedDBKey()); |
| 27 web_keys.push_back(WebIDBKey::createInvalid()); | |
| 28 estimates.push_back(static_cast<size_t>(16)); // Overhead. | 22 estimates.push_back(static_cast<size_t>(16)); // Overhead. |
| 29 | 23 |
| 30 keys.push_back(IndexedDBKey(WebKit::WebIDBKeyTypeNull)); | 24 keys.push_back(IndexedDBKey(WebKit::WebIDBKeyTypeNull)); |
| 31 web_keys.push_back(WebIDBKey::createNull()); | |
| 32 estimates.push_back(static_cast<size_t>(16)); | 25 estimates.push_back(static_cast<size_t>(16)); |
| 33 | 26 |
| 34 double number = 3.14159; | 27 double number = 3.14159; |
| 35 keys.push_back(IndexedDBKey(number, WebKit::WebIDBKeyTypeNumber)); | 28 keys.push_back(IndexedDBKey(number, WebKit::WebIDBKeyTypeNumber)); |
| 36 web_keys.push_back(WebIDBKey::createNumber(number)); | |
| 37 estimates.push_back(static_cast<size_t>(24)); // Overhead + sizeof(double). | 29 estimates.push_back(static_cast<size_t>(24)); // Overhead + sizeof(double). |
| 38 | 30 |
| 39 double date = 1370884329.0; | 31 double date = 1370884329.0; |
| 40 keys.push_back(IndexedDBKey(date, WebKit::WebIDBKeyTypeDate)); | 32 keys.push_back(IndexedDBKey(date, WebKit::WebIDBKeyTypeDate)); |
| 41 web_keys.push_back(WebIDBKey::createDate(date)); | |
| 42 estimates.push_back(static_cast<size_t>(24)); // Overhead + sizeof(double). | 33 estimates.push_back(static_cast<size_t>(24)); // Overhead + sizeof(double). |
| 43 | 34 |
| 44 const string16 string(1024, static_cast<char16>('X')); | 35 const string16 string(1024, static_cast<char16>('X')); |
| 45 keys.push_back(IndexedDBKey(string)); | 36 keys.push_back(IndexedDBKey(string)); |
| 46 web_keys.push_back(WebIDBKey::createString(string)); | |
| 47 // Overhead + string length * sizeof(char16). | 37 // Overhead + string length * sizeof(char16). |
| 48 estimates.push_back(static_cast<size_t>(2064)); | 38 estimates.push_back(static_cast<size_t>(2064)); |
| 49 | 39 |
| 50 const size_t array_size = 1024; | 40 const size_t array_size = 1024; |
| 51 IndexedDBKey::KeyArray array; | 41 IndexedDBKey::KeyArray array; |
| 52 WebVector<WebIDBKey> web_array(static_cast<size_t>(array_size)); | |
| 53 double value = 123.456; | 42 double value = 123.456; |
| 54 for (size_t i = 0; i < array_size; ++i) { | 43 for (size_t i = 0; i < array_size; ++i) { |
| 55 array.push_back(IndexedDBKey(value, WebKit::WebIDBKeyTypeNumber)); | 44 array.push_back(IndexedDBKey(value, WebKit::WebIDBKeyTypeNumber)); |
| 56 web_array[i] = WebIDBKey::createNumber(value); | |
| 57 } | 45 } |
| 58 keys.push_back(IndexedDBKey(array)); | 46 keys.push_back(IndexedDBKey(array)); |
| 59 web_keys.push_back(WebIDBKey::createArray(array)); | |
| 60 // Overhead + array length * (Overhead + sizeof(double)). | 47 // Overhead + array length * (Overhead + sizeof(double)). |
| 61 estimates.push_back(static_cast<size_t>(24592)); | 48 estimates.push_back(static_cast<size_t>(24592)); |
| 62 | 49 |
| 63 ASSERT_EQ(keys.size(), web_keys.size()); | |
| 64 ASSERT_EQ(keys.size(), estimates.size()); | 50 ASSERT_EQ(keys.size(), estimates.size()); |
| 65 for (size_t i = 0; i < keys.size(); ++i) { | 51 for (size_t i = 0; i < keys.size(); ++i) { |
| 66 EXPECT_EQ(estimates[i], keys[i].size_estimate()); | 52 EXPECT_EQ(estimates[i], keys[i].size_estimate()); |
| 67 EXPECT_EQ(estimates[i], IndexedDBKey(web_keys[i]).size_estimate()); | |
| 68 } | 53 } |
| 69 } | 54 } |
| 70 | 55 |
| 71 } // namespace | 56 } // namespace |
| 72 | 57 |
| 73 } // namespace content | 58 } // namespace content |
| OLD | NEW |