# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
{
  'targets': [
    {
      'target_name': 'rtc_unittests',
      'type': '<(gtest_target_type)',
      'dependencies': [
        'base/base.gyp:rtc_base',
        'base/base.gyp:rtc_task_queue',
        'base/base_tests.gyp:rtc_base_tests_utils',
        'p2p/p2p.gyp:rtc_p2p',
        'p2p/p2p.gyp:libstunprober',
        '<(DEPTH)/testing/gtest.gyp:gtest',
        '<(DEPTH)/testing/gmock.gyp:gmock',
      ],
      'sources': [
        'base/array_view_unittest.cc',
        'base/atomicops_unittest.cc',
        'base/autodetectproxy_unittest.cc',
        'base/bandwidthsmoother_unittest.cc',
        'base/base64_unittest.cc',
        'base/basictypes_unittest.cc',
        'base/bind_unittest.cc',
        'base/bitbuffer_unittest.cc',
        'base/buffer_unittest.cc',
        'base/bufferqueue_unittest.cc',
        'base/bytebuffer_unittest.cc',
        'base/byteorder_unittest.cc',
        'base/callback_unittest.cc',
        'base/copyonwritebuffer_unittest.cc',
        'base/crc32_unittest.cc',
        'base/criticalsection_unittest.cc',
        'base/event_tracer_unittest.cc',
        'base/event_unittest.cc',
        'base/exp_filter_unittest.cc',
        'base/filerotatingstream_unittest.cc',
        'base/fileutils_unittest.cc',
        'base/helpers_unittest.cc',
        'base/httpbase_unittest.cc',
        'base/httpcommon_unittest.cc',
        'base/httpserver_unittest.cc',
        'base/ipaddress_unittest.cc',
        'base/logging_unittest.cc',
        'base/md5digest_unittest.cc',
        'base/messagedigest_unittest.cc',
        'base/messagequeue_unittest.cc',
        'base/mod_ops_unittest.cc',
        'base/multipart_unittest.cc',
        'base/nat_unittest.cc',
        'base/network_unittest.cc',
        'base/onetimeevent_unittest.cc',
        'base/optional_unittest.cc',
        'base/optionsfile_unittest.cc',
        'base/pathutils_unittest.cc',
        'base/platform_thread_unittest.cc',
        'base/profiler_unittest.cc',
        'base/proxy_unittest.cc',
        'base/proxydetect_unittest.cc',
        'base/random_unittest.cc',
        'base/rate_limiter_unittest.cc',
        'base/rate_statistics_unittest.cc',
        'base/ratelimiter_unittest.cc',
        'base/ratetracker_unittest.cc',
        'base/referencecountedsingletonfactory_unittest.cc',
        'base/rollingaccumulator_unittest.cc',
        'base/rtccertificate_unittest.cc',
        'base/rtccertificategenerator_unittest.cc',
        'base/scopedptrcollection_unittest.cc',
        'base/sequenced_task_checker_unittest.cc',
        'base/sha1digest_unittest.cc',
        'base/sharedexclusivelock_unittest.cc',
        'base/signalthread_unittest.cc',
        'base/sigslot_unittest.cc',
        'base/sigslottester.h',
        'base/sigslottester.h.pump',
        'base/stream_unittest.cc',
        'base/stringencode_unittest.cc',
        'base/stringutils_unittest.cc',
        'base/swap_queue_unittest.cc',
        # TODO(ronghuawu): Reenable this test.
        # 'systeminfo_unittest.cc',
        'base/task_queue_unittest.cc',
        'base/task_unittest.cc',
        'base/testclient_unittest.cc',
        'base/thread_checker_unittest.cc',
        'base/thread_unittest.cc',
        'base/timestampaligner_unittest.cc',
        'base/timeutils_unittest.cc',
        'base/urlencode_unittest.cc',
        'base/versionparsing_unittest.cc',
        # TODO(ronghuawu): Reenable this test.
        # 'windowpicker_unittest.cc',
        'p2p/base/dtlstransportchannel_unittest.cc',
        'p2p/base/fakeportallocator.h',
        'p2p/base/faketransportcontroller.h',
        'p2p/base/p2ptransportchannel_unittest.cc',
        'p2p/base/port_unittest.cc',
        'p2p/base/portallocator_unittest.cc',
        'p2p/base/pseudotcp_unittest.cc',
        'p2p/base/relayport_unittest.cc',
        'p2p/base/relayserver_unittest.cc',
        'p2p/base/stun_unittest.cc',
        'p2p/base/stunport_unittest.cc',
        'p2p/base/stunrequest_unittest.cc',
        'p2p/base/stunserver_unittest.cc',
        'p2p/base/testrelayserver.h',
        'p2p/base/teststunserver.h',
        'p2p/base/testturnserver.h',
        'p2p/base/transport_unittest.cc',
        'p2p/base/transportcontroller_unittest.cc',
        'p2p/base/transportdescriptionfactory_unittest.cc',
        'p2p/base/tcpport_unittest.cc',
        'p2p/base/turnport_unittest.cc',
        'p2p/client/basicportallocator_unittest.cc',
        'p2p/stunprober/stunprober_unittest.cc',
      ],
      'conditions': [
       ['OS=="linux"', {
          'sources': [
            'base/latebindingsymboltable_unittest.cc',
            # TODO(ronghuawu): Reenable this test.
            # 'linux_unittest.cc',
            'base/linuxfdwalk_unittest.cc',
          ],
        }],
        ['OS=="win"', {
          'sources': [
            'base/win32_unittest.cc',
            'base/win32regkey_unittest.cc',
            'base/win32window_unittest.cc',
            'base/win32windowpicker_unittest.cc',
            'base/winfirewall_unittest.cc',
          ],
        }],
        ['OS=="win" and clang==1', {
          'msvs_settings': {
            'VCCLCompilerTool': {
              'AdditionalOptions': [
                # Disable warnings failing when compiling with Clang on Windows.
                # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
                '-Wno-missing-braces',
                '-Wno-sign-compare',
                '-Wno-unused-const-variable',
              ],
            },
          },
        }],
        ['OS=="mac"', {
          'sources': [
            'base/macutils_unittest.cc',
          ],
        }],
        ['os_posix==1', {
          'sources': [
            'base/ssladapter_unittest.cc',
            'base/sslidentity_unittest.cc',
            'base/sslstreamadapter_unittest.cc',
          ],
        }],
        ['OS=="ios" or (OS=="mac" and target_arch!="ia32")', {
          'defines': [
            'CARBON_DEPRECATED=YES',
          ],
        }],
        ['use_quic==1', {
          'sources': [
            'p2p/quic/quicconnectionhelper_unittest.cc',
            'p2p/quic/quicsession_unittest.cc',
            'p2p/quic/quictransport_unittest.cc',
            'p2p/quic/quictransportchannel_unittest.cc',
            'p2p/quic/reliablequicstream_unittest.cc',
          ],
        }],
        ['OS=="android"', {
          'dependencies': [
            '<(DEPTH)/testing/android/native_test.gyp:native_test_native_code',
          ],
        }],
        ['OS=="ios" or (OS=="mac" and mac_deployment_target=="10.7")', {
          'includes': [
            'build/objc_common.gypi',
          ],
          'dependencies': [
            'sdk/sdk.gyp:rtc_sdk_peerconnection_objc',
            'system_wrappers/system_wrappers.gyp:metrics_default',
          ],
          'sources': [
            'sdk/objc/Framework/UnitTests/RTCConfigurationTest.mm',
            'sdk/objc/Framework/UnitTests/RTCDataChannelConfigurationTest.mm',
            'sdk/objc/Framework/UnitTests/RTCIceCandidateTest.mm',
            'sdk/objc/Framework/UnitTests/RTCIceServerTest.mm',
            'sdk/objc/Framework/UnitTests/RTCMediaConstraintsTest.mm',
            'sdk/objc/Framework/UnitTests/RTCSessionDescriptionTest.mm',
          ],
          'xcode_settings': {
            # |-ObjC| flag needed to make sure category method implementations
            # are included:
            # https://developer.apple.com/library/mac/qa/qa1490/_index.html
            'OTHER_LDFLAGS': ['-ObjC'],
          },
        }],
      ],
    },
    {
      'target_name': 'xmllite_xmpp_unittests',
      'type': '<(gtest_target_type)',
      'dependencies': [
        'base/base_tests.gyp:rtc_base_tests_utils',  # needed for main()
        'libjingle/xmllite/xmllite.gyp:rtc_xmllite',
        'libjingle/xmpp/xmpp.gyp:rtc_xmpp',
        '<(DEPTH)/testing/gtest.gyp:gtest',
      ],
      'sources': [
        'libjingle/xmllite/qname_unittest.cc',
        'libjingle/xmllite/xmlbuilder_unittest.cc',
        'libjingle/xmllite/xmlelement_unittest.cc',
        'libjingle/xmllite/xmlnsstack_unittest.cc',
        'libjingle/xmllite/xmlparser_unittest.cc',
        'libjingle/xmllite/xmlprinter_unittest.cc',
        'libjingle/xmpp/fakexmppclient.h',
        'libjingle/xmpp/hangoutpubsubclient_unittest.cc',
        'libjingle/xmpp/jid_unittest.cc',
        'libjingle/xmpp/mucroomconfigtask_unittest.cc',
        'libjingle/xmpp/mucroomdiscoverytask_unittest.cc',
        'libjingle/xmpp/mucroomlookuptask_unittest.cc',
        'libjingle/xmpp/mucroomuniquehangoutidtask_unittest.cc',
        'libjingle/xmpp/pingtask_unittest.cc',
        'libjingle/xmpp/pubsubclient_unittest.cc',
        'libjingle/xmpp/pubsubtasks_unittest.cc',
        'libjingle/xmpp/util_unittest.cc',
        'libjingle/xmpp/util_unittest.h',
        'libjingle/xmpp/xmppengine_unittest.cc',
        'libjingle/xmpp/xmpplogintask_unittest.cc',
        'libjingle/xmpp/xmppstanzaparser_unittest.cc',
      ],
    },
    {
      'target_name': 'webrtc_tests',
      'type': 'none',
      'dependencies': [
        'video_engine_tests',
        'video_loopback',
        'video_replay',
        'webrtc_perf_tests',
        'webrtc_nonparallel_tests',
      ],
    },
    {
      'target_name': 'video_quality_test',
      'type': 'static_library',
      'sources': [
        'video/video_quality_test.cc',
        'video/video_quality_test.h',
      ],
      'dependencies': [
        '<(DEPTH)/testing/gtest.gyp:gtest',
        '<(webrtc_root)/modules/modules.gyp:video_capture_module_internal_impl',
        '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
        'webrtc',
      ],
      'conditions': [
        ['OS=="android"', {
          'dependencies!': [
            '<(webrtc_root)/modules/modules.gyp:video_capture_module_internal_impl',
          ],
        }],
      ],
    },
    {
      'target_name': 'video_loopback',
      'type': 'executable',
      'sources': [
        'test/mac/run_test.mm',
        'test/run_test.cc',
        'test/run_test.h',
        'video/video_loopback.cc',
      ],
      'conditions': [
        ['OS=="mac"', {
          'sources!': [
            'test/run_test.cc',
          ],
        }],
      ],
      'dependencies': [
        'video_quality_test',
        '<(DEPTH)/testing/gtest.gyp:gtest',
        '<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
        'test/test.gyp:test_common',
        'test/test.gyp:test_main',
        'test/test.gyp:test_renderer',
        'webrtc',
      ],
    },
    {
      'target_name': 'screenshare_loopback',
      'type': 'executable',
      'sources': [
        'test/mac/run_test.mm',
        'test/run_test.cc',
        'test/run_test.h',
        'video/screenshare_loopback.cc',
      ],
      'conditions': [
        ['OS=="mac"', {
          'sources!': [
            'test/run_test.cc',
          ],
        }],
      ],
      'dependencies': [
        'video_quality_test',
        '<(DEPTH)/testing/gtest.gyp:gtest',
        '<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
        'test/test.gyp:test_common',
        'test/test.gyp:test_main',
        'test/test.gyp:test_renderer',
        'webrtc',
      ],
    },
    {
      'target_name': 'video_replay',
      'type': 'executable',
      'sources': [
        'test/mac/run_test.mm',
        'test/run_test.cc',
        'test/run_test.h',
        'video/replay.cc',
      ],
      'conditions': [
        ['OS=="mac"', {
          'sources!': [
            'test/run_test.cc',
          ],
        }],
      ],
      'dependencies': [
        '<(DEPTH)/testing/gtest.gyp:gtest',
        '<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
        'test/test.gyp:test_common',
        'test/test.gyp:test_renderer',
        '<(webrtc_root)/modules/modules.gyp:video_capture',
        '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default',
        'webrtc',
      ],
    },
    {
      # TODO(solenberg): Rename to webrtc_call_tests.
      'target_name': 'video_engine_tests',
      'type': '<(gtest_target_type)',
      'sources': [
        'audio/audio_receive_stream_unittest.cc',
        'audio/audio_send_stream_unittest.cc',
        'audio/audio_state_unittest.cc',
        'call/bitrate_allocator_unittest.cc',
        'call/bitrate_estimator_tests.cc',
        'call/call_unittest.cc',
        'call/packet_injection_tests.cc',
        'call/ringbuffer_unittest.cc',
        'test/common_unittest.cc',
        'test/testsupport/metrics/video_metrics_unittest.cc',
        'video/call_stats_unittest.cc',
        'video/encoder_state_feedback_unittest.cc',
        'video/end_to_end_tests.cc',
        'video/overuse_frame_detector_unittest.cc',
        'video/payload_router_unittest.cc',
        'video/report_block_stats_unittest.cc',
        'video/send_delay_stats_unittest.cc',
        'video/send_statistics_proxy_unittest.cc',
        'video/stats_counter_unittest.cc',
        'video/stream_synchronization_unittest.cc',
        'video/video_capture_input_unittest.cc',
        'video/video_decoder_unittest.cc',
        'video/video_encoder_unittest.cc',
        'video/video_send_stream_tests.cc',
        'video/vie_remb_unittest.cc',
      ],
      'dependencies': [
        '<(DEPTH)/testing/gmock.gyp:gmock',
        '<(DEPTH)/testing/gtest.gyp:gtest',
        '<(webrtc_root)/common.gyp:webrtc_common',
        '<(webrtc_root)/modules/modules.gyp:rtp_rtcp',
        '<(webrtc_root)/modules/modules.gyp:video_capture',
        '<(webrtc_root)/test/test.gyp:channel_transport',
        '<(webrtc_root)/voice_engine/voice_engine.gyp:voice_engine',
        'test/metrics.gyp:metrics',
        'test/test.gyp:test_common',
        'test/test.gyp:test_main',
        'webrtc',
      ],
      'conditions': [
        ['rtc_use_h264==1', {
          'defines': [
            'WEBRTC_END_TO_END_H264_TESTS',
          ],
        }],
        ['OS=="android"', {
          'dependencies': [
            '<(DEPTH)/testing/android/native_test.gyp:native_test_native_code',
          ],
        }],
        ['OS=="ios"', {
          'mac_bundle_resources': [
            '<(DEPTH)/resources/foreman_cif_short.yuv',
            '<(DEPTH)/resources/voice_engine/audio_long16.pcm',
          ],
        }],
        ['enable_protobuf==1', {
          'defines': [
            'ENABLE_RTC_EVENT_LOG',
          ],
          'dependencies': [
            'webrtc.gyp:rtc_event_log',
            'webrtc.gyp:rtc_event_log_parser',
            'webrtc.gyp:rtc_event_log_proto',
          ],
          'sources': [
            'call/rtc_event_log_unittest.cc',
            'call/rtc_event_log_unittest_helper.cc'
          ],
        }],
      ],
    },
    {
      'target_name': 'webrtc_perf_tests',
      'type': '<(gtest_target_type)',
      'sources': [
        'call/call_perf_tests.cc',
        'call/rampup_tests.cc',
        'call/rampup_tests.h',
        'modules/audio_coding/neteq/test/neteq_performance_unittest.cc',
        'modules/audio_processing/audio_processing_performance_unittest.cc',
        'modules/audio_processing/level_controller/level_controller_complexity_unittest.cc',
        'modules/remote_bitrate_estimator/remote_bitrate_estimators_test.cc',
        'video/full_stack.cc',
      ],
      'dependencies': [
        '<(DEPTH)/testing/gmock.gyp:gmock',
        '<(DEPTH)/testing/gtest.gyp:gtest',
        '<(webrtc_root)/modules/modules.gyp:audio_processing',
        '<(webrtc_root)/modules/modules.gyp:audioproc_test_utils',
        '<(webrtc_root)/modules/modules.gyp:video_capture',
        '<(webrtc_root)/test/test.gyp:channel_transport',
        '<(webrtc_root)/voice_engine/voice_engine.gyp:voice_engine',
        'video_quality_test',
        'modules/modules.gyp:neteq_test_support',
        'modules/modules.gyp:bwe_simulator',
        'modules/modules.gyp:rtp_rtcp',
        'test/test.gyp:test_common',
        'test/test.gyp:test_main',
        'test/test.gyp:test_renderer',
        'webrtc',
      ],
      'conditions': [
        ['OS=="android"', {
          'dependencies': [
            '<(DEPTH)/testing/android/native_test.gyp:native_test_native_code',
          ],
        }],
      ],
    },
    {
      'target_name': 'webrtc_nonparallel_tests',
      'type': '<(gtest_target_type)',
      'sources': [
        'base/nullsocketserver_unittest.cc',
        'base/physicalsocketserver_unittest.cc',
        'base/socket_unittest.cc',
        'base/socket_unittest.h',
        'base/socketaddress_unittest.cc',
        'base/virtualsocket_unittest.cc',
      ],
      'defines': [
        'GTEST_RELATIVE_PATH',
      ],
      'dependencies': [
        '<(DEPTH)/testing/gtest.gyp:gtest',
        'base/base.gyp:rtc_base',
        'test/test.gyp:test_main',
      ],
      'conditions': [
        ['OS=="android"', {
          'dependencies': [
            '<(DEPTH)/testing/android/native_test.gyp:native_test_native_code',
          ],
        }],
        ['OS=="win"', {
          'sources': [
            'base/win32socketserver_unittest.cc',
          ],
          'sources!': [
            # TODO(ronghuawu): Fix TestUdpReadyToSendIPv6 on windows bot
            # then reenable these tests.
            # TODO(pbos): Move test disabling to ifdefs within the test files
            # instead of here.
            'base/physicalsocketserver_unittest.cc',
            'base/socket_unittest.cc',
            'base/win32socketserver_unittest.cc',
          ],
        }],
        ['OS=="mac"', {
          'sources': [
            'base/macsocketserver_unittest.cc',
          ],
        }],
        ['OS=="ios" or (OS=="mac" and target_arch!="ia32")', {
          'defines': [
            'CARBON_DEPRECATED=YES',
          ],
        }],
      ],
    },
  ],
  'conditions': [
    ['OS=="android"', {
      'targets': [
        {
          'target_name': 'rtc_unittests_apk_target',
          'type': 'none',
          'dependencies': [
            '<(android_tests_path):rtc_unittests_apk',
          ],
        },
        {
          'target_name': 'video_engine_tests_apk_target',
          'type': 'none',
          'dependencies': [
            '<(android_tests_path):video_engine_tests_apk',
          ],
        },
        {
          'target_name': 'webrtc_perf_tests_apk_target',
          'type': 'none',
          'dependencies': [
            '<(android_tests_path):webrtc_perf_tests_apk',
          ],
        },
        {
          'target_name': 'webrtc_nonparallel_tests_apk_target',
          'type': 'none',
          'dependencies': [
            '<(android_tests_path):webrtc_nonparallel_tests_apk',
          ],
        },
        {
          'target_name': 'android_junit_tests_target',
          'type': 'none',
          'dependencies': [
            '<(android_tests_path):android_junit_tests',
          ],
        },
      ],
      'conditions': [
        ['test_isolation_mode != "noop"',
          {
            'targets': [
              {
                'target_name': 'rtc_unittests_apk_run',
                'type': 'none',
                'dependencies': [
                  '<(android_tests_path):rtc_unittests_apk',
                ],
                'includes': [
                  'build/isolate.gypi',
                ],
                'sources': [
                  'rtc_unittests_apk.isolate',
                ],
              },
              {
                'target_name': 'video_engine_tests_apk_run',
                'type': 'none',
                'dependencies': [
                  '<(android_tests_path):video_engine_tests_apk',
                ],
                'includes': [
                  'build/isolate.gypi',
                ],
                'sources': [
                  'video_engine_tests_apk.isolate',
                ],
              },
              {
                'target_name': 'webrtc_perf_tests_apk_run',
                'type': 'none',
                'dependencies': [
                  '<(android_tests_path):webrtc_perf_tests_apk',
                ],
                'includes': [
                  'build/isolate.gypi',
                ],
                'sources': [
                  'webrtc_perf_tests_apk.isolate',
                ],
              },
              {
                'target_name': 'webrtc_nonparallel_tests_apk_run',
                'type': 'none',
                'dependencies': [
                  '<(android_tests_path):webrtc_nonparallel_tests_apk',
                ],
                'includes': [
                  'build/isolate.gypi',
                ],
                'sources': [
                  'webrtc_nonparallel_tests_apk.isolate',
                ],
              },
            ],
          },
        ],
      ],
    }],
    ['test_isolation_mode != "noop"', {
      'targets': [
        {
          'target_name': 'rtc_unittests_run',
          'type': 'none',
          'dependencies': [
            'rtc_unittests',
          ],
          'includes': [
            'build/isolate.gypi',
          ],
          'sources': [
            'rtc_unittests.isolate',
          ],
        },
        {
          'target_name': 'video_engine_tests_run',
          'type': 'none',
          'dependencies': [
            'video_engine_tests',
          ],
          'includes': [
            'build/isolate.gypi',
          ],
          'sources': [
            'video_engine_tests.isolate',
          ],
        },
        {
          'target_name': 'webrtc_nonparallel_tests_run',
          'type': 'none',
          'dependencies': [
            'webrtc_nonparallel_tests',
          ],
          'includes': [
            'build/isolate.gypi',
          ],
          'sources': [
            'webrtc_nonparallel_tests.isolate',
          ],
        },
        {
          'target_name': 'webrtc_perf_tests_run',
          'type': 'none',
          'dependencies': [
            'webrtc_perf_tests',
          ],
          'includes': [
            'build/isolate.gypi',
          ],
          'sources': [
            'webrtc_perf_tests.isolate',
          ],
        },
      ],
    }],
  ],
}
