# Copyright 2018 The Chromium 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/config/ui.gni")
import("//chromeos/assistant/assistant.gni")
import("//chromeos/services/ime/public/features.gni")
import("//testing/test.gni")

assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos")

# Use this target for adding new unit tests. To add a unit test to this target,
# create a "unit_tests" source_set in your service and add it as a dependency
# here.
#
# Unit tests are generally preferred over service tests as they are simpler to
# create and maintain. Check out service_manager::TestConnectorFactory for an
# easy way to test your services.
source_set("unit_tests") {
  testonly = true
  deps = [
    "//chromeos/services/device_sync:unit_tests",
    "//chromeos/services/ime:unit_tests",
    "//chromeos/services/machine_learning/public/cpp:unit_tests",
    "//chromeos/services/multidevice_setup:unit_tests",
    "//chromeos/services/secure_channel:unit_tests",
  ]
}

# Use this target for adding new service tests. To add a unit test to this
# target, create a "tests" source_set in your service and add it as a dependency
# here.
test("chromeos_services_unittests") {
  deps = [
    "//chromeos/services/ime:services_unittests",
    "//mojo/core/test:run_all_unittests",
  ]

  if (enable_cros_assistant) {
    deps += [ "//chromeos/services/assistant:tests" ]
  }
}
