2021-10-20 11:17:55 +02:00
|
|
|
#include <hex/helpers/utils.hpp>
|
2022-01-29 17:14:15 +01:00
|
|
|
#include <hex/test/test_provider.hpp>
|
|
|
|
#include <hex/test/tests.hpp>
|
2021-10-20 11:17:55 +02:00
|
|
|
|
|
|
|
TEST_SEQUENCE("32BitIntegerEndianSwap") {
|
2024-03-28 22:25:28 +01:00
|
|
|
TEST_ASSERT(hex::changeEndianness<u32>(0xAABBCCDD, std::endian::big) == 0xDDCCBBAA);
|
Tests for the CRC and hash algorithms (#335)
* Update TEST_ASSERT to do nothing if condition is true
The TEST_ASSERT should not return if the condition is true, because:
- it prevents the usage of multiple TEST_ASSERT in a single test case,
- that behavior differs from how the assert in the standard library
works, and thus may give unexpected results.
Make the TEST_ASSERT to print an error message (with an formatted
optional user part) when it fails to make debugging easier.
* Fix some bugs in TestProvider, add unit tests
Use pointer-to-vector in TestProvider so writes can be tested, too.
* Add test EncodeDecode16, fix some encode16 bugs
The function mbedtls_mpi_write_string needs a bit longer buffer than the
resulting string actually will be.
Known bug: mbedtls_mpi_read_binary ingores initial null bytes
* Add test EncodeDecode64, fix some bugs
The functions mbedtls_base64_encode and mbedtls_base64_decode needs a
bit longer buffer than the resulting string actually will be.
* Remove check for empty data from TestProvider
It can be valid to get the hash of empty string.
* Add tests for CRC calculation
Two type of thests:
- compare the result of the CRC calculation to a known to be good
results,
- generate random data as message, calculate of it's CRC and append that
to the message, the CRC of this new data should be 0.
* Add test for hash algorithms
* Add includes in tests
* Remove the use of C++20 ranges
It seems that Apple Clang does not support range-based constrained
algorithms at this time.
* Replace encode16 implementation
To encode the zero bytes at the begining of the input vector, too.
2021-11-26 22:14:44 +01:00
|
|
|
|
|
|
|
TEST_SUCCESS();
|
2021-10-20 11:17:55 +02:00
|
|
|
};
|
|
|
|
|
2021-10-20 11:23:06 +02:00
|
|
|
TEST_SEQUENCE("64BitFloatEndianSwap") {
|
2021-10-20 11:17:55 +02:00
|
|
|
double floatValue = 1234.5;
|
2022-02-01 22:09:44 +01:00
|
|
|
u64 integerValue = reinterpret_cast<u64 &>(floatValue);
|
2021-10-20 11:17:55 +02:00
|
|
|
|
2024-03-28 22:25:28 +01:00
|
|
|
double swappedFloatValue = hex::changeEndianness(floatValue, std::endian::big);
|
|
|
|
u64 swappedIntegerValue = hex::changeEndianness(integerValue, std::endian::big);
|
2021-10-20 11:17:55 +02:00
|
|
|
|
2021-10-20 11:23:06 +02:00
|
|
|
TEST_ASSERT(std::memcmp(&floatValue, &integerValue, 8) == 0 && std::memcmp(&swappedFloatValue, &swappedIntegerValue, 8) == 0);
|
Tests for the CRC and hash algorithms (#335)
* Update TEST_ASSERT to do nothing if condition is true
The TEST_ASSERT should not return if the condition is true, because:
- it prevents the usage of multiple TEST_ASSERT in a single test case,
- that behavior differs from how the assert in the standard library
works, and thus may give unexpected results.
Make the TEST_ASSERT to print an error message (with an formatted
optional user part) when it fails to make debugging easier.
* Fix some bugs in TestProvider, add unit tests
Use pointer-to-vector in TestProvider so writes can be tested, too.
* Add test EncodeDecode16, fix some encode16 bugs
The function mbedtls_mpi_write_string needs a bit longer buffer than the
resulting string actually will be.
Known bug: mbedtls_mpi_read_binary ingores initial null bytes
* Add test EncodeDecode64, fix some bugs
The functions mbedtls_base64_encode and mbedtls_base64_decode needs a
bit longer buffer than the resulting string actually will be.
* Remove check for empty data from TestProvider
It can be valid to get the hash of empty string.
* Add tests for CRC calculation
Two type of thests:
- compare the result of the CRC calculation to a known to be good
results,
- generate random data as message, calculate of it's CRC and append that
to the message, the CRC of this new data should be 0.
* Add test for hash algorithms
* Add includes in tests
* Remove the use of C++20 ranges
It seems that Apple Clang does not support range-based constrained
algorithms at this time.
* Replace encode16 implementation
To encode the zero bytes at the begining of the input vector, too.
2021-11-26 22:14:44 +01:00
|
|
|
|
|
|
|
TEST_SUCCESS();
|
|
|
|
};
|