mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2025-01-04 09:15:05 +00:00
3d045a14f3
The first argument is supposed to be the expected value, the second the value calculated by the code to test.
198 lines
7.1 KiB
C++
198 lines
7.1 KiB
C++
#include "common/common_pch.h"
|
|
|
|
#include "common/endian.h"
|
|
|
|
#include "gtest/gtest.h"
|
|
|
|
namespace {
|
|
|
|
TEST(Endian, GetUIntXYBE) {
|
|
unsigned char buffer[8] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
|
|
|
|
EXPECT_EQ( 0x0123u, get_uint16_be(buffer));
|
|
EXPECT_EQ( 0x012345u, get_uint24_be(buffer));
|
|
EXPECT_EQ( 0x01234567u, get_uint32_be(buffer));
|
|
EXPECT_EQ(0x0123456789abcdefull, get_uint64_be(buffer));
|
|
|
|
EXPECT_EQ( 0x01ull, get_uint_be(buffer, 0));
|
|
EXPECT_EQ( 0x01ull, get_uint_be(buffer, 1));
|
|
EXPECT_EQ( 0x0123ull, get_uint_be(buffer, 2));
|
|
EXPECT_EQ( 0x012345ull, get_uint_be(buffer, 3));
|
|
EXPECT_EQ( 0x01234567ull, get_uint_be(buffer, 4));
|
|
EXPECT_EQ( 0x0123456789ull, get_uint_be(buffer, 5));
|
|
EXPECT_EQ( 0x0123456789abull, get_uint_be(buffer, 6));
|
|
EXPECT_EQ( 0x0123456789abcdull, get_uint_be(buffer, 7));
|
|
EXPECT_EQ(0x0123456789abcdefull, get_uint_be(buffer, 8));
|
|
EXPECT_EQ(0x0123456789abcdefull, get_uint_be(buffer, 9));
|
|
}
|
|
|
|
TEST(Endian, GetUIntXYLE) {
|
|
unsigned char buffer[8] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
|
|
|
|
EXPECT_EQ( 0x2301u, get_uint16_le(buffer));
|
|
EXPECT_EQ( 0x452301u, get_uint24_le(buffer));
|
|
EXPECT_EQ( 0x67452301u, get_uint32_le(buffer));
|
|
EXPECT_EQ(0xefcdab8967452301ull, get_uint64_le(buffer));
|
|
|
|
EXPECT_EQ( 0x01ull, get_uint_le(buffer, 0));
|
|
EXPECT_EQ( 0x01ull, get_uint_le(buffer, 1));
|
|
EXPECT_EQ( 0x2301ull, get_uint_le(buffer, 2));
|
|
EXPECT_EQ( 0x452301ull, get_uint_le(buffer, 3));
|
|
EXPECT_EQ( 0x67452301ull, get_uint_le(buffer, 4));
|
|
EXPECT_EQ( 0x8967452301ull, get_uint_le(buffer, 5));
|
|
EXPECT_EQ( 0xab8967452301ull, get_uint_le(buffer, 6));
|
|
EXPECT_EQ( 0xcdab8967452301ull, get_uint_le(buffer, 7));
|
|
EXPECT_EQ(0xefcdab8967452301ull, get_uint_le(buffer, 8));
|
|
EXPECT_EQ(0xefcdab8967452301ull, get_uint_le(buffer, 9));
|
|
}
|
|
|
|
TEST(Endian, PutUIntXYBE) {
|
|
unsigned char buffer[8];
|
|
|
|
std::memset(buffer, 0, 8);
|
|
unsigned char res16be[8] = { 0x01, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|
put_uint16_be(buffer, 0x0123u);
|
|
EXPECT_EQ(0, std::memcmp(buffer, res16be, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
unsigned char res24be[8] = { 0x01, 0x23, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|
put_uint24_be(buffer, 0x012345u);
|
|
EXPECT_EQ(0, std::memcmp(buffer, res24be, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
unsigned char res32be[8] = { 0x01, 0x23, 0x45, 0x67, 0x00, 0x00, 0x00, 0x00 };
|
|
put_uint32_be(buffer, 0x01234567u);
|
|
EXPECT_EQ(0, std::memcmp(buffer, res32be, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
unsigned char res64be[8] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
|
|
put_uint64_be(buffer, 0x0123456789abcdefu);
|
|
EXPECT_EQ(0, std::memcmp(buffer, res64be, 8));
|
|
|
|
unsigned char resbe1[8] = { 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|
unsigned char resbe2[8] = { 0xcd, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|
unsigned char resbe3[8] = { 0xab, 0xcd, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|
unsigned char resbe4[8] = { 0x89, 0xab, 0xcd, 0xef, 0x00, 0x00, 0x00, 0x00 };
|
|
unsigned char resbe5[8] = { 0x67, 0x89, 0xab, 0xcd, 0xef, 0x00, 0x00, 0x00 };
|
|
unsigned char resbe6[8] = { 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x00, 0x00 };
|
|
unsigned char resbe7[8] = { 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x00 };
|
|
unsigned char resbe8[8] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
|
|
auto value = 0x0123456789abcdefu;
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_be(buffer, value, 0);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resbe1, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_be(buffer, value, 1);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resbe1, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_be(buffer, value, 2);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resbe2, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_be(buffer, value, 3);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resbe3, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_be(buffer, value, 4);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resbe4, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_be(buffer, value, 5);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resbe5, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_be(buffer, value, 6);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resbe6, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_be(buffer, value, 7);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resbe7, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_be(buffer, value, 8);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resbe8, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_be(buffer, value, 9);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resbe8, 8));
|
|
}
|
|
|
|
TEST(Endian, PutUIntXYLE) {
|
|
unsigned char buffer[8];
|
|
|
|
std::memset(buffer, 0, 8);
|
|
unsigned char res16le[8] = { 0x23, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|
put_uint16_le(buffer, 0x0123u);
|
|
EXPECT_EQ(0, std::memcmp(buffer, res16le, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
unsigned char res24le[8] = { 0x45, 0x23, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|
put_uint24_le(buffer, 0x012345u);
|
|
EXPECT_EQ(0, std::memcmp(buffer, res24le, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
unsigned char res32le[8] = { 0x67, 0x45, 0x23, 0x01, 0x00, 0x00, 0x00, 0x00 };
|
|
put_uint32_le(buffer, 0x01234567u);
|
|
EXPECT_EQ(0, std::memcmp(buffer, res32le, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
unsigned char res64le[8] = { 0xef, 0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01 };
|
|
put_uint64_le(buffer, 0x0123456789abcdefu);
|
|
EXPECT_EQ(0, std::memcmp(buffer, res64le, 8));
|
|
|
|
unsigned char resle1[8] = { 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|
unsigned char resle2[8] = { 0xef, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|
unsigned char resle3[8] = { 0xef, 0xcd, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|
unsigned char resle4[8] = { 0xef, 0xcd, 0xab, 0x89, 0x00, 0x00, 0x00, 0x00 };
|
|
unsigned char resle5[8] = { 0xef, 0xcd, 0xab, 0x89, 0x67, 0x00, 0x00, 0x00 };
|
|
unsigned char resle6[8] = { 0xef, 0xcd, 0xab, 0x89, 0x67, 0x45, 0x00, 0x00 };
|
|
unsigned char resle7[8] = { 0xef, 0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x00 };
|
|
unsigned char resle8[8] = { 0xef, 0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01 };
|
|
auto value = 0x0123456789abcdefu;
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_le(buffer, value, 0);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resle1, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_le(buffer, value, 1);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resle1, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_le(buffer, value, 2);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resle2, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_le(buffer, value, 3);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resle3, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_le(buffer, value, 4);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resle4, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_le(buffer, value, 5);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resle5, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_le(buffer, value, 6);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resle6, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_le(buffer, value, 7);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resle7, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_le(buffer, value, 8);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resle8, 8));
|
|
|
|
std::memset(buffer, 0, 8);
|
|
put_uint_le(buffer, value, 9);
|
|
EXPECT_EQ(0, std::memcmp(buffer, resle8, 8));
|
|
}
|
|
|
|
}
|