# 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("sledge") {
  package_name = "sledge"

  # Several source files have analysis errors
  sources_required = false

  sources = [
    "sledge.dart",
    "src/document/change.dart",
    "src/document/document.dart",
    "src/document/document_id.dart",
    "src/document/leaf_value.dart",
    "src/document/node_value.dart",
    "src/document/value.dart",
    "src/document/value_observer.dart",
    "src/document/values/compressor.dart",
    "src/document/values/converted_change.dart",
    "src/document/values/converter.dart",
    "src/document/values/key_value.dart",
    "src/document/values/key_value_storage.dart",
    "src/document/values/last_one_wins_value.dart",
    "src/document/values/map_value.dart",
    "src/document/values/ordered_list_tree_path.dart",
    "src/document/values/ordered_list_value.dart",
    "src/document/values/pos_neg_counter_value.dart",
    "src/document/values/set_value.dart",
    "src/ledger_helpers.dart",
    "src/modification_queue.dart",
    "src/query/field_value.dart",
    "src/query/index_definition.dart",
    "src/query/query.dart",
    "src/schema/base_type.dart",
    "src/schema/schema.dart",
    "src/schema/types/map_type.dart",
    "src/schema/types/ordered_list_type.dart",
    "src/schema/types/pos_neg_counter_type.dart",
    "src/schema/types/set_type.dart",
    "src/schema/types/trivial_types.dart",
    "src/sledge.dart",
    "src/sledge_connection_id.dart",
    "src/sledge_errors.dart",
    "src/sledge_page_id.dart",
    "src/subscription/subscription.dart",
    "src/transaction.dart",
    "src/uint8list_ops.dart",

    # analyzer errors triggered by including these files
    # "src/version.dart",
    # "src/conflict_resolver/conflict_resolver_factory.dart",
    # "src/conflict_resolver/schemas_obtainer.dart",
    # "src/conflict_resolver/conflict_resolver.dart",
    # "src/conflict_resolver/document_conflict_resolver.dart",
    # "src/storage/kv_encoding.dart",
    # "src/storage/schema_storage.dart",
    # "src/storage/document_storage.dart",
    # "src/query/query_builder.dart",
    # "src/query/query_field_comparison.dart",
  ]

  deps = [
    "//sdk/fidl/fuchsia.ledger",
    "//third_party/dart-pkg/pub/collection",
    "//third_party/dart-pkg/pub/crypto",
    "//topaz/public/lib/module/dart",
  ]
}

flutter_test("dart_sledge_tests") {
  sources = [
    "crdt_test_framework/checker.dart",
    "crdt_test_framework/computational_graph.dart",
    "crdt_test_framework/crdt_test_framework.dart",
    "crdt_test_framework/entry.dart",
    "crdt_test_framework/fleet.dart",
    "crdt_test_framework/fleet_state.dart",
    "crdt_test_framework/node.dart",
    "crdt_test_framework/storage_state.dart",
    "crdt_test_framework_test/checker_test.dart",
    "crdt_test_framework_test/computational_graph_test.dart",
    "crdt_test_framework_test/evaluation_order_test.dart",
    "crdt_test_framework_test/storage_state_test.dart",
    "crdt_test_framework_test/thrown_error_test.dart",
    "document_deletion_test.dart",
    "document_id_test.dart",
    "document_ss_test.dart",
    "document_test.dart",
    "dummies/dummy_value_observer.dart",
    "fakes/fake_ledger_object_factories.dart",
    "fakes/fake_ledger_page.dart",
    "fakes/fake_ledger_page_snapshot.dart",
    "get_documents_test.dart",
    "helpers.dart",
    "ledger_helpers_test.dart",
    "query/index_definition_test.dart",
    "query/query_builder_test.dart",
    "query/query_test.dart",
    "schema_test.dart",
    "schemas_obtainer_test.dart",
    "sledge_page_id_test.dart",
    "sledge_ss_test.dart",
    "transaction_test.dart",
    "uint8list_ops_test.dart",
    "values/compressor_test.dart",
    "values/converter_test.dart",
    "values/key_value_storage_test.dart",
    "values/last_one_wins_values_test.dart",
    "values/list_api_tester.dart",
    "values/map_api_tester.dart",
    "values/map_value_ss_test.dart",
    "values/map_value_test.dart",
    "values/matchers.dart",
    "values/ordered_list_ss_test.dart",
    "values/ordered_list_tree_path_test.dart",
    "values/ordered_list_value_test.dart",
    "values/pos_neg_counter_ss_test.dart",
    "values/pos_neg_counter_test.dart",
    "values/set_api_tester.dart",
    "values/set_value_ss_test.dart",
    "values/set_value_test.dart",
  ]

  source_dir = "test"

  deps = [
    ":sledge",
    "//third_party/dart-pkg/git/flutter/packages/flutter_test",
    "//third_party/dart-pkg/pub/test",
  ]
}

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

  source_dir = "test/integration_tests"

  deps = [
    ":sledge",
    "//third_party/dart-pkg/pub/test",
  ]
  environments = basic_envs
}
