# Copyright 2017 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# TODO: change to //starboard eventually.
import("//cobalt/build/config/base.gni")
import("//starboard/build/deploy.gni")

group("all") {
  testonly = true
  deps = [
    ":nplb",
    ":deploy",
  ]
}

test("nplb") {
  testonly = true
  sources = [
    "//starboard/common/test_main.cc",
    "accessibility_get_setting_test.cc",
    "align_test.cc",
    "atomic_test.cc",
    "audio_sink_create_test.cc",
    "audio_sink_destroy_test.cc",
    "audio_sink_get_max_channels_test.cc",
    "audio_sink_get_nearest_supported_sample_frequency_test.cc",
    "audio_sink_helpers.cc",
    "audio_sink_helpers.h",
    "audio_sink_is_audio_frame_storage_type_supported_test.cc",
    "audio_sink_is_audio_sample_type_supported_test.cc",
    "audio_sink_test.cc",
    "blitter_blit_rect_to_rect_test.cc",
    "blitter_blit_rect_to_rect_tiled_test.cc",
    "blitter_blit_rects_to_rects_test.cc",
    "blitter_create_context_test.cc",
    "blitter_create_default_device_test.cc",
    "blitter_create_pixel_data_test.cc",
    "blitter_create_render_target_surface_test.cc",
    "blitter_create_surface_from_pixel_data_test.cc",
    "blitter_create_swap_chain_from_window_test.cc",
    "blitter_destroy_context_test.cc",
    "blitter_destroy_device_test.cc",
    "blitter_destroy_pixel_data_test.cc",
    "blitter_destroy_surface_test.cc",
    "blitter_destroy_swap_chain_test.cc",
    "blitter_download_surface_pixels_test.cc",
    "blitter_fill_rect_test.cc",
    "blitter_flip_swap_chain_test.cc",
    "blitter_flush_context_test.cc",
    "blitter_get_max_contexts_test.cc",
    "blitter_get_pixel_data_pitch_in_bytes_test.cc",
    "blitter_get_pixel_data_pointer_test.cc",
    "blitter_get_render_target_from_surface_test.cc",
    "blitter_get_render_target_from_swap_chain_test.cc",
    "blitter_get_surface_info_test.cc",
    "blitter_helpers.cc",
    "blitter_is_pixel_format_supported_by_download_surface_pixels_test.cc",
    "blitter_is_pixel_format_supported_by_pixel_data_test.cc",
    "blitter_is_pixel_format_supported_by_render_target_surface_test.cc",
    "blitter_set_blending_test.cc",
    "blitter_set_modulate_blits_with_color_test.cc",
    "blitter_set_render_target_test.cc",
    "blitter_set_scissor_test.cc",
    "byte_swap_test.cc",
    "char_is_signed_test.cc",
    "character_is_alphanumeric_test.cc",
    "character_is_digit_test.cc",
    "character_is_hex_digit_test.cc",
    "character_is_space_test.cc",
    "character_is_upper_test.cc",
    "character_to_lower_test.cc",
    "character_to_upper_test.cc",
    "condition_variable_broadcast_test.cc",
    "condition_variable_create_test.cc",
    "condition_variable_destroy_test.cc",
    "condition_variable_signal_test.cc",
    "condition_variable_wait_test.cc",
    "condition_variable_wait_timed_test.cc",
    "configuration_test.cc",
    "cryptography_create_transformer_test.cc",
    "cryptography_helpers.cc",
    "cryptography_helpers.h",
    "cryptography_transform_gcm_test.cc",
    "cryptography_transform_test.cc",
    "decode_target_create_test.cc",
    "decode_target_provider_test.cc",
    "directory_can_open_test.cc",
    "directory_close_test.cc",
    "directory_create_test.cc",
    "directory_get_next_test.cc",
    "directory_open_test.cc",
    "double_absolute_test.cc",
    "double_exponent_test.cc",
    "double_floor_test.cc",
    "double_is_finite_test.cc",
    "double_is_nan_test.cc",
    "file_can_open_test.cc",
    "file_close_test.cc",
    "file_get_info_test.cc",
    "file_get_path_info_test.cc",
    "file_helpers.cc",
    "file_mode_string_to_flags_test.cc",
    "file_open_test.cc",
    "file_read_test.cc",
    "file_seek_test.cc",
    "file_truncate_test.cc",
    "file_write_test.cc",
    "flat_map_test.cc",
    "include_all.c",
    "include_all_too.c",
    "log_flush_test.cc",
    "log_format_test.cc",
    "log_is_tty_test.cc",
    "log_raw_dump_stack_test.cc",
    "log_raw_test.cc",
    "log_test.cc",
    "memory_align_to_page_size_test.cc",
    "memory_allocate_aligned_test.cc",
    "memory_allocate_test.cc",
    "memory_compare_test.cc",
    "memory_copy_test.cc",
    "memory_deallocate_aligned_test.cc",
    "memory_deallocate_test.cc",
    "memory_find_byte_test.cc",
    "memory_get_stack_bounds_test.cc",
    "memory_is_zero_test.cc",
    "memory_map_test.cc",
    "memory_move_test.cc",
    "memory_reallocate_test.cc",
    "memory_reporter_test.cc",
    "memory_set_test.cc",
    "microphone_close_test.cc",
    "microphone_create_test.cc",
    "microphone_destroy_test.cc",
    "microphone_get_available_test.cc",
    "microphone_is_sample_rate_supported_test.cc",
    "microphone_open_test.cc",
    "microphone_read_test.cc",
    "mutex_acquire_test.cc",
    "mutex_acquire_try_test.cc",
    "mutex_create_test.cc",
    "mutex_destroy_test.cc",
    "once_test.cc",
    "optional_test.cc",
    "random_helpers.cc",
    "rwlock_test.cc",
    "semaphore_test.cc",
    "socket_accept_test.cc",
    "socket_bind_test.cc",
    "socket_clear_last_error_test.cc",
    "socket_connect_test.cc",
    "socket_create_test.cc",
    "socket_destroy_test.cc",
    "socket_get_interface_address_test.cc",
    "socket_get_last_error_test.cc",
    "socket_get_local_address_test.cc",
    "socket_helpers.cc",
    "socket_is_connected_and_idle_test.cc",
    "socket_is_connected_test.cc",
    "socket_join_multicast_group_test.cc",
    "socket_listen_test.cc",
    "socket_receive_from_test.cc",
    "socket_resolve_test.cc",
    "socket_send_to_test.cc",
    "socket_set_options_test.cc",
    "socket_waiter_add_test.cc",
    "socket_waiter_create_test.cc",
    "socket_waiter_destroy_test.cc",
    "socket_waiter_remove_test.cc",
    "socket_waiter_wait_test.cc",
    "socket_waiter_wait_timed_test.cc",
    "socket_waiter_wake_up_test.cc",
    "socket_wrapper_test.cc",
    "speech_recognizer_cancel_test.cc",
    "speech_recognizer_create_test.cc",
    "speech_recognizer_destroy_test.cc",
    "speech_recognizer_helper.h",
    "speech_recognizer_start_test.cc",
    "speech_recognizer_stop_test.cc",
    "speech_synthesis_basic_test.cc",
    "storage_close_record_test.cc",
    "storage_delete_record_test.cc",
    "storage_get_record_size_test.cc",
    "storage_open_record_test.cc",
    "storage_read_record_test.cc",
    "storage_write_record_test.cc",
    "state_machine_test.cc",
    "string_compare_all_test.cc",
    "string_compare_no_case_n_test.cc",
    "string_compare_no_case_test.cc",
    "string_compare_test.cc",
    "string_compare_wide_test.cc",
    "string_concat_test.cc",
    "string_concat_wide_test.cc",
    "string_copy_test.cc",
    "string_copy_wide_test.cc",
    "string_duplicate_test.cc",
    "string_find_character_test.cc",
    "string_find_last_character_test.cc",
    "string_find_string_test.cc",
    "string_format_test.cc",
    "string_format_wide_test.cc",
    "string_parse_double_test.cc",
    "string_parse_signed_integer_test.cc",
    "string_parse_uint64_test.cc",
    "string_parse_unsigned_integer_test.cc",
    "string_scan_test.cc",
    "system_binary_search_test.cc",
    "system_clear_last_error_test.cc",
    "system_get_error_string_test.cc",
    "system_get_last_error_test.cc",
    "system_get_locale_id_test.cc",
    "system_get_number_of_processors_test.cc",
    "system_get_path_test.cc",
    "system_get_property_test.cc",
    "system_get_random_data_test.cc",
    "system_get_random_uint64_test.cc",
    "system_get_stack_test.cc",
    "system_get_total_cpu_memory_test.cc",
    "system_get_total_gpu_memory_test.cc",
    "system_get_used_cpu_memory_test.cc",
    "system_get_used_gpu_memory_test.cc",
    "system_has_capability_test.cc",
    "system_hide_splash_screen_test.cc",
    "system_is_debugger_attached_test.cc",
    "system_sort_test.cc",
    "system_symbolize_test.cc",
    "thread_create_test.cc",
    "thread_detach_test.cc",
    "thread_get_current_test.cc",
    "thread_get_id_test.cc",
    "thread_get_name_test.cc",
    "thread_helpers.cc",
    "thread_is_equal_test.cc",
    "thread_join_test.cc",
    "thread_local_value_test.cc",
    "thread_set_name_test.cc",
    "thread_sleep_test.cc",
    "thread_yield_test.cc",
    "time_get_monotonic_now_test.cc",
    "time_get_now_test.cc",
    "time_narrow_test.cc",
    "time_zone_get_current_test.cc",
    "time_zone_get_dst_name_test.cc",
    "time_zone_get_name_test.cc",
    "user_get_current_test.cc",
    "user_get_property_test.cc",
    "user_get_signed_in_test.cc",
    "window_create_test.cc",
    "window_destroy_test.cc",
    "window_get_platform_handle_test.cc",
    "window_get_size_test.cc",
  ]

  # TODO: find a way to remove this dependence on Cobalt.
  if (sb_media_platform == "starboard") {
    sources += [
      "//starboard/testing/fake_graphics_context_provider.cc",
      "//starboard/testing/fake_graphics_context_provider.h",
      "player_create_test.cc",
      "player_create_with_url_test.cc",
      "player_output_mode_supported_test.cc",
    ]
  }

  # Include private C headers, if present.
  private_sources = exec_script("//starboard/tools/find_private_files.py",
                                [
                                  rebase_path("//", root_build_dir),
                                  "nplb/include_all_private.c",
                                ],
                                "list lines",
                                [ "." ])
  # Include private tests, if present.
  private_sources += exec_script("//starboard/tools/find_private_files.py",
                                 [
                                   rebase_path("//", root_build_dir),
                                   "nplb/*_test.cc",
                                 ],
                                 "list lines",
                                 [ "." ])
  sources += rebase_path(private_sources, ".", root_build_dir)

  deps = [
    "//starboard",
    "//testing/gmock",
    "//testing/gtest",
  ]
}

deploy("deploy") {
  testonly = true
  executable_name = "nplb"

  deps = [
    ":nplb",
  ]
}
