]>
git.proxmox.com Git - ceph.git/blob - ceph/src/rocksdb/utilities/cassandra/cassandra_serialize_test.cc
1 // Copyright (c) 2017-present, Facebook, Inc. All rights reserved.
2 // This source code is licensed under both the GPLv2 (found in the
3 // COPYING file in the root directory) and Apache 2.0 License
4 // (found in the LICENSE.Apache file in the root directory).
6 #include "test_util/testharness.h"
7 #include "utilities/cassandra/serialize.h"
10 namespace ROCKSDB_NAMESPACE
{
13 TEST(SerializeTest
, SerializeI64
) {
15 Serialize
<int64_t>(0, &dest
);
18 {'\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}),
22 Serialize
<int64_t>(1, &dest
);
25 {'\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x01'}),
30 Serialize
<int64_t>(-1, &dest
);
33 {'\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff'}),
37 Serialize
<int64_t>(9223372036854775807, &dest
);
40 {'\x7f', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff'}),
44 Serialize
<int64_t>(-9223372036854775807, &dest
);
47 {'\x80', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x01'}),
51 TEST(SerializeTest
, DeserializeI64
) {
53 std::size_t offset
= dest
.size();
54 Serialize
<int64_t>(0, &dest
);
55 EXPECT_EQ(0, Deserialize
<int64_t>(dest
.c_str(), offset
));
58 Serialize
<int64_t>(1, &dest
);
59 EXPECT_EQ(1, Deserialize
<int64_t>(dest
.c_str(), offset
));
62 Serialize
<int64_t>(-1, &dest
);
63 EXPECT_EQ(-1, Deserialize
<int64_t>(dest
.c_str(), offset
));
66 Serialize
<int64_t>(-9223372036854775807, &dest
);
67 EXPECT_EQ(-9223372036854775807, Deserialize
<int64_t>(dest
.c_str(), offset
));
70 Serialize
<int64_t>(9223372036854775807, &dest
);
71 EXPECT_EQ(9223372036854775807, Deserialize
<int64_t>(dest
.c_str(), offset
));
74 TEST(SerializeTest
, SerializeI32
) {
76 Serialize
<int32_t>(0, &dest
);
79 {'\x00', '\x00', '\x00', '\x00'}),
83 Serialize
<int32_t>(1, &dest
);
86 {'\x00', '\x00', '\x00', '\x01'}),
91 Serialize
<int32_t>(-1, &dest
);
94 {'\xff', '\xff', '\xff', '\xff'}),
98 Serialize
<int32_t>(2147483647, &dest
);
101 {'\x7f', '\xff', '\xff', '\xff'}),
105 Serialize
<int32_t>(-2147483648LL, &dest
);
108 {'\x80', '\x00', '\x00', '\x00'}),
112 TEST(SerializeTest
, DeserializeI32
) {
114 std::size_t offset
= dest
.size();
115 Serialize
<int32_t>(0, &dest
);
116 EXPECT_EQ(0, Deserialize
<int32_t>(dest
.c_str(), offset
));
118 offset
= dest
.size();
119 Serialize
<int32_t>(1, &dest
);
120 EXPECT_EQ(1, Deserialize
<int32_t>(dest
.c_str(), offset
));
122 offset
= dest
.size();
123 Serialize
<int32_t>(-1, &dest
);
124 EXPECT_EQ(-1, Deserialize
<int32_t>(dest
.c_str(), offset
));
126 offset
= dest
.size();
127 Serialize
<int32_t>(2147483647, &dest
);
128 EXPECT_EQ(2147483647, Deserialize
<int32_t>(dest
.c_str(), offset
));
130 offset
= dest
.size();
131 Serialize
<int32_t>(-2147483648LL, &dest
);
132 EXPECT_EQ(-2147483648LL, Deserialize
<int32_t>(dest
.c_str(), offset
));
135 TEST(SerializeTest
, SerializeI8
) {
137 Serialize
<int8_t>(0, &dest
);
138 EXPECT_EQ(std::string({'\x00'}), dest
);
141 Serialize
<int8_t>(1, &dest
);
142 EXPECT_EQ(std::string({'\x01'}), dest
);
146 Serialize
<int8_t>(-1, &dest
);
147 EXPECT_EQ(std::string({'\xff'}), dest
);
150 Serialize
<int8_t>(127, &dest
);
151 EXPECT_EQ(std::string({'\x7f'}), dest
);
154 Serialize
<int8_t>(-128, &dest
);
155 EXPECT_EQ(std::string({'\x80'}), dest
);
158 TEST(SerializeTest
, DeserializeI8
) {
160 std::size_t offset
= dest
.size();
161 Serialize
<int8_t>(0, &dest
);
162 EXPECT_EQ(0, Deserialize
<int8_t>(dest
.c_str(), offset
));
164 offset
= dest
.size();
165 Serialize
<int8_t>(1, &dest
);
166 EXPECT_EQ(1, Deserialize
<int8_t>(dest
.c_str(), offset
));
168 offset
= dest
.size();
169 Serialize
<int8_t>(-1, &dest
);
170 EXPECT_EQ(-1, Deserialize
<int8_t>(dest
.c_str(), offset
));
172 offset
= dest
.size();
173 Serialize
<int8_t>(127, &dest
);
174 EXPECT_EQ(127, Deserialize
<int8_t>(dest
.c_str(), offset
));
176 offset
= dest
.size();
177 Serialize
<int8_t>(-128, &dest
);
178 EXPECT_EQ(-128, Deserialize
<int8_t>(dest
.c_str(), offset
));
181 } // namespace cassandra
182 } // namespace ROCKSDB_NAMESPACE
184 int main(int argc
, char** argv
) {
185 ::testing::InitGoogleTest(&argc
, argv
);
186 return RUN_ALL_TESTS();