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

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

  deps = [
    "//garnet/public/lib/json",
    "//garnet/public/lib/pkg_url",
    "//garnet/public/lib/fxl",
    "//third_party/rapidjson",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/trace",
  ]
}

executable("tests") {
  testonly = true

  output_name = "cmx_facet_parser_unittest_bin"

  sources = [
    "cmx_facet_parser_unittest.cc",
  ]

  deps = [
    ":cmx_facet_parser",
    "//garnet/public/lib/json",
    "//garnet/public/lib/pkg_url",
    "//garnet/public/lib/fxl/test:gtest_main",
    "//garnet/public/lib/gtest",
    "//third_party/googletest:gmock",
    "//third_party/rapidjson",
  ]
}

package("cmx_facet_parser_unittests") {
  testonly = true

  deps = [
    ":tests",
  ]
  tests = [
    {
      name = "cmx_facet_parser_unittest_bin"
    },
  ]
}
