# Copyright 2013 The Flutter 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("//flutter/testing/dart/compile_test.gni")

tests = [
  "assets_test.dart",
  "canvas_test.dart",
  "channel_buffers_test.dart",
  "codec_test.dart",
  "color_filter_test.dart",
  "color_test.dart",
  "compositing_test.dart",
  "dart_test.dart",
  "encoding_test.dart",
  "fragment_shader_test.dart",
  "geometry_test.dart",
  "gesture_settings_test.dart",
  "gradient_test.dart",
  "http_allow_http_connections_test.dart",
  "http_disallow_http_connections_test.dart",
  "image_descriptor_test.dart",
  "image_dispose_test.dart",
  "image_events_test.dart",
  "image_filter_test.dart",
  "image_resize_test.dart",
  "image_shader_test.dart",
  "image_test.dart",
  "isolate_name_server_test.dart",
  "isolate_test.dart",
  "lerp_test.dart",
  "locale_test.dart",
  "mask_filter_test.dart",
  "paragraph_builder_test.dart",
  "paragraph_test.dart",
  "path_test.dart",
  "picture_test.dart",
  "platform_view_test.dart",
  "plugin_utilities_test.dart",
  "semantics_test.dart",
  "serial_gc_test.dart",
  "task_order_test.dart",
  "text_test.dart",
  "window_test.dart",
]

foreach(test, tests) {
  compile_flutter_dart_test("compile_$test") {
    dart_file = test
    dart_kernel = "$root_gen_dir/$test.dill"
    packages = ".dart_tool/package_config.json"
  }
}

group("dart") {
  testonly = true
  deps = [ "//flutter/testing/dart/observatory" ]
  foreach(test, tests) {
    deps += [ ":compile_$test" ]
  }
}
