blob: 49757112974b2378174a55d234ea336d9366486d [file] [log] [blame]
// Copyright 2019 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.
#ifndef EXAMPLES_TESTS_TEST_SUITE_H_
#define EXAMPLES_TESTS_TEST_SUITE_H_
#include <fuchsia/test/cpp/fidl.h>
#include <lib/async-loop/cpp/loop.h>
#include <lib/async-loop/default.h>
#include <lib/fidl/cpp/binding.h>
namespace example {
struct Options {
bool dont_service_get_tests = false;
bool dont_service_run = false;
bool close_channel_get_tests = false;
bool close_channel_run = false;
};
struct TestInput {
std::string name;
fuchsia::test::Status status;
/// Skips OnTestCaseFinished if true
bool incomplete_test = false;
// will not set status if false.
bool set_outcome_status = true;
};
class TestSuite : public fuchsia::test::Suite {
public:
explicit TestSuite(async::Loop* loop, std::vector<TestInput> inputs, Options options = Options{});
void GetTests(GetTestsCallback callback) override;
void Run(std::vector<fuchsia::test::Invocation> tests, fuchsia::test::RunOptions /*unused*/,
fidl::InterfaceHandle<fuchsia::test::RunListener> run_listener) override;
fidl::InterfaceRequestHandler<fuchsia::test::Suite> GetHandler();
private:
fidl::Binding<fuchsia::test::Suite> binding_;
std::vector<TestInput> test_inputs_;
Options options_;
async::Loop* loop_;
};
} // namespace example
#endif // EXAMPLES_TESTS_TEST_SUITE_H_