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

visibility = [ "//src/ledger/*" ]

source_set("netconnector") {
  testonly = true

  sources = [
    "fake_netconnector.cc",
    "fake_netconnector.h",
    "netconnector_factory.cc",
    "netconnector_factory.h",
  ]

  public_deps = [
    "//garnet/public/lib/callback",
    "//sdk/fidl/fuchsia.netconnector",
    "//src/ledger/bin/fidl_helpers",
    "//src/ledger/bin/testing:lib",
  ]

  deps = [
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/test_runner/cpp/reporting",
    "//peridot/lib/convert",
    "//src/lib/fxl",
    "//third_party/googletest:gtest",
  ]

  configs += [ "//src/ledger:ledger_config" ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "netconnector_factory_unittest.cc",
  ]

  deps = [
    ":netconnector",
    "//garnet/public/lib/callback",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/netconnector/cpp",
    "//peridot/lib/convert",
    "//sdk/fidl/fuchsia.netconnector",
    "//src/ledger/bin/environment",
    "//src/ledger/bin/testing:lib",
    "//src/lib/fxl",
    "//third_party/googletest:gtest",
  ]

  configs += [ "//src/ledger:ledger_config" ]
}
