# 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/package.gni")
import("//build/test.gni")
import("//build/test/test_package.gni")

executable("bin") {
  output_name = "print-input-report"

  sources = [
    "devices.cc",
    "main.cc",
  ]

  deps = [
    "//sdk/fidl/fuchsia.input.report:fuchsia.input.report_llcpp",
    "//src/lib/files",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/fzl",
    "//zircon/public/lib/trace",
    "//zircon/public/lib/trace-provider-with-fdio",
  ]
}

package("print-input-report") {
  deps = [ ":bin" ]

  binaries = [
    {
      name = "print-input-report"
      shell = true
    },
  ]
}

test("print-input-report-test-bin") {
  output_name = "print-input-report-test-bin"
  testonly = true

  sources = [
    "devices.cc",
    "test/print-test.cc",
  ]

  deps = [
    "//sdk/fidl/fuchsia.input.report:fuchsia.input.report_llcpp",
    "//src/lib/fxl/test:gtest_main",
    "//src/ui/input/lib/hid-input-report",
    "//src/ui/input/testing/fake_input_report_device",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fidl-async-cpp",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/trace",
    "//zircon/system/ulib/hid-parser",
  ]
}

test_package("print-input-report-test") {
  deps = [ ":print-input-report-test-bin" ]
  tests = [
    {
      name = "print-input-report-test-bin"
      dest = "print-input-report-test"
      environments = basic_envs
    },
  ]
}
