libdpf/thirdparty/uint256_t/tests/testcases/constructor.cpp

77 lines
3.8 KiB
C++
Raw Permalink Normal View History

#include <gtest/gtest.h>
#include "uint256_t.h"
TEST(Constructor, standard){
uint256_t value(0x0123456789abcdefULL);
const uint256_t original = value;
EXPECT_EQ(uint256_t(), 0);
EXPECT_EQ(value, original);
EXPECT_EQ(uint256_t(std::move(value)), original);
EXPECT_EQ(value, 0x0123456789abcdefULL);
}
TEST(Constructor, base_string){
EXPECT_EQ(uint256_t("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16), uint256_max);
EXPECT_EQ(uint256_t("115792089237316195423570985008687907853269984665640564039457584007913129639935", 10), uint256_max);
EXPECT_EQ(uint256_t("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", 2), uint256_max);
EXPECT_EQ(uint256_t("0", 10), 0);
EXPECT_EQ(uint256_t("0123456789abcdef", 16), 0x0123456789abcdefULL);
EXPECT_EQ(uint256_t("755", 8), 0x01ed);
EXPECT_EQ(uint256_t("31415926", 10), 0x01df5e76ULL);
}
TEST(Constructor, one){
EXPECT_EQ(uint256_t(true).upper(), false);
EXPECT_EQ(uint256_t(true).lower(), true);
EXPECT_EQ(uint256_t(false).upper(), false);
EXPECT_EQ(uint256_t(false).lower(), false);
EXPECT_EQ(uint256_t((uint8_t) 0x01ULL).upper(), 0ULL);
EXPECT_EQ(uint256_t((uint16_t) 0x0123ULL).upper(), 0ULL);
EXPECT_EQ(uint256_t((uint32_t) 0x01234567ULL).upper(), 0ULL);
EXPECT_EQ(uint256_t((uint64_t) 0x0123456789abcdefULL).upper(), 0ULL);
EXPECT_EQ(uint256_t((uint8_t) 0x01ULL).lower(), (uint8_t) 0x01ULL);
EXPECT_EQ(uint256_t((uint16_t) 0x0123ULL).lower(), (uint16_t) 0x0123ULL);
EXPECT_EQ(uint256_t((uint32_t) 0x01234567ULL).lower(), (uint32_t) 0x01234567ULL);
EXPECT_EQ(uint256_t((uint64_t) 0x0123456789abcdefULL).lower(), (uint64_t) 0x0123456789abcdefULL);
}
TEST(Constructor, two){
for(uint8_t hi = 0; hi < 2; hi++){
for(uint8_t lo = 0; lo < 2; lo++){
const uint256_t val(hi, lo);
EXPECT_EQ(val.upper(), hi);
EXPECT_EQ(val.lower(), lo);
}
}
EXPECT_EQ(uint256_t((uint8_t) 0x01ULL, (uint8_t) 0x01ULL).upper(), (uint8_t) 0x01ULL);
EXPECT_EQ(uint256_t((uint16_t) 0x0123ULL, (uint16_t) 0x0123ULL).upper(), (uint16_t) 0x0123ULL);
EXPECT_EQ(uint256_t((uint32_t) 0x01234567ULL, (uint32_t) 0x01234567ULL).upper(), (uint32_t) 0x01234567ULL);
EXPECT_EQ(uint256_t((uint64_t) 0x0123456789abcdefULL, (uint64_t) 0x0123456789abcdefULL).upper(), (uint64_t) 0x0123456789abcdefULL);
EXPECT_EQ(uint256_t((uint8_t) 0x01ULL, (uint8_t) 0x01ULL).lower(), (uint8_t) 0x01ULL);
EXPECT_EQ(uint256_t((uint16_t) 0x0123ULL, (uint16_t) 0x0123ULL).lower(), (uint16_t) 0x0123ULL);
EXPECT_EQ(uint256_t((uint32_t) 0x01234567ULL, (uint32_t) 0x01234567ULL).lower(), (uint32_t) 0x01234567ULL);
EXPECT_EQ(uint256_t((uint64_t) 0x0123456789abcdefULL, (uint64_t) 0x0123456789abcdefULL).lower(), (uint64_t) 0x0123456789abcdefULL);
}
TEST(Constructor, four){
for(uint8_t hi_hi = 0; hi_hi < 2; hi_hi++){
for(uint8_t hi_lo = 0; hi_lo < 2; hi_lo++){
for(uint8_t lo_hi = 0; lo_hi < 2; lo_hi++){
for(uint8_t lo_lo = 0; lo_lo < 2; lo_lo++){
const uint256_t val(hi_hi, hi_lo, lo_hi, lo_lo);
EXPECT_EQ(val.upper().upper(), hi_hi);
EXPECT_EQ(val.upper().lower(), hi_lo);
EXPECT_EQ(val.lower().upper(), lo_hi);
EXPECT_EQ(val.lower().lower(), lo_lo);
}
}
}
}
}