45 lines
1.5 KiB
C++
45 lines
1.5 KiB
C++
|
|
#include <gtest/gtest.h>
|
||
|
|
|
||
|
|
#include "uint256_t.h"
|
||
|
|
|
||
|
|
TEST(Arithmetic, divide){
|
||
|
|
const uint256_t big (0xfedbca9876543210ULL);
|
||
|
|
const uint256_t small (0xffffULL);
|
||
|
|
const uint256_t res_val(0xfedcc9753fc9ULL);
|
||
|
|
|
||
|
|
EXPECT_EQ(small / small, 1);
|
||
|
|
EXPECT_EQ(small / big, 0);
|
||
|
|
|
||
|
|
EXPECT_EQ(big / big, 1);
|
||
|
|
|
||
|
|
EXPECT_THROW(uint256_t(1) / uint256_t(0), std::domain_error);
|
||
|
|
}
|
||
|
|
|
||
|
|
TEST(External, divide){
|
||
|
|
bool t = true;
|
||
|
|
bool f = false;
|
||
|
|
uint8_t u8 = 0xaaULL;
|
||
|
|
uint16_t u16 = 0xaaaaULL;
|
||
|
|
uint32_t u32 = 0xaaaaaaaaULL;
|
||
|
|
uint64_t u64 = 0xaaaaaaaaaaaaaaaaULL;
|
||
|
|
uint128_t u128 (0xaaaaaaaaaaaaaaaaULL, 0xaaaaaaaaaaaaaaaaULL);
|
||
|
|
|
||
|
|
const uint256_t val(0x7bULL);
|
||
|
|
|
||
|
|
EXPECT_EQ(t / val, false);
|
||
|
|
EXPECT_EQ(f / val, false);
|
||
|
|
EXPECT_EQ(u8 / val, uint256_t(0x1ULL));
|
||
|
|
EXPECT_EQ(u16 / val, uint256_t(0x163ULL));
|
||
|
|
EXPECT_EQ(u32 / val, uint256_t(0x163356bULL));
|
||
|
|
EXPECT_EQ(u64 / val, uint256_t(0x163356b88ac0de0ULL));
|
||
|
|
EXPECT_EQ(u128 / val, uint256_t(0x0000000000000000ULL, 0x0000000000000000ULL, 0x163356b88ac0de0ULL, 0x163356b88ac0de01ULL));
|
||
|
|
|
||
|
|
EXPECT_EQ(t /= val, false);
|
||
|
|
EXPECT_EQ(f /= val, false);
|
||
|
|
EXPECT_EQ(u8 /= val, (uint8_t) 0x1ULL);
|
||
|
|
EXPECT_EQ(u16 /= val, (uint16_t) 0x163ULL);
|
||
|
|
EXPECT_EQ(u32 /= val, (uint32_t) 0x163356bULL);
|
||
|
|
EXPECT_EQ(u64 /= val, (uint64_t) 0x163356b88ac0de0ULL);
|
||
|
|
EXPECT_EQ(u128 /= val, uint128_t(0x163356b88ac0de0ULL, 0x163356b88ac0de01ULL));
|
||
|
|
}
|