blob: 73775babf1c138f9b0a3ca48e62e4d729a49c835 [file] [log] [blame]
// Copyright 2016 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "peridot/bin/ledger/environment/environment.h"
#include <lib/component/cpp/testing/startup_context_for_test.h>
#include <lib/gtest/test_loop_fixture.h>
#include <lib/timekeeper/test_clock.h>
#include "peridot/lib/rng/test_random.h"
namespace ledger {
namespace {
class EnvironmentTest : public ::gtest::TestLoopFixture {
public:
EnvironmentTest()
: startup_context_(component::testing::StartupContextForTest::Create()) {}
std::unique_ptr<component::testing::StartupContextForTest> startup_context_;
};
TEST_F(EnvironmentTest, InitializationOfAsyncAndIOAsync) {
Environment env = EnvironmentBuilder()
.SetStartupContext(startup_context_.get())
.SetAsync(dispatcher())
.SetIOAsync(dispatcher())
.Build();
EXPECT_EQ(dispatcher(), env.dispatcher());
EXPECT_EQ(dispatcher(), env.io_dispatcher());
}
TEST_F(EnvironmentTest, InitializationClock) {
auto clock = std::make_unique<timekeeper::TestClock>();
auto clock_ptr = clock.get();
Environment env = EnvironmentBuilder()
.SetStartupContext(startup_context_.get())
.SetAsync(dispatcher())
.SetIOAsync(dispatcher())
.SetClock(std::move(clock))
.Build();
EXPECT_EQ(clock_ptr, env.clock());
}
TEST_F(EnvironmentTest, InitializationRandom) {
auto random = std::make_unique<rng::TestRandom>(0);
auto random_ptr = random.get();
Environment env = EnvironmentBuilder()
.SetStartupContext(startup_context_.get())
.SetAsync(dispatcher())
.SetIOAsync(dispatcher())
.SetRandom(std::move(random))
.Build();
EXPECT_EQ(random_ptr, env.random());
}
} // namespace
} // namespace ledger