1*9507f98cSAndroid Build Coastguard Worker // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2*9507f98cSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*9507f98cSAndroid Build Coastguard Worker // found in the LICENSE file. See the AUTHORS file for names of contributors.
4*9507f98cSAndroid Build Coastguard Worker
5*9507f98cSAndroid Build Coastguard Worker #include "db/version_edit.h"
6*9507f98cSAndroid Build Coastguard Worker
7*9507f98cSAndroid Build Coastguard Worker #include "gtest/gtest.h"
8*9507f98cSAndroid Build Coastguard Worker
9*9507f98cSAndroid Build Coastguard Worker namespace leveldb {
10*9507f98cSAndroid Build Coastguard Worker
TestEncodeDecode(const VersionEdit & edit)11*9507f98cSAndroid Build Coastguard Worker static void TestEncodeDecode(const VersionEdit& edit) {
12*9507f98cSAndroid Build Coastguard Worker std::string encoded, encoded2;
13*9507f98cSAndroid Build Coastguard Worker edit.EncodeTo(&encoded);
14*9507f98cSAndroid Build Coastguard Worker VersionEdit parsed;
15*9507f98cSAndroid Build Coastguard Worker Status s = parsed.DecodeFrom(encoded);
16*9507f98cSAndroid Build Coastguard Worker ASSERT_TRUE(s.ok()) << s.ToString();
17*9507f98cSAndroid Build Coastguard Worker parsed.EncodeTo(&encoded2);
18*9507f98cSAndroid Build Coastguard Worker ASSERT_EQ(encoded, encoded2);
19*9507f98cSAndroid Build Coastguard Worker }
20*9507f98cSAndroid Build Coastguard Worker
TEST(VersionEditTest,EncodeDecode)21*9507f98cSAndroid Build Coastguard Worker TEST(VersionEditTest, EncodeDecode) {
22*9507f98cSAndroid Build Coastguard Worker static const uint64_t kBig = 1ull << 50;
23*9507f98cSAndroid Build Coastguard Worker
24*9507f98cSAndroid Build Coastguard Worker VersionEdit edit;
25*9507f98cSAndroid Build Coastguard Worker for (int i = 0; i < 4; i++) {
26*9507f98cSAndroid Build Coastguard Worker TestEncodeDecode(edit);
27*9507f98cSAndroid Build Coastguard Worker edit.AddFile(3, kBig + 300 + i, kBig + 400 + i,
28*9507f98cSAndroid Build Coastguard Worker InternalKey("foo", kBig + 500 + i, kTypeValue),
29*9507f98cSAndroid Build Coastguard Worker InternalKey("zoo", kBig + 600 + i, kTypeDeletion));
30*9507f98cSAndroid Build Coastguard Worker edit.RemoveFile(4, kBig + 700 + i);
31*9507f98cSAndroid Build Coastguard Worker edit.SetCompactPointer(i, InternalKey("x", kBig + 900 + i, kTypeValue));
32*9507f98cSAndroid Build Coastguard Worker }
33*9507f98cSAndroid Build Coastguard Worker
34*9507f98cSAndroid Build Coastguard Worker edit.SetComparatorName("foo");
35*9507f98cSAndroid Build Coastguard Worker edit.SetLogNumber(kBig + 100);
36*9507f98cSAndroid Build Coastguard Worker edit.SetNextFile(kBig + 200);
37*9507f98cSAndroid Build Coastguard Worker edit.SetLastSequence(kBig + 1000);
38*9507f98cSAndroid Build Coastguard Worker TestEncodeDecode(edit);
39*9507f98cSAndroid Build Coastguard Worker }
40*9507f98cSAndroid Build Coastguard Worker
41*9507f98cSAndroid Build Coastguard Worker } // namespace leveldb
42*9507f98cSAndroid Build Coastguard Worker
main(int argc,char ** argv)43*9507f98cSAndroid Build Coastguard Worker int main(int argc, char** argv) {
44*9507f98cSAndroid Build Coastguard Worker testing::InitGoogleTest(&argc, argv);
45*9507f98cSAndroid Build Coastguard Worker return RUN_ALL_TESTS();
46*9507f98cSAndroid Build Coastguard Worker }
47