# Copyright 2019 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("views") {
  testonly = true

  sources = [
    "background_view.cc",
    "background_view.h",
    "color.cc",
    "color.h",
    "coordinate_test_view.cc",
    "coordinate_test_view.h",
    "embedder_view.cc",
    "embedder_view.h",
    "opacity_view.cc",
    "opacity_view.h",
    "rotated_square_view.cc",
    "rotated_square_view.h",
    "test_view.h",
  ]

  public_deps = [
    "//garnet/public/lib/ui/base_view/cpp",
    "//garnet/public/lib/ui/scenic/cpp",
    "//sdk/fidl/fuchsia.ui.scenic",
  ]

  deps = [
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/ui/gfx/cpp",
    "//src/lib/fxl",
  ]
}

executable("test_views_app") {
  testonly = true

  sources = [
    "app.cc",
  ]

  deps = [
    ":views",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/ui/scenic/cpp",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop",
  ]
}

package("test_views") {
  testonly = true

  binaries = [
    {
      name = "test_views_app"
      dest = "app"
    },
  ]

  meta = [
    {
      path = rebase_path("meta/background_view.cmx")
      dest = "background_view.cmx"
    },
    {
      path = rebase_path("meta/coordinate_test_view.cmx")
      dest = "coordinate_test_view.cmx"
    },
    {
      path = rebase_path("meta/rotated_square_view.cmx")
      dest = "rotated_square_view.cmx"
    },
  ]

  deps = [
    ":test_views_app",
  ]
}
