blob: 5e125c4645957c40fe6fdae803e46bb496a489ec [file] [log] [blame]
// Copyright 2017 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/lib/testing/test_with_ledger.h"
#include <lib/fit/function.h>
#include "gtest/gtest.h"
#include "peridot/lib/ledger_client/ledger_client.h"
namespace modular {
namespace testing {
TestWithLedger::TestWithLedger() {
ledger_app_ = std::make_unique<testing::LedgerRepositoryForTesting>();
ledger_client_ = NewLedgerClient();
};
TestWithLedger::~TestWithLedger() {
ledger_client_.reset();
bool terminated = false;
ledger_app_->Terminate([&terminated] { terminated = true; });
if (!terminated) {
RunLoopWithTimeoutOrUntil([&terminated] { return terminated; });
}
ledger_app_.reset();
};
std::unique_ptr<LedgerClient> TestWithLedger::NewLedgerClient() {
return std::make_unique<LedgerClient>(
ledger_app_->ledger_repository(), __FILE__,
[](zx_status_t status) { ASSERT_TRUE(false) << "Status: " << status; });
}
bool TestWithLedger::RunLoopWithTimeout(zx::duration timeout) {
return RealLoopFixture::RunLoopWithTimeout(timeout);
}
bool TestWithLedger::RunLoopWithTimeoutOrUntil(fit::function<bool()> condition,
zx::duration timeout) {
return RealLoopFixture::RunLoopWithTimeoutOrUntil(std::move(condition),
timeout);
}
} // namespace testing
} // namespace modular