diff --git a/storm/Big.cpp b/storm/Big.cpp index 5200602..ce8aade 100644 --- a/storm/Big.cpp +++ b/storm/Big.cpp @@ -32,6 +32,10 @@ int32_t SBigCompare(BigData* a, BigData* b) { return Compare(a->Primary(), b->Primary()); } +void SBigCopy(BigData* a, BigData* b) { + a->m_primary = b->m_primary; +} + void SBigDel(BigData* num) { delete num; } diff --git a/storm/Big.hpp b/storm/Big.hpp index b820545..bf73ab1 100644 --- a/storm/Big.hpp +++ b/storm/Big.hpp @@ -12,6 +12,8 @@ void SBigBitLen(BigData* num, uint32_t* len); int32_t SBigCompare(BigData* a, BigData* b); +void SBigCopy(BigData* a, BigData* b); + void SBigDel(BigData* num); void SBigFromBinary(BigData* num, const void* data, uint32_t bytes); diff --git a/test/Big.cpp b/test/Big.cpp index 8b66f57..48ab0c6 100644 --- a/test/Big.cpp +++ b/test/Big.cpp @@ -213,6 +213,24 @@ TEST_CASE("SBigCompare", "[big]") { } } +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); + } +} + TEST_CASE("SBigFromBinary", "[big]") { SECTION("creates bigdata from 0") { BigData* num;