# 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/internal/_ongoing_activity_impl.dart",
    "src/module/module.dart",
    "src/module/module_state_exception.dart",
    "src/module/noop_intent_handler.dart",
    "src/module/ongoing_activity.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/internal/ongoing_activity_impl_test.dart",
    "module/module_test.dart",
    "module/noop_intent_handler_test.dart",
    "proposal/internal/proposal_listener_impl_test.dart",
    "proposal/proposal_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",
    "//third_party/dart-pkg/pub/mockito",  # Remove after DX-470 is fixed
    "//third_party/dart-pkg/pub/test",
  ]
}
