# Copyright 2019 The Fuchsia 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/test.gni")
import("//src/sys/build/components.gni")

source_set("cpp") {
  public = [
    "array_view.h",
    "circular_deque.h",
    "vector_buffer.h",
  ]

  public_deps = [ "//zircon/public/lib/safemath" ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

test("containers_cpp_unittests") {
  testonly = true
  output_name = "containers_cpp_unittests"

  sources = [
    "array_view_unittest.cc",
    "circular_deque_unittest.cc",
    "vector_buffer_unittest.cc",
  ]

  deps = [
    ":cpp",
    "//src/lib/fxl/test:gtest_main",
    "//third_party/googletest:gtest",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

fuchsia_unittest_package("containers_cpp_tests") {
  deps = [ ":containers_cpp_unittests" ]
}

group("tests") {
  testonly = true

  deps = [ ":containers_cpp_tests" ]
}
