xref: /aosp_15_r20/external/leveldb/db/version_edit_test.cc (revision 9507f98c5f32dee4b5f9e4a38cd499f3ff5c4490)
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