# 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.

# Untrusted code
if (is_nacl) {
  # Unit test for the Mojo public API.
  executable("monacl_test") {
    testonly = true
    sources = [
      "//mojo/public/cpp/system/tests/core_unittest.cc",
      "//mojo/public/cpp/system/tests/macros_unittest.cc",
    ]
    deps = [
      "//mojo/public/c/system/tests:tests",
      "//mojo/public/cpp/system:system",
      "//mojo/public/platform/nacl:mojo",
      "//testing/gtest:gtest",
      "//testing/gtest:gtest_main",
    ]
  }

  group("mojo_nacl_tests_untrusted") {
    testonly = true
    deps = [
      ":monacl_test",
      "//examples/apptest",
      "//examples/wget",
      "//services/clipboard",
      "//services/clipboard:apptests",
      "//services/files:apptests",
      "//services/http_server",
      "//services/http_server:apptests",
      "//services/view_manager:mojo_view_manager_client_apptests",
      "//services/view_manager:view_manager_service_apptests",
      "//services/window_manager:window_manager_apptests",
      "//shell:apptests",
    ]
  }
}
