# 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/test.gni")

source_set("model") {
  sources = [
    "config.cc",
    "config.h",
    "endpoint.cc",
    "endpoint.h",
    "environment.cc",
    "environment.h",
    "guest.cc",
    "guest.h",
    "launch_app.cc",
    "launch_app.h",
    "launch_service.cc",
    "launch_service.h",
    "logger_filter_options.cc",
    "logger_filter_options.h",
    "logger_options.cc",
    "logger_options.h",
    "network.cc",
    "network.h",
  ]

  public_deps = [
    "//garnet/public/lib/json",
    "//src/connectivity/network/testing/netemul/lib/fidl:network",
  ]

  deps = [
    "//sdk/fidl/fuchsia.logger:fuchsia.logger",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//src/lib/pkg_url",
    "//third_party/rapidjson",
  ]
}

executable("model_unittest") {
  sources = [ "model_unittest.cc" ]
  testonly = true
  deps = [
    ":model",
    "//garnet/public/lib/gtest",
    "//garnet/public/lib/json",
    "//sdk/fidl/fuchsia.logger:fuchsia.logger_llcpp",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/pkg_url",
    "//third_party/rapidjson",
  ]
}
