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