# 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_fuchsia_test.gni")
import("//build/dart/dart_library.gni")
import("//build/testing/environments.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
}
