# 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")

fuchsia_unittest_package("fzl-zxtest-unittest-package") {
  deps = [ ":fzl-zxtest" ]
}

fuchsia_unittest_package("fzl-unittest-package") {
  deps = [ ":fzl" ]
}

group("tests") {
  testonly = true
  deps = [
    ":fzl-unittest-package",
    ":fzl-zxtest-unittest-package",
  ]
}

test("fzl-zxtest") {
  output_name = "fzl-zxtest-test"
  sources = [
    "pinned-vmo-tests.cc",
    "vmo-pool-tests.cc",
  ]
  deps = [
    "//sdk/lib/fdio",
    "//src/devices/testing/fake-bti",
    "//src/storage/memfs",
    "//zircon/system/ulib/async",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/async-default",
    "//zircon/system/ulib/async-loop",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/fzl",
    "//zircon/system/ulib/zx",
    "//zircon/system/ulib/zxtest",
  ]
}

test("fzl") {
  output_name = "fzl-test"
  sources = [
    "fzl-test.cc",
    "memory_probe_tests.cc",
    "owned-vmo-mapper-tests.cc",
    "resizeable-vmo-mapper-tests.cc",
    "vmo-probe.cc",
    "vmo-vmar-tests.cc",
  ]
  deps = [
    "//sdk/lib/fdio",
    "//src/storage/memfs",
    "//zircon/system/ulib/async",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/async-default",
    "//zircon/system/ulib/async-loop",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/fzl",
    "//zircon/system/ulib/sync",
    "//zircon/system/ulib/zx",
    "//zircon/system/ulib/zxtest",
  ]
}
