# Copyright 2020 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("//src/sys/build/components.gni")

source_set("input-report-reader") {
  sources = [ "reader.h" ]

  public_deps = [
    "//sdk/fidl/fuchsia.input.report:fuchsia.input.report_llcpp",
    "//src/lib/ddk",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/trace:trace-driver",
  ]
}

group("test") {
  testonly = true
  deps = [ ":test_package" ]
}

test("input-report-test") {
  sources = [ "reader-unittest.cc" ]
  deps = [
    ":input-report-reader",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
  ]
}

fuchsia_unittest_package("test_package") {
  package_name = "lib-input-report-reader-test"
  executable_path = "test/input-report-test"
  deps = [ ":input-report-test" ]
}
