# Copyright 2017 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/test_package.gni")
import("//third_party/protobuf/proto_library.gni")

config("cobalt_config") {
  include_dirs = [
    "//garnet/public/lib/syslog/cpp",
    "//third_party/cobalt",
    "$root_gen_dir/third_party/cobalt",
    "//zircon/system/ulib/syslog/include",
  ]
}

proto_library("cobalt_proto") {
  sources = [
    "clearcut_extensions.proto",
    "encrypted_message.proto",
    "envelope.proto",
    "event.proto",
    "key.proto",
    "observation.proto",
    "observation2.proto",
    "observation_batch.proto",
  ]
  import_dirs = [ "//third_party/protobuf/src" ]
  generate_python = false
  cc_generator_options = "lite"
  deps = [
    "//third_party/boringssl",
    "//third_party/cobalt/third_party/clearcut:clearcut_proto",
  ]
}

executable("cobalt_core_unittests") {
  testonly = true

  output_name = "cobalt_core_tests"

  deps = [
    "config:tests",
    "encoder:unittests",
    "logger:tests",
    "//third_party/googletest:gtest_main",
  ]
}

test_package("cobalt_core_tests") {
  deps = [
    ":cobalt_core_unittests",
  ]

  tests = [
    {
      name = "cobalt_core_tests"
    },
  ]
}
