# 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.

import("//build/fidl/fidl.gni")
import("//peridot/build/executable_package.gni")

source_set("defs") {
  testonly = true

  sources = [
    "defs.h",
  ]
}

executable_package("queue_persistence_test_module") {
  deprecated_bare_package_url = "//build"

  testonly = true

  meta = [
    {
      path = "meta/queue_persistence_test_module.cmx"
      dest = "queue_persistence_test_module.cmx"
    },
  ]

  sources = [
    "queue_persistence_test_module.cc",
  ]

  deps = [
    ":defs",
    ":queue_persistence_test_service",
    "//garnet/public/lib/callback",
    "//peridot/public/lib/integration_testing/cpp",
    "//peridot/public/fidl/fuchsia.modular",
    "//peridot/public/lib/app_driver/cpp:module_driver",
    "//peridot/public/lib/message_queue/cpp",
    "//peridot/tests/common:defs",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

executable_package("queue_persistence_test_agent") {
  deprecated_bare_package_url = "//build"

  testonly = true

  meta = [
    {
      path = "meta/queue_persistence_test_agent.cmx"
      dest = "queue_persistence_test_agent.cmx"
    },
  ]

  sources = [
    "queue_persistence_test_agent.cc",
  ]

  deps = [
    ":defs",
    ":queue_persistence_test_service",
    "//peridot/public/lib/integration_testing/cpp",
    "//peridot/public/fidl/fuchsia.modular",
    "//peridot/public/lib/app_driver/cpp:agent_driver",
    "//peridot/public/lib/message_queue/cpp",
    "//peridot/tests/common:defs",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

fidl("queue_persistence_test_service") {
  name = "test.peridot.tests.queuepersistence"
  cpp_legacy_callbacks = true

  sources = [
    "queue_persistence_test_service.fidl",
  ]
}
