# Copyright 2014 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("../mojo_edk.gni")

mojo_edk_source_set("test_support") {
  testonly = true

  sources = [
    "multiprocess_test_helper.cc",
    "multiprocess_test_helper.h",
    "scoped_ipc_support.cc",
    "scoped_ipc_support.h",
    "test_utils.cc",
    "test_utils.h",
  ]

  deps = [
    "//base",
    "//base/test:test_support",
    "//testing/gtest",
  ]

  mojo_edk_deps = [
    "mojo/edk/system",
    "mojo/edk/util",
  ]

  mojo_sdk_public_deps = [ "mojo/public/cpp/system" ]
}

mojo_edk_source_set("run_all_unittests") {
  testonly = true

  sources = [
    "run_all_unittests.cc",
  ]

  deps = [
    ":test_support_impl",
    "//base",
    "//base/test:test_support",
    "//testing/gtest",
  ]

  mojo_edk_deps = [
    "mojo/edk/base_edk",
    "mojo/edk/system",
  ]
}

mojo_edk_source_set("run_all_perftests") {
  testonly = true

  sources = [
    "run_all_perftests.cc",
  ]

  deps = [
    ":test_support_impl",
    "//base",
    "//base/test:test_support",
  ]

  mojo_edk_deps = [
    "mojo/edk/base_edk",
    "mojo/edk/system",
  ]
}

mojo_edk_source_set("test_support_impl") {
  testonly = true

  sources = [
    "test_support_impl.cc",
  ]

  deps = [
    "//base",
    "//base/test:test_support",
  ]

  mojo_sdk_deps = [ "mojo/public/cpp/test_support" ]

  mojo_sdk_public_deps = [ "mojo/public/cpp/system" ]

  visibility = [
    ":run_all_unittests",
    ":run_all_perftests",
  ]
}
