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

import("//build/dart/dart_library.gni")
import("//build/fidl/fidl.gni")
import("//build/testing/environments.gni")
import("//topaz/runtime/dart_runner/dart_app.gni")
import("//topaz/runtime/dart/dart_fuchsia_test.gni")
import("//topaz/runtime/dart/flutter_test.gni")

dart_library("fuchsia_services") {
  package_name = "fuchsia_services"

  sdk_category = "partner"

  sources = [
    "services.dart",
    "src/incoming.dart",
    "src/internal/_startup_context_impl.dart",
    "src/outgoing.dart",
    "src/service_provider_impl.dart",
    "src/startup_context.dart",
  ]

  deps = [
    "//sdk/fidl/fuchsia.sys",
    "//third_party/dart-pkg/pub/meta",
    "//topaz/public/dart/fidl",
    "//topaz/public/dart/fuchsia",
    "//topaz/public/dart/fuchsia_vfs",
    "//topaz/public/dart/zircon",
    "//zircon/public/fidl/fuchsia-io",
  ]
}

flutter_test("fuchsia_services_package_unittests") {
  sources = [
    "service_provider_impl_test.dart",
    "startup_context_test.dart",
  ]

  deps = [
    ":fuchsia_services",
    "//third_party/dart-pkg/pub/test",
    "//zircon/public/fidl/fuchsia-io",
  ]
}

fidl("test_foo_fidl") {
  name = "test.fuchsia.service.foo"

  sources = [
    "test_support/fidl/foo.fidl",
  ]
}

# fx run-test fuchsia_services_package_integration_tests
dart_fuchsia_test("fuchsia_services_package_integration_tests") {
  meta = [
    {
      path = rebase_path("meta/fuchsia_services_package_integration_tests.cmx")
      dest = "fuchsia_services_package_integration_tests.cmx"
    },
  ]

  sources = [
    "launch_flow_test.dart",
    "incoming_test.dart",
    "outgoing_test.dart",
  ]

  deps = [
    ":fuchsia_services",
    ":test_foo_fidl",
    "//third_party/dart-pkg/pub/test",
    "//zircon/public/fidl/fuchsia-io",
  ]
  environments = basic_envs
}

# The foo test server used for integration testing
dart_app("fuchsia_services_foo_test_server") {

  main_dart = "test_support/foo_test_server/main.dart"

  meta = [
    {
      path = rebase_path("meta/fuchsia_services_foo_test_server.cmx")
      dest = "fuchsia_services_foo_test_server.cmx"
    },
  ]

  sources = []
  deps = [
    ":test_foo_fidl",
    "//topaz/public/dart/fidl",
    "//topaz/public/dart/fuchsia_services",
  ]
}

