# Copyright 2022 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.

group("util") {
  testonly = true
  public_deps = [
    ":portable_ui_test",
    ":screenshot_helper",
    ":test_view",
  ]
}

source_set("test_view") {
  testonly = true
  sources = [
    "test_view.cc",
    "test_view.h",
  ]
  deps = [
    "//sdk/fidl/fuchsia.ui.app:fuchsia.ui.app_hlcpp",
    "//sdk/fidl/fuchsia.ui.views:fuchsia.ui.views_hlcpp",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/sys/component/cpp/testing:cpp",
    "//sdk/lib/syslog/cpp",
    "//sdk/lib/ui/scenic/cpp",
    "//src/lib/fsl",
  ]
}

source_set("portable_ui_test") {
  testonly = true
  sources = [
    "portable_ui_test.cc",
    "portable_ui_test.h",
  ]

  public_deps = [
    ":screenshot_helper",
    "//sdk/fidl/fuchsia.logger:fuchsia.logger_hlcpp",
    "//sdk/fidl/fuchsia.scheduler:fuchsia.scheduler_hlcpp",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_hlcpp",
    "//sdk/fidl/fuchsia.tracing.provider:fuchsia.tracing.provider_hlcpp",
    "//sdk/fidl/fuchsia.ui.app:fuchsia.ui.app_hlcpp",
    "//sdk/fidl/fuchsia.ui.composition:fuchsia.ui.composition_hlcpp",
    "//sdk/fidl/fuchsia.ui.display.singleton:fuchsia.ui.display.singleton_hlcpp",
    "//sdk/fidl/fuchsia.ui.test.input:fuchsia.ui.test.input_hlcpp",
    "//sdk/fidl/fuchsia.ui.test.scene:fuchsia.ui.test.scene_hlcpp",
    "//sdk/fidl/fuchsia.vulkan.loader:fuchsia.vulkan.loader_hlcpp",
    "//sdk/lib/sys/component/cpp/testing:cpp",
    "//src/lib/testing/loop_fixture",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/zx",
  ]
}

source_set("screenshot_helper") {
  testonly = true
  sources = [
    "screenshot_helper.cc",
    "screenshot_helper.h",
  ]

  deps = [ "//src/ui/scenic/lib/utils" ]

  public_deps = [
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_hlcpp",
    "//sdk/lib/syslog/cpp",
    "//third_party/libpng",
    "//zircon/system/ulib/zx",
  ]
}
