# 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/assembly/bootfs_files_for_assembly.gni")
import("//build/components.gni")
import("//build/test.gni")
import("//src/storage/testing/driver_test_realm.gni")

executable("biotime") {
  visibility = [ ":*" ]
  testonly = true
  sources = [ "biotime.cc" ]
  deps = [
    "//sdk/fidl/fuchsia.hardware.block:fuchsia.hardware.block_cpp",
    "//sdk/fidl/fuchsia.hardware.block.driver:fuchsia.hardware.block.driver_banjo_cpp",
    "//sdk/lib/component/incoming/cpp",
    "//sdk/lib/fit",
    "//zircon/system/ulib/perftest",
    "//zircon/system/ulib/zircon-internal",
  ]
}

bootfs_files_for_assembly("bootfs") {
  testonly = true
  deps = [ ":biotime" ]
}

test("biotime-test") {
  sources = [ "biotime-test.cc" ]
  output_name = "biotime-test"
  deps = [
    "//sdk/lib/device-watcher/cpp",
    "//sdk/lib/fdio",
    "//src/storage/lib/ramdevice_client/cpp",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/zx",
    "//zircon/system/ulib/zxtest",
  ]
}

storage_driver_test_realm_v2_component("biotime-test-component") {
  deps = [ ":biotime-test" ]
}

fuchsia_test_package("biotime-tests") {
  test_components = [ ":biotime-test-component" ]
  deps = [ ":biotime" ]
}

group("tests") {
  testonly = true
  public_deps = [ ":biotime-tests" ]
}
