# 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("//topaz/runtime/dart/dart_test.gni")

dart_library("sledge") {
  package_name = "sledge"

  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",
  ]

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

dart_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",
  ]
}
