diff options
| author | ljfa-ag <ljfa-ag@web.de> | 2015-07-28 17:22:09 +0200 |
|---|---|---|
| committer | ljfa-ag <ljfa-ag@web.de> | 2015-07-28 20:26:54 +0200 |
| commit | a5bf6ccebd957365a4eeaa761688d44bfedb0593 (patch) | |
| tree | 1d72e4341e06183c9ea1d9b13964318f6e15f6d5 /test/endian_str_test.cpp | |
| parent | aeab493a5619b578bd0f2ea8e1e968a30bceb35f (diff) | |
| download | Project-Tick-a5bf6ccebd957365a4eeaa761688d44bfedb0593.tar.gz Project-Tick-a5bf6ccebd957365a4eeaa761688d44bfedb0593.zip | |
Create endian_str.h and test
Diffstat (limited to 'test/endian_str_test.cpp')
| -rw-r--r-- | test/endian_str_test.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/test/endian_str_test.cpp b/test/endian_str_test.cpp new file mode 100644 index 0000000000..d9d01d15c5 --- /dev/null +++ b/test/endian_str_test.cpp @@ -0,0 +1,80 @@ +/* + * libnbt++ - A library for the Minecraft Named Binary Tag format. + * Copyright (C) 2013, 2015 ljfa-ag + * + * This file is part of libnbt++. + * + * libnbt++ is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * libnbt++ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with libnbt++. If not, see <http://www.gnu.org/licenses/>. + */ +#include "microtest.h" +#include "endian_str.h" +#include <sstream> + +using namespace endian; + +void test_uint() +{ + std::stringstream str(std::ios::in | std::ios::out | std::ios::binary); + + write_little(str, uint8_t (0x01)); + write_little(str, uint16_t(0x0102)); + write_little(str, uint32_t(0x01020304UL)); + write_little(str, uint64_t(0x0102030405060708ULL)); + + write_big (str, uint8_t (0x09)); + write_big (str, uint16_t(0x090A)); + write_big (str, uint32_t(0x090A0B0CUL)); + write_big (str, uint64_t(0x090A0B0C0D0E0F10ULL)); + + const char expected[] = { + 1, + 2, 1, + 4, 3, 2, 1, + 8, 7, 6, 5, 4, 3, 2, 1, + + 9, + 9, 10, + 9, 10, 11, 12, + 9, 10, 11, 12, 13, 14, 15, 16, + 0}; //Null terminator + ASSERT(str.str() == expected); + + uint8_t u8; + uint16_t u16; + uint32_t u32; + uint64_t u64; + + read_little(str, u8); + ASSERT(u8 == 0x01); + read_little(str, u16); + ASSERT(u16 == 0x0102); + read_little(str, u32); + ASSERT(u32 == 0x01020304UL); + read_little(str, u64); + ASSERT(u64 == 0x0102030405060708ULL); + + read_big(str, u8); + ASSERT(u8 == 0x09); + read_big(str, u16); + ASSERT(u16 == 0x090A); + read_big(str, u32); + ASSERT(u32 == 0x090A0B0CUL); + read_big(str, u64); + ASSERT(u64 == 0x090A0B0C0D0E0F10ULL); +} + +int main() +{ + test_uint(); +} |
