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

rustc_library("tcp-stream-ext") {
  name = "tcp_stream_ext"
  edition = "2021"
  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:proptest",
    "//third_party/rust_crates:socket2",
  ]

  sources = [ "src/lib.rs" ]

  configs -= [ "//build/config/rust:allow_unused_results" ]
}

rustc_test("stub-netstack-test") {
  name = "stub_netstack_test"
  source_root = "src/stub_netstack_test.rs"
  edition = "2021"
  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:assert_matches",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:libc",
  ]

  sources = [ "src/stub_netstack_test.rs" ]

  configs -= [ "//build/config/rust:allow_unused_results" ]
}

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.cml"
}

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" ]
}
