1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Use of this source code is governed by a BSD-style license
5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  that can be found in the LICENSE file in the root of the source
6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  tree. An additional intellectual property rights grant can be found
7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  in the file PATENTS.  All contributing project authors may
8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef SRC_VOICE_ENGINE_MAIN_TEST_AUTO_TEST_STANDARD_TEST_BASE_H_
12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define SRC_VOICE_ENGINE_MAIN_TEST_AUTO_TEST_STANDARD_TEST_BASE_H_
13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <assert.h>
15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
160de0049a4e555f347cab027c2fddd32e7f916ed3minyue@webrtc.org#include "webrtc/common.h"
17471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/common_types.h"
18471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/engine_configurations.h"
19471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/test/testsupport/gtest_disable.h"
20471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_audio_processing.h"
21471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_base.h"
22471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_codec.h"
23471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_dtmf.h"
24471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_errors.h"
25471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_external_media.h"
26471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_file.h"
27471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_hardware.h"
28471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_neteq_stats.h"
29471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_network.h"
30471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_rtp_rtcp.h"
31471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_video_sync.h"
32471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_volume_control.h"
338510750bf2847dcdca26d914974c6d51d1e311a7pbos@webrtc.org#include "webrtc/voice_engine/test/auto_test/voe_test_common.h"
34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
358510750bf2847dcdca26d914974c6d51d1e311a7pbos@webrtc.org#include "testing/gmock/include/gmock/gmock.h"
368510750bf2847dcdca26d914974c6d51d1e311a7pbos@webrtc.org#include "testing/gtest/include/gtest/gtest.h"
37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// This convenient fixture sets up all voice engine interfaces automatically for
39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// use by testing subclasses. It allocates each interface and releases it once
40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// which means that if a tests allocates additional interfaces from the voice
41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// engine and forgets to release it, this test will fail in the destructor.
42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// It will not call any init methods.
43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//
44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Implementation note:
45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// The interface fetching is done in the constructor and not SetUp() since
46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// this relieves our subclasses from calling SetUp in the superclass if they
47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// choose to override SetUp() themselves. This is fine as googletest will
48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// construct new test objects for each method.
49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass BeforeInitializationFixture : public testing::Test {
50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org public:
51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  BeforeInitializationFixture();
52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  virtual ~BeforeInitializationFixture();
53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org protected:
55fbb6e45a37e84d50313318b1ad1e94f4bf1322f3andrew@webrtc.org  // Use this sleep function to sleep in tests.
56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  void Sleep(long milliseconds);
57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoiceEngine*        voice_engine_;
59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoEBase*            voe_base_;
60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoECodec*           voe_codec_;
61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoEVolumeControl*   voe_volume_control_;
62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoEDtmf*            voe_dtmf_;
63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoERTP_RTCP*        voe_rtp_rtcp_;
64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoEAudioProcessing* voe_apm_;
65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoENetwork*         voe_network_;
66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoEFile*            voe_file_;
67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoEVideoSync*       voe_vsync_;
68b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoEHardware*        voe_hardware_;
69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoEExternalMedia*   voe_xmedia_;
70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  webrtc::VoENetEqStats*      voe_neteq_stats_;
710de0049a4e555f347cab027c2fddd32e7f916ed3minyue@webrtc.org  webrtc::Config              config_;
72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org};
73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif  // SRC_VOICE_ENGINE_MAIN_TEST_AUTO_TEST_STANDARD_TEST_BASE_H_
75