diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-19 21:57:59 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-20 12:38:48 +0000 |
commit | 64500ab17deb86b394edc81f4ad42b5a2c43fe30 (patch) | |
tree | 64334ba1513b697dacd5068981a8ee5b7ad92f3b /vespalib/src/tests/memorydatastore/memorydatastore.cpp | |
parent | cfa6ec5cdbd1cf39558d3f85101de05230d6c225 (diff) |
Fold staging_vespalib into vespalib
Diffstat (limited to 'vespalib/src/tests/memorydatastore/memorydatastore.cpp')
-rw-r--r-- | vespalib/src/tests/memorydatastore/memorydatastore.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/vespalib/src/tests/memorydatastore/memorydatastore.cpp b/vespalib/src/tests/memorydatastore/memorydatastore.cpp new file mode 100644 index 00000000000..1d49b0af91b --- /dev/null +++ b/vespalib/src/tests/memorydatastore/memorydatastore.cpp @@ -0,0 +1,72 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include <vespa/vespalib/testkit/testapp.h> +#include <vespa/vespalib/data/memorydatastore.h> +#include <vespa/vespalib/stllike/asciistream.h> + +using namespace vespalib; + +class MemoryDataStoreTest : public vespalib::TestApp +{ +private: + void testMemoryDataStore(); + void testVariableSizeVector(); +public: + int Main() override; +}; + +void +MemoryDataStoreTest::testMemoryDataStore() +{ + MemoryDataStore s(alloc::Alloc::alloc(256)); + std::vector<MemoryDataStore::Reference> v; + v.push_back(s.push_back("mumbo", 5)); + for (size_t i(0); i < 50; i++) { + v.push_back(s.push_back("mumbo", 5)); + EXPECT_EQUAL(static_cast<const char *>(v[i].data()) + 5, v[i+1].data()); + } + v.push_back(s.push_back("mumbo", 5)); + EXPECT_EQUAL(52ul, v.size()); + EXPECT_NOT_EQUAL(static_cast<const char *>(v[50].data()) + 5, v[51].data()); + for (size_t i(0); i < v.size(); i++) { + EXPECT_EQUAL(0, memcmp("mumbo", v[i].data(), 5)); + } +} + +void +MemoryDataStoreTest::testVariableSizeVector() +{ + VariableSizeVector v(20000, 5*20000); + for (size_t i(0); i < 10000; i++) { + asciistream os; + os << i; + v.push_back(os.str().data(), os.str().size()); + } + for (size_t i(0); i < v.size(); i++) { + asciistream os; + os << i; + EXPECT_EQUAL(os.str().size(), v[i].size()); + EXPECT_EQUAL(0, memcmp(os.str().data(), v[i].data(), os.str().size())); + } + size_t i(0); + for (auto it(v.begin()), mt(v.end()); it != mt; it++, i++) { + asciistream os; + os << i; + EXPECT_EQUAL(os.str().size(), it->size()); + EXPECT_EQUAL(0, memcmp(os.str().data(), (*it).data(), os.str().size())); + } + +} + +int +MemoryDataStoreTest::Main() +{ + TEST_INIT("data_test"); + testMemoryDataStore(); + testVariableSizeVector(); + + TEST_DONE(); +} + +TEST_APPHOOK(MemoryDataStoreTest); + |