// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include #include #include #include using namespace ::testing; namespace storage::rpc { struct MessageCodecProviderTest : Test { std::shared_ptr _repo1; std::shared_ptr _repo2; MessageCodecProvider _provider; // We don't care about repo/set contents, just their pointer identities MessageCodecProviderTest() : _repo1(document::TestDocRepo().getTypeRepoSp()), _repo2(document::TestDocRepo().getTypeRepoSp()), _provider(_repo1) {} ~MessageCodecProviderTest() override; }; MessageCodecProviderTest::~MessageCodecProviderTest() = default; TEST_F(MessageCodecProviderTest, initially_provides_constructed_repos) { auto wrapped = _provider.wrapped_codec(); EXPECT_EQ(&wrapped->codec().type_repo(), _repo1.get()); } TEST_F(MessageCodecProviderTest, updated_repos_reflected_in_new_wrapped_codec) { _provider.update_atomically(_repo2); auto wrapped = _provider.wrapped_codec(); EXPECT_EQ(&wrapped->codec().type_repo(), _repo2.get()); } }