# 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/dart/dart_app.gni")
import("//build/dart/dart_test_component.gni")
import("//build/dart/fidl_move.gni")
import("//build/dart/test.gni")
import("//src/sys/build/fuchsia_test_package.gni")

dart_app("bin") {
  main_dart = "lib/main.dart"

  fuchsia_package_name = "inspect_dart_codelab_part_1"
  package_name = "inspect_dart_codelab_part_1_lib"

  sources = [
    "main.dart",
    "reverser.dart",
  ]

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

  deps = [
    "//examples/diagnostics/inspect/codelab/fidl:fuchsia.examples.inspect",
    "//sdk/fidl/fuchsia.sys",
    "//third_party/dart-pkg/pub/meta",
    dart_package_label.fidl,
    dart_package_label.fuchsia_inspect,
    dart_package_label.fuchsia_logger,
    dart_package_label.fuchsia_services,
  ]
}

dart_test("inspect_dart_codelab_part_1_unittests") {
  sources = [ "reverser_test.dart" ]

  deps = [
    ":bin_dart_library",
    "//third_party/dart-pkg/pub/test",
    dart_package_label.fuchsia_inspect,
  ]
}

dart_test_component("integration-tests-component") {
  component_name = "inspect-dart-codelab-part-1-integration-tests"
  manifest = "meta/inspect_dart_codelab_part_1_integration_tests.cmx"
  sources = [ "integration_test.dart" ]

  deps = [
    ":bin_dart_library",
    "//examples/diagnostics/inspect/codelab/dart/shared",
    "//examples/diagnostics/inspect/codelab/fidl:fuchsia.examples.inspect",
    "//third_party/dart-pkg/pub/test",
  ]
}

fuchsia_test_package("inspect-dart-codelab-part-1-integration-tests") {
  test_components = [ ":integration-tests-component" ]
}
