# Copyright 2021 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/test.gni")

# EFI test utilities.
# Contains stubs/fakes/mocks that wrap EFI function tables so that unittests
# can control the system behavior to test against.
source_set("testing") {
  testonly = true

  sources = [
    "fake_disk_io_protocol.cc",
    "stdio_file_protocol.cc",
    "stub_boot_services.cc",
  ]
  public_configs = [ ":testing_config" ]
  public_deps = [
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
    "//zircon/kernel/lib/efi",
  ]
}

config("testing_config") {
  include_dirs = [ "include" ]
}

# Tests to make sure our utilities are working as expected.
test("efi_testing_test") {
  sources = [
    "fake_disk_io_protocol_test.cc",
    "stub_boot_services_test.cc",
  ]
  deps = [
    ":testing",
    "//src/lib/fxl/test:gtest_main",
  ]
}
