# 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("//peridot/build/executable_package.gni")

group("all") {
  public_deps = [
    ":decision_policy",
    ":rank_over_threshold_decision_policy",
  ]
}

source_set("decision_policy") {
  sources = [
    "decision_policy.cc",
    "decision_policy.h",
  ]

  deps = [
    "//peridot/bin/suggestion_engine:models",
  ]
}

source_set("rank_over_threshold_decision_policy") {
  sources = [
    "rank_over_threshold_decision_policy.cc",
    "rank_over_threshold_decision_policy.h",
  ]

  deps = [
    ":decision_policy",
    "//peridot/public/fidl/fuchsia.modular",
  ]

  public_deps = [
    "//peridot/bin/suggestion_engine/rankers:ranker",
  ]
}

executable("rank_over_threshold_decision_policy_unittest") {
  testonly = true

  sources = [
    "rank_over_threshold_decision_policy_unittest.cc",
  ]

  deps = [
    ":rank_over_threshold_decision_policy",
    "//garnet/public/lib/gtest",
    "//third_party/googletest:gtest_main",
  ]
}
