chore(big): run SBig tests against storm.dll

This commit is contained in:
Adam Heinermann 2025-10-24 11:53:05 -07:00 committed by fallenoak
parent 263f7e9041
commit 4472ac250b
4 changed files with 37 additions and 45 deletions

View file

@ -10,7 +10,7 @@ TEST_CASE("SBigAdd", "[big]") {
SBigAdd(a, b, c); SBigAdd(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 1); CHECK(a.ToUnsigned() == 1);
} }
@ -20,7 +20,7 @@ TEST_CASE("SBigAdd", "[big]") {
SBigAdd(a, b, c); SBigAdd(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 3); CHECK(a.ToUnsigned() == 3);
} }
@ -30,7 +30,7 @@ TEST_CASE("SBigAdd", "[big]") {
SBigAdd(a, b, c); SBigAdd(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 4);
CHECK(a.ToUnsigned() == 0x3579BE01); CHECK(a.ToUnsigned() == 0x3579BE01);
} }
@ -75,6 +75,7 @@ TEST_CASE("SBigAnd", "[big]") {
} }
} }
#if !defined(WHOA_TEST_STORMDLL)
TEST_CASE("SBigBitLen", "[big]") { TEST_CASE("SBigBitLen", "[big]") {
BigDataTest num; BigDataTest num;
@ -124,6 +125,7 @@ TEST_CASE("SBigBitLen", "[big]") {
CHECK(len == 62); CHECK(len == 62);
} }
} }
#endif
TEST_CASE("SBigCompare", "[big]") { TEST_CASE("SBigCompare", "[big]") {
BigDataTest a, b; BigDataTest a, b;
@ -144,11 +146,11 @@ TEST_CASE("SBigCopy", "[big]") {
SBigFromBinary(a, num, sizeof(num)); SBigFromBinary(a, num, sizeof(num));
SBigFromUnsigned(b, 42); SBigFromUnsigned(b, 42);
CHECK(a.BitLen() == 108); CHECK(a.ToBinaryBuffer().size() == sizeof(num));
SBigCopy(a, b); SBigCopy(a, b);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 42); CHECK(a.ToUnsigned() == 42);
} }
} }
@ -161,7 +163,7 @@ TEST_CASE("SBigDec", "[big]") {
SBigDec(a, b); SBigDec(a, b);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 4); CHECK(a.ToUnsigned() == 4);
} }
@ -171,7 +173,7 @@ TEST_CASE("SBigDec", "[big]") {
SBigDec(a, b); SBigDec(a, b);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 4);
CHECK(a.ToUnsigned() == 0xFFFFFFFF); CHECK(a.ToUnsigned() == 0xFFFFFFFF);
} }
#endif #endif
@ -186,7 +188,7 @@ TEST_CASE("SBigDiv", "[big]") {
SBigDiv(a, b, c); SBigDiv(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 2); CHECK(a.ToUnsigned() == 2);
} }
@ -196,7 +198,7 @@ TEST_CASE("SBigDiv", "[big]") {
SBigDiv(a, b, c); SBigDiv(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 2); CHECK(a.ToUnsigned() == 2);
} }
@ -206,7 +208,7 @@ TEST_CASE("SBigDiv", "[big]") {
SBigDiv(a, b, c); SBigDiv(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 1); CHECK(a.ToUnsigned() == 1);
} }
@ -226,7 +228,7 @@ TEST_CASE("SBigDiv", "[big]") {
SBigDiv(a, b, c); SBigDiv(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 4);
CHECK(a.ToUnsigned() == 0x99994445); CHECK(a.ToUnsigned() == 0x99994445);
} }
@ -236,7 +238,7 @@ TEST_CASE("SBigDiv", "[big]") {
SBigDiv(a, b, c); SBigDiv(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 8); CHECK(a.ToUnsigned() == 8);
} }
} }
@ -272,7 +274,7 @@ TEST_CASE("SBigFromStr", "[big]") {
SECTION("with string containing numbers") { SECTION("with string containing numbers") {
SBigFromStr(num, "123456"); SBigFromStr(num, "123456");
CHECK(num.BitLen() <= 32); CHECK(num.ToBinaryBuffer().size() == 3);
CHECK(num.ToUnsigned() == 123456); CHECK(num.ToUnsigned() == 123456);
} }
@ -283,8 +285,8 @@ TEST_CASE("SBigFromStr", "[big]") {
const unsigned int expected_num = ('A' - '0') * 100 + ('B' - '0') * 10 + ('C' - '0'); const unsigned int expected_num = ('A' - '0') * 100 + ('B' - '0') * 10 + ('C' - '0');
CHECK(expected_num == 1899); CHECK(expected_num == 1899);
CHECK(num.BitLen() <= 32); CHECK(num.ToBinaryBuffer().size() == 2);
CHECK(num.ToUnsigned() == expected_num); CHECK(num.ToUnsigned() == 1899);
} }
} }
@ -300,14 +302,14 @@ TEST_CASE("SBigFromUnsigned", "[big]") {
SECTION("creates bigdata from 0x12345678") { SECTION("creates bigdata from 0x12345678") {
SBigFromUnsigned(num, 0x12345678); SBigFromUnsigned(num, 0x12345678);
CHECK(num.BitLen() <= 32); CHECK(num.ToBinaryBuffer().size() == 4);
CHECK(num.ToUnsigned() == 0x12345678); CHECK(num.ToUnsigned() == 0x12345678);
} }
SECTION("creates bigdata from max int") { SECTION("creates bigdata from max int") {
SBigFromUnsigned(num, UINT32_MAX); SBigFromUnsigned(num, UINT32_MAX);
CHECK(num.BitLen() <= 32); CHECK(num.ToBinaryBuffer().size() == 4);
CHECK(num.ToUnsigned() == UINT32_MAX); CHECK(num.ToUnsigned() == UINT32_MAX);
} }
} }
@ -319,7 +321,7 @@ TEST_CASE("SBigInc", "[big]") {
SBigInc(a, b); SBigInc(a, b);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 1); CHECK(a.ToUnsigned() == 1);
} }
@ -337,7 +339,7 @@ TEST_CASE("SBigInc", "[big]") {
SBigInc(a, b); SBigInc(a, b);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 2);
CHECK(a.ToUnsigned() == 1338); CHECK(a.ToUnsigned() == 1338);
} }
} }
@ -430,7 +432,7 @@ TEST_CASE("SBigMod", "[big]") {
SBigMod(a, b, c); SBigMod(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 3); CHECK(a.ToUnsigned() == 3);
} }
@ -444,12 +446,12 @@ TEST_CASE("SBigMod", "[big]") {
SBigMod(a, b1, c1); SBigMod(a, b1, c1);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 3); CHECK(a.ToUnsigned() == 3);
SBigMod(a, b2, c2); SBigMod(a, b2, c2);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 4); CHECK(a.ToUnsigned() == 4);
} }
@ -460,7 +462,7 @@ TEST_CASE("SBigMod", "[big]") {
SBigMod(a, b, c); SBigMod(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 4);
CHECK(a.ToUnsigned() == 0x2221999A); CHECK(a.ToUnsigned() == 0x2221999A);
} }
} }
@ -483,7 +485,7 @@ TEST_CASE("SBigMul", "[big]") {
SBigMul(a, b, c); SBigMul(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 4); // why is this 4?
CHECK(a.ToUnsigned() == 8); CHECK(a.ToUnsigned() == 8);
} }
@ -517,7 +519,7 @@ TEST_CASE("SBigPowMod", "[big]") {
SBigPowMod(a, b, c, d); SBigPowMod(a, b, c, d);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 160); CHECK(a.ToUnsigned() == 160);
} }
} }
@ -531,7 +533,7 @@ TEST_CASE("SBigNot", "[big]") {
SBigFromUnsigned(b, v); SBigFromUnsigned(b, v);
SBigNot(a, b); SBigNot(a, b);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() <= 4);
CHECK(a.ToUnsigned() == ~v); CHECK(a.ToUnsigned() == ~v);
} }
@ -582,7 +584,7 @@ TEST_CASE("SBigOr", "[big]") {
SBigFromUnsigned(c, v.second); SBigFromUnsigned(c, v.second);
SBigOr(a, b, c); SBigOr(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() <= 4);
CHECK(a.ToUnsigned() == (v.first | v.second)); CHECK(a.ToUnsigned() == (v.first | v.second));
} }
@ -633,7 +635,7 @@ TEST_CASE("SBigShl", "[big]") {
SBigShl(a, b, 7); SBigShl(a, b, 7);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 2);
CHECK(a.ToUnsigned() == 32768); CHECK(a.ToUnsigned() == 32768);
} }
} }
@ -646,7 +648,7 @@ TEST_CASE("SBigShr", "[big]") {
SBigShr(a, b, 7); SBigShr(a, b, 7);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 2); CHECK(a.ToUnsigned() == 2);
} }
} }
@ -673,7 +675,7 @@ TEST_CASE("SBigSub", "[big]") {
SBigSub(a, b, c); SBigSub(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 1);
CHECK(a.ToUnsigned() == 1); CHECK(a.ToUnsigned() == 1);
} }
@ -684,7 +686,7 @@ TEST_CASE("SBigSub", "[big]") {
SBigSub(a, b, c); SBigSub(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() == 4);
CHECK(a.ToUnsigned() == 0xFFFFFFFF); CHECK(a.ToUnsigned() == 0xFFFFFFFF);
} }
#endif #endif
@ -747,7 +749,7 @@ TEST_CASE("SBigToUnsigned", "[big]") {
uint32_t result; uint32_t result;
SBigToUnsigned(num, &result); SBigToUnsigned(num, &result);
CHECK(num.BitLen() > 32); CHECK(num.ToBinaryBuffer().size() == 8);
CHECK(result == 0x89ABCDEF); CHECK(result == 0x89ABCDEF);
} }
} }
@ -766,7 +768,7 @@ TEST_CASE("SBigXor", "[big]") {
SBigFromUnsigned(c, v.second); SBigFromUnsigned(c, v.second);
SBigXor(a, b, c); SBigXor(a, b, c);
CHECK(a.BitLen() <= 32); CHECK(a.ToBinaryBuffer().size() <= 4);
CHECK(a.ToUnsigned() == (v.first ^ v.second)); CHECK(a.ToUnsigned() == (v.first ^ v.second));
} }

View file

@ -23,17 +23,8 @@ struct BigDataTest {
return result; return result;
} }
uint32_t BitLen() {
// Work around a SBigBitLen crash on 0 (original behavior)
if (SBigIsZero(num)) return 0;
uint32_t result = 0;
SBigBitLen(num, &result);
return result;
}
std::vector<uint8_t> ToBinaryBuffer() { std::vector<uint8_t> ToBinaryBuffer() {
uint32_t size = (this->BitLen() + 32) / 8; uint32_t size = 1024 * 1024;
std::vector<uint8_t> data(size); std::vector<uint8_t> data(size);
uint32_t bytes = 0; uint32_t bytes = 0;

View file

@ -1,7 +1,7 @@
if(WHOA_TEST_STORMDLL) if(WHOA_TEST_STORMDLL)
set(TEST_SOURCES set(TEST_SOURCES
#Big.cpp Big.cpp
Core.cpp Core.cpp
Event.cpp Event.cpp
EventTest.cpp EventTest.cpp

View file

@ -6,7 +6,6 @@ int32_t STORMAPI StormDestroy() { return 0; }
void STORMAPI SBigAdd(BigData*, BigData*, BigData*) {} void STORMAPI SBigAdd(BigData*, BigData*, BigData*) {}
void STORMAPI SBigAnd(BigData*, BigData*, BigData*) {} void STORMAPI SBigAnd(BigData*, BigData*, BigData*) {}
void STORMAPI SBigBitLen(BigData*, uint32_t*) {}
int32_t STORMAPI SBigCompare(BigData*, BigData*) { return 0; } int32_t STORMAPI SBigCompare(BigData*, BigData*) { return 0; }
void STORMAPI SBigCopy(BigData*, BigData*) {} void STORMAPI SBigCopy(BigData*, BigData*) {}
void STORMAPI SBigDec(BigData*, BigData*) {} void STORMAPI SBigDec(BigData*, BigData*) {}