# 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_fuchsia_test.gni")
import("//build/dart/dart_library.gni")
import("//topaz/runtime/dart/dart_test.gni")

dart_library("fuchsia_modular") {
  package_name = "fuchsia_modular"

  sdk_category = "partner"

  source_dir = "lib"

  sources = [
    "agent.dart",
    "codecs.dart",
    "entity.dart",
    "lifecycle.dart",
    "logger.dart",
    "module.dart",
    "proposal.dart",
    "service_connection.dart",
    "src/agent/agent.dart",
    "src/agent/agent_task_handler.dart",
    "src/agent/internal/_agent_context.dart",
    "src/agent/internal/_agent_impl.dart",
    "src/entity/entity.dart",
    "src/entity/entity_exceptions.dart",
    "src/entity/internal/_entity_impl.dart",
    "src/internal/_component_context.dart",
    "src/lifecycle/internal/_lifecycle_impl.dart",
    "src/lifecycle/lifecycle.dart",
    "src/module/embedded_module.dart",
    "src/module/intent.dart",
    "src/module/intent_handler.dart",
    "src/module/internal/_fidl_transformers.dart",
    "src/module/internal/_intent_handler_impl.dart",
    "src/module/internal/_module_context.dart",
    "src/module/internal/_module_impl.dart",
    "src/module/module.dart",
    "src/module/module_state_exception.dart",
    "src/module/noop_intent_handler.dart",
    "src/proposal/internal/_proposal_listener_impl.dart",
    "src/proposal/proposal.dart",
    "src/service_connection/agent_service_connection.dart",
  ]

  deps = [
    "//garnet/public/fidl/fuchsia.auth",
    "//garnet/public/fidl/fuchsia.sys",
    "//garnet/public/fidl/fuchsia.ui.viewsv1token",
    "//peridot/public/fidl/fuchsia.modular",
    "//third_party/dart-pkg/pub/async",
    "//third_party/dart-pkg/pub/meta",
    "//topaz/public/dart/fidl",
    "//topaz/public/dart/fuchsia",
    "//topaz/public/dart/fuchsia_logger",
    "//topaz/public/dart/fuchsia_services",
    "//topaz/public/dart/zircon",
    "//zircon/public/fidl/fuchsia-mem",
  ]
}

# Runs these tests using:
#   fx run-host-tests fuchsia_modular_package_unittests
dart_test("fuchsia_modular_package_unittests") {
  sources = [
    "agent/agent_test.dart",
    "agent/internal/agent_impl_test.dart",
    "lifecycle/lifecycle_test.dart",
    "matchers.dart",
    "module/intent_test.dart",
    "module/internal/fidl_transformers_test.dart",
    "module/internal/intent_handler_impl_test.dart",
    "module/internal/module_impl_test.dart",
    "module/module_test.dart",
    "module/noop_intent_handler_test.dart",
    "proposal/proposal_test.dart",
    "proposal/internal/proposal_listener_impl_test.dart",
    "service_connection/agent_service_connection_test.dart",
  ]

  deps = [
    ":fuchsia_modular",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
  ]
}

# Run tese tests using:
#  fx set x64 --packages topaz/packages/buildbot
# Start a qemu emulator (using a real device is also possible):
#  fx run -kN  (tip: to terminate the emulator press "ctrl+a x")
# Run integration tests:
#  fx shell runtests pkgfs/packages/fuchsia_modular_package_integration_tests/0/test
dart_fuchsia_test("fuchsia_modular_package_integration_tests") {
  meta = [
    {
      path = rebase_path("meta/fuchsia_modular_package_integration_tests.cmx")
      dest = "fuchsia_modular_package_integration_tests.cmx"
    },
  ]

  sources = [
    "entity/internal/entity_impl_test.dart",
    "internal/component_context_integ_test.dart",
    "lifecycle/internal/lifecycle_impl_test.dart",
    "module/internal/module_impl_integ_test.dart",
    "proposal/proposal_integ_test.dart",
  ]

  deps = [
    ":fuchsia_modular",
    "//garnet/public/fidl/fuchsia.testing.runner",
    "//third_party/dart-pkg/pub/mockito",  # Remove after DX-470 is fixed
    "//third_party/dart-pkg/pub/test",
  ]
}
