tests: Refactor to add support for other types of tests
This commit is contained in:
parent
b12cd66679
commit
9b316795fc
1
dist/Brewfile
vendored
1
dist/Brewfile
vendored
@ -8,6 +8,7 @@ brew "python3"
|
||||
brew "freetype2"
|
||||
brew "libmagic"
|
||||
brew "pkg-config"
|
||||
brew "catch2"
|
||||
|
||||
# TODO: Remove this when XCode version of clang will support the same level as LLVM 10
|
||||
brew "llvm"
|
||||
|
3
dist/Dockerfile
vendored
3
dist/Dockerfile
vendored
@ -16,7 +16,8 @@ RUN pacman -S --needed --noconfirm \
|
||||
capstone \
|
||||
python3 \
|
||||
freetype2 \
|
||||
gtk3
|
||||
gtk3 \
|
||||
catch2
|
||||
|
||||
# Clone ImHex
|
||||
RUN git clone https://github.com/WerWolv/ImHex --recurse-submodules /root/ImHex
|
||||
|
1
dist/ImHex-9999.ebuild
vendored
1
dist/ImHex-9999.ebuild
vendored
@ -29,5 +29,6 @@ RDEPEND="${DEPEND}
|
||||
dev-libs/capstone
|
||||
dev-cpp/nlohmann_json
|
||||
x11-libs/gtk+
|
||||
dev-cpp/catch
|
||||
"
|
||||
BDEPEND="${DEPEND}"
|
||||
|
3
dist/get_deps_archlinux.sh
vendored
3
dist/get_deps_archlinux.sh
vendored
@ -9,4 +9,5 @@ pacman -S --needed \
|
||||
capstone \
|
||||
python3 \
|
||||
freetype2 \
|
||||
gtk3
|
||||
gtk3 \
|
||||
catch2
|
||||
|
1
dist/get_deps_debian.sh
vendored
1
dist/get_deps_debian.sh
vendored
@ -26,6 +26,7 @@ apt install -y \
|
||||
python3-dev \
|
||||
libfreetype-dev \
|
||||
libgtk-3-dev \
|
||||
catch
|
||||
|
||||
echo "Please consider this before running cmake (useful on e.g. Ubuntu 20.04):"
|
||||
echo "export CXX=g++-10"
|
||||
|
3
dist/get_deps_fedora.sh
vendored
3
dist/get_deps_fedora.sh
vendored
@ -10,4 +10,5 @@ dnf install \
|
||||
mbedtls-devel \
|
||||
python-devel \
|
||||
freetype-devel \
|
||||
gtk3
|
||||
gtk3 \
|
||||
catch-devel
|
||||
|
3
dist/get_deps_msys2.sh
vendored
3
dist/get_deps_msys2.sh
vendored
@ -11,4 +11,5 @@ pacman -S --needed --noconfirm \
|
||||
mingw-w64-x86_64-mbedtls \
|
||||
mingw-w64-x86_64-python \
|
||||
mingw-w64-x86_64-freetype \
|
||||
mingw-w64-x86_64-dlfcn
|
||||
mingw-w64-x86_64-dlfcn \
|
||||
mingw-w64-x86_64-catch
|
||||
|
3
dist/msys2/PKGBUILD
vendored
3
dist/msys2/PKGBUILD
vendored
@ -18,7 +18,8 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
|
||||
"${MINGW_PACKAGE_PREFIX}-mbedtls"
|
||||
"${MINGW_PACKAGE_PREFIX}-polly"
|
||||
"${MINGW_PACKAGE_PREFIX}-python"
|
||||
"${MINGW_PACKAGE_PREFIX}-freetype")
|
||||
"${MINGW_PACKAGE_PREFIX}-freetype"
|
||||
"${MINGW_PACKAGE_PREFIX}-catch")
|
||||
|
||||
source=()
|
||||
sha256sums=()
|
||||
|
@ -1,38 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(unit_tests)
|
||||
|
||||
|
||||
# Add new tests here #
|
||||
set(AVAILABLE_TESTS
|
||||
Placement
|
||||
Structs
|
||||
Unions
|
||||
Enums
|
||||
Literals
|
||||
Padding
|
||||
SucceedingAssert
|
||||
FailingAssert
|
||||
Bitfields
|
||||
Math
|
||||
RValues
|
||||
Namespaces
|
||||
ExtraSemicolon
|
||||
Pointers
|
||||
)
|
||||
|
||||
|
||||
|
||||
add_executable(unit_tests source/main.cpp source/tests.cpp)
|
||||
target_include_directories(unit_tests PRIVATE include)
|
||||
target_link_libraries(unit_tests libimhex)
|
||||
|
||||
set_target_properties(unit_tests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
|
||||
add_custom_command(TARGET unit_tests
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/test_data" ${CMAKE_BINARY_DIR})
|
||||
|
||||
foreach (test IN LISTS AVAILABLE_TESTS)
|
||||
add_test(NAME "${test}" COMMAND unit_tests "${test}" WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
endforeach ()
|
||||
add_subdirectory(pattern_language)
|
||||
add_subdirectory(algorithms)
|
15
tests/algorithms/CMakeLists.txt
Normal file
15
tests/algorithms/CMakeLists.txt
Normal file
@ -0,0 +1,15 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(algorithms_tests)
|
||||
|
||||
find_package(Catch2 REQUIRED)
|
||||
|
||||
add_executable(algorithms_tests source/hash.cpp)
|
||||
target_include_directories(algorithms_tests PRIVATE include)
|
||||
target_link_libraries(algorithms_tests libimhex Catch2::Catch2)
|
||||
|
||||
set_target_properties(algorithms_tests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
|
||||
include(CTest)
|
||||
include(Catch)
|
||||
catch_discover_tests(algorithms_tests TEST_PREFIX "Algorithms/")
|
60
tests/algorithms/include/test_provider.hpp
Normal file
60
tests/algorithms/include/test_provider.hpp
Normal file
@ -0,0 +1,60 @@
|
||||
#include <hex/providers/provider.hpp>
|
||||
|
||||
#include <hex/helpers/file.hpp>
|
||||
#include <hex/helpers/logger.hpp>
|
||||
#include <stdexcept>
|
||||
|
||||
namespace hex::test {
|
||||
using namespace hex::prv;
|
||||
|
||||
class TestProvider : public prv::Provider {
|
||||
public:
|
||||
TestProvider(std::vector<u8> data) : Provider(){
|
||||
this->setData(data);
|
||||
}
|
||||
~TestProvider() override = default;
|
||||
|
||||
[[nodiscard]] bool isAvailable() const override { return true; }
|
||||
[[nodiscard]] bool isReadable() const override { return true; }
|
||||
[[nodiscard]] bool isWritable() const override { return false; }
|
||||
[[nodiscard]] bool isResizable() const override { return false; }
|
||||
[[nodiscard]] bool isSavable() const override { return false; }
|
||||
|
||||
void setData(const std::vector<u8> &data) {
|
||||
if (data.empty()) {
|
||||
hex::log::fatal("No data provided");
|
||||
throw std::runtime_error("");
|
||||
}
|
||||
|
||||
this->m_data = data;
|
||||
}
|
||||
|
||||
[[nodiscard]] std::string getName() const override {
|
||||
return "";
|
||||
}
|
||||
|
||||
[[nodiscard]] std::vector<std::pair<std::string, std::string>> getDataInformation() const override {
|
||||
return { };
|
||||
}
|
||||
|
||||
void readRaw(u64 offset, void *buffer, size_t size) override {
|
||||
if (offset + size >= this->m_data.size()) return;
|
||||
|
||||
std::memcpy(buffer, &this->m_data[offset], size);
|
||||
}
|
||||
|
||||
void writeRaw(u64 offset, const void *buffer, size_t size) override {
|
||||
if (offset + size >= this->m_data.size()) return;
|
||||
|
||||
std::memcpy(&this->m_data[offset], buffer, size);
|
||||
}
|
||||
|
||||
size_t getActualSize() const override {
|
||||
return this->m_data.size();
|
||||
}
|
||||
|
||||
private:
|
||||
std::vector<u8> m_data;
|
||||
};
|
||||
|
||||
}
|
5
tests/algorithms/source/hash.cpp
Normal file
5
tests/algorithms/source/hash.cpp
Normal file
@ -0,0 +1,5 @@
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include <catch2/catch.hpp>
|
||||
|
||||
#include <hex/helpers/crypto.hpp>
|
||||
#include "test_provider.hpp"
|
38
tests/pattern_language/CMakeLists.txt
Normal file
38
tests/pattern_language/CMakeLists.txt
Normal file
@ -0,0 +1,38 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(pattern_language_tests)
|
||||
|
||||
|
||||
# Add new tests here #
|
||||
set(AVAILABLE_TESTS
|
||||
Placement
|
||||
Structs
|
||||
Unions
|
||||
Enums
|
||||
Literals
|
||||
Padding
|
||||
SucceedingAssert
|
||||
FailingAssert
|
||||
Bitfields
|
||||
Math
|
||||
RValues
|
||||
Namespaces
|
||||
ExtraSemicolon
|
||||
Pointers
|
||||
)
|
||||
|
||||
|
||||
|
||||
add_executable(pattern_language_tests source/main.cpp source/tests.cpp)
|
||||
target_include_directories(pattern_language_tests PRIVATE include)
|
||||
target_link_libraries(pattern_language_tests libimhex)
|
||||
|
||||
set_target_properties(pattern_language_tests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
|
||||
add_custom_command(TARGET pattern_language_tests
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/test_data" ${CMAKE_BINARY_DIR})
|
||||
|
||||
foreach (test IN LISTS AVAILABLE_TESTS)
|
||||
add_test(NAME "PatternLanguage/${test}" COMMAND pattern_language_tests "${test}" WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
endforeach ()
|
Before Width: | Height: | Size: 164 KiB After Width: | Height: | Size: 164 KiB |
Loading…
x
Reference in New Issue
Block a user