109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org/* 209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org * 409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org * Use of this source code is governed by a BSD-style license 509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org * that can be found in the LICENSE file in the root of the source 609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org * tree. An additional intellectual property rights grant can be found 709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org * in the file PATENTS. All contributing project authors may 809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org * be found in the AUTHORS file in the root of the source tree. 909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org */ 1009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 1109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org#include <limits> 1209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 1309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org#include "testing/gtest/include/gtest/gtest.h" 1409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org#include "webrtc/modules/rtp_rtcp/source/byte_io.h" 1509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 1609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgnamespace webrtc { 1709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgnamespace { 1809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 1909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgclass ByteIoTest : public ::testing::Test { 2009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org protected: 2109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org ByteIoTest() {} 2209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org virtual ~ByteIoTest() {} 2309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 2409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org enum { kAlignments = sizeof(uint64_t) - 1 }; 2509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 2609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Method to create a test value that is not the same when byte reversed. 2709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org template <typename T> 2809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org T CreateTestValue(bool negative, uint8_t num_bytes) { 2909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org T val = 0; 3009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org for (uint8_t i = 0; i != num_bytes; ++i) { 3109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org val = (val << 8) + (negative ? (0xFF - i) : (i + 1)); 3209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 3309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org if (negative && std::numeric_limits<T>::is_signed) { 3409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org val |= static_cast<T>(-1) << (8 * num_bytes); 3509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 3609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org return val; 3709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 3809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 3909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Populate byte buffer with value, in big endian format. 4009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org template <typename T> 4109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org void PopulateTestData(uint8_t* data, T value, int num_bytes, bool bigendian) { 4209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org if (bigendian) { 4309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org for (int i = 0; i < num_bytes; ++i) { 4409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org data[i] = (value >> ((num_bytes - i - 1) * 8)) & 0xFF; 4509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 4609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } else { 4709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org for (int i = 0; i < num_bytes; ++i) { 4809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org data[i] = (value >> (i * 8)) & 0xFF; 4909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 5009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 5109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 5209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 5309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Test reading big endian numbers. 5409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Template arguments: Type T, read method RM(buffer), B bytes of data. 5509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org template <typename T, T (*RM)(uint8_t*), int B> 5609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org void TestRead(bool big_endian) { 5709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Test both for values that are positive and negative (if signed) 5809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org for (int neg = 0; neg < 2; ++neg) { 5909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org bool negative = neg > 0; 6009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 6109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Write test value to byte buffer, in big endian format. 6209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org T test_value = CreateTestValue<T>(negative, B); 6309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org uint8_t bytes[B + kAlignments]; 6409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 6509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Make one test for each alignment. 6609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org for (int i = 0; i < kAlignments; ++i) { 6709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org PopulateTestData(bytes + i, test_value, B, big_endian); 6809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 6909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Check that test value is retrieved from buffer when used read method. 7009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org EXPECT_EQ(test_value, RM(bytes + i)); 7109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 7209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 7309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 7409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 7509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Test writing big endian numbers. 7609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Template arguments: Type T, write method WM(buffer, value), B bytes of data 7709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org template <typename T, void (*WM)(uint8_t*, T), int B> 7809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org void TestWrite(bool big_endian) { 7909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Test both for values that are positive and negative (if signed). 8009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org for (int neg = 0; neg < 2; ++neg) { 8109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org bool negative = neg > 0; 8209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 8309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Write test value to byte buffer, in big endian format. 8409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org T test_value = CreateTestValue<T>(negative, B); 8509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org uint8_t expected_bytes[B + kAlignments]; 8609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org uint8_t bytes[B + kAlignments]; 8709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 8809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Make one test for each alignment. 8909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org for (int i = 0; i < kAlignments; ++i) { 9009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org PopulateTestData(expected_bytes + i, test_value, B, big_endian); 9109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 9209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Zero initialize buffer and let WM populate it. 9309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org memset(bytes, 0, B + kAlignments); 9409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org WM(bytes + i, test_value); 9509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 9609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org // Check that data produced by WM is big endian as expected. 9709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org for (int j = 0; j < B; ++j) { 9809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org EXPECT_EQ(expected_bytes[i + j], bytes[i + j]); 9909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 10009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 10109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 10209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org } 10309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org}; 10409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 10509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test16UBitBigEndian) { 10609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<uint16_t, ByteReader<uint16_t>::ReadBigEndian, 10709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(uint16_t)>(true); 10809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<uint16_t, ByteWriter<uint16_t>::WriteBigEndian, 10909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(uint16_t)>(true); 11009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 11109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 11209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test24UBitBigEndian) { 11309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<uint32_t, ByteReader<uint32_t, 3>::ReadBigEndian, 3>(true); 11409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<uint32_t, ByteWriter<uint32_t, 3>::WriteBigEndian, 3>(true); 11509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 11609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 11709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test32UBitBigEndian) { 11809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<uint32_t, ByteReader<uint32_t>::ReadBigEndian, 11909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(uint32_t)>(true); 12009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<uint32_t, ByteWriter<uint32_t>::WriteBigEndian, 12109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(uint32_t)>(true); 12209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 12309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 12409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test64UBitBigEndian) { 12509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<uint64_t, ByteReader<uint64_t>::ReadBigEndian, 12609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(uint64_t)>(true); 12709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<uint64_t, ByteWriter<uint64_t>::WriteBigEndian, 12809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(uint64_t)>(true); 12909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 13009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 13109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test16SBitBigEndian) { 13209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<int16_t, ByteReader<int16_t>::ReadBigEndian, 13309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(int16_t)>(true); 13409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<int16_t, ByteWriter<int16_t>::WriteBigEndian, 13509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(int16_t)>(true); 13609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 13709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 13809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test24SBitBigEndian) { 13909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<int32_t, ByteReader<int32_t, 3>::ReadBigEndian, 3>(true); 14009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<int32_t, ByteWriter<int32_t, 3>::WriteBigEndian, 3>(true); 14109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 14209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 14309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test32SBitBigEndian) { 14409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<int32_t, ByteReader<int32_t>::ReadBigEndian, 14509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(int32_t)>(true); 14609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<int32_t, ByteWriter<int32_t>::WriteBigEndian, 14709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(int32_t)>(true); 14809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 14909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 15009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test64SBitBigEndian) { 15109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<int64_t, ByteReader<int64_t>::ReadBigEndian, 15209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(int64_t)>(true); 15309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<int64_t, ByteWriter<int64_t>::WriteBigEndian, 15409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(int64_t)>(true); 15509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 15609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 15709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test16UBitLittleEndian) { 15809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<uint16_t, ByteReader<uint16_t>::ReadLittleEndian, 15909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(uint16_t)>(false); 16009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<uint16_t, ByteWriter<uint16_t>::WriteLittleEndian, 16109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(uint16_t)>(false); 16209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 16309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 16409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test24UBitLittleEndian) { 16509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<uint32_t, ByteReader<uint32_t, 3>::ReadLittleEndian, 3>(false); 16609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<uint32_t, ByteWriter<uint32_t, 3>::WriteLittleEndian, 3>(false); 16709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 16809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 16909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test32UBitLittleEndian) { 17009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<uint32_t, ByteReader<uint32_t>::ReadLittleEndian, 17109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(uint32_t)>(false); 17209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<uint32_t, ByteWriter<uint32_t>::WriteLittleEndian, 17309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(uint32_t)>(false); 17409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 17509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 17609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test64UBitLittleEndian) { 17709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<uint64_t, ByteReader<uint64_t>::ReadLittleEndian, 17809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(uint64_t)>(false); 17909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<uint64_t, ByteWriter<uint64_t>::WriteLittleEndian, 18009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(uint64_t)>(false); 18109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 18209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 18309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test16SBitLittleEndian) { 18409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<int16_t, ByteReader<int16_t>::ReadLittleEndian, 18509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(int16_t)>(false); 18609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<int16_t, ByteWriter<int16_t>::WriteLittleEndian, 18709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(int16_t)>(false); 18809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 18909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 19009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test24SBitLittleEndian) { 19109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<int32_t, ByteReader<int32_t, 3>::ReadLittleEndian, 3>(false); 19209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<int32_t, ByteWriter<int32_t, 3>::WriteLittleEndian, 3>(false); 19309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 19409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 19509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test32SBitLittleEndian) { 19609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<int32_t, ByteReader<int32_t>::ReadLittleEndian, 19709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(int32_t)>(false); 19809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<int32_t, ByteWriter<int32_t>::WriteLittleEndian, 19909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(int32_t)>(false); 20009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 20109299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 20209299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.orgTEST_F(ByteIoTest, Test64SBitLittleEndian) { 20309299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestRead<int64_t, ByteReader<int64_t>::ReadLittleEndian, 20409299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(int64_t)>(false); 20509299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org TestWrite<int64_t, ByteWriter<int64_t>::WriteLittleEndian, 20609299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org sizeof(int64_t)>(false); 20709299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} 20809299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org 20909299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} // namespace 21009299b047d842ef0e4cb866979f1885b0176ba8bsprang@webrtc.org} // namespace webrtc 211