Fixing neteq_unittests for VS 2012
For Visual Studio versions older than 2012, we are using a separate reference output file for windows. (All other platforms share the same generic reference file.) In VS 2012, the output matches the generic reference, and not the platform-specific one. Since, the ResourcePath() method cannot change behavior depending on compiler version, this fix will short-cut ResourcePath() for VS 2012 or newer (_MSC_VER >= 1700). Also made NetEqDecodingTest.TestBitExactnes stop on the first diff. Once there is a difference, the output is no longer bit-exact, and the test should be declared a failure. BUG= TEST=neteq_unittests on VS2012, try bots Review URL: https://webrtc-codereview.appspot.com/966028 git-svn-id: http://webrtc.googlecode.com/svn/trunk@3199 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
34dab50bb4
commit
8552c71290
@ -15,6 +15,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h> // memset
|
||||
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@ -103,7 +104,7 @@ void RefFiles::ReadFromFileAndCompare(const T (&test_results)[n],
|
||||
T* ref = new T[length];
|
||||
ASSERT_EQ(length, fread(ref, sizeof(T), length, input_fp_));
|
||||
// Compare
|
||||
EXPECT_EQ(0, memcmp(&test_results, ref, sizeof(T) * length));
|
||||
ASSERT_EQ(0, memcmp(&test_results, ref, sizeof(T) * length));
|
||||
delete [] ref;
|
||||
}
|
||||
}
|
||||
@ -295,10 +296,14 @@ void NetEqDecodingTest::DecodeAndCompare(const std::string &rtp_file,
|
||||
|
||||
NETEQTEST_RTPpacket rtp;
|
||||
ASSERT_GT(rtp.readFromFile(rtp_fp_), 0);
|
||||
int i = 0;
|
||||
while (rtp.dataLen() >= 0) {
|
||||
std::ostringstream ss;
|
||||
ss << "Lap number " << i++ << " in DecodeAndCompare while loop";
|
||||
SCOPED_TRACE(ss.str()); // Print out the parameter values on failure.
|
||||
int16_t out_len;
|
||||
Process(&rtp, &out_len);
|
||||
ref_files.ProcessReference(out_data_, out_len);
|
||||
ASSERT_NO_FATAL_FAILURE(Process(&rtp, &out_len));
|
||||
ASSERT_NO_FATAL_FAILURE(ref_files.ProcessReference(out_data_, out_len));
|
||||
}
|
||||
}
|
||||
|
||||
@ -370,16 +375,30 @@ void NetEqDecodingTest::PopulateCng(int frame_index,
|
||||
TEST_F(NetEqDecodingTest, TestBitExactness) {
|
||||
const std::string kInputRtpFile = webrtc::test::ProjectRootPath() +
|
||||
"resources/neteq_universal.rtp";
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1700)
|
||||
// For Visual Studio 2012 and later, we will have to use the generic reference
|
||||
// file, rather than the windows-specific one.
|
||||
const std::string kInputRefFile = webrtc::test::ProjectRootPath() +
|
||||
"resources/neteq_universal_ref.pcm";
|
||||
#else
|
||||
const std::string kInputRefFile =
|
||||
webrtc::test::ResourcePath("neteq_universal_ref", "pcm");
|
||||
#endif
|
||||
DecodeAndCompare(kInputRtpFile, kInputRefFile);
|
||||
}
|
||||
|
||||
TEST_F(NetEqDecodingTest, TestNetworkStatistics) {
|
||||
const std::string kInputRtpFile = webrtc::test::ProjectRootPath() +
|
||||
"resources/neteq_universal.rtp";
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1700)
|
||||
// For Visual Studio 2012 and later, we will have to use the generic reference
|
||||
// file, rather than the windows-specific one.
|
||||
const std::string kNetworkStatRefFile = webrtc::test::ProjectRootPath() +
|
||||
"resources/neteq_network_stats.dat";
|
||||
#else
|
||||
const std::string kNetworkStatRefFile =
|
||||
webrtc::test::ResourcePath("neteq_network_stats", "dat");
|
||||
#endif
|
||||
const std::string kRtcpStatRefFile =
|
||||
webrtc::test::ResourcePath("neteq_rtcp_stats", "dat");
|
||||
DecodeAndCheckStats(kInputRtpFile, kNetworkStatRefFile, kRtcpStatRefFile);
|
||||
|
Loading…
Reference in New Issue
Block a user