# Copyright 2020 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/dart/test.gni")

dart_test("encode_camera_test") {
  sources = [ "encode_camera_test.dart" ]
  deps = [
    "//sdk/testing/sl4f/client",
    "//third_party/dart-pkg/pub/test",
  ]

  non_dart_deps = [
    ":runtime_deps($host_toolchain)",
    "//src/media/codec/examples:encode-camera",
  ]
  environments = [ sherlock_env ]
}

if (is_host) {
  host_test_data("runtime_deps") {
    _data_dir = "$target_gen_dir/runtime_deps"
    sources = [
      "$root_out_dir/catapult_converter",
      "$root_out_dir/trace2json",
    ]
    outputs = [ "$_data_dir/{{source_file_part}}" ]
    deps = [
      "//garnet/bin/catapult_converter:converter_bin",
      "//garnet/bin/trace2json:bin",
    ]
  }
}

group("test") {
  testonly = true
  deps = [ ":encode_camera_test($host_toolchain)" ]
}
