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

import("//build/test.gni")
import("//build/test/test_package.gni")

group("tests") {
  testonly = true

  deps = [ ":integration_input_tests" ]
}

test_package("integration_input_tests") {
  deps = [ ":mediabuttons_listener_test" ]

  tests = [
    {
      name = "mediabuttons_listener_test"
      environments = [ nuc_env ]
    },
  ]
}

# Each integration test must run in its own executable.
test("mediabuttons_listener_test") {
  sources = [ "mediabuttons_listener_test.cc" ]
  output_name = "mediabuttons_listener_test"
  deps = [
    "//garnet/public/lib/fostr/fidl/fuchsia.ui.input",
    "//garnet/public/lib/gtest",
    "//sdk/fidl/fuchsia.ui.input",
    "//sdk/fidl/fuchsia.ui.policy",
    "//sdk/fidl/fuchsia.ui.scenic",
    "//sdk/lib/fdio",
    "//sdk/lib/ui/scenic/cpp",
    "//src/lib/fxl",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/ui/base_view",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}
