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

assert(is_fuchsia)

import("//mojo/public/tools/bindings/mojom.gni")
import("//testing/test.gni")

mojom("example_interfaces") {
  testonly = true
  sources = [
    "example.mojom",
  ]
}

source_set("traits") {
  sources = [
    "fidl_interface_request_mojom_traits.h",
  ]

  public_deps = [
    "//mojo/public/cpp/platform",
    "//mojo/public/cpp/system",
  ]
}

test("fuchsia_mojo_unittests") {
  sources = [
    "fidl_interface_request_mojom_traits_unittest.cc",
    "test_interface_request_mojom_traits.h",
  ]

  deps = [
    ":example_interfaces",
    "//base:testfidl",
    "//base/test:test_support",
    "//mojo/core/test:run_all_unittests",
    "//mojo/public/cpp/test_support:test_utils",
    "//testing/gtest",
  ]
}
