Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / content / browser / indexed_db / indexed_db_leveldb_coding_unittest.cc
index d159a81..0bd647c 100644 (file)
@@ -691,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;