# Copyright 2016 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/fidl/toolchain.gni")

group("lib") {
  testonly = true
  deps = [
    ":just_fidl",
    ":peridot_public_lib_unittests",
    ":services",
    "agent",
    "app_driver",
    "async",
    "context",
    "entity",
    "fostr",
    "integration_testing",
    "lifecycle",
    "message_queue",
  ]
}

group("services") {
  deps = [
    "//sdk/fidl/fuchsia.modular",
  ]
}

group("just_fidl") {
  deps = [
    "//sdk/fidl/fuchsia.modular($fidl_toolchain)",
  ]
}

executable("peridot_public_lib_unittests") {
  testonly = true

  deps = [
    "async/cpp:unittests",
    "entity/cpp:unittests",
    "modular_test_harness/cpp:unittests",
    "//third_party/googletest:gtest_main",
  ]
}
