# Copyright 2016 The Chromium 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("//topaz/runtime/dart/flutter_test.gni")

dart_library("dart") {
  package_name = "lib.app.dart"

  sdk_category = "partner"

  source_dir = "."
  # Unclear non-standard directory structure
  sources_required = false

  sources = [
    "app.dart",
    "logging.dart",
    "src/frame_rate_tracer.dart",
    "src/fuchsia_log_record.dart",
    "src/fuchsia_logger.dart",
    "src/logging.dart",
    "src/outgoing.dart",
  ]

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

dart_library("testing") {
  package_name = "lib.app.dart.testing"

  sdk_category = "partner"
  # Unclear non-standard directory structure
  sources_required = false

  source_dir = "testing"

  sources = [
    "app_test.dart",
  ]

  deps = [
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
    "//topaz/public/dart/fidl",
    "//topaz/public/lib/app/dart",
  ]
}

flutter_test("dart_app_tests") {
  sources = [
    "fuchsia_log_record_test.dart",
    "legacy_code.dart",
    "legacy_logger_test.dart",
    "log_writer_test.dart",
    "socket_test.dart",
    "socket_validate.dart",
    "socket_with_exception_test.dart",
    "socket_with_location_test.dart",
    "socket_with_stacktrace_test.dart",
    "socket_with_tags_test.dart",
    "stdout_test.dart",
    "stdout_with_exception.dart",
    "stdout_with_location.dart",
    "test_startup_context_test.dart",
  ]

  deps = [
    ":dart",
    "//third_party/dart-pkg/git/flutter/packages/flutter_test",
    "//third_party/dart-pkg/pub/logging",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
    "//topaz/public/lib/app/dart",
  ]
}
