# 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/testing/environments.gni")
import("//topaz/runtime/dart/dart_fuchsia_test.gni")
import("//topaz/runtime/dart/flutter_test.gni")

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

  sdk_category = "partner"

  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/internal/_streaming_intent_handler_impl.dart",
    "src/module/module.dart",
    "src/module/module_state_exception.dart",
    "src/module/noop_intent_handler.dart",
    "src/module/ongoing_activity.dart",
    "src/module/streaming_intent_handler.dart",
    "src/proposal/internal/_proposal_listener_impl.dart",
    "src/proposal/proposal.dart",
    "src/service_connection/agent_service_connection.dart",
  ]

  deps = [
    "//sdk/fidl/fuchsia.auth",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.sys",
    "//sdk/fidl/fuchsia.ui.views",
    "//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_scenic",
    "//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
flutter_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/_streaming_intent_handler_impl_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
# Alternatively, run:
#  fx run-test fuchsia_modular_package_integration_tests
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",
    "module/internal/intent_handler_impl_integ_test.dart",
    "proposal/proposal_integ_test.dart",
    "service_connection/agent_service_connection_integ_test.dart",
  ]

  deps = [
    ":fuchsia_modular",
    "//sdk/fidl/fuchsia.modular.testing",
    "//third_party/dart-pkg/pub/mockito",  # Remove after DX-470 is fixed
    "//third_party/dart-pkg/pub/test",
    "//topaz/public/dart/fuchsia_modular_test",
  ]
  environments = basic_envs
}
