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

group("test") {
  testonly = true
  deps = [ ":fvm-unit" ]
}

zx_test("fvm-unit") {
  sources = [
    "format-info-test.cc",
    "integrity-validation-test.cc",
    "partition-entry-test.cc",
    "slice-entry-test.cc",
  ]
  deps = [
    "$zx/system/ulib/fvm",
    "$zx/system/ulib/zxtest",
  ]
  if (is_fuchsia) {
    sources += [ "client-test.cc" ]
    deps += [
      "$zx/system/ulib/block-client",
      "$zx/system/ulib/fdio",
      "$zx/system/ulib/zircon",
      "$zx/system/ulib/zx",
    ]
  }
}

zx_library("fvm-devices") {
   sdk = "source"
   sdk_headers = [ "fvm/test/device-ref.h" ]
  testonly = true
  sources = [ "device-ref.cc" ]
  public_deps = [
    "$zx/system/fidl/fuchsia-hardware-block-volume:c",
    "$zx/system/ulib/fbl:headers",
    "$zx/system/ulib/fvm:headers",
    "$zx/system/ulib/ramdevice-client:headers",
    "$zx/system/ulib/zx:headers",
  ]
  deps = [
    "$zx/system/fidl/fuchsia-device:llcpp",
    "$zx/system/fidl/fuchsia-hardware-block-partition:c",
    "$zx/system/fidl/fuchsia-hardware-block-volume:c",
    "$zx/system/fidl/fuchsia-io:llcpp",
    "$zx/system/ulib/fbl",
    "$zx/system/ulib/fdio",
    "$zx/system/ulib/fidl",
    "$zx/system/ulib/fs-management",
    "$zx/system/ulib/fvm",
    "$zx/system/ulib/fzl",
    "$zx/system/ulib/ramdevice-client",
    "$zx/system/ulib/zircon",
    "$zx/system/ulib/zx",
    "$zx/system/ulib/zxtest",
  ]
}
