# Copyright 2015 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")

# Utilties for use by EDK internal (unit and perf) tests.
mojo_edk_source_set("test") {
  testonly = true
  mojo_edk_visibility = [ "mojo/edk/*" ]

  sources = [
    "random.cc",
    "random.h",
    "scoped_test_dir.cc",
    "scoped_test_dir.h",
    "simple_test_thread.cc",
    "simple_test_thread.h",
    "sleep.cc",
    "sleep.h",
    "stopwatch.cc",
    "stopwatch.h",
    "test_command_line.cc",
    "test_command_line.h",
    "test_io_thread.cc",
    "test_io_thread.h",
    "timeouts.cc",
    "timeouts.h",
  ]

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

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

  mojo_edk_deps = [
    "mojo/edk/base_edk",
    "mojo/edk/embedder:platform",
    "mojo/edk/util",
  ]
}

# Utilities for use by EDK internal perf tests (for use with
# :run_all_perftests).
mojo_edk_source_set("perf") {
  testonly = true
  mojo_edk_visibility = [ "mojo/edk/*" ]

  sources = [
    "perf_log.cc",
    "perf_log.h",
  ]

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

mojo_edk_source_set("run_all_unittests") {
  testonly = true
  mojo_edk_visibility = [ "mojo/edk/*" ]

  sources = [
    "run_all_unittests.cc",
  ]

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

mojo_edk_source_set("run_all_perftests") {
  testonly = true
  mojo_edk_visibility = [ "mojo/edk/*" ]

  sources = [
    "run_all_perftests.cc",
  ]

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

mojo_edk_unittests("mojo_edk_system_test_unittests") {
  sources = [
    "random_unittest.cc",
    "sleep_unittest.cc",
  ]

  deps = [
    ":test",
    "//testing/gtest",
  ]
}
