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

source_set("predicates") {
  testonly = true
  sources = [
    "status.cc",
    "status.h",
  ]
  public_deps = [
    # "status.h" has #include <gtest/gtest.h>.
    "//third_party/googletest:gtest",

    # "status.h" has #include <zircon/status.h>.
    "//src/zircon/lib/zircon:zircon-headers",
  ]
}

test("predicates-lib-unittests") {
  sources = [ "predicates_test.cc" ]
  deps = [
    ":predicates",
    "//src/lib/fxl/test:gtest_main",
  ]
}

fuchsia_unittest_package("predicates-lib-test") {
  deps = [ ":predicates-lib-unittests" ]

  test_specs = {
    environments = [ emu_env ]
  }
}

group("tests") {
  testonly = true
  deps = [ ":predicates-lib-test" ]
}
