git / moonbite-core / src/libmw/test/tests/models/crypto/Test_BigInteger.cpp · raw

// Copyright (c) 2021 The Litecoin Core developers// Distributed under the MIT software license, see the accompanying// file COPYING or http://www.opensource.org/licenses/mit-license.php.#include <mw/models/crypto/BigInteger.h>#include <test_framework/TestMWEB.h>BOOST_FIXTURE_TEST_SUITE(TestBigInt, MWEBTestingSetup)BOOST_AUTO_TEST_CASE(BigIntTest){    BigInt<8> bigInt1 = BigInt<8>::FromHex("0123456789AbCdEf");    BOOST_REQUIRE(bigInt1.ToHex() == "0123456789abcdef");    BOOST_REQUIRE(bigInt1.size() == 8);    BOOST_REQUIRE(!bigInt1.IsZero());    BOOST_REQUIRE(BigInt<8>().IsZero());    BOOST_REQUIRE(bigInt1.vec() == std::vector<uint8_t>({ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }));    BOOST_REQUIRE((bigInt1.ToArray() == std::array<uint8_t, 8>({ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef })));    BigInt<4> bigInt2 = BigInt<4>::Max();    BOOST_REQUIRE(bigInt2.ToHex() == "ffffffff");    BigInt<8> bigInt3 = BigInt<8>::ValueOf(12);    BOOST_REQUIRE(bigInt3.ToHex() == "000000000000000c");    BOOST_REQUIRE(bigInt1[3] == 0x67);    BOOST_REQUIRE(bigInt1 > bigInt3);    BOOST_REQUIRE(!(bigInt1 < bigInt3));    BOOST_REQUIRE(!(bigInt1 < bigInt1));    BOOST_REQUIRE(!(bigInt1 > bigInt1));    BOOST_REQUIRE(bigInt1 >= bigInt1);    BOOST_REQUIRE(bigInt1 <= bigInt1);    BOOST_REQUIRE(bigInt1 == bigInt1);    BOOST_REQUIRE(!(bigInt1 != bigInt1));    BigInt<8> bigInt4 = bigInt1;    BOOST_REQUIRE(bigInt1 == bigInt4);    BOOST_REQUIRE(bigInt1 != bigInt3);    BigInt<8> bigInt5 = bigInt1.vec();    BOOST_REQUIRE(bigInt1 == bigInt5);    bigInt5 = bigInt1.ToArray();    BOOST_REQUIRE(bigInt1 == bigInt5);    bigInt5 = BigInt<8>(bigInt1.data());    BOOST_REQUIRE(bigInt1 == bigInt5);    BOOST_REQUIRE((bigInt1 ^ bigInt3).ToHex() == "0123456789abcde3");    bigInt1 ^= bigInt3;    BOOST_REQUIRE(bigInt1.ToHex() == "0123456789abcde3");    bigInt1 ^= bigInt3;    BOOST_REQUIRE(bigInt1.ToHex() == "0123456789abcdef");    std::vector<uint8_t> serialized = bigInt1.Serialized();    BOOST_REQUIRE(bigInt1 == BigInt<8>::Deserialize(serialized));}BOOST_AUTO_TEST_SUITE_END()