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

executable("nonhardware_tests") {
  testonly = true
  output_name = "msd_vsl_gc_nonhardware_tests"

  sources = [
    "main.cc",
    "test_address_space.cc",
    "test_address_space_base.cc",
    "test_connection.cc",
    "test_page_table_slot_allocator.cc",
  ]

  deps = [
    "//garnet/drivers/gpu/msd-vsl-gc/src",
    "//garnet/lib/magma/tests/mock:bus_mapper",
    "//garnet/lib/magma/tests/mock:mmio",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/ddk",
  ]
}

# These tests require a graphics device to run.
# They can be run inside the test build of the driver.
source_set("hardware_tests") {
  testonly = true

  include_dirs = [ "//third_party/etnaviv_gpu_tests/src/" ]

  sources = [
    "//third_party/etnaviv_gpu_tests/src/etnaviv_cl_test_gc7000.c",
    "test_device.cc",
    "test_memory_write.cc",
  ]

  deps = [
    "../../src",
    "//garnet/lib/magma/tests/helper:platform_device_helper",
    "//third_party/googletest:gtest",
  ]
}
