# Copyright 2016 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.

visibility = [ "//peridot/bin/ledger/*" ]

source_set("testing") {
  testonly = true

  sources = [
    "commit_empty_impl.cc",
    "commit_empty_impl.h",
    "page_storage_empty_impl.cc",
    "page_storage_empty_impl.h",
    "storage_matcher.cc",
    "storage_matcher.h",
  ]

  public_deps = [
    "//peridot/bin/ledger/storage/public",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]

  deps = [
    "//garnet/public/lib/callback",
    "//garnet/public/lib/fxl",
    "//peridot/bin/ledger/encryption/primitives",
    "//peridot/bin/ledger/storage/impl/btree:lib",
    "//peridot/bin/ledger/testing:lib",
    "//peridot/lib/socket",
  ]

  configs += [ "//peridot/bin/ledger:ledger_config" ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "storage_matcher_unittest.cc",
  ]

  deps = [
    ":testing",
    "//peridot/bin/ledger/storage/public",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]

  configs += [ "//peridot/bin/ledger:ledger_config" ]
}
