# 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/components.gni")
import("//build/test.gni")
import("//build/testing/bootfs_test.gni")

source_set("common_sources") {
  sources = [
    "common.cc",
    "main.cc",
    "secure_vmo_read_tester.cc",
    "test_observer.cc",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.hardware.sysmem:fuchsia.hardware.sysmem_cpp",
    "//sdk/fidl/fuchsia.sysinfo:fuchsia.sysinfo_cpp",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_cpp",
    "//sdk/fidl/fuchsia.sysmem2:fuchsia.sysmem2_cpp",
    "//sdk/lib/component/incoming/cpp",
    "//sdk/lib/fdio",
    "//sdk/lib/fidl",
    "//sdk/lib/zbi-format",
    "//src/devices/bind/fuchsia.amlogic.platform.sysmem.heap:fuchsia.amlogic.platform.sysmem.heap_cpp",
    "//src/devices/bind/fuchsia.goldfish.platform.sysmem.heap:fuchsia.goldfish.platform.sysmem.heap_cpp",
    "//src/devices/bind/fuchsia.sysmem.heap:fuchsia.sysmem.heap_cpp",
    "//src/lib/ddk",
    "//src/lib/zbitl",
    "//zircon/system/ulib/async-loop",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/fdio-caller",
    "//zircon/system/ulib/sysmem-version",
    "//zircon/system/ulib/zx",
    "//zircon/system/ulib/zxtest",
  ]
  visibility = [ ":*" ]
}

test("sysmem-v1") {
  sources = [ "sysmem_tests.cc" ]
  deps = [ ":common_sources" ]

  # Uncomment this when narrowing down failures.
  cflags_cc = [ "-Wno-unused-function" ]
}

test("sysmem-v2") {
  sources = [ "sysmem_tests_v2.cc" ]
  deps = [ ":common_sources" ]

  # Uncomment this when narrowing down failures.
  cflags_cc = [ "-Wno-unused-function" ]
}

fuchsia_unittest_package("sysmem-test-v1") {
  manifest = "meta/sysmem-v1.cml"
  deps = [
    ":sysmem-v1",
    "//src/devices/sysmem/bin/sysmem_connector:sysmem_connector_cmp",
  ]
  test_type = "system"
}

fuchsia_unittest_package("sysmem-test-v2") {
  manifest = "meta/sysmem-v2.cml"
  deps = [
    ":sysmem-v2",
    "//src/devices/sysmem/bin/sysmem_connector:sysmem_connector_cmp",
  ]
  test_type = "system"
}

bootfs_test("sysmem-bootfs-test-v1") {
  name = "sysmem-v1"
  deps = [ ":sysmem-v1" ]
}

bootfs_test("sysmem-bootfs-test-v2") {
  name = "sysmem-v2"
  deps = [ ":sysmem-v2" ]
}
