# Copyright 2018 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/dart_test.gni")

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

  sdk_category = "partner"

  sources = [
    "com.fuchsia.color.dart",
    "com.fuchsia.contact.dart",
    "com.fuchsia.documents.dart",
    "com.fuchsia.intent.dart",
    "com.fuchsia.status.dart",
    "com/fuchsia/codelab/codelab.dart",
    "com/fuchsia/codelab/finance/finance_entity_codec.dart",
    "com/fuchsia/codelab/lyrics/lyrics_entity_codec.dart",
    "com/fuchsia/codelab/recipe/recipe_entity_codec.dart",
    "com/fuchsia/media/asset_specifier/asset_specifier_entity_codec.dart",
    "com/fuchsia/media/asset_specifier/asset_specifier_entity_data.dart",
    "com/fuchsia/media/captions/captions_entity_codec.dart",
    "com/fuchsia/media/media.dart",
    "com/fuchsia/media/progress/media_progress_entity_codec.dart",
    "com/fuchsia/media/progress/media_progress_entity_data.dart",
    "com/google/youtube/video_id_entity_codec.dart",
    "entity_codec.dart",
    "src/com.fuchsia.color/color_entity_codec.dart",
    "src/com.fuchsia.color/color_entity_data.dart",
    "src/com.fuchsia.contact/contact_entity_codec.dart",
    "src/com.fuchsia.contact/contact_entity_data.dart",
    "src/com.fuchsia.contact/email_entity_codec.dart",
    "src/com.fuchsia.contact/email_entity_data.dart",
    "src/com.fuchsia.contact/filter_entity_codec.dart",
    "src/com.fuchsia.contact/filter_entity_data.dart",
    "src/com.fuchsia.contact/phone_number_entity_codec.dart",
    "src/com.fuchsia.contact/phone_number_entity_data.dart",
    "src/com.fuchsia.documents/documents_id_codec.dart",
    "src/com.fuchsia.documents/documents_id_entity_data.dart",
    "src/com.fuchsia.intent/intent_entity_codec.dart",
    "src/com.fuchsia.intent/intent_entity_data.dart",
    "src/com.fuchsia.status/status_entity_codec.dart",
    "src/com.fuchsia.status/status_entity_data.dart",
    "src/entity_codec.dart",
    "src/parse_int.dart",
    "src/string_list_entity_codec.dart",
  ]

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

dart_test("dart_schema_tests") {
  sources = [
    "../test/entity_codec_test.dart",
  ]

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