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