# 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("deprecated_loop") {
  sources = [
    "incoming_task_queue.cc",
    "incoming_task_queue.h",
    "message_loop.cc",
    "message_loop.h",
    "thread.cc",
    "thread.h",
  ]
  public_deps = [
    "//garnet/public/lib/fxl",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-testutils",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/zx",
  ]
}

executable("deprecated_loop_unittests") {
  testonly = true
  sources = [
    "message_loop_unittest.cc",
    "thread_unittest.cc",
  ]

  deps = [
    ":deprecated_loop",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl/test:gtest_main",
    "//third_party/googletest:gtest",
  ]
}

package("deprecated_loop_tests") {
  testonly = true
  deps = [
    ":deprecated_loop_unittests",
  ]

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