# 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.
{
  'conditions': [
    ['OS=="android"', {
      'variables': {
        'files': [
          '<(DEPTH)/data/',
          '<(DEPTH)/resources/',
        ],
      },
    }],
    ['OS=="linux" or OS=="mac" or OS=="win"', {
      'variables': {
        'command': [
          '<(DEPTH)/testing/test_env.py',
          '<(PRODUCT_DIR)/modules_unittests<(EXECUTABLE_SUFFIX)',
        ],
        'files': [
          '<(DEPTH)/DEPS',
          '<(DEPTH)/data/audio_processing/output_data_float.pb',
          '<(DEPTH)/data/voice_engine/audio_tiny48.wav',
          '<(DEPTH)/resources/att-downlink.rx',
          '<(DEPTH)/resources/att-uplink.rx',
          '<(DEPTH)/resources/audio_coding/neteq4_network_stats.dat',
          '<(DEPTH)/resources/audio_coding/neteq4_rtcp_stats.dat',
          '<(DEPTH)/resources/audio_coding/neteq4_universal_ref.pcm',
          '<(DEPTH)/resources/audio_coding/neteq4_universal_ref_win_32.pcm',
          '<(DEPTH)/resources/audio_coding/neteq4_universal_ref_win_64.pcm',
          '<(DEPTH)/resources/audio_coding/neteq_network_stats.dat',
          '<(DEPTH)/resources/audio_coding/neteq_rtcp_stats.dat',
          '<(DEPTH)/resources/audio_coding/neteq_universal_new.rtp',
          '<(DEPTH)/resources/audio_coding/neteq_universal_ref.pcm',
          '<(DEPTH)/resources/audio_coding/testfile32kHz.pcm',
          '<(DEPTH)/resources/deflicker_before_cif_short.yuv',
          '<(DEPTH)/resources/far16_stereo.pcm',
          '<(DEPTH)/resources/far32_stereo.pcm',
          '<(DEPTH)/resources/far44_stereo.pcm',
          '<(DEPTH)/resources/far48_stereo.pcm',
          '<(DEPTH)/resources/far8_stereo.pcm',
          '<(DEPTH)/resources/foremanColorEnhanced_cif_short.yuv',
          '<(DEPTH)/resources/foreman_cif.yuv',
          '<(DEPTH)/resources/foreman_cif_short.yuv',
          '<(DEPTH)/resources/near16_stereo.pcm',
          '<(DEPTH)/resources/near32_stereo.pcm',
          '<(DEPTH)/resources/near44_stereo.pcm',
          '<(DEPTH)/resources/near48_stereo.pcm',
          '<(DEPTH)/resources/near8_stereo.pcm',
          '<(DEPTH)/resources/ref03.aecdump',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingChoke1_0_AST.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingChoke1_0_TOF.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingChoke1_1_AST.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingChoke1_1_TOF.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingChoke2_0_AST.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingChoke2_0_TOF.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingChoke2_1_AST.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingChoke2_1_TOF.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingDelay1_0_AST.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingDelay1_0_TOF.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingLoss1_0_AST.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingLoss1_0_TOF.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_Multi1_1_AST.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_Multi1_1_TOF.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_SteadyChoke_0_AST.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_SteadyChoke_0_TOF.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_SteadyChoke_1_AST.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_SteadyChoke_1_TOF.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_SteadyDelay_0_AST.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_SteadyDelay_0_TOF.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_SteadyLoss_0_AST.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_SteadyLoss_0_TOF.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_UnlimitedSpeed_0_AST.bin',
          '<(DEPTH)/resources/remote_bitrate_estimator/VideoSendersTest_BweTest_UnlimitedSpeed_0_TOF.bin',
          '<(DEPTH)/resources/short_mixed_mono_48.dat',
          '<(DEPTH)/resources/short_mixed_mono_48.pcm',
          '<(DEPTH)/resources/short_mixed_stereo_48.dat',
          '<(DEPTH)/resources/short_mixed_stereo_48.pcm',
          '<(DEPTH)/resources/sprint-downlink.rx',
          '<(DEPTH)/resources/sprint-uplink.rx',
          '<(DEPTH)/resources/synthetic-trace.rx',
          '<(DEPTH)/resources/tmobile-downlink.rx',
          '<(DEPTH)/resources/tmobile-uplink.rx',
          '<(DEPTH)/resources/utility/encapsulated_pcm16b_8khz.wav',
          '<(DEPTH)/resources/utility/encapsulated_pcmu_8khz.wav',
          '<(DEPTH)/resources/verizon3g-downlink.rx',
          '<(DEPTH)/resources/verizon3g-uplink.rx',
          '<(DEPTH)/resources/verizon4g-downlink.rx',
          '<(DEPTH)/resources/verizon4g-uplink.rx',
          '<(DEPTH)/resources/video_coding/frame-ethernet-ii.pcap',
          '<(DEPTH)/resources/video_coding/frame-loopback.pcap',
          '<(DEPTH)/resources/video_coding/pltype103.rtp',
          '<(DEPTH)/resources/video_coding/ssrcs-2.pcap',
          '<(DEPTH)/resources/video_coding/ssrcs-3.pcap',
          '<(DEPTH)/testing/test_env.py',
          '<(PRODUCT_DIR)/modules_unittests<(EXECUTABLE_SUFFIX)',
        ],
      },
    }],
  ],
}
