summaryrefslogtreecommitdiff
path: root/src/mongo/base/encoded_value_storage_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/base/encoded_value_storage_test.cpp')
-rw-r--r--src/mongo/base/encoded_value_storage_test.cpp165
1 files changed, 82 insertions, 83 deletions
diff --git a/src/mongo/base/encoded_value_storage_test.cpp b/src/mongo/base/encoded_value_storage_test.cpp
index 07f73c532b9..682e11a5d35 100644
--- a/src/mongo/base/encoded_value_storage_test.cpp
+++ b/src/mongo/base/encoded_value_storage_test.cpp
@@ -40,107 +40,106 @@ namespace mongo {
namespace EncodedValueStorageTest {
#pragma pack(1)
- struct Layout {
- uint32_t native;
- uint32_t le;
- uint32_t be;
- };
+struct Layout {
+ uint32_t native;
+ uint32_t le;
+ uint32_t be;
+};
#pragma pack()
- class ConstView {
- public:
- typedef ConstDataView view_type;
+class ConstView {
+public:
+ typedef ConstDataView view_type;
- ConstView(const char* data) : _data(data) { }
+ ConstView(const char* data) : _data(data) {}
- const char* view2ptr() const {
- return data().view();
- }
-
- uint32_t getNative() {
- return data().read<uint32_t>(offsetof(Layout, native));
- }
+ const char* view2ptr() const {
+ return data().view();
+ }
- uint32_t getLE() {
- return data().read<LittleEndian<uint32_t>>(offsetof(Layout, le));
- }
+ uint32_t getNative() {
+ return data().read<uint32_t>(offsetof(Layout, native));
+ }
- uint32_t getBE() {
- return data().read<BigEndian<uint32_t>>(offsetof(Layout, be));
- }
+ uint32_t getLE() {
+ return data().read<LittleEndian<uint32_t>>(offsetof(Layout, le));
+ }
- protected:
- const view_type& data() const {
- return _data;
- }
+ uint32_t getBE() {
+ return data().read<BigEndian<uint32_t>>(offsetof(Layout, be));
+ }
- private:
- view_type _data;
- };
+protected:
+ const view_type& data() const {
+ return _data;
+ }
- class View : public ConstView {
- public:
- typedef DataView view_type;
+private:
+ view_type _data;
+};
- View(char* data) : ConstView(data) {}
+class View : public ConstView {
+public:
+ typedef DataView view_type;
- using ConstView::view2ptr;
- char* view2ptr() {
- return data().view();
- }
+ View(char* data) : ConstView(data) {}
- void setNative(uint32_t value) {
- data().write(value, offsetof(Layout, native));
- }
+ using ConstView::view2ptr;
+ char* view2ptr() {
+ return data().view();
+ }
- void setLE(uint32_t value) {
- data().write(tagLittleEndian(value), offsetof(Layout, le));
- }
+ void setNative(uint32_t value) {
+ data().write(value, offsetof(Layout, native));
+ }
- void setBE(uint32_t value) {
- data().write(tagBigEndian(value), offsetof(Layout, be));
- }
+ void setLE(uint32_t value) {
+ data().write(tagLittleEndian(value), offsetof(Layout, le));
+ }
- private:
- view_type data() const {
- return const_cast<char *>(ConstView::view2ptr());
- }
- };
+ void setBE(uint32_t value) {
+ data().write(tagBigEndian(value), offsetof(Layout, be));
+ }
- class Value : public EncodedValueStorage<Layout, ConstView, View> {
- public:
- Value() {
- BOOST_STATIC_ASSERT(sizeof(Value) == sizeof(Layout));
- }
+private:
+ view_type data() const {
+ return const_cast<char*>(ConstView::view2ptr());
+ }
+};
- Value(ZeroInitTag_t zit) : EncodedValueStorage<Layout, ConstView, View>(zit) {}
- };
+class Value : public EncodedValueStorage<Layout, ConstView, View> {
+public:
+ Value() {
+ BOOST_STATIC_ASSERT(sizeof(Value) == sizeof(Layout));
+ }
+ Value(ZeroInitTag_t zit) : EncodedValueStorage<Layout, ConstView, View>(zit) {}
+};
}
- TEST(EncodedValueStorage, EncodedValueStorage) {
- EncodedValueStorageTest::Value raw;
- EncodedValueStorageTest::Value zerod(kZeroInitTag);
- char buf[sizeof(EncodedValueStorageTest::Layout)] = { 0 };
-
- ASSERT_EQUALS(raw.view().view2ptr(), raw.constView().view2ptr());
-
- // ensure zeroing with the init tag works
- ASSERT_EQUALS(std::memcmp(zerod.view().view2ptr(), buf, sizeof(buf)), 0);
-
- // see if value assignment and view() works
- zerod.view().setNative(1234);
- EncodedValueStorageTest::View(buf).setNative(1234);
- raw = zerod;
- ASSERT_EQUALS(std::memcmp(raw.view().view2ptr(), buf, sizeof(buf)), 0);
-
- // see if view() and constView() work appropriately
- raw.view().setNative(1);
- raw.view().setLE(2);
- raw.view().setBE(3);
- ASSERT_EQUALS(static_cast<uint32_t>(1), raw.constView().getNative());
- ASSERT_EQUALS(static_cast<uint32_t>(2), raw.constView().getLE());
- ASSERT_EQUALS(static_cast<uint32_t>(3), raw.constView().getBE());
- }
+TEST(EncodedValueStorage, EncodedValueStorage) {
+ EncodedValueStorageTest::Value raw;
+ EncodedValueStorageTest::Value zerod(kZeroInitTag);
+ char buf[sizeof(EncodedValueStorageTest::Layout)] = {0};
+
+ ASSERT_EQUALS(raw.view().view2ptr(), raw.constView().view2ptr());
+
+ // ensure zeroing with the init tag works
+ ASSERT_EQUALS(std::memcmp(zerod.view().view2ptr(), buf, sizeof(buf)), 0);
+
+ // see if value assignment and view() works
+ zerod.view().setNative(1234);
+ EncodedValueStorageTest::View(buf).setNative(1234);
+ raw = zerod;
+ ASSERT_EQUALS(std::memcmp(raw.view().view2ptr(), buf, sizeof(buf)), 0);
+
+ // see if view() and constView() work appropriately
+ raw.view().setNative(1);
+ raw.view().setLE(2);
+ raw.view().setBE(3);
+ ASSERT_EQUALS(static_cast<uint32_t>(1), raw.constView().getNative());
+ ASSERT_EQUALS(static_cast<uint32_t>(2), raw.constView().getLE());
+ ASSERT_EQUALS(static_cast<uint32_t>(3), raw.constView().getBE());
+}
-} // namespace mongo
+} // namespace mongo