1
0
mirror of synced 2024-11-15 03:27:40 +01:00
ImHex/tests/algorithms/CMakeLists.txt
RADICS Áron 467e9d1463
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

51 lines
1.0 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(algorithms_test)
# Add new tests here #
set(AVAILABLE_TESTS
# Common
TestSucceeding
TestFailing
TestProvider_read
TestProvider_write
# Endian
32BitIntegerEndianSwap
64BitFloatEndianSwap
# Crypto
EncodeDecode16
EncodeDecode64
CRC32
CRC32Random
CRC16
CRC16Random
CRC8
CRC8Random
md5
sha1
sha224
sha256
sha384
sha512
)
add_executable(algorithms_test
source/main.cpp
source/common.cpp
source/endian.cpp
source/crypto.cpp
)
target_include_directories(algorithms_test PRIVATE include)
target_link_libraries(algorithms_test libimhex)
set_target_properties(algorithms_test PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
foreach (test IN LISTS AVAILABLE_TESTS)
add_test(NAME "Algorithms/${test}" COMMAND algorithms_test "${test}" WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
endforeach ()