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

load(
    "@rules_fuchsia//fuchsia:defs.bzl",
    "fuchsia_package",
    "fuchsia_unittest_component",
)

package(default_visibility = ["//visibility:public"])

cc_test(
    name = "hello_test",
    size = "small",
    srcs = ["hello_test.cc"],
    deps = [
        "@com_google_googletest//:gtest_main",
    ],
)

filegroup(
    name = "common_libs",
    srcs = [
        "@fuchsia_sdk//:arch/x64/sysroot/dist/lib/ld.so.1",
    ],
    visibility = ["//visibility:public"],
)

fuchsia_unittest_component(
    name = "test_hello_component",
    test_name = "hello_test",
    deps = [
        ":common_libs",
        ":hello_test",
        "@fuchsia_clang//:dist",
        "@fuchsia_sdk//pkg/fdio",
    ],
)

fuchsia_package(
    name = "test_hello_pkg",
    package_name = "test_hello_pkg",
    testonly = True,
    visibility = ["//visibility:public"],
    deps = [
        ":test_hello_component",
    ],
)

cc_library(
    name = "sim_library",
    srcs = [
        "fake-ucode-capa-test.cc",
        #    "inspect-host-cmd.cc",
        #    "inspect-host-cmd.h",
        #    "sim-mvm.cc",
        #    "sim-nvm-data.inc",
        #    "sim-nvm.cc",
        #    "sim-trans.cc",
        #    "single-ap-test.cc",
        #    "tlv-fw-builder.cc",
        #    "tlv-fw-builder.h",
        #    "wlan-pkt-builder.cc",
    ],
    hdrs = [
        "fake-ucode-capa-test.h",
        #   "mock-trans.h",
        #  "sim-mvm.h",
        #  "sim-nvm.h",
        #  "sim-trans.h",
        #  "sim.h",
        #  "single-ap-test.h",
        #   "wlan-pkt-builder.h",
    ],
    deps = [
        #  "//sdk/banjo/fuchsia.hardware.wlan.mac:fuchsia.hardware.wlan.mac_banjo_cpp",
        #  "//sdk/banjo/fuchsia.hardware.wlanphyimpl:fuchsia.hardware.wlanphyimpl_banjo_cpp",
        #  "//sdk/fidl/fuchsia.wlan.common:fuchsia.wlan.common_banjo_cpp",
        #  "//third_party/iwlwifi:core",
        #  "//third_party/iwlwifi/fw:api",
        #  "//third_party/iwlwifi/mvm",
        #  "//third_party/iwlwifi/platform:fuchsia_device",
        # "//third_party/devices/testing/fake-bti",
        # "//zircon/system/ulib/async-loop:async-loop-cpp",
        # "//zircon/system/ulib/async-loop:async-loop-default",
        # "//zircon/system/ulib/fbl",

        #  "//third_party/connectivity/wlan/drivers/testing/lib/sim-device",
        #  "//third_party/connectivity/wlan/drivers/testing/lib/sim-env",
        #  "//third_party/connectivity/wlan/drivers/testing/lib/sim-fake-ap",
        # "//third_party/iwlwifi:core",
        # "//third_party/iwlwifi/platform",
        # "//third_party/devices/pci/testing:pci-protocol-fake",
        # "//third_party/devices/testing/mock-ddk",
        # "//zircon/system/public",
        "//zircon/system/ulib/zxtest",
    ],
)
