// Copyright 2018 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 PERIDOT_TESTS_MODULE_CONTEXT_DEFS_H_
#define PERIDOT_TESTS_MODULE_CONTEXT_DEFS_H_

namespace {

// The name of the link that the modules receive their startup parameters on.
constexpr char kLinkName[] = "link";

// The key the modules use to Get their name.
constexpr char kLinkKey[] = "name";

// The URL for the module under test.
constexpr char kModuleUrl[] =
    "fuchsia-pkg://fuchsia.com/module_context_test_module#meta/"
    "module_context_test_module.cmx";

// The intent action |kModuleUrl| accepts.
constexpr char kIntentAction[] = "action";

// The URL for the entity test module.
constexpr char kEntityModuleUrl[] =
    "fuchsia-pkg://fuchsia.com/module_context_test_entity_module#meta/"
    "module_context_test_entity_module.cmx";

// The intent action |kEntityModuleUrl| accepts.
constexpr char kEntityIntentAction[] = "test";

// The names of the first and second modules to be stopped.
constexpr char kFirstModuleName[] = "first";
constexpr char kSecondModuleName[] = "second";

// The signal the modules wait for before calling done.
constexpr char kFirstModuleCallDone[] = "first_done";
constexpr char kSecondModuleCallDone[] = "second_done";

// The signal the modules wait for before starting/stopping ongoing activity.
constexpr char kFirstModuleCallStartActivity[] = "first_activity_start";
constexpr char kSecondModuleCallStartActivity[] = "second_activity_start";
constexpr char kFirstModuleCallStopActivity[] = "first_activity_stop";
constexpr char kSecondModuleCallStopActivity[] = "second_activity_stop";

// The signal the modules send when they have been terminated.
constexpr char kFirstModuleTerminated[] = "first terminated";
constexpr char kSecondModuleTerminated[] = "second terminated";

// The signals the entity module sends once it's done verifying the entity
// related methods on module context. Once all these have been signaled the
// module is done.
constexpr char kEntityModuleDoneFirstTask[] = "entity_module_done_first";
constexpr char kEntityModuleDoneSecondTask[] = "entity_module_done_second";

}  // namespace

#endif  // PERIDOT_TESTS_MODULE_CONTEXT_DEFS_H_
