# Copyright 2020 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/rust/rustc_binary.gni")
import("//build/rust/rustc_library.gni")
import("//src/sys/build/components.gni")

rustc_library("tcp-stream-ext") {
  name = "tcp_stream_ext"
  edition = "2018"
  version = "0.1.0"
  with_unit_tests = true
  deps = [
    "//third_party/rust_crates:libc",
    "//third_party/rust_crates:thiserror",
  ]
  test_deps = [
    "//third_party/rust_crates:matches",
    "//third_party/rust_crates:proptest",
    "//third_party/rust_crates:socket2",
  ]

  sources = [ "src/lib.rs" ]
}

rustc_test("stub-netstack-test") {
  name = "stub_netstack_test"
  source_root = "src/stub_netstack_test.rs"
  edition = "2018"
  deps = [
    ":tcp-stream-ext",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.posix.socket:fuchsia.posix.socket-rustc",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:libc",
    "//third_party/rust_crates:matches",
  ]

  sources = [ "src/stub_netstack_test.rs" ]
}

fuchsia_unittest_component("stub-netstack-test-component") {
  component_name = "stub-netstack-test"
  deps = [ ":stub-netstack-test" ]
}

fuchsia_unittest_component("tcp-stream-ext_test-component") {
  component_name = "tcp-stream-ext_test"
  deps = [
    ":tcp-stream-ext_test",
    "//src/connectivity/network/netstack:component-debug",
  ]
  manifest = "meta/tcp_stream_ext_lib_test.cmx"
}

fuchsia_test_package("tcp-stream-ext-tests") {
  test_components = [
    ":stub-netstack-test-component",
    ":tcp-stream-ext_test-component",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":tcp-stream-ext-tests" ]
}
