# 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/fuzzing/fuzzer.gni")
import("//build/test.gni")
import("//src/sys/build/fuchsia_unittest_package.gni")

fuchsia_unittest_package("inspect-unittest-package") {
  deps = [ ":inspect" ]
}

group("tests") {
  testonly = true
  deps = [ ":inspect-unittest-package" ]
}

test("inspect") {
  sources = [
    "health_unittest.cc",
    "heap_unittest.cc",
    "inspect_unittest.cc",
    "lazy_unittest.cc",
    "reader_unittest.cc",
    "scanner_unittest.cc",
    "snapshot_unittest.cc",
    "state_unittest.cc",
    "value_list_unittest.cc",
  ]

  deps = [
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/pretty",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/fzl",
    "//zircon/system/ulib/inspect",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

fuzzer("inspect-reader-fuzzer") {
  sources = [ "reader_fuzzer.cc" ]
  deps = [ "//zircon/system/ulib/inspect" ]
}
