# Copyright 2021 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("//src/graphics/lib/compute/gn/build_rules.gni")

#
# Vulkan and Spinel wrapper unittests
#
graphics_compute_unittests("spinel-vk-rs-unittests-simple") {
  testonly = true
  sources = [ "spinel_vk_rs_unittests.cc" ]
  deps = [
    "//src/graphics/lib/compute/spinel-vk-rs:spinel_vk_rs",
    graphics_compute_gtest_target,
  ]
}

graphics_compute_unittests_package("spinel-vk-rs-tests") {
  needs_vulkan = true
  testonly = true
  deps = [ ":spinel-vk-rs-unittests-simple" ]
}

#
# NOTE: All dependencies here are run in continuous integration, but
# our host bots currently lack a proper Vulkan loader + ICD. Thus only
# add the device-specific Vulkan-based unit-tests for now.
#
group("tests") {
  testonly = true
  deps = [ ":spinel-vk-rs-tests" ]
}
