Initial import of libdpf.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
commit
e4e666f459
4563 changed files with 1690372 additions and 0 deletions
61
thirdparty/uint256_t/tests/Makefile
vendored
Normal file
61
thirdparty/uint256_t/tests/Makefile
vendored
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
CXX?=g++
|
||||
STANDARD?=c++14
|
||||
CXXFLAGS=-std=$(STANDARD) -Wall -pedantic -g -I../../googletest/googletest/include -I.. -I../uint128_t
|
||||
LDFLAGS=-L../../googletest/build/install/lib -lgtest -lpthread
|
||||
TARGET=test
|
||||
|
||||
TESTCASES =
|
||||
TESTCASES += testcases/constructor.o
|
||||
TESTCASES += testcases/assignment.o
|
||||
TESTCASES += testcases/typecast.o
|
||||
TESTCASES += testcases/accessors.o
|
||||
TESTCASES += testcases/and.o
|
||||
TESTCASES += testcases/or.o
|
||||
TESTCASES += testcases/xor.o
|
||||
TESTCASES += testcases/invert.o
|
||||
TESTCASES += testcases/leftshift.o
|
||||
TESTCASES += testcases/rightshift.o
|
||||
TESTCASES += testcases/logical.o
|
||||
TESTCASES += testcases/gt.o
|
||||
TESTCASES += testcases/gte.o
|
||||
TESTCASES += testcases/lt.o
|
||||
TESTCASES += testcases/lte.o
|
||||
TESTCASES += testcases/equals.o
|
||||
TESTCASES += testcases/notequals.o
|
||||
TESTCASES += testcases/add.o
|
||||
TESTCASES += testcases/sub.o
|
||||
TESTCASES += testcases/mult.o
|
||||
TESTCASES += testcases/div.o
|
||||
TESTCASES += testcases/mod.o
|
||||
TESTCASES += testcases/fix.o
|
||||
TESTCASES += testcases/unary.o
|
||||
TESTCASES += testcases/functions.o
|
||||
TESTCASES += testcases/type_traits.o
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
.PHONY: clean clean-all
|
||||
|
||||
$(TESTCASES): %.o : %.cpp ../uint256_t.h ../uint128_t/uint128_t.h
|
||||
$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||
|
||||
../uint128_t/uint128_t.o: ../uint128_t/uint128_t.h ../uint128_t/uint128_t.cpp ../uint128_t/uint128_t.include
|
||||
$(CXX) $(CXXFLAGS) -c ../uint128_t/uint128_t.cpp -o $@
|
||||
|
||||
../uint256_t.o: ../uint256_t.h ../uint256_t.cpp ../uint256_t.include
|
||||
$(CXX) $(CXXFLAGS) -c ../uint256_t.cpp -o $@
|
||||
|
||||
$(TARGET): test.cpp ../uint256_t.o ../uint128_t/uint128_t.o $(TESTCASES)
|
||||
$(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $(TARGET)
|
||||
|
||||
run: $(TARGET)
|
||||
./$(TARGET)
|
||||
$(MAKE) -C ../uint128_t/tests run
|
||||
|
||||
clean:
|
||||
rm -f $(TARGET)
|
||||
$(MAKE) -C ../uint128_t/tests clean
|
||||
|
||||
clean-all:
|
||||
rm -f ../uint256_t.o $(TESTCASES)
|
||||
$(MAKE) -C ../uint128_t/tests clean-all
|
||||
11
thirdparty/uint256_t/tests/install_gtest.sh
vendored
Executable file
11
thirdparty/uint256_t/tests/install_gtest.sh
vendored
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# not much better than git submodules, but there was never a need/want for the repo in this repo
|
||||
cd ..
|
||||
git clone https://github.com/google/googletest.git
|
||||
cd googletest
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DCMAKE_INSTALL_PREFIX=install
|
||||
make -j $(nproc --all)
|
||||
make -j install
|
||||
32
thirdparty/uint256_t/tests/test.cpp
vendored
Normal file
32
thirdparty/uint256_t/tests/test.cpp
vendored
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
Simple test program for uint256_t
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2013 - 2017 Jason Lee @ calccrypto at gmail.com
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
int main(int argc, char * argv[]){
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
21
thirdparty/uint256_t/tests/testcases/accessors.cpp
vendored
Normal file
21
thirdparty/uint256_t/tests/testcases/accessors.cpp
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Accessor, bits){
|
||||
uint256_t value = 1;
|
||||
for(uint32_t i = 0; i < 127; i++){
|
||||
EXPECT_EQ(value.bits(), i + 1); // before shift
|
||||
value <<= 1;
|
||||
}
|
||||
|
||||
EXPECT_EQ(uint256_t(0).bits(), 0);
|
||||
}
|
||||
|
||||
TEST(Accessor, data){
|
||||
const uint256_t value(0xfedcba9876543210ULL, 0x0123456789abcdefULL, 0xfedcba9876543210ULL, 0x0123456789abcdefULL);
|
||||
EXPECT_EQ(value.upper().upper(), 0xfedcba9876543210ULL);
|
||||
EXPECT_EQ(value.upper().lower(), 0x0123456789abcdefULL);
|
||||
EXPECT_EQ(value.lower().upper(), 0xfedcba9876543210ULL);
|
||||
EXPECT_EQ(value.lower().lower(), 0x0123456789abcdefULL);
|
||||
}
|
||||
44
thirdparty/uint256_t/tests/testcases/add.cpp
vendored
Normal file
44
thirdparty/uint256_t/tests/testcases/add.cpp
vendored
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Arithmetic, add){
|
||||
uint256_t low (0, 1);
|
||||
uint256_t high(1, 0);
|
||||
|
||||
EXPECT_EQ(low + low, 2);
|
||||
EXPECT_EQ(low + high, uint256_t(1, 1));
|
||||
EXPECT_EQ(high + high, uint256_t(2, 0));
|
||||
|
||||
EXPECT_EQ(low += low, 2);
|
||||
EXPECT_EQ(low += high, uint256_t(1, 2));
|
||||
EXPECT_EQ(high += low, uint256_t(2, 2));
|
||||
}
|
||||
|
||||
TEST(External, add){
|
||||
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(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL);
|
||||
|
||||
EXPECT_EQ(t + val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f1ULL));
|
||||
EXPECT_EQ(f + val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL));
|
||||
EXPECT_EQ(u8 + val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f19aULL));
|
||||
EXPECT_EQ(u16 + val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f19b9aULL));
|
||||
EXPECT_EQ(u32 + val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f19b9b9b9aULL));
|
||||
EXPECT_EQ(u64 + val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f1ULL, 0x9b9b9b9b9b9b9b9aULL));
|
||||
EXPECT_EQ(u128 + val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f1ULL, 0x9b9b9b9b9b9b9b9bULL, 0x9b9b9b9b9b9b9b9aULL));
|
||||
|
||||
EXPECT_EQ(t += val, true);
|
||||
EXPECT_EQ(f += val, true);
|
||||
EXPECT_EQ(u8 += val, (uint8_t) 0x9aULL);
|
||||
EXPECT_EQ(u16 += val, (uint16_t) 0x9b9aULL);
|
||||
EXPECT_EQ(u32 += val, (uint32_t) 0x9b9b9b9aULL);
|
||||
EXPECT_EQ(u64 += val, (uint64_t) 0x9b9b9b9b9b9b9b9aULL);
|
||||
EXPECT_EQ(u128 += val, uint128_t (0x9b9b9b9b9b9b9b9bULL, 0x9b9b9b9b9b9b9b9aULL));
|
||||
}
|
||||
56
thirdparty/uint256_t/tests/testcases/and.cpp
vendored
Normal file
56
thirdparty/uint256_t/tests/testcases/and.cpp
vendored
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(BitWise, and){
|
||||
uint256_t t ((bool) true);
|
||||
uint256_t f ((bool) false);
|
||||
uint256_t u8 ((uint8_t) 0xaaULL);
|
||||
uint256_t u16((uint16_t) 0xaaaaULL);
|
||||
uint256_t u32((uint32_t) 0xaaaaaaaaULL);
|
||||
uint256_t u64((uint64_t) 0xaaaaaaaaaaaaaaaaULL);
|
||||
|
||||
const uint256_t val(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL);
|
||||
|
||||
EXPECT_EQ(t & val, uint256_t(0));
|
||||
EXPECT_EQ(f & val, uint256_t(0));
|
||||
EXPECT_EQ(u8 & val, uint256_t(0xa0ULL));
|
||||
EXPECT_EQ(u16 & val, uint256_t(0xa0a0ULL));
|
||||
EXPECT_EQ(u32 & val, uint256_t(0xa0a0a0a0ULL));
|
||||
EXPECT_EQ(u64 & val, uint256_t(0xa0a0a0a0a0a0a0a0ULL));
|
||||
|
||||
EXPECT_EQ(t &= val, uint256_t(0x0ULL));
|
||||
EXPECT_EQ(f &= val, uint256_t(0x0ULL));
|
||||
EXPECT_EQ(u8 &= val, uint256_t(0xa0ULL));
|
||||
EXPECT_EQ(u16 &= val, uint256_t(0xa0a0ULL));
|
||||
EXPECT_EQ(u32 &= val, uint256_t(0xa0a0a0a0ULL));
|
||||
EXPECT_EQ(u64 &= val, uint256_t(0xa0a0a0a0a0a0a0a0ULL));
|
||||
}
|
||||
|
||||
TEST(External, and){
|
||||
bool t = true;
|
||||
bool f = false;
|
||||
uint8_t u8 = 0xaaULL;
|
||||
uint16_t u16 = 0xaaaaULL;
|
||||
uint32_t u32 = 0xaaaaaaaaULL;
|
||||
uint64_t u64 = 0xaaaaaaaaaaaaaaaaULL;
|
||||
|
||||
const uint256_t val(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL);
|
||||
|
||||
EXPECT_EQ(t & val, uint256_t(0x0ULL));
|
||||
EXPECT_EQ(f & val, uint256_t(0x0ULL));
|
||||
EXPECT_EQ(u8 & val, uint256_t(0xa0ULL));
|
||||
EXPECT_EQ(u16 & val, uint256_t(0xa0a0ULL));
|
||||
EXPECT_EQ(u32 & val, uint256_t(0xa0a0a0a0ULL));
|
||||
EXPECT_EQ(u64 & val, uint256_t(0xa0a0a0a0a0a0a0a0ULL));
|
||||
|
||||
EXPECT_EQ(t &= val, false);
|
||||
EXPECT_EQ(f &= val, false);
|
||||
EXPECT_EQ(u8 &= val, (uint8_t) 0xa0ULL);
|
||||
EXPECT_EQ(u16 &= val, (uint16_t) 0xa0a0ULL);
|
||||
EXPECT_EQ(u32 &= val, (uint32_t) 0xa0a0a0a0ULL);
|
||||
EXPECT_EQ(u64 &= val, (uint64_t) 0xa0a0a0a0a0a0a0a0ULL);
|
||||
|
||||
// zero
|
||||
EXPECT_EQ(uint256_t() & val, 0);
|
||||
}
|
||||
33
thirdparty/uint256_t/tests/testcases/assignment.cpp
vendored
Normal file
33
thirdparty/uint256_t/tests/testcases/assignment.cpp
vendored
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Assignment, all){
|
||||
const uint256_t t_1 = true;
|
||||
const uint256_t f_1 = false;
|
||||
const uint256_t u8_1 = 0x01;
|
||||
const uint256_t u16_1 = 0x0123;
|
||||
const uint256_t u32_1 = 0x01234567;
|
||||
const uint256_t u64_1 = 0x0123456789abcdef;
|
||||
|
||||
uint256_t t_2 = 0;
|
||||
uint256_t f_2 = 0;
|
||||
uint256_t u8_2 = 0;
|
||||
uint256_t u16_2 = 0;
|
||||
uint256_t u32_2 = 0;
|
||||
uint256_t u64_2 = 0;
|
||||
|
||||
t_2 = t_1;
|
||||
f_2 = f_1;
|
||||
u8_2 = u8_1;
|
||||
u16_2 = u16_1;
|
||||
u32_2 = u32_1;
|
||||
u64_2 = u64_1;
|
||||
|
||||
EXPECT_EQ(t_1, t_2);
|
||||
EXPECT_EQ(f_1, f_2);
|
||||
EXPECT_EQ(u8_1, u8_2);
|
||||
EXPECT_EQ(u16_1, u16_2);
|
||||
EXPECT_EQ(u32_1, u32_2);
|
||||
EXPECT_EQ(u64_1, u64_2);
|
||||
}
|
||||
76
thirdparty/uint256_t/tests/testcases/constructor.cpp
vendored
Normal file
76
thirdparty/uint256_t/tests/testcases/constructor.cpp
vendored
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
#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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
44
thirdparty/uint256_t/tests/testcases/div.cpp
vendored
Normal file
44
thirdparty/uint256_t/tests/testcases/div.cpp
vendored
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
#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));
|
||||
}
|
||||
24
thirdparty/uint256_t/tests/testcases/equals.cpp
vendored
Normal file
24
thirdparty/uint256_t/tests/testcases/equals.cpp
vendored
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Comparison, equals){
|
||||
EXPECT_EQ( (uint256_t(0xdeadbeefULL) == uint256_t(0xdeadbeefULL)), true);
|
||||
EXPECT_EQ(!(uint256_t(0xdeadbeefULL) == uint256_t(0xfee1baadULL)), true);
|
||||
}
|
||||
|
||||
TEST(External, equals){
|
||||
const bool t = true;
|
||||
const bool f = false;
|
||||
const uint8_t u8 = 0xaaULL;
|
||||
const uint16_t u16 = 0xaaaaULL;
|
||||
const uint32_t u32 = 0xaaaaaaaaULL;
|
||||
const uint64_t u64 = 0xaaaaaaaaaaaaaaaaULL;
|
||||
|
||||
EXPECT_EQ(t, uint256_t(t));
|
||||
EXPECT_EQ(f, uint256_t(f));
|
||||
EXPECT_EQ(u8, uint256_t(u8));
|
||||
EXPECT_EQ(u16, uint256_t(u16));
|
||||
EXPECT_EQ(u32, uint256_t(u32));
|
||||
EXPECT_EQ(u64, uint256_t(u64));
|
||||
}
|
||||
17
thirdparty/uint256_t/tests/testcases/fix.cpp
vendored
Normal file
17
thirdparty/uint256_t/tests/testcases/fix.cpp
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Arithmetic, increment){
|
||||
uint256_t value(0);
|
||||
EXPECT_EQ(++value, 1);
|
||||
EXPECT_EQ(value++, 1);
|
||||
EXPECT_EQ(++value, 3);
|
||||
}
|
||||
|
||||
TEST(Arithmetic, decrement){
|
||||
uint256_t value(0);
|
||||
EXPECT_EQ(--value, uint256_t(0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL));
|
||||
EXPECT_EQ(value--, uint256_t(0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL));
|
||||
EXPECT_EQ(--value, uint256_t(0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xfffffffffffffffdULL));
|
||||
}
|
||||
109
thirdparty/uint256_t/tests/testcases/functions.cpp
vendored
Normal file
109
thirdparty/uint256_t/tests/testcases/functions.cpp
vendored
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
#include <map>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
static const std::map <uint32_t, std::string> tests = {
|
||||
std::make_pair(2, "10000100000101011000010101101100"),
|
||||
std::make_pair(3, "12201102210121112101"),
|
||||
std::make_pair(4, "2010011120111230"),
|
||||
std::make_pair(5, "14014244043144"),
|
||||
std::make_pair(6, "1003520344444"),
|
||||
std::make_pair(7, "105625466632"),
|
||||
std::make_pair(8, "20405302554"),
|
||||
std::make_pair(9, "5642717471"),
|
||||
std::make_pair(10, "2216002924"),
|
||||
std::make_pair(11, "a3796a883"),
|
||||
std::make_pair(12, "51a175124"),
|
||||
std::make_pair(13, "294145645"),
|
||||
std::make_pair(14, "170445352"),
|
||||
std::make_pair(15, "ce82d6d4"),
|
||||
std::make_pair(16, "8415856c"),
|
||||
std::make_pair(17, "56dc4e33"),
|
||||
std::make_pair(18, "3b2db13a"),
|
||||
std::make_pair(19, "291i3b4g"),
|
||||
std::make_pair(20, "1eca0764"),
|
||||
std::make_pair(21, "14hc96jg"),
|
||||
std::make_pair(22, "jblga9e"),
|
||||
std::make_pair(23, "em6i5a5"),
|
||||
std::make_pair(24, "be75374"),
|
||||
std::make_pair(25, "91mo4go"),
|
||||
std::make_pair(26, "74d74li"),
|
||||
std::make_pair(27, "5jblgea"),
|
||||
std::make_pair(28, "4gl7i9g"),
|
||||
std::make_pair(29, "3l13lor"),
|
||||
std::make_pair(30, "315o5e4"),
|
||||
std::make_pair(31, "2fcfub9"),
|
||||
std::make_pair(32, "221b1bc"),
|
||||
std::make_pair(33, "1nkji2p"),
|
||||
std::make_pair(34, "1eq93ik"),
|
||||
std::make_pair(35, "176p6y9"),
|
||||
std::make_pair(36, "10ncmss")
|
||||
// std::make_pair(256, "uint256_t"),
|
||||
};
|
||||
|
||||
TEST(Function, str){
|
||||
// number of leading 0s
|
||||
const std::string::size_type leading = 5;
|
||||
|
||||
// make sure all of the test strings create the ASCII version of the string
|
||||
const uint256_t original(2216002924);
|
||||
for(std::pair <uint32_t const, std::string> t : tests){
|
||||
EXPECT_EQ(original.str(t.first), t.second);
|
||||
}
|
||||
|
||||
// add leading zeros
|
||||
for(uint32_t base = 2; base <= 36; base++){
|
||||
EXPECT_EQ(original.str(base, tests.at(base).size() + leading), std::string(leading, '0') + tests.at(base));
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Function, export_bits){
|
||||
const uint64_t u64 = 0x0123456789abcdefULL;
|
||||
const uint256_t value = u64;
|
||||
|
||||
EXPECT_EQ(value, u64);
|
||||
|
||||
const std::vector<uint8_t> full = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef
|
||||
};
|
||||
|
||||
EXPECT_EQ(value.export_bits(), full);
|
||||
}
|
||||
|
||||
TEST(Function, export_bits_truncated){
|
||||
const uint64_t u64 = 0x0123456789abcdefULL;
|
||||
const uint256_t value = u64;
|
||||
|
||||
EXPECT_EQ(value, u64);
|
||||
|
||||
const std::vector<uint8_t> truncated = {
|
||||
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef
|
||||
};
|
||||
|
||||
EXPECT_EQ(value.export_bits_truncate(), truncated);
|
||||
}
|
||||
|
||||
TEST(External, ostream){
|
||||
const uint256_t value(0xfedcba9876543210ULL);
|
||||
|
||||
// write out octal uint256_t
|
||||
std::stringstream oct; oct << std::oct << value;
|
||||
EXPECT_EQ(oct.str(), "1773345651416625031020");
|
||||
|
||||
// write out decimal uint256_t
|
||||
std::stringstream dec; dec << std::dec << value;
|
||||
EXPECT_EQ(dec.str(), "18364758544493064720");
|
||||
|
||||
// write out hexadecimal uint256_t
|
||||
std::stringstream hex; hex << std::hex << value;
|
||||
EXPECT_EQ(hex.str(), "fedcba9876543210");
|
||||
|
||||
// zero
|
||||
std::stringstream zero; zero << uint256_t();
|
||||
EXPECT_EQ(zero.str(), "0");
|
||||
}
|
||||
64
thirdparty/uint256_t/tests/testcases/gt.cpp
vendored
Normal file
64
thirdparty/uint256_t/tests/testcases/gt.cpp
vendored
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Comparison, greater_than){
|
||||
const uint256_t big (0xffffffffffffffffULL, 0xffffffffffffffffULL);
|
||||
const uint256_t small(0x0000000000000000ULL, 0x0000000000000000ULL);
|
||||
|
||||
EXPECT_EQ(small > small, false);
|
||||
EXPECT_EQ(small > big, false);
|
||||
|
||||
EXPECT_EQ(big > small, true);
|
||||
EXPECT_EQ(big > big, false);
|
||||
}
|
||||
|
||||
#define unsigned_compare_gt(Z) \
|
||||
do \
|
||||
{ \
|
||||
static_assert(std::is_unsigned <Z>::value, "Type must be signed"); \
|
||||
\
|
||||
const Z small = std::numeric_limits <Z>::min(); \
|
||||
const Z big = std::numeric_limits <Z>::max(); \
|
||||
\
|
||||
const uint256_t int_small(small); \
|
||||
const uint256_t int_big(big); \
|
||||
\
|
||||
EXPECT_EQ(small > int_small, false); \
|
||||
EXPECT_EQ(small > int_big, false); \
|
||||
\
|
||||
EXPECT_EQ(big > int_small, true); \
|
||||
EXPECT_EQ(big > int_big, false); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#define signed_compare_gt(Z) \
|
||||
do \
|
||||
{ \
|
||||
static_assert(std::is_signed <Z>::value, "Type must be signed"); \
|
||||
\
|
||||
const Z small = 1; \
|
||||
const Z big = std::numeric_limits <Z>::max(); \
|
||||
\
|
||||
const uint256_t int_small(small); \
|
||||
const uint256_t int_big(big); \
|
||||
\
|
||||
EXPECT_EQ(small > int_small, false); \
|
||||
EXPECT_EQ(small > int_big, false); \
|
||||
\
|
||||
EXPECT_EQ(big > int_small, true); \
|
||||
EXPECT_EQ(big > int_big, false); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
TEST(External, greater_than){
|
||||
unsigned_compare_gt(bool);
|
||||
unsigned_compare_gt(uint8_t);
|
||||
unsigned_compare_gt(uint16_t);
|
||||
unsigned_compare_gt(uint32_t);
|
||||
unsigned_compare_gt(uint64_t);
|
||||
signed_compare_gt(int8_t);
|
||||
signed_compare_gt(int16_t);
|
||||
signed_compare_gt(int32_t);
|
||||
signed_compare_gt(int64_t);
|
||||
}
|
||||
64
thirdparty/uint256_t/tests/testcases/gte.cpp
vendored
Normal file
64
thirdparty/uint256_t/tests/testcases/gte.cpp
vendored
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Comparison, greater_than_or_equals){
|
||||
const uint256_t big (0xffffffffffffffffULL, 0xffffffffffffffffULL);
|
||||
const uint256_t small(0x0000000000000000ULL, 0x0000000000000000ULL);
|
||||
|
||||
EXPECT_EQ(small >= small, true);
|
||||
EXPECT_EQ(small >= big, false);
|
||||
|
||||
EXPECT_EQ(big >= small, true);
|
||||
EXPECT_EQ(big >= big, true);
|
||||
}
|
||||
|
||||
#define unsigned_compare_gte(Z) \
|
||||
do \
|
||||
{ \
|
||||
static_assert(std::is_unsigned <Z>::value, "Type must be signed"); \
|
||||
\
|
||||
const Z small = std::numeric_limits <Z>::min(); \
|
||||
const Z big = std::numeric_limits <Z>::max(); \
|
||||
\
|
||||
const uint256_t int_small(small); \
|
||||
const uint256_t int_big(big); \
|
||||
\
|
||||
EXPECT_EQ(small >= int_small, true); \
|
||||
EXPECT_EQ(small >= int_big, false); \
|
||||
\
|
||||
EXPECT_EQ(big >= int_small, true); \
|
||||
EXPECT_EQ(big >= int_big, true); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#define signed_compare_gte(Z) \
|
||||
do \
|
||||
{ \
|
||||
static_assert(std::is_signed <Z>::value, "Type must be signed"); \
|
||||
\
|
||||
const Z small = 1; \
|
||||
const Z big = std::numeric_limits <Z>::max(); \
|
||||
\
|
||||
const uint256_t int_small(small); \
|
||||
const uint256_t int_big(big); \
|
||||
\
|
||||
EXPECT_EQ(small >= int_small, true) ; \
|
||||
EXPECT_EQ(small >= int_big, false); \
|
||||
\
|
||||
EXPECT_EQ(big >= int_small, true); \
|
||||
EXPECT_EQ(big >= int_big, true); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
TEST(External, greater_than_or_equals){
|
||||
unsigned_compare_gte(bool);
|
||||
unsigned_compare_gte(uint8_t);
|
||||
unsigned_compare_gte(uint16_t);
|
||||
unsigned_compare_gte(uint32_t);
|
||||
unsigned_compare_gte(uint64_t);
|
||||
signed_compare_gte(int8_t);
|
||||
signed_compare_gte(int16_t);
|
||||
signed_compare_gte(int32_t);
|
||||
signed_compare_gte(int64_t);
|
||||
}
|
||||
23
thirdparty/uint256_t/tests/testcases/invert.cpp
vendored
Normal file
23
thirdparty/uint256_t/tests/testcases/invert.cpp
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(BitWise, invert){
|
||||
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 = ~uint256_t(hi_hi?0xffffffffffffffffULL:0x0000000000000000ULL,
|
||||
hi_lo?0xffffffffffffffffULL:0x0000000000000000ULL,
|
||||
lo_hi?0xffffffffffffffffULL:0x0000000000000000ULL,
|
||||
lo_lo?0xffffffffffffffffULL:0x0000000000000000ULL);
|
||||
|
||||
EXPECT_EQ(val.upper().upper(), hi_hi?0x0000000000000000ULL:0xffffffffffffffffULL);
|
||||
EXPECT_EQ(val.upper().lower(), hi_lo?0x0000000000000000ULL:0xffffffffffffffffULL);
|
||||
EXPECT_EQ(val.lower().upper(), lo_hi?0x0000000000000000ULL:0xffffffffffffffffULL);
|
||||
EXPECT_EQ(val.lower().lower(), lo_lo?0x0000000000000000ULL:0xffffffffffffffffULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
83
thirdparty/uint256_t/tests/testcases/leftshift.cpp
vendored
Normal file
83
thirdparty/uint256_t/tests/testcases/leftshift.cpp
vendored
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(BitShift, left){
|
||||
// operator<<
|
||||
uint256_t val(0x1);
|
||||
uint64_t exp_val = 1;
|
||||
for(uint8_t i = 0; i < 64; i++){
|
||||
EXPECT_EQ(val << i, exp_val << i);
|
||||
}
|
||||
|
||||
uint256_t zero(0);
|
||||
for(uint8_t i = 0; i < 64; i++){
|
||||
EXPECT_EQ(zero << i, 0);
|
||||
}
|
||||
|
||||
// operator<<=
|
||||
for(uint8_t i = 0; i < 63; i++){ // 1 is already a bit
|
||||
EXPECT_EQ(val <<= 1, exp_val <<= 1);
|
||||
}
|
||||
|
||||
for(uint8_t i = 0; i < 63; i++){
|
||||
EXPECT_EQ(zero <<= 1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(External, shift_left){
|
||||
bool t = true;
|
||||
bool f = false;
|
||||
uint8_t u8 = 0xffULL;
|
||||
uint16_t u16 = 0xffffULL;
|
||||
uint32_t u32 = 0xffffffffULL;
|
||||
uint64_t u64 = 0xffffffffffffffffULL;
|
||||
uint128_t u128 (0xffffffffffffffffULL, 0xffffffffffffffffULL);
|
||||
|
||||
const uint256_t zero(0);
|
||||
const uint256_t one(1);
|
||||
|
||||
EXPECT_EQ(t << zero, t);
|
||||
EXPECT_EQ(f << zero, f);
|
||||
EXPECT_EQ(u8 << zero, u8);
|
||||
EXPECT_EQ(u16 << zero, u16);
|
||||
EXPECT_EQ(u32 << zero, u32);
|
||||
EXPECT_EQ(u64 << zero, u64);
|
||||
EXPECT_EQ(u128 << zero, u128);
|
||||
|
||||
EXPECT_EQ(t <<= zero, t);
|
||||
EXPECT_EQ(f <<= zero, f);
|
||||
EXPECT_EQ(u8 <<= zero, u8);
|
||||
EXPECT_EQ(u16 <<= zero, u16);
|
||||
EXPECT_EQ(u32 <<= zero, u32);
|
||||
EXPECT_EQ(u64 <<= zero, u64);
|
||||
EXPECT_EQ(u128 <<= zero, u128);
|
||||
|
||||
EXPECT_EQ(t << one, uint256_t(t) << 1);
|
||||
EXPECT_EQ(f << one, uint256_t(f) << 1);
|
||||
EXPECT_EQ(u8 << one, uint256_t(u8) << 1);
|
||||
EXPECT_EQ(u16 << one, uint256_t(u16) << 1);
|
||||
EXPECT_EQ(u32 << one, uint256_t(u32) << 1);
|
||||
EXPECT_EQ(u64 << one, uint256_t(u64) << 1);
|
||||
EXPECT_EQ(u128 << one, uint256_t(u128) << 1);
|
||||
|
||||
EXPECT_EQ(t <<= one, true);
|
||||
EXPECT_EQ(f <<= one, false);
|
||||
EXPECT_EQ(u8 <<= one, (uint8_t) 0xfeULL);
|
||||
EXPECT_EQ(u16 <<= one, (uint16_t) 0xfffeULL);
|
||||
EXPECT_EQ(u32 <<= one, (uint32_t) 0xfffffffeULL);
|
||||
EXPECT_EQ(u64 <<= one, (uint64_t) 0xfffffffffffffffeULL);
|
||||
EXPECT_EQ(u128 <<= one, uint128_t (0xffffffffffffffffULL, 0xfffffffffffffffeULL));
|
||||
|
||||
EXPECT_EQ(u8 << uint256_t(7), uint256_t(0x7f00ULL));
|
||||
EXPECT_EQ(u16 << uint256_t(15), uint256_t(0x7fff0000ULL));
|
||||
EXPECT_EQ(u32 << uint256_t(31), uint256_t(0x7fffffff00000000ULL));
|
||||
EXPECT_EQ(u64 << uint256_t(63), uint256_t(0x0000000000000000ULL, 0x0000000000000000ULL, 0x7fffffffffffffffULL, 0x0000000000000000ULL));
|
||||
EXPECT_EQ(u128 << uint256_t(127), uint256_t(0x7fffffffffffffffULL, 0xffffffffffffffffULL, 0x0000000000000000ULL, 0x0000000000000000ULL));
|
||||
|
||||
EXPECT_EQ(u8 <<= uint256_t(7), (uint8_t) 0);
|
||||
EXPECT_EQ(u16 <<= uint256_t(15), (uint16_t) 0);
|
||||
EXPECT_EQ(u32 <<= uint256_t(31), (uint32_t) 0);
|
||||
EXPECT_EQ(u64 <<= uint256_t(63), (uint64_t) 0);
|
||||
EXPECT_EQ(u128 <<= uint256_t(127), (uint128_t) 0);
|
||||
}
|
||||
23
thirdparty/uint256_t/tests/testcases/logical.cpp
vendored
Normal file
23
thirdparty/uint256_t/tests/testcases/logical.cpp
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Logical, and){
|
||||
const uint256_t A(0xffffffff);
|
||||
const uint256_t B(0x00000000);
|
||||
|
||||
EXPECT_EQ(A && A, true);
|
||||
EXPECT_EQ(A && B, false);
|
||||
}
|
||||
|
||||
TEST(Logical, or){
|
||||
const uint256_t A(0xffffffff);
|
||||
const uint256_t B(0x00000000);
|
||||
|
||||
EXPECT_EQ(A || A, true);
|
||||
EXPECT_EQ(A || B, true);
|
||||
}
|
||||
|
||||
TEST(Logical, not){
|
||||
EXPECT_EQ(!uint256_t(0xffffffff), 0);
|
||||
}
|
||||
64
thirdparty/uint256_t/tests/testcases/lt.cpp
vendored
Normal file
64
thirdparty/uint256_t/tests/testcases/lt.cpp
vendored
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Comparison, less_than){
|
||||
const uint256_t big (0xffffffffffffffffULL, 0xffffffffffffffffULL);
|
||||
const uint256_t small(0x0000000000000000ULL, 0x0000000000000000ULL);
|
||||
|
||||
EXPECT_EQ(small < small, false);
|
||||
EXPECT_EQ(small < big, true);
|
||||
|
||||
EXPECT_EQ(big < small, false);
|
||||
EXPECT_EQ(big < big, false);
|
||||
}
|
||||
|
||||
#define unsigned_compare_lt(Z) \
|
||||
do \
|
||||
{ \
|
||||
static_assert(std::is_unsigned <Z>::value, "Type must be signed"); \
|
||||
\
|
||||
const Z small = std::numeric_limits <Z>::min(); \
|
||||
const Z big = std::numeric_limits <Z>::max(); \
|
||||
\
|
||||
const uint256_t int_small(small); \
|
||||
const uint256_t int_big(big); \
|
||||
\
|
||||
EXPECT_EQ(small < int_small, false); \
|
||||
EXPECT_EQ(small < int_big, true); \
|
||||
\
|
||||
EXPECT_EQ(big < int_small, false); \
|
||||
EXPECT_EQ(big < int_big, false); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#define signed_compare_lt(Z) \
|
||||
do \
|
||||
{ \
|
||||
static_assert(std::is_signed <Z>::value, "Type must be signed"); \
|
||||
\
|
||||
const Z small = 1; \
|
||||
const Z big = std::numeric_limits <Z>::max(); \
|
||||
\
|
||||
const uint256_t int_small(small); \
|
||||
const uint256_t int_big(big); \
|
||||
\
|
||||
EXPECT_EQ(small < int_small, false); \
|
||||
EXPECT_EQ(small < int_big, true); \
|
||||
\
|
||||
EXPECT_EQ(big < int_small, false); \
|
||||
EXPECT_EQ(big < int_big, false); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
TEST(External, less_than){
|
||||
unsigned_compare_lt(bool);
|
||||
unsigned_compare_lt(uint8_t);
|
||||
unsigned_compare_lt(uint16_t);
|
||||
unsigned_compare_lt(uint32_t);
|
||||
unsigned_compare_lt(uint64_t);
|
||||
signed_compare_lt(int8_t);
|
||||
signed_compare_lt(int16_t);
|
||||
signed_compare_lt(int32_t);
|
||||
signed_compare_lt(int64_t);
|
||||
}
|
||||
64
thirdparty/uint256_t/tests/testcases/lte.cpp
vendored
Normal file
64
thirdparty/uint256_t/tests/testcases/lte.cpp
vendored
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Comparison, less_than_or_equals){
|
||||
const uint256_t big (0xffffffffffffffffULL, 0xffffffffffffffffULL);
|
||||
const uint256_t small(0x0000000000000000ULL, 0x0000000000000000ULL);
|
||||
|
||||
EXPECT_EQ(small <= small, true);
|
||||
EXPECT_EQ(small <= big, true);
|
||||
|
||||
EXPECT_EQ(big <= small, false);
|
||||
EXPECT_EQ(big <= big, true);
|
||||
}
|
||||
|
||||
#define unsigned_compare_lte(Z) \
|
||||
do \
|
||||
{ \
|
||||
static_assert(std::is_unsigned <Z>::value, "Type must be signed"); \
|
||||
\
|
||||
const Z small = std::numeric_limits <Z>::min(); \
|
||||
const Z big = std::numeric_limits <Z>::max(); \
|
||||
\
|
||||
const uint256_t int_small(small); \
|
||||
const uint256_t int_big(big); \
|
||||
\
|
||||
EXPECT_EQ(small <= int_small, true); \
|
||||
EXPECT_EQ(small <= int_big, true); \
|
||||
\
|
||||
EXPECT_EQ(big <= int_small, false); \
|
||||
EXPECT_EQ(big <= int_big, true); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#define signed_compare_lte(Z) \
|
||||
do \
|
||||
{ \
|
||||
static_assert(std::is_signed <Z>::value, "Type must be signed"); \
|
||||
\
|
||||
const Z small = 1; \
|
||||
const Z big = std::numeric_limits <Z>::max(); \
|
||||
\
|
||||
const uint256_t int_small(small); \
|
||||
const uint256_t int_big(big); \
|
||||
\
|
||||
EXPECT_EQ(small <= int_small, true); \
|
||||
EXPECT_EQ(small <= int_big, true); \
|
||||
\
|
||||
EXPECT_EQ(big <= int_small, false); \
|
||||
EXPECT_EQ(big <= int_big, true); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
TEST(External, less_than_or_equals){
|
||||
unsigned_compare_lte(bool);
|
||||
unsigned_compare_lte(uint8_t);
|
||||
unsigned_compare_lte(uint16_t);
|
||||
unsigned_compare_lte(uint32_t);
|
||||
unsigned_compare_lte(uint64_t);
|
||||
signed_compare_lte(int8_t);
|
||||
signed_compare_lte(int16_t);
|
||||
signed_compare_lte(int32_t);
|
||||
signed_compare_lte(int64_t);
|
||||
}
|
||||
46
thirdparty/uint256_t/tests/testcases/mod.cpp
vendored
Normal file
46
thirdparty/uint256_t/tests/testcases/mod.cpp
vendored
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Arithmetic, modulo){
|
||||
// has remainder
|
||||
const uint256_t val (0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL);
|
||||
const uint256_t val_mod(0xfedcba9876543210ULL);
|
||||
|
||||
EXPECT_EQ(val % val_mod, uint256_t(0x63794f9d55c8d29f));
|
||||
|
||||
// no remainder
|
||||
const uint256_t val_0 (0xfedcba9876543210, 0, 0, 0);
|
||||
EXPECT_EQ(val_0 % val_mod, 0);
|
||||
|
||||
// mod 0
|
||||
EXPECT_THROW(uint256_t(1) % uint256_t(0), std::domain_error);
|
||||
}
|
||||
|
||||
TEST(External, modulo){
|
||||
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(0xd03ULL); // prime
|
||||
|
||||
EXPECT_EQ(t % val, true);
|
||||
EXPECT_EQ(f % val, false);
|
||||
EXPECT_EQ(u8 % val, uint256_t(0xaaULL));
|
||||
EXPECT_EQ(u16 % val, uint256_t(0x183ULL));
|
||||
EXPECT_EQ(u32 % val, uint256_t(0x249ULL));
|
||||
EXPECT_EQ(u64 % val, uint256_t(0xc7fULL));
|
||||
EXPECT_EQ(u128 % val, uint256_t(0x9fbULL));
|
||||
|
||||
EXPECT_EQ(t %= val, true);
|
||||
EXPECT_EQ(f %= val, false);
|
||||
EXPECT_EQ(u8 %= val, (uint8_t) 0xaaULL);
|
||||
EXPECT_EQ(u16 %= val, (uint16_t) 0x183ULL);
|
||||
EXPECT_EQ(u32 %= val, (uint32_t) 0x249ULL);
|
||||
EXPECT_EQ(u64 %= val, (uint64_t) 0xc7fULL);
|
||||
EXPECT_EQ(u128 %= val, (uint256_t) 0x9fbULL);
|
||||
}
|
||||
45
thirdparty/uint256_t/tests/testcases/mult.cpp
vendored
Normal file
45
thirdparty/uint256_t/tests/testcases/mult.cpp
vendored
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Arithmetic, multiply){
|
||||
uint256_t val(0xfedbca9876543210ULL);
|
||||
|
||||
EXPECT_EQ(val * val, uint256_t(0x0000000000000000ULL, 0x0000000000000000ULL, 0xfdb8e2bacbfe7cefULL, 0x010e6cd7a44a4100ULL));
|
||||
|
||||
const uint256_t zero = 0;
|
||||
EXPECT_EQ(val * zero, zero);
|
||||
EXPECT_EQ(zero * val, zero);
|
||||
|
||||
const uint256_t one = 1;
|
||||
EXPECT_EQ(val * one, val);
|
||||
EXPECT_EQ(one * val, val);
|
||||
}
|
||||
|
||||
TEST(External, multiply){
|
||||
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(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL);
|
||||
|
||||
EXPECT_EQ(t * val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL));
|
||||
EXPECT_EQ(f * val, uint256_t(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL));
|
||||
EXPECT_EQ(u8 * val, uint256_t(0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffff60ULL));
|
||||
EXPECT_EQ(u16 * val, uint256_t(0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffff5f60ULL));
|
||||
EXPECT_EQ(u32 * val, uint256_t(0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffff5f5f5f60ULL));
|
||||
EXPECT_EQ(u64 * val, uint256_t(0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0x5f5f5f5f5f5f5f60ULL));
|
||||
EXPECT_EQ(u128 * val, uint256_t(0xffffffffffffffffULL, 0xffffffffffffffffULL, 0x5f5f5f5f5f5f5f5fULL, 0x5f5f5f5f5f5f5f60ULL));
|
||||
|
||||
EXPECT_EQ(t *= val, true);
|
||||
EXPECT_EQ(f *= val, false);
|
||||
EXPECT_EQ(u8 *= val, (uint8_t) 0x60ULL);
|
||||
EXPECT_EQ(u16 *= val, (uint16_t) 0x5f60ULL);
|
||||
EXPECT_EQ(u32 *= val, (uint32_t) 0x5f5f5f60ULL);
|
||||
EXPECT_EQ(u64 *= val, (uint64_t) 0x5f5f5f5f5f5f5f60ULL);
|
||||
EXPECT_EQ(u128 *= val, uint128_t(0x5f5f5f5f5f5f5f5fULL, 0x5f5f5f5f5f5f5f60ULL));
|
||||
}
|
||||
31
thirdparty/uint256_t/tests/testcases/notequals.cpp
vendored
Normal file
31
thirdparty/uint256_t/tests/testcases/notequals.cpp
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Comparison, not_equals){
|
||||
EXPECT_EQ(!(uint256_t(0xdeadbeefULL) != uint256_t(0xdeadbeefULL)), true);
|
||||
EXPECT_EQ( (uint256_t(0xdeadbeefULL) != uint256_t(0xfee1baadULL)), true);
|
||||
}
|
||||
|
||||
TEST(External, not_equals){
|
||||
const bool t = true;
|
||||
const bool f = false;
|
||||
const uint8_t u8 = 0xaaULL;
|
||||
const uint16_t u16 = 0xaaaaULL;
|
||||
const uint32_t u32 = 0xaaaaaaaaULL;
|
||||
const uint64_t u64 = 0xaaaaaaaaaaaaaaaaULL;
|
||||
|
||||
EXPECT_EQ((t != uint256_t(f)), true);
|
||||
EXPECT_EQ((f != uint256_t(t)), true);
|
||||
EXPECT_EQ((u8 != uint256_t(u64)), true);
|
||||
EXPECT_EQ((u16 != uint256_t(u32)), true);
|
||||
EXPECT_EQ((u32 != uint256_t(u16)), true);
|
||||
EXPECT_EQ((u64 != uint256_t(u8)), true);
|
||||
|
||||
EXPECT_EQ((t != uint256_t(t)), false);
|
||||
EXPECT_EQ((f != uint256_t(f)), false);
|
||||
EXPECT_EQ((u8 != uint256_t(u8)), false);
|
||||
EXPECT_EQ((u16 != uint256_t(u16)), false);
|
||||
EXPECT_EQ((u32 != uint256_t(u32)), false);
|
||||
EXPECT_EQ((u64 != uint256_t(u64)), false);
|
||||
}
|
||||
59
thirdparty/uint256_t/tests/testcases/or.cpp
vendored
Normal file
59
thirdparty/uint256_t/tests/testcases/or.cpp
vendored
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(BitWise, or){
|
||||
uint256_t t ((bool) true);
|
||||
uint256_t f ((bool) false);
|
||||
uint256_t u8 ((uint8_t) 0xaaULL);
|
||||
uint256_t u16((uint16_t) 0xaaaaULL);
|
||||
uint256_t u32((uint32_t) 0xaaaaaaaaULL);
|
||||
uint256_t u64((uint64_t) 0xaaaaaaaaaaaaaaaaULL);
|
||||
|
||||
const uint256_t val(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL);
|
||||
|
||||
EXPECT_EQ(t | val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f1ULL));
|
||||
EXPECT_EQ(f | val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL));
|
||||
EXPECT_EQ(u8 | val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0faULL));
|
||||
EXPECT_EQ(u16 | val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0fafaULL));
|
||||
EXPECT_EQ(u32 | val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0fafafafaULL));
|
||||
EXPECT_EQ(u64 | val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xfafafafafafafafaULL));
|
||||
|
||||
EXPECT_EQ(t |= val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f1ULL));
|
||||
EXPECT_EQ(f |= val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL));
|
||||
EXPECT_EQ(u8 |= val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0faULL));
|
||||
EXPECT_EQ(u16 |= val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0fafaULL));
|
||||
EXPECT_EQ(u32 |= val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0fafafafaULL));
|
||||
EXPECT_EQ(u64 |= val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xfafafafafafafafaULL));
|
||||
|
||||
// zero
|
||||
EXPECT_EQ(uint256_t() | val, val);
|
||||
}
|
||||
|
||||
TEST(External, or){
|
||||
bool t = true;
|
||||
bool f = false;
|
||||
uint8_t u8 = 0xaa;
|
||||
uint16_t u16 = 0xaaaa;
|
||||
uint32_t u32 = 0xaaaaaaaaULL;
|
||||
uint64_t u64 = 0xaaaaaaaaaaaaaaaaULL;
|
||||
|
||||
const uint256_t val(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL);
|
||||
|
||||
EXPECT_EQ(t | val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f1ULL));
|
||||
EXPECT_EQ(f | val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL));
|
||||
EXPECT_EQ(u8 | val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0faULL));
|
||||
EXPECT_EQ(u16 | val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0fafaULL));
|
||||
EXPECT_EQ(u32 | val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0fafafafaULL));
|
||||
EXPECT_EQ(u64 | val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xfafafafafafafafaULL));
|
||||
|
||||
EXPECT_EQ(t |= val, true);
|
||||
EXPECT_EQ(f |= val, true);
|
||||
EXPECT_EQ(u8 |= val, (uint8_t) 0xfaULL);
|
||||
EXPECT_EQ(u16 |= val, (uint16_t) 0xfafaULL);
|
||||
EXPECT_EQ(u32 |= val, (uint32_t) 0xfafafafaULL);
|
||||
EXPECT_EQ(u64 |= val, (uint64_t) 0xfafafafafafafafaULL);
|
||||
|
||||
// zero
|
||||
EXPECT_EQ(uint256_t() | val, val);
|
||||
}
|
||||
76
thirdparty/uint256_t/tests/testcases/rightshift.cpp
vendored
Normal file
76
thirdparty/uint256_t/tests/testcases/rightshift.cpp
vendored
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(BitShift, right){
|
||||
// operator>>
|
||||
uint256_t val(0xffffffffffffffffULL);
|
||||
uint64_t exp = 0xffffffffffffffffULL;
|
||||
for(uint8_t i = 0; i < 64; i++){
|
||||
EXPECT_EQ(val >> i, exp >> i);
|
||||
}
|
||||
|
||||
uint256_t zero(0);
|
||||
for(uint8_t i = 0; i < 64; i++){
|
||||
EXPECT_EQ(zero >> i, 0);
|
||||
}
|
||||
|
||||
// operator>>=
|
||||
for(uint8_t i = 0; i < 64; i++){
|
||||
EXPECT_EQ(val >>= 1, exp >>= 1);
|
||||
}
|
||||
|
||||
for(uint8_t i = 0; i < 64; i++){
|
||||
EXPECT_EQ(zero >>= 1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(External, shift_right){
|
||||
bool t = true;
|
||||
bool f = false;
|
||||
uint8_t u8 = 0xffULL;
|
||||
uint16_t u16 = 0xffffULL;
|
||||
uint32_t u32 = 0xffffffffULL;
|
||||
uint64_t u64 = 0xffffffffffffffffULL;
|
||||
|
||||
const uint256_t zero(0);
|
||||
const uint256_t one(1);
|
||||
|
||||
EXPECT_EQ(t >> zero, one);
|
||||
EXPECT_EQ(f >> zero, zero);
|
||||
EXPECT_EQ(u8 >> zero, u8);
|
||||
EXPECT_EQ(u16 >> zero, u16);
|
||||
EXPECT_EQ(u32 >> zero, u32);
|
||||
EXPECT_EQ(u64 >> zero, u64);
|
||||
|
||||
EXPECT_EQ(t >>= zero, t);
|
||||
EXPECT_EQ(f >>= zero, f);
|
||||
EXPECT_EQ(u8 >>= zero, u8);
|
||||
EXPECT_EQ(u16 >>= zero, u16);
|
||||
EXPECT_EQ(u32 >>= zero, u32);
|
||||
EXPECT_EQ(u64 >>= zero, u64);
|
||||
|
||||
EXPECT_EQ(t >> one, uint256_t(t) >> 1);
|
||||
EXPECT_EQ(f >> one, uint256_t(f) >> 1);
|
||||
EXPECT_EQ(u8 >> one, uint256_t(u8) >> 1);
|
||||
EXPECT_EQ(u16 >> one, uint256_t(u16) >> 1);
|
||||
EXPECT_EQ(u32 >> one, uint256_t(u32) >> 1);
|
||||
EXPECT_EQ(u64 >> one, uint256_t(u64) >> 1);
|
||||
|
||||
EXPECT_EQ(t >>= one, false);
|
||||
EXPECT_EQ(f >>= one, false);
|
||||
EXPECT_EQ(u8 >>= one, (uint8_t) 0x7fULL);
|
||||
EXPECT_EQ(u16 >>= one, (uint16_t) 0x7fffULL);
|
||||
EXPECT_EQ(u32 >>= one, (uint32_t) 0x7fffffffULL);
|
||||
EXPECT_EQ(u64 >>= one, (uint64_t) 0x7fffffffffffffffULL);
|
||||
|
||||
EXPECT_EQ(u8 >> uint256_t(7), zero);
|
||||
EXPECT_EQ(u16 >> uint256_t(15), zero);
|
||||
EXPECT_EQ(u32 >> uint256_t(31), zero);
|
||||
EXPECT_EQ(u64 >> uint256_t(63), zero);
|
||||
|
||||
EXPECT_EQ(u8 >>= uint256_t(7), (uint8_t) 0);
|
||||
EXPECT_EQ(u16 >>= uint256_t(15), (uint16_t) 0);
|
||||
EXPECT_EQ(u32 >>= uint256_t(31), (uint32_t) 0);
|
||||
EXPECT_EQ(u64 >>= uint256_t(63), (uint64_t) 0);
|
||||
}
|
||||
41
thirdparty/uint256_t/tests/testcases/sub.cpp
vendored
Normal file
41
thirdparty/uint256_t/tests/testcases/sub.cpp
vendored
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Arithmetic, subtract){
|
||||
uint256_t big (0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL);
|
||||
const uint256_t small(0x0000000000000000ULL, 0x0000000000000001ULL);
|
||||
|
||||
EXPECT_EQ(small - small, 0);
|
||||
EXPECT_EQ(small - big, uint256_t(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000002ULL));
|
||||
EXPECT_EQ(big - small, uint256_t(0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xfffffffffffffffeULL));
|
||||
EXPECT_EQ(big - big, 0);
|
||||
}
|
||||
|
||||
TEST(External, subtract){
|
||||
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(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL);
|
||||
|
||||
EXPECT_EQ(t - val, uint256_t(0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f11ULL));
|
||||
EXPECT_EQ(f - val, uint256_t(0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f10ULL));
|
||||
EXPECT_EQ(u8 - val, uint256_t(0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0fbaULL));
|
||||
EXPECT_EQ(u16 - val, uint256_t(0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0fb9baULL));
|
||||
EXPECT_EQ(u32 - val, uint256_t(0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0fb9b9b9baULL));
|
||||
EXPECT_EQ(u64 - val, uint256_t(0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL, 0xb9b9b9b9b9b9b9baULL));
|
||||
EXPECT_EQ(u128 - val, uint256_t(0x0f0f0f0f0f0f0f0fULL, 0x0f0f0f0f0f0f0f0fULL, 0xb9b9b9b9b9b9b9b9ULL, 0xb9b9b9b9b9b9b9baULL));
|
||||
|
||||
EXPECT_EQ(t -= val, true);
|
||||
EXPECT_EQ(f -= val, true);
|
||||
EXPECT_EQ(u8 -= val, (uint8_t) 0xbaULL);
|
||||
EXPECT_EQ(u16 -= val, (uint16_t) 0xb9baULL);
|
||||
EXPECT_EQ(u32 -= val, (uint32_t) 0xb9b9b9baULL);
|
||||
EXPECT_EQ(u64 -= val, (uint64_t) 0xb9b9b9b9b9b9b9baULL);
|
||||
EXPECT_EQ(u128 -= val, uint128_t(0xb9b9b9b9b9b9b9b9ULL, 0xb9b9b9b9b9b9b9baULL));
|
||||
}
|
||||
17
thirdparty/uint256_t/tests/testcases/type_traits.cpp
vendored
Normal file
17
thirdparty/uint256_t/tests/testcases/type_traits.cpp
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#include <type_traits>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Type_Traits, is_arithmetic){
|
||||
EXPECT_EQ(std::is_arithmetic <uint256_t>::value, true);
|
||||
}
|
||||
|
||||
TEST(Type_Traits, is_integral){
|
||||
EXPECT_EQ(std::is_integral <uint256_t>::value, true);
|
||||
}
|
||||
|
||||
TEST(Type_Traits, is_unsigned){
|
||||
EXPECT_EQ(std::is_unsigned <uint256_t>::value, true);
|
||||
}
|
||||
14
thirdparty/uint256_t/tests/testcases/typecast.cpp
vendored
Normal file
14
thirdparty/uint256_t/tests/testcases/typecast.cpp
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Typecast, all){
|
||||
const uint256_t val(0xaaaaaaaaaaaaaaaaULL, 0xaaaaaaaaaaaaaaaaULL);
|
||||
|
||||
EXPECT_EQ(static_cast <bool> (uint256_t(true)), true);
|
||||
EXPECT_EQ(static_cast <bool> (uint256_t(false)), false);
|
||||
EXPECT_EQ(static_cast <uint8_t> (val), (uint8_t) 0xaaULL);
|
||||
EXPECT_EQ(static_cast <uint16_t> (val), (uint16_t) 0xaaaaULL);
|
||||
EXPECT_EQ(static_cast <uint32_t> (val), (uint32_t) 0xaaaaaaaaULL);
|
||||
EXPECT_EQ(static_cast <uint64_t> (val), (uint64_t) 0xaaaaaaaaaaaaaaaaULL);
|
||||
}
|
||||
16
thirdparty/uint256_t/tests/testcases/unary.cpp
vendored
Normal file
16
thirdparty/uint256_t/tests/testcases/unary.cpp
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(Arithmetic, unary_plus){
|
||||
const uint256_t value(0x12345ULL);
|
||||
EXPECT_EQ(+value, value);
|
||||
}
|
||||
|
||||
TEST(Arithmetic, unary_minus){
|
||||
const uint256_t val(1);
|
||||
const uint256_t neg = -val;
|
||||
EXPECT_EQ(-val, neg);
|
||||
EXPECT_EQ(-neg, val);
|
||||
EXPECT_EQ(neg, uint256_t(0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL));
|
||||
}
|
||||
59
thirdparty/uint256_t/tests/testcases/xor.cpp
vendored
Normal file
59
thirdparty/uint256_t/tests/testcases/xor.cpp
vendored
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
#include "uint256_t.h"
|
||||
|
||||
TEST(BitWise, xor){
|
||||
uint256_t t ((bool) true);
|
||||
uint256_t f ((bool) false);
|
||||
uint256_t u8 ((uint8_t) 0xaaULL);
|
||||
uint256_t u16((uint16_t) 0xaaaaULL);
|
||||
uint256_t u32((uint32_t) 0xaaaaaaaaULL);
|
||||
uint256_t u64((uint64_t) 0xaaaaaaaaaaaaaaaa);
|
||||
|
||||
const uint256_t val(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL);
|
||||
|
||||
EXPECT_EQ(t ^ val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f1ULL));
|
||||
EXPECT_EQ(f ^ val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL));
|
||||
EXPECT_EQ(u8 ^ val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f05aULL));
|
||||
EXPECT_EQ(u16 ^ val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f05a5aULL));
|
||||
EXPECT_EQ(u32 ^ val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f05a5a5a5aULL));
|
||||
EXPECT_EQ(u64 ^ val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0x5a5a5a5a5a5a5a5aULL));
|
||||
|
||||
EXPECT_EQ(t ^= val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f1ULL));
|
||||
EXPECT_EQ(f ^= val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL));
|
||||
EXPECT_EQ(u8 ^= val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f05aULL));
|
||||
EXPECT_EQ(u16 ^= val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f05a5aULL));
|
||||
EXPECT_EQ(u32 ^= val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f05a5a5a5aULL));
|
||||
EXPECT_EQ(u64 ^= val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0x5a5a5a5a5a5a5a5aULL));
|
||||
|
||||
// zero
|
||||
EXPECT_EQ(uint256_t() ^ val, val);
|
||||
}
|
||||
|
||||
TEST(External, xor){
|
||||
bool t = true;
|
||||
bool f = false;
|
||||
uint8_t u8 = 0xaaULL;
|
||||
uint16_t u16 = 0xaaaaULL;
|
||||
uint32_t u32 = 0xaaaaaaaaULL;
|
||||
uint64_t u64 = 0xaaaaaaaaaaaaaaaaULL;
|
||||
|
||||
const uint256_t val(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL);
|
||||
|
||||
EXPECT_EQ(t ^ val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f1ULL));
|
||||
EXPECT_EQ(f ^ val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f0f0ULL));
|
||||
EXPECT_EQ(u8 ^ val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f0f05aULL));
|
||||
EXPECT_EQ(u16 ^ val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f0f0f05a5aULL));
|
||||
EXPECT_EQ(u32 ^ val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0xf0f0f0f05a5a5a5aULL));
|
||||
EXPECT_EQ(u64 ^ val, uint256_t(0xf0f0f0f0f0f0f0f0ULL, 0x5a5a5a5a5a5a5a5aULL));
|
||||
|
||||
EXPECT_EQ(t ^= val, true);
|
||||
EXPECT_EQ(f ^= val, true);
|
||||
EXPECT_EQ(u8 ^= val, (uint8_t) 0x5aULL);
|
||||
EXPECT_EQ(u16 ^= val, (uint16_t) 0x5a5aULL);
|
||||
EXPECT_EQ(u32 ^= val, (uint32_t) 0x5a5a5a5aULL);
|
||||
EXPECT_EQ(u64 ^= val, (uint64_t) 0x5a5a5a5a5a5a5a5aULL);
|
||||
|
||||
// zero
|
||||
EXPECT_EQ(uint256_t() ^ val, val);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue