# 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/components.gni")
import("//build/testing/environments.gni")

group("tests") {
  testonly = true

  deps = [ ":cmx_facet_parser_tests" ]
}

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

  deps = [
    "//sdk/lib/fit",
    "//src/lib/fxl",
    "//src/lib/json_parser",
    "//src/lib/pkg_url",
    "//third_party/rapidjson",
    "//zircon/system/ulib/trace",
  ]
}

executable("cmx_facet_parser_unittest") {
  testonly = true

  sources = [ "cmx_facet_parser_unittest.cc" ]

  deps = [
    ":cmx_facet_parser",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/json_parser",
    "//src/lib/pkg_url",
    "//src/lib/testing/loop_fixture",
    "//third_party/googletest:gmock",
    "//third_party/rapidjson",
  ]
}

fuchsia_unittest_package("cmx_facet_parser_tests") {
  deps = [
    ":cmx_facet_parser_unittest",
    "//src/sys/test_runners:tmp_storage",
  ]
  test_specs = {
    environments = [ emu_env ]
  }
}
