squall/test/Big.cpp

642 lines
13 KiB
C++
Raw Normal View History

#include "storm/Big.hpp"
2023-01-23 22:10:24 -06:00
#include "test/Test.hpp"
2023-02-05 16:52:03 -06:00
TEST_CASE("SBigAdd", "[big]") {
2023-01-31 22:17:51 -06:00
SECTION("adds 0 and 1") {
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
SBigFromUnsigned(b, 0);
2023-02-05 16:52:03 -06:00
BigData* c;
SBigNew(&c);
SBigFromUnsigned(c, 1);
2023-01-31 22:17:51 -06:00
2023-02-05 16:52:03 -06:00
SBigAdd(a, b, c);
2023-01-31 22:17:51 -06:00
CHECK(a->Primary().Count() == 1);
CHECK(a->Primary()[0] == 1);
SBigDel(a);
SBigDel(b);
2023-02-05 16:52:03 -06:00
SBigDel(c);
2023-01-31 22:17:51 -06:00
}
2023-02-05 16:52:03 -06:00
SECTION("adds 1 and 2") {
2023-01-31 22:34:05 -06:00
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
SBigFromUnsigned(b, 1);
2023-02-01 23:27:32 -06:00
BigData* c;
SBigNew(&c);
SBigFromUnsigned(c, 2);
2023-02-05 16:52:03 -06:00
SBigAdd(a, b, c);
2023-02-01 23:27:32 -06:00
CHECK(a->Primary().Count() == 1);
2023-02-05 16:52:03 -06:00
CHECK(a->Primary()[0] == 3);
2023-02-01 23:27:32 -06:00
SBigDel(a);
2023-02-05 16:52:03 -06:00
SBigDel(b);
2023-02-01 23:27:32 -06:00
SBigDel(c);
}
2023-02-05 16:52:03 -06:00
SECTION("adds 0x12345678 and 0x23456789") {
2023-02-03 16:57:14 -06:00
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(b, 0x12345678);
2023-02-03 16:57:14 -06:00
BigData* c;
SBigNew(&c);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(c, 0x23456789);
2023-02-03 16:57:14 -06:00
2023-02-05 16:52:03 -06:00
SBigAdd(a, b, c);
2023-02-03 16:57:14 -06:00
CHECK(a->Primary().Count() == 1);
2023-02-05 16:52:03 -06:00
CHECK(a->Primary()[0] == 0x3579BE01);
2023-02-03 16:57:14 -06:00
SBigDel(a);
SBigDel(b);
SBigDel(c);
}
2023-02-05 16:52:03 -06:00
SECTION("adds 0xFFFFFFFF and 0xF0F0F0F0") {
2023-02-01 23:27:32 -06:00
BigData* a;
SBigNew(&a);
2023-02-05 16:52:03 -06:00
BigData* b;
SBigNew(&b);
SBigFromUnsigned(b, 0xFFFFFFFF);
2023-02-01 23:27:32 -06:00
BigData* c;
SBigNew(&c);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(c, 0xF0F0F0F0);
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
SBigAdd(a, b, c);
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
CHECK(a->Primary().Count() == 2);
CHECK(a->Primary()[0] == 0xF0F0F0EF);
CHECK(a->Primary()[1] == 0x1);
2023-02-01 23:27:32 -06:00
SBigDel(a);
2023-02-05 16:52:03 -06:00
SBigDel(b);
2023-02-01 23:27:32 -06:00
SBigDel(c);
}
2023-02-05 16:52:03 -06:00
}
2023-02-01 23:27:32 -06:00
2024-11-15 00:57:52 -08:00
TEST_CASE("SBigAnd", "[big]") {
BigDataTest a;
BigDataTest b;
BigDataTest c;
SECTION("overwrites output") {
SBigFromUnsigned(a, 123456);
SBigFromUnsigned(b, 0);
SBigFromUnsigned(c, 0);
SBigAnd(a, b, c);
CHECK(a->Primary().Count() == 1);
CHECK(a->Primary()[0] == 0);
}
SECTION("performs bitwise and on large nums") {
uint8_t data[] = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 31, 12, 13, 14, 15
};
uint8_t data2[] = {
0, 0, 0, 6, 6, 0, 6, 0, 0, 6, 0xFF, 6, 0, 6, 0
};
SBigFromBinary(b, data, sizeof(data));
SBigFromBinary(c, data2, sizeof(data2));
SBigAnd(a, b, c);
CHECK(a->Primary().Count() == 4);
CHECK(a->Primary()[0] == 0x04000000);
CHECK(a->Primary()[1] == 0x00060004);
CHECK(a->Primary()[2] == 0x041F0200);
CHECK(a->Primary()[3] == 0x00000600);
}
}
2023-02-05 16:52:03 -06:00
TEST_CASE("SBigBitLen", "[big]") {
SECTION("returns bit length of 1") {
BigData* num;
SBigNew(&num);
SBigFromUnsigned(num, 1);
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
uint32_t len;
SBigBitLen(num, &len);
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
CHECK(len == 1);
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
SBigDel(num);
2023-02-01 23:27:32 -06:00
}
2023-02-05 16:52:03 -06:00
SECTION("returns bit length of 5") {
BigData* num;
SBigNew(&num);
SBigFromUnsigned(num, 5);
2023-02-03 16:57:14 -06:00
2023-02-05 16:52:03 -06:00
uint32_t len;
SBigBitLen(num, &len);
2023-02-03 16:57:14 -06:00
2023-02-05 16:52:03 -06:00
CHECK(len == 3);
2023-02-03 16:57:14 -06:00
2023-02-05 16:52:03 -06:00
SBigDel(num);
}
2023-02-03 16:57:14 -06:00
2023-02-05 16:52:03 -06:00
SECTION("returns bit length of 0xFFFF") {
BigData* num;
SBigNew(&num);
SBigFromUnsigned(num, 0xFFFF);
2023-02-03 16:57:14 -06:00
2023-02-05 16:52:03 -06:00
uint32_t len;
SBigBitLen(num, &len);
2023-02-03 16:57:14 -06:00
2023-02-05 16:52:03 -06:00
CHECK(len == 16);
2023-02-03 16:57:14 -06:00
2023-02-05 16:52:03 -06:00
SBigDel(num);
2023-02-03 16:57:14 -06:00
}
2023-02-05 16:52:03 -06:00
SECTION("returns bit length of 0xFFFFFFFF") {
BigData* num;
SBigNew(&num);
SBigFromUnsigned(num, 0xFFFFFFFF);
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
uint32_t len;
SBigBitLen(num, &len);
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
CHECK(len == 32);
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
SBigDel(num);
}
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
SECTION("returns bit length of 0x22222222AAAAAAAA") {
BigData* num;
SBigNew(&num);
uint64_t num_ = 0x22222222AAAAAAAA;
SBigFromBinary(num, reinterpret_cast<uint8_t*>(&num_), sizeof(num_));
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
uint32_t len;
SBigBitLen(num, &len);
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
CHECK(len == 62);
SBigDel(num);
2023-02-01 23:27:32 -06:00
}
2023-02-05 16:52:03 -06:00
}
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
TEST_CASE("SBigCompare", "[big]") {
SECTION("compares 10 and 1") {
2023-02-03 16:57:14 -06:00
BigData* a;
SBigNew(&a);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(a, 10);
2023-02-03 16:57:14 -06:00
BigData* b;
SBigNew(&b);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(b, 1);
2023-02-03 16:57:14 -06:00
2023-02-05 16:52:03 -06:00
CHECK(SBigCompare(a, b) == 1);
2023-02-03 16:57:14 -06:00
SBigDel(a);
SBigDel(b);
}
2023-02-05 16:52:03 -06:00
}
2023-02-03 16:57:14 -06:00
2024-11-15 01:20:08 -08:00
TEST_CASE("SBigCopy", "[big]") {
BigDataTest a;
BigDataTest b;
SECTION("copies data") {
uint8_t num[] = { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 };
SBigFromBinary(a, num, sizeof(num));
SBigFromUnsigned(b, 42);
CHECK(a->Primary().Count() == 4);
SBigCopy(a, b);
CHECK(a->Primary().Count() == 1);
CHECK(a->Primary()[0] == 42);
}
}
2023-02-05 16:52:03 -06:00
TEST_CASE("SBigFromBinary", "[big]") {
SECTION("creates bigdata from 0") {
BigData* num;
SBigNew(&num);
uint32_t data = 0;
SBigFromBinary(num, reinterpret_cast<uint8_t*>(&data), sizeof(data));
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
CHECK(num->Primary().Count() == 1);
CHECK(num->Primary()[0] == 0);
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
SBigDel(num);
}
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
SECTION("creates bigdata from 0x123456789ABCDEF0") {
BigData* num;
SBigNew(&num);
uint64_t data = 0x123456789ABCDEF0;
SBigFromBinary(num, reinterpret_cast<uint8_t*>(&data), sizeof(data));
2023-02-01 23:27:32 -06:00
2023-02-05 16:52:03 -06:00
CHECK(num->Primary().Count() == 2);
CHECK(num->Primary()[0] == 0x9ABCDEF0);
CHECK(num->Primary()[1] == 0x12345678);
2023-01-29 20:37:09 -06:00
SBigDel(num);
}
}
2023-01-31 12:17:51 -06:00
2023-02-05 16:52:03 -06:00
TEST_CASE("SBigFromUnsigned", "[big]") {
SECTION("creates bigdata from 0") {
2023-01-31 22:07:33 -06:00
BigData* num;
SBigNew(&num);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(num, 0);
2023-01-31 22:07:33 -06:00
CHECK(num->Primary().Count() == 1);
2023-02-05 16:52:03 -06:00
CHECK(num->Primary()[0] == 0);
2023-01-31 22:07:33 -06:00
SBigDel(num);
}
2023-02-05 16:52:03 -06:00
SECTION("creates bigdata from 0x12345678") {
2023-01-31 12:17:51 -06:00
BigData* num;
SBigNew(&num);
SBigFromUnsigned(num, 0x12345678);
2023-02-05 16:52:03 -06:00
CHECK(num->Primary().Count() == 1);
CHECK(num->Primary()[0] == 0x12345678);
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
SBigDel(num);
2023-02-03 14:50:34 -06:00
}
2023-02-05 16:52:03 -06:00
}
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
TEST_CASE("SBigMod", "[big]") {
SECTION("mods 7 by 4") {
2023-02-03 14:50:34 -06:00
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(b, 7);
BigData* c;
SBigNew(&c);
SBigFromUnsigned(c, 4);
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
SBigMod(a, b, c);
2023-02-03 14:50:34 -06:00
a->Primary().Trim();
CHECK(a->Primary().Count() == 1);
2023-02-05 16:52:03 -06:00
CHECK(a->Primary()[0] == 3);
2023-02-03 14:50:34 -06:00
SBigDel(a);
SBigDel(b);
2023-02-05 16:52:03 -06:00
SBigDel(c);
2023-02-03 14:50:34 -06:00
}
2023-02-05 16:52:03 -06:00
SECTION("mods 7 by 4 then mods 9 by 5") {
2023-02-03 14:50:34 -06:00
BigData* a;
SBigNew(&a);
2023-02-05 16:52:03 -06:00
BigData* b1;
SBigNew(&b1);
SBigFromUnsigned(b1, 7);
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
BigData* c1;
SBigNew(&c1);
SBigFromUnsigned(c1, 4);
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
BigData* b2;
SBigNew(&b2);
SBigFromUnsigned(b2, 9);
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
BigData* c2;
SBigNew(&c2);
SBigFromUnsigned(c2, 5);
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
SBigMod(a, b1, c1);
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
a->Primary().Trim();
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
CHECK(a->Primary().Count() == 1);
CHECK(a->Primary()[0] == 3);
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
SBigMod(a, b2, c2);
2023-02-03 14:50:34 -06:00
a->Primary().Trim();
CHECK(a->Primary().Count() == 1);
2023-02-05 16:52:03 -06:00
CHECK(a->Primary()[0] == 4);
2023-02-03 14:50:34 -06:00
SBigDel(a);
2023-02-05 16:52:03 -06:00
SBigDel(b1);
SBigDel(c1);
SBigDel(b2);
SBigDel(c2);
2023-02-03 14:50:34 -06:00
}
2023-02-05 16:52:03 -06:00
SECTION("mods 0x9999444488885555 by 0xFFFFFFFF") {
2023-02-03 14:50:34 -06:00
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
2023-02-05 16:52:03 -06:00
uint64_t b_ = 0x9999444488885555;
SBigFromBinary(b, reinterpret_cast<uint8_t*>(&b_), sizeof(b_));
BigData* c;
SBigNew(&c);
SBigFromUnsigned(c, 0xFFFFFFFF);
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
SBigMod(a, b, c);
2023-02-03 14:50:34 -06:00
a->Primary().Trim();
CHECK(a->Primary().Count() == 1);
2023-02-05 16:52:03 -06:00
CHECK(a->Primary()[0] == 0x2221999A);
2023-02-03 14:50:34 -06:00
SBigDel(a);
SBigDel(b);
2023-02-05 16:52:03 -06:00
SBigDel(c);
2023-02-03 14:50:34 -06:00
}
2023-02-05 16:52:03 -06:00
}
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
TEST_CASE("SBigMul", "[big]") {
SECTION("multiplies 0 and 1") {
2023-02-03 14:50:34 -06:00
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(b, 0);
BigData* c;
SBigNew(&c);
SBigFromUnsigned(c, 1);
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
SBigMul(a, b, c);
2023-02-03 14:50:34 -06:00
a->Primary().Trim();
2023-02-05 16:52:03 -06:00
CHECK(a->Primary().Count() == 0);
2023-02-03 14:50:34 -06:00
SBigDel(a);
SBigDel(b);
2023-02-05 16:52:03 -06:00
SBigDel(c);
2023-02-03 14:50:34 -06:00
}
2023-02-05 16:52:03 -06:00
SECTION("multiplies 2 and 4") {
2023-02-03 14:50:34 -06:00
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(b, 2);
BigData* c;
SBigNew(&c);
SBigFromUnsigned(c, 4);
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
SBigMul(a, b, c);
2023-02-03 14:50:34 -06:00
a->Primary().Trim();
2023-02-05 16:52:03 -06:00
CHECK(a->Primary().Count() == 1);
CHECK(a->Primary()[0] == 8);
2023-02-03 14:50:34 -06:00
SBigDel(a);
SBigDel(b);
2023-02-05 16:52:03 -06:00
SBigDel(c);
2023-02-03 14:50:34 -06:00
}
2023-02-05 16:52:03 -06:00
SECTION("multiplies 0xFFFFFFFF and 0x100") {
2023-02-03 14:50:34 -06:00
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(b, 0xFFFFFFFF);
BigData* c;
SBigNew(&c);
SBigFromUnsigned(c, 0x100);
2023-02-03 14:50:34 -06:00
2023-02-05 16:52:03 -06:00
SBigMul(a, b, c);
2023-02-03 14:50:34 -06:00
a->Primary().Trim();
2023-02-05 16:52:03 -06:00
CHECK(a->Primary().Count() == 2);
CHECK(a->Primary()[0] == 0xFFFFFF00);
CHECK(a->Primary()[1] == 0xFF);
2023-02-03 14:50:34 -06:00
SBigDel(a);
SBigDel(b);
2023-02-05 16:52:03 -06:00
SBigDel(c);
2023-02-03 14:50:34 -06:00
}
2023-02-05 16:52:03 -06:00
SECTION("multiplies 0xFFFFFF and 0x11223344") {
2023-02-03 08:15:06 -06:00
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(b, 0xFFFFFF);
BigData* c;
SBigNew(&c);
SBigFromUnsigned(c, 0x11223344);
2023-02-03 08:15:06 -06:00
2023-02-05 16:52:03 -06:00
SBigMul(a, b, c);
2023-02-03 08:15:06 -06:00
a->Primary().Trim();
2023-02-05 16:52:03 -06:00
CHECK(a->Primary().Count() == 2);
CHECK(a->Primary()[0] == 0x32DDCCBC);
CHECK(a->Primary()[1] == 0x112233);
2023-02-03 08:15:06 -06:00
SBigDel(a);
SBigDel(b);
2023-02-05 16:52:03 -06:00
SBigDel(c);
2023-02-03 08:15:06 -06:00
}
2023-02-05 16:52:03 -06:00
}
2023-02-03 08:15:06 -06:00
2023-02-05 16:52:03 -06:00
TEST_CASE("SBigPowMod", "[big]") {
SECTION("takes 256 to the 8th power and mods the result by 999") {
2023-02-03 08:15:06 -06:00
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(b, 256);
2023-02-03 08:15:06 -06:00
2023-02-05 16:52:03 -06:00
BigData* c;
SBigNew(&c);
SBigFromUnsigned(c, 8);
BigData* d;
SBigNew(&d);
SBigFromUnsigned(d, 999);
SBigPowMod(a, b, c, d);
2023-02-03 08:15:06 -06:00
a->Primary().Trim();
CHECK(a->Primary().Count() == 1);
2023-02-05 16:52:03 -06:00
CHECK(a->Primary()[0] == 160);
2023-02-03 08:15:06 -06:00
SBigDel(a);
SBigDel(b);
2023-02-05 16:52:03 -06:00
SBigDel(c);
SBigDel(d);
2023-02-03 08:15:06 -06:00
}
2023-02-05 16:52:03 -06:00
}
2023-02-03 08:15:06 -06:00
2023-02-05 16:52:03 -06:00
TEST_CASE("SBigShl", "[big]") {
SECTION("shifts 256 left 7 bits") {
2023-02-03 08:15:06 -06:00
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(b, 256);
2023-02-03 08:15:06 -06:00
2023-02-05 16:52:03 -06:00
SBigShl(a, b, 7);
2023-02-03 08:15:06 -06:00
a->Primary().Trim();
CHECK(a->Primary().Count() == 1);
2023-02-05 16:52:03 -06:00
CHECK(a->Primary()[0] == 32768);
2023-02-03 08:15:06 -06:00
SBigDel(a);
SBigDel(b);
}
2023-02-05 16:52:03 -06:00
}
2023-02-03 08:15:06 -06:00
2023-02-05 16:52:03 -06:00
TEST_CASE("SBigShr", "[big]") {
SECTION("shifts 256 right 7 bits") {
2023-02-03 08:15:06 -06:00
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
2023-02-05 16:52:03 -06:00
SBigFromUnsigned(b, 256);
2023-02-03 08:15:06 -06:00
2023-02-05 16:52:03 -06:00
SBigShr(a, b, 7);
2023-02-03 08:15:06 -06:00
a->Primary().Trim();
CHECK(a->Primary().Count() == 1);
2023-02-05 16:52:03 -06:00
CHECK(a->Primary()[0] == 2);
2023-02-03 08:15:06 -06:00
SBigDel(a);
SBigDel(b);
}
2023-02-05 16:52:03 -06:00
}
2023-02-03 08:15:06 -06:00
2023-02-05 16:52:03 -06:00
TEST_CASE("SBigSquare", "[big]") {
2023-02-03 08:15:06 -06:00
SECTION("squares 0xFFFFFFFF") {
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
SBigFromUnsigned(b, 0xFFFFFFFF);
2023-02-05 16:52:03 -06:00
SBigSquare(a, b);
2023-02-03 08:15:06 -06:00
a->Primary().Trim();
CHECK(a->Primary().Count() == 2);
CHECK(a->Primary()[0] == 0x1);
CHECK(a->Primary()[1] == 0xFFFFFFFE);
SBigDel(a);
SBigDel(b);
}
}
2023-02-05 16:52:03 -06:00
TEST_CASE("SBigSub", "[big]") {
2023-02-01 21:29:16 -06:00
SECTION("subtracts 1 from 2") {
BigData* a;
SBigNew(&a);
BigData* b;
SBigNew(&b);
SBigFromUnsigned(b, 2);
BigData* c;
SBigNew(&c);
SBigFromUnsigned(c, 1);
2023-02-05 16:52:03 -06:00
SBigSub(a, b, c);
2023-02-01 21:29:16 -06:00
a->Primary().Trim();
CHECK(a->Primary().Count() == 1);
CHECK(a->Primary()[0] == 1);
SBigDel(a);
SBigDel(b);
}
2023-02-05 16:52:03 -06:00
}
2023-02-01 21:29:16 -06:00
2023-02-05 16:52:03 -06:00
TEST_CASE("SBigToBinaryBuffer", "[big]") {
SECTION("returns expected buffer for bigdata representing 0") {
BigData* num;
SBigNew(&num);
SBigFromUnsigned(num, 0);
2023-02-01 21:29:16 -06:00
2023-02-05 16:52:03 -06:00
uint8_t buffer[4];
uint32_t bytes;
SBigToBinaryBuffer(num, buffer, sizeof(buffer), &bytes);
2023-02-01 21:29:16 -06:00
2023-02-05 16:52:03 -06:00
REQUIRE(bytes == 0);
2023-02-01 21:29:16 -06:00
2023-02-05 16:52:03 -06:00
SBigDel(num);
2023-02-01 21:29:16 -06:00
}
2023-02-05 16:52:03 -06:00
SECTION("returns expected buffer for bigdata representing 0x12345678") {
BigData* num;
SBigNew(&num);
SBigFromUnsigned(num, 0x12345678);
2023-02-01 21:29:16 -06:00
2023-02-05 16:52:03 -06:00
uint8_t buffer[4];
uint32_t bytes;
SBigToBinaryBuffer(num, buffer, sizeof(buffer), &bytes);
2023-02-01 21:29:16 -06:00
2023-02-05 16:52:03 -06:00
CHECK(bytes == 4);
CHECK(*reinterpret_cast<uint32_t*>(buffer) == 0x12345678);
SBigDel(num);
}
2023-02-01 21:29:16 -06:00
2023-02-05 16:52:03 -06:00
SECTION("returns expected buffer for bigdata representing 0x123456789ABCDEF0") {
BigData* num;
SBigNew(&num);
uint64_t data = 0x123456789ABCDEF0;
SBigFromBinary(num, reinterpret_cast<uint8_t*>(&data), sizeof(data));
2023-02-01 21:29:16 -06:00
2023-02-05 16:52:03 -06:00
uint8_t buffer[8];
uint32_t bytes;
SBigToBinaryBuffer(num, buffer, sizeof(buffer), &bytes);
2023-02-01 21:29:16 -06:00
2023-02-05 16:52:03 -06:00
CHECK(bytes == 8);
CHECK(*reinterpret_cast<uint64_t*>(buffer) == 0x123456789ABCDEF0);
2023-02-01 21:29:16 -06:00
2023-02-05 16:52:03 -06:00
SBigDel(num);
2023-02-01 21:29:16 -06:00
}
}