1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// Copyright 2013 The Chromium Authors. All rights reserved. 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// Use of this source code is governed by a BSD-style license that can be 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// found in the LICENSE file. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com#include <vector> 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com#include "base/basictypes.h" 88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "base/memory/scoped_vector.h" 90716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com#include "base/strings/string16.h" 10c73dd5c6880739f26216f198c757028fd28df1a4djsollen@google.com#include "content/common/indexed_db/indexed_db_key.h" 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "testing/gtest/include/gtest/gtest.h" 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 134991b8f23482afc1494fd17647421ce68de53331robertphillips@google.comnamespace content { 144991b8f23482afc1494fd17647421ce68de53331robertphillips@google.com 150716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.comnamespace { 160716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com 170456e0b7b85060e9b9597ce414c4c2b19aff4f58robertphillips@google.comTEST(IndexedDBKeyTest, KeySizeEstimates) { 180456e0b7b85060e9b9597ce414c4c2b19aff4f58robertphillips@google.com std::vector<IndexedDBKey> keys; 190716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com std::vector<size_t> estimates; 20a8282ef8f9e63e60c5665af0cdfc8fdd11c089f6mike@reedtribe.org 21a8282ef8f9e63e60c5665af0cdfc8fdd11c089f6mike@reedtribe.org keys.push_back(IndexedDBKey()); 220716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com estimates.push_back(16u); // Overhead. 230716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com 240716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com keys.push_back(IndexedDBKey(blink::WebIDBKeyTypeNull)); 250716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com estimates.push_back(16u); 268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 273c898186c9082c535e589807752a0a9dc5d28aa0vandebo@chromium.org double number = 3.14159; 283c898186c9082c535e589807752a0a9dc5d28aa0vandebo@chromium.org keys.push_back(IndexedDBKey(number, blink::WebIDBKeyTypeNumber)); 293c898186c9082c535e589807752a0a9dc5d28aa0vandebo@chromium.org estimates.push_back(24u); // Overhead + sizeof(double). 303c898186c9082c535e589807752a0a9dc5d28aa0vandebo@chromium.org 318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com double date = 1370884329.0; 328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com keys.push_back(IndexedDBKey(date, blink::WebIDBKeyTypeDate)); 338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com estimates.push_back(24u); // Overhead + sizeof(double). 348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const base::string16 string(1024, static_cast<base::char16>('X')); 368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com keys.push_back(IndexedDBKey(string)); 378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com // Overhead + string length * sizeof(base::char16). 388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com estimates.push_back(2064u); 398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const size_t array_size = 1024; 410716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com IndexedDBKey::KeyArray array; 420716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com double value = 123.456; 438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com for (size_t i = 0; i < array_size; ++i) { 448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com array.push_back(IndexedDBKey(value, blink::WebIDBKeyTypeNumber)); 458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com keys.push_back(IndexedDBKey(array)); 470716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com // Overhead + array length * (Overhead + sizeof(double)). 488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com estimates.push_back(24592u); 498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com ASSERT_EQ(keys.size(), estimates.size()); 518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com for (size_t i = 0; i < keys.size(); ++i) { 528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com EXPECT_EQ(estimates[i], keys[i].size_estimate()); 53a8282ef8f9e63e60c5665af0cdfc8fdd11c089f6mike@reedtribe.org } 540716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com} 550716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com 560716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com} // namespace 57a8282ef8f9e63e60c5665af0cdfc8fdd11c089f6mike@reedtribe.org 580716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com} // namespace content 590716c63332a64c3cc77a9afb87ae2fd9614f0c4freed@google.com