summaryrefslogtreecommitdiffstats
path: root/chromium/content/browser/indexed_db/indexed_db_leveldb_coding_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/indexed_db/indexed_db_leveldb_coding_unittest.cc')
-rw-r--r--chromium/content/browser/indexed_db/indexed_db_leveldb_coding_unittest.cc198
1 files changed, 129 insertions, 69 deletions
diff --git a/chromium/content/browser/indexed_db/indexed_db_leveldb_coding_unittest.cc b/chromium/content/browser/indexed_db/indexed_db_leveldb_coding_unittest.cc
index 44c4ab88cdb..0bd647cff3a 100644
--- a/chromium/content/browser/indexed_db/indexed_db_leveldb_coding_unittest.cc
+++ b/chromium/content/browser/indexed_db/indexed_db_leveldb_coding_unittest.cc
@@ -15,6 +15,7 @@
#include "content/common/indexed_db/indexed_db_key_path.h"
#include "testing/gtest/include/gtest/gtest.h"
+using base::ASCIIToUTF16;
using base::StringPiece;
using blink::WebIDBKeyTypeDate;
using blink::WebIDBKeyTypeNumber;
@@ -77,7 +78,7 @@ TEST(IndexedDBLevelDBCodingTest, DecodeByte) {
EncodeByte(n, &v);
unsigned char res;
- ASSERT_GT(v.size(), static_cast<size_t>(0));
+ ASSERT_GT(v.size(), 0u);
StringPiece slice(v);
EXPECT_TRUE(DecodeByte(&slice, &res));
EXPECT_EQ(n, res);
@@ -175,13 +176,13 @@ static std::string WrappedEncodeInt(int64 value) {
}
TEST(IndexedDBLevelDBCodingTest, EncodeInt) {
- EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeInt(0).size());
- EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeInt(1).size());
- EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeInt(255).size());
- EXPECT_EQ(static_cast<size_t>(2), WrappedEncodeInt(256).size());
- EXPECT_EQ(static_cast<size_t>(4), WrappedEncodeInt(0xffffffff).size());
+ EXPECT_EQ(1u, WrappedEncodeInt(0).size());
+ EXPECT_EQ(1u, WrappedEncodeInt(1).size());
+ EXPECT_EQ(1u, WrappedEncodeInt(255).size());
+ EXPECT_EQ(2u, WrappedEncodeInt(256).size());
+ EXPECT_EQ(4u, WrappedEncodeInt(0xffffffff).size());
#ifdef NDEBUG
- EXPECT_EQ(static_cast<size_t>(8), WrappedEncodeInt(-1).size());
+ EXPECT_EQ(8u, WrappedEncodeInt(-1).size());
#endif
}
@@ -228,7 +229,7 @@ TEST(IndexedDBLevelDBCodingTest, DecodeInt) {
for (size_t i = 0; i < test_cases.size(); ++i) {
int64 n = test_cases[i];
std::string v = WrappedEncodeInt(n);
- ASSERT_GT(v.size(), static_cast<size_t>(0));
+ ASSERT_GT(v.size(), 0u);
StringPiece slice(v);
int64 value;
EXPECT_TRUE(DecodeInt(&slice, &value));
@@ -236,7 +237,7 @@ TEST(IndexedDBLevelDBCodingTest, DecodeInt) {
EXPECT_TRUE(slice.empty());
// Verify decoding at an offset, to detect unaligned memory access.
- v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0));
+ v.insert(v.begin(), 1u, static_cast<char>(0));
slice = StringPiece(&*v.begin() + 1, v.size() - 1);
EXPECT_TRUE(DecodeInt(&slice, &value));
EXPECT_EQ(n, value);
@@ -256,17 +257,15 @@ static std::string WrappedEncodeVarInt(int64 value) {
}
TEST(IndexedDBLevelDBCodingTest, EncodeVarInt) {
- EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeVarInt(0).size());
- EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeVarInt(1).size());
- EXPECT_EQ(static_cast<size_t>(2), WrappedEncodeVarInt(255).size());
- EXPECT_EQ(static_cast<size_t>(2), WrappedEncodeVarInt(256).size());
- EXPECT_EQ(static_cast<size_t>(5), WrappedEncodeVarInt(0xffffffff).size());
- EXPECT_EQ(static_cast<size_t>(8),
- WrappedEncodeVarInt(0xfffffffffffffLL).size());
- EXPECT_EQ(static_cast<size_t>(9),
- WrappedEncodeVarInt(0x7fffffffffffffffLL).size());
+ EXPECT_EQ(1u, WrappedEncodeVarInt(0).size());
+ EXPECT_EQ(1u, WrappedEncodeVarInt(1).size());
+ EXPECT_EQ(2u, WrappedEncodeVarInt(255).size());
+ EXPECT_EQ(2u, WrappedEncodeVarInt(256).size());
+ EXPECT_EQ(5u, WrappedEncodeVarInt(0xffffffff).size());
+ EXPECT_EQ(8u, WrappedEncodeVarInt(0xfffffffffffffLL).size());
+ EXPECT_EQ(9u, WrappedEncodeVarInt(0x7fffffffffffffffLL).size());
#ifdef NDEBUG
- EXPECT_EQ(static_cast<size_t>(10), WrappedEncodeVarInt(-100).size());
+ EXPECT_EQ(10u, WrappedEncodeVarInt(-100).size());
#endif
}
@@ -287,7 +286,7 @@ TEST(IndexedDBLevelDBCodingTest, DecodeVarInt) {
for (size_t i = 0; i < test_cases.size(); ++i) {
int64 n = test_cases[i];
std::string v = WrappedEncodeVarInt(n);
- ASSERT_GT(v.size(), static_cast<size_t>(0));
+ ASSERT_GT(v.size(), 0u);
StringPiece slice(v);
int64 res;
EXPECT_TRUE(DecodeVarInt(&slice, &res));
@@ -301,7 +300,7 @@ TEST(IndexedDBLevelDBCodingTest, DecodeVarInt) {
EXPECT_FALSE(DecodeVarInt(&slice, &res));
// Verify decoding at an offset, to detect unaligned memory access.
- v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0));
+ v.insert(v.begin(), 1u, static_cast<char>(0));
slice = StringPiece(&*v.begin() + 1, v.size() - 1);
EXPECT_TRUE(DecodeVarInt(&slice, &res));
EXPECT_EQ(n, res);
@@ -316,24 +315,19 @@ static std::string WrappedEncodeString(base::string16 value) {
}
TEST(IndexedDBLevelDBCodingTest, EncodeString) {
- const char16 test_string_a[] = {'f', 'o', 'o', '\0'};
- const char16 test_string_b[] = {0xdead, 0xbeef, '\0'};
+ const base::char16 test_string_a[] = {'f', 'o', 'o', '\0'};
+ const base::char16 test_string_b[] = {0xdead, 0xbeef, '\0'};
- EXPECT_EQ(static_cast<size_t>(0),
- WrappedEncodeString(ASCIIToUTF16("")).size());
- EXPECT_EQ(static_cast<size_t>(2),
- WrappedEncodeString(ASCIIToUTF16("a")).size());
- EXPECT_EQ(static_cast<size_t>(6),
- WrappedEncodeString(ASCIIToUTF16("foo")).size());
- EXPECT_EQ(static_cast<size_t>(6),
- WrappedEncodeString(base::string16(test_string_a)).size());
- EXPECT_EQ(static_cast<size_t>(4),
- WrappedEncodeString(base::string16(test_string_b)).size());
+ EXPECT_EQ(0u, WrappedEncodeString(ASCIIToUTF16("")).size());
+ EXPECT_EQ(2u, WrappedEncodeString(ASCIIToUTF16("a")).size());
+ EXPECT_EQ(6u, WrappedEncodeString(ASCIIToUTF16("foo")).size());
+ EXPECT_EQ(6u, WrappedEncodeString(base::string16(test_string_a)).size());
+ EXPECT_EQ(4u, WrappedEncodeString(base::string16(test_string_b)).size());
}
TEST(IndexedDBLevelDBCodingTest, DecodeString) {
- const char16 test_string_a[] = {'f', 'o', 'o', '\0'};
- const char16 test_string_b[] = {0xdead, 0xbeef, '\0'};
+ const base::char16 test_string_a[] = {'f', 'o', 'o', '\0'};
+ const base::char16 test_string_b[] = {0xdead, 0xbeef, '\0'};
std::vector<base::string16> test_cases;
test_cases.push_back(base::string16());
@@ -357,7 +351,7 @@ TEST(IndexedDBLevelDBCodingTest, DecodeString) {
EXPECT_TRUE(slice.empty());
// Verify decoding at an offset, to detect unaligned memory access.
- v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0));
+ v.insert(v.begin(), 1u, static_cast<char>(0));
slice = StringPiece(&*v.begin() + 1, v.size() - 1);
EXPECT_TRUE(DecodeString(&slice, &result));
EXPECT_EQ(test_case, result);
@@ -372,27 +366,23 @@ static std::string WrappedEncodeStringWithLength(base::string16 value) {
}
TEST(IndexedDBLevelDBCodingTest, EncodeStringWithLength) {
- const char16 test_string_a[] = {'f', 'o', 'o', '\0'};
- const char16 test_string_b[] = {0xdead, 0xbeef, '\0'};
+ const base::char16 test_string_a[] = {'f', 'o', 'o', '\0'};
+ const base::char16 test_string_b[] = {0xdead, 0xbeef, '\0'};
- EXPECT_EQ(static_cast<size_t>(1),
- WrappedEncodeStringWithLength(base::string16()).size());
- EXPECT_EQ(static_cast<size_t>(3),
- WrappedEncodeStringWithLength(ASCIIToUTF16("a")).size());
- EXPECT_EQ(static_cast<size_t>(7),
- WrappedEncodeStringWithLength(
- base::string16(test_string_a)).size());
- EXPECT_EQ(static_cast<size_t>(5),
- WrappedEncodeStringWithLength(
- base::string16(test_string_b)).size());
+ EXPECT_EQ(1u, WrappedEncodeStringWithLength(base::string16()).size());
+ EXPECT_EQ(3u, WrappedEncodeStringWithLength(ASCIIToUTF16("a")).size());
+ EXPECT_EQ(
+ 7u, WrappedEncodeStringWithLength(base::string16(test_string_a)).size());
+ EXPECT_EQ(
+ 5u, WrappedEncodeStringWithLength(base::string16(test_string_b)).size());
}
TEST(IndexedDBLevelDBCodingTest, DecodeStringWithLength) {
- const char16 test_string_a[] = {'f', 'o', 'o', '\0'};
- const char16 test_string_b[] = {0xdead, 0xbeef, '\0'};
+ const base::char16 test_string_a[] = {'f', 'o', 'o', '\0'};
+ const base::char16 test_string_b[] = {0xdead, 0xbeef, '\0'};
const int kLongStringLen = 1234;
- char16 long_string[kLongStringLen + 1];
+ base::char16 long_string[kLongStringLen + 1];
for (int i = 0; i < kLongStringLen; ++i)
long_string[i] = i;
long_string[kLongStringLen] = 0;
@@ -408,7 +398,7 @@ TEST(IndexedDBLevelDBCodingTest, DecodeStringWithLength) {
for (size_t i = 0; i < test_cases.size(); ++i) {
base::string16 s = test_cases[i];
std::string v = WrappedEncodeStringWithLength(s);
- ASSERT_GT(v.size(), static_cast<size_t>(0));
+ ASSERT_GT(v.size(), 0u);
StringPiece slice(v);
base::string16 res;
EXPECT_TRUE(DecodeStringWithLength(&slice, &res));
@@ -422,7 +412,7 @@ TEST(IndexedDBLevelDBCodingTest, DecodeStringWithLength) {
EXPECT_FALSE(DecodeStringWithLength(&slice, &res));
// Verify decoding at an offset, to detect unaligned memory access.
- v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0));
+ v.insert(v.begin(), 1u, static_cast<char>(0));
slice = StringPiece(&*v.begin() + 1, v.size() - 1);
EXPECT_TRUE(DecodeStringWithLength(&slice, &res));
EXPECT_EQ(s, res);
@@ -444,12 +434,12 @@ static int CompareStrings(const std::string& p, const std::string& q) {
}
TEST(IndexedDBLevelDBCodingTest, CompareEncodedStringsWithLength) {
- const char16 test_string_a[] = {0x1000, 0x1000, '\0'};
- const char16 test_string_b[] = {0x1000, 0x1000, 0x1000, '\0'};
- const char16 test_string_c[] = {0x1000, 0x1000, 0x1001, '\0'};
- const char16 test_string_d[] = {0x1001, 0x1000, 0x1000, '\0'};
- const char16 test_string_e[] = {0xd834, 0xdd1e, '\0'};
- const char16 test_string_f[] = {0xfffd, '\0'};
+ const base::char16 test_string_a[] = {0x1000, 0x1000, '\0'};
+ const base::char16 test_string_b[] = {0x1000, 0x1000, 0x1000, '\0'};
+ const base::char16 test_string_c[] = {0x1000, 0x1000, 0x1001, '\0'};
+ const base::char16 test_string_d[] = {0x1001, 0x1000, 0x1000, '\0'};
+ const base::char16 test_string_e[] = {0xd834, 0xdd1e, '\0'};
+ const base::char16 test_string_f[] = {0xfffd, '\0'};
std::vector<base::string16> test_cases;
test_cases.push_back(ASCIIToUTF16(""));
@@ -495,13 +485,13 @@ static std::string WrappedEncodeBinary(std::string value) {
TEST(IndexedDBLevelDBCodingTest, EncodeBinary) {
const unsigned char binary_data[] = {0x00, 0x01, 0xfe, 0xff};
EXPECT_EQ(
- static_cast<size_t>(1),
+ 1u,
WrappedEncodeBinary(std::string(binary_data, binary_data + 0)).size());
EXPECT_EQ(
- static_cast<size_t>(2),
+ 2u,
WrappedEncodeBinary(std::string(binary_data, binary_data + 1)).size());
EXPECT_EQ(
- static_cast<size_t>(5),
+ 5u,
WrappedEncodeBinary(std::string(binary_data, binary_data + 4)).size());
}
@@ -516,7 +506,7 @@ TEST(IndexedDBLevelDBCodingTest, DecodeBinary) {
for (size_t i = 0; i < test_cases.size(); ++i) {
std::string value = test_cases[i];
std::string v = WrappedEncodeBinary(value);
- ASSERT_GT(v.size(), static_cast<size_t>(0));
+ ASSERT_GT(v.size(), 0u);
StringPiece slice(v);
std::string result;
EXPECT_TRUE(DecodeBinary(&slice, &result));
@@ -530,7 +520,7 @@ TEST(IndexedDBLevelDBCodingTest, DecodeBinary) {
EXPECT_FALSE(DecodeBinary(&slice, &result));
// Verify decoding at an offset, to detect unaligned memory access.
- v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0));
+ v.insert(v.begin(), 1u, static_cast<char>(0));
slice = StringPiece(&*v.begin() + 1, v.size() - 1);
EXPECT_TRUE(DecodeBinary(&slice, &result));
EXPECT_EQ(value, result);
@@ -545,8 +535,8 @@ static std::string WrappedEncodeDouble(double value) {
}
TEST(IndexedDBLevelDBCodingTest, EncodeDouble) {
- EXPECT_EQ(static_cast<size_t>(8), WrappedEncodeDouble(0).size());
- EXPECT_EQ(static_cast<size_t>(8), WrappedEncodeDouble(3.14).size());
+ EXPECT_EQ(8u, WrappedEncodeDouble(0).size());
+ EXPECT_EQ(8u, WrappedEncodeDouble(3.14).size());
}
TEST(IndexedDBLevelDBCodingTest, DecodeDouble) {
@@ -557,7 +547,7 @@ TEST(IndexedDBLevelDBCodingTest, DecodeDouble) {
for (size_t i = 0; i < test_cases.size(); ++i) {
double value = test_cases[i];
std::string v = WrappedEncodeDouble(value);
- ASSERT_GT(v.size(), static_cast<size_t>(0));
+ ASSERT_GT(v.size(), 0u);
StringPiece slice(v);
double result;
EXPECT_TRUE(DecodeDouble(&slice, &result));
@@ -571,7 +561,7 @@ TEST(IndexedDBLevelDBCodingTest, DecodeDouble) {
EXPECT_FALSE(DecodeDouble(&slice, &result));
// Verify decoding at an offset, to detect unaligned memory access.
- v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0));
+ v.insert(v.begin(), 1u, static_cast<char>(0));
slice = StringPiece(&*v.begin() + 1, v.size() - 1);
EXPECT_TRUE(DecodeDouble(&slice, &result));
EXPECT_EQ(value, result);
@@ -606,7 +596,7 @@ TEST(IndexedDBLevelDBCodingTest, EncodeDecodeIDBKey) {
EncodeIDBKey(expected_key, &v);
slice = StringPiece(&*v.begin(), v.size());
EXPECT_TRUE(DecodeIDBKey(&slice, &decoded_key));
- EXPECT_TRUE(decoded_key->IsEqual(expected_key));
+ EXPECT_TRUE(decoded_key->Equals(expected_key));
EXPECT_TRUE(slice.empty());
slice = StringPiece(&*v.begin(), v.size() - 1);
@@ -701,6 +691,76 @@ TEST(IndexedDBLevelDBCodingTest, EncodeDecodeIDBKeyPath) {
}
}
+TEST(IndexedDBLevelDBCodingTest, EncodeDecodeBlobJournal) {
+ std::vector<IndexedDBKeyPath> key_paths;
+ std::vector<std::string> encoded_paths;
+
+ std::vector<BlobJournalType> journals;
+
+ { // Empty journal
+ BlobJournalType journal;
+ journals.push_back(journal);
+ }
+
+ { // One item
+ BlobJournalType journal;
+ journal.push_back(std::make_pair(4, 7));
+ journals.push_back(journal);
+ }
+
+ { // kAllBlobsKey
+ BlobJournalType journal;
+ journal.push_back(std::make_pair(5, DatabaseMetaDataKey::kAllBlobsKey));
+ journals.push_back(journal);
+ }
+
+ { // A bunch of items
+ BlobJournalType journal;
+ journal.push_back(std::make_pair(4, 7));
+ journal.push_back(std::make_pair(5, 6));
+ journal.push_back(std::make_pair(4, 5));
+ journal.push_back(std::make_pair(4, 4));
+ journal.push_back(std::make_pair(1, 12));
+ journal.push_back(std::make_pair(4, 3));
+ journal.push_back(std::make_pair(15, 14));
+ journals.push_back(journal);
+ }
+
+ std::vector<BlobJournalType>::const_iterator journal_iter;
+ for (journal_iter = journals.begin(); journal_iter != journals.end();
+ ++journal_iter) {
+ std::string encoding;
+ EncodeBlobJournal(*journal_iter, &encoding);
+ StringPiece slice(encoding);
+ BlobJournalType journal_out;
+ EXPECT_TRUE(DecodeBlobJournal(&slice, &journal_out));
+ EXPECT_EQ(*journal_iter, journal_out);
+ }
+
+ journals.clear();
+
+ { // Illegal database id
+ BlobJournalType journal;
+ journal.push_back(std::make_pair(0, 3));
+ journals.push_back(journal);
+ }
+
+ { // Illegal blob id
+ BlobJournalType journal;
+ journal.push_back(std::make_pair(4, 0));
+ journals.push_back(journal);
+ }
+
+ for (journal_iter = journals.begin(); journal_iter != journals.end();
+ ++journal_iter) {
+ std::string encoding;
+ EncodeBlobJournal(*journal_iter, &encoding);
+ StringPiece slice(encoding);
+ BlobJournalType journal_out;
+ EXPECT_FALSE(DecodeBlobJournal(&slice, &journal_out));
+ }
+}
+
TEST(IndexedDBLevelDBCodingTest, DecodeLegacyIDBKeyPath) {
// Legacy encoding of string key paths.
std::vector<IndexedDBKeyPath> key_paths;