From 1e7ed148104404564201524341cc2e7f3fc6fc99 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sun, 17 Apr 2022 18:11:39 +0200 Subject: [PATCH] tests: Removed pattern language tests as they are now done in their own repo --- lib/external/pattern_language | 2 +- tests/CMakeLists.txt | 3 +- tests/pattern_language/CMakeLists.txt | 47 ------ .../include/test_patterns/test_pattern.hpp | 65 -------- .../test_patterns/test_pattern_arrays.hpp | 60 ------- .../test_patterns/test_pattern_bitfields.hpp | 48 ------ .../test_patterns/test_pattern_enums.hpp | 41 ----- .../test_patterns/test_pattern_example.hpp | 20 --- .../test_pattern_extra_semicolon.hpp | 32 ---- .../test_pattern_failing_assert.hpp | 23 --- .../test_patterns/test_pattern_literals.hpp | 29 ---- .../test_patterns/test_pattern_math.hpp | 73 -------- .../test_patterns/test_pattern_namespaces.hpp | 39 ----- .../test_pattern_nested_structs.hpp | 83 ---------- .../test_patterns/test_pattern_padding.hpp | 49 ------ .../test_patterns/test_pattern_placement.hpp | 35 ---- .../test_patterns/test_pattern_pointers.hpp | 32 ---- .../test_patterns/test_pattern_rvalues.hpp | 37 ----- .../test_patterns/test_pattern_structs.hpp | 44 ----- .../test_pattern_succeeding_assert.hpp | 26 --- .../test_patterns/test_pattern_unions.hpp | 45 ----- .../include/test_provider.hpp | 55 ------ tests/pattern_language/source/main.cpp | 156 ------------------ tests/pattern_language/source/tests.cpp | 37 ----- tests/pattern_language/test_data | Bin 168419 -> 0 bytes 25 files changed, 2 insertions(+), 1079 deletions(-) delete mode 100644 tests/pattern_language/CMakeLists.txt delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_arrays.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_bitfields.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_enums.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_example.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_extra_semicolon.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_failing_assert.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_literals.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_math.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_namespaces.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_nested_structs.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_padding.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_placement.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_pointers.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_rvalues.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_structs.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_succeeding_assert.hpp delete mode 100644 tests/pattern_language/include/test_patterns/test_pattern_unions.hpp delete mode 100644 tests/pattern_language/include/test_provider.hpp delete mode 100644 tests/pattern_language/source/main.cpp delete mode 100644 tests/pattern_language/source/tests.cpp delete mode 100644 tests/pattern_language/test_data diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 3abaa2a36..956b16fed 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 3abaa2a36d833bb3be7a580dff9b89c37c876a18 +Subproject commit 956b16fed807615eec144b9ec58d8300749351e0 diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4761bb8d2..f764f061a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -2,9 +2,8 @@ project(unit_tests) add_compile_definitions(IMHEX_PROJECT_NAME="${PROJECT_NAME}") -add_custom_target(unit_tests DEPENDS helpers algorithms pattern_language) +add_custom_target(unit_tests DEPENDS helpers algorithms) add_subdirectory(common) add_subdirectory(helpers) add_subdirectory(algorithms) -add_subdirectory(pattern_language) \ No newline at end of file diff --git a/tests/pattern_language/CMakeLists.txt b/tests/pattern_language/CMakeLists.txt deleted file mode 100644 index 0742b703e..000000000 --- a/tests/pattern_language/CMakeLists.txt +++ /dev/null @@ -1,47 +0,0 @@ -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 - Arrays - NestedStructs -) - - -add_executable(pattern_language_tests - source/main.cpp - source/tests.cpp -) - - -# ---- No need to change anything from here downwards unless you know what you're doing ---- # - -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 () -add_dependencies(unit_tests ${PROJECT_NAME}) diff --git a/tests/pattern_language/include/test_patterns/test_pattern.hpp b/tests/pattern_language/include/test_patterns/test_pattern.hpp deleted file mode 100644 index a54a39c14..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern.hpp +++ /dev/null @@ -1,65 +0,0 @@ -#pragma once - -#include -#include - -#include - -#define TEST(name) (hex::test::TestPattern *)new hex::test::TestPattern##name() - -namespace hex::test { - - using namespace pl; - - enum class Mode - { - Succeeding, - Failing - }; - - class TestPattern { - public: - explicit TestPattern(const std::string &name, Mode mode = Mode::Succeeding) : m_mode(mode) { - TestPattern::s_tests.insert({ name, this }); - } - - virtual ~TestPattern() = default; - - template - static std::unique_ptr create(const std::string &typeName, const std::string &varName, auto... args) { - auto pattern = std::make_unique(nullptr, args...); - pattern->setTypeName(typeName); - pattern->setVariableName(varName); - - return std::move(pattern); - } - - [[nodiscard]] virtual std::string getSourceCode() const = 0; - - [[nodiscard]] virtual const std::vector> &getPatterns() const final { return this->m_patterns; } - virtual void addPattern(std::unique_ptr &&pattern) final { - this->m_patterns.push_back(std::move(pattern)); - } - - [[nodiscard]] auto failing() { - this->m_mode = Mode::Failing; - - return this; - } - - [[nodiscard]] Mode getMode() { - return this->m_mode; - } - - [[nodiscard]] static auto &getTests() { - return TestPattern::s_tests; - } - - private: - std::vector> m_patterns; - Mode m_mode; - - static inline std::map s_tests; - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_arrays.hpp b/tests/pattern_language/include/test_patterns/test_pattern_arrays.hpp deleted file mode 100644 index d7b3eaab0..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_arrays.hpp +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -#include -#include -#include - -#include - -namespace hex::test { - - class TestPatternArrays : public TestPattern { - public: - TestPatternArrays() : TestPattern("Arrays") { - auto first = create("u8", "first", 0x0, sizeof(u8[4])); - first->setEntries(create("u8", "", 0x0, sizeof(u8)), 4); - - auto second = create("u8", "second", 0x4, sizeof(u8[4])); - second->setEntries(create("u8", "", 0x4, sizeof(u8)), 4); - - auto testStruct = create("Signature", "sign", 0x0, sizeof(u8[8])); - std::vector> structMembers; - { - structMembers.push_back(std::move(first)); - structMembers.push_back(std::move(second)); - } - testStruct->setMembers(std::move(structMembers)); - - addPattern(std::move(testStruct)); - } - ~TestPatternArrays() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - fn end_of_signature() { - return $ >= 8; - }; - - struct Signature { - u8 first[4]; - u8 second[while(!end_of_signature())]; - }; - - Signature sign @ 0x0; - - std::assert(sign.first[0] == 0x89, "Invalid 1st byte of signature"); - std::assert(sign.first[1] == 0x50, "Invalid 2nd byte of signature"); - std::assert(sign.first[2] == 0x4E, "Invalid 3rd byte of signature"); - std::assert(sign.first[3] == 0x47, "Invalid 4th byte of signature"); - std::assert(sizeof(sign.second) == 4, "Invalid size of signature"); - std::assert(sign.second[0] == 0x0D, "Invalid 5th byte of signature"); - std::assert(sign.second[1] == 0x0A, "Invalid 6th byte of signature"); - std::assert(sign.second[2] == 0x1A, "Invalid 7th byte of signature"); - std::assert(sign.second[3] == 0x0A, "Invalid 8th byte of signature"); - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_bitfields.hpp b/tests/pattern_language/include/test_patterns/test_pattern_bitfields.hpp deleted file mode 100644 index 50751112d..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_bitfields.hpp +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -#include - -namespace hex::test { - - class TestPatternBitfields : public TestPattern { - public: - TestPatternBitfields() : TestPattern("Bitfields") { - auto testBitfield = create("TestBitfield", "testBitfield", 0x12, (4 * 4) / 8); - testBitfield->setEndian(std::endian::big); - - std::vector> bitfieldFields; - { - bitfieldFields.push_back(create("", "a", 0x12, 0, 4, testBitfield.get())); - bitfieldFields.push_back(create("", "b", 0x12, 4, 4, testBitfield.get())); - bitfieldFields.push_back(create("", "c", 0x12, 8, 4, testBitfield.get())); - bitfieldFields.push_back(create("", "d", 0x12, 12, 4, testBitfield.get())); - } - - testBitfield->setFields(std::move(bitfieldFields)); - - addPattern(std::move(testBitfield)); - } - ~TestPatternBitfields() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - bitfield TestBitfield { - a : 4; - b : 4; - c : 4; - d : 4; - }; - - be TestBitfield testBitfield @ 0x12; - - std::assert(testBitfield.a == 0x0A, "Field A invalid"); - std::assert(testBitfield.b == 0x00, "Field B invalid"); - std::assert(testBitfield.c == 0x04, "Field C invalid"); - std::assert(testBitfield.d == 0x03, "Field D invalid"); - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_enums.hpp b/tests/pattern_language/include/test_patterns/test_pattern_enums.hpp deleted file mode 100644 index eaf448877..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_enums.hpp +++ /dev/null @@ -1,41 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -#include - -namespace hex::test { - - class TestPatternEnums : public TestPattern { - public: - TestPatternEnums() : TestPattern("Enums") { - auto testEnum = create("TestEnum", "testEnum", 0x08, sizeof(u32)); - testEnum->setEnumValues({ - {u128(0x00), "A"}, - { i128(0x0C), "B"}, - { u128(0x0D), "C"}, - { u128(0x0E), "D"}, - }); - testEnum->setEndian(std::endian::big); - - addPattern(std::move(testEnum)); - } - ~TestPatternEnums() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - enum TestEnum : u32 { - A, - B = 0x0C, - C, - D - }; - - be TestEnum testEnum @ 0x08; - - std::assert(testEnum == TestEnum::C, "Invalid enum value"); - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_example.hpp b/tests/pattern_language/include/test_patterns/test_pattern_example.hpp deleted file mode 100644 index 1aa019d57..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_example.hpp +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -namespace hex::test { - - class TestPatternExample : public TestPattern { - public: - TestPatternExample() : TestPattern("") { - } - ~TestPatternExample() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_extra_semicolon.hpp b/tests/pattern_language/include/test_patterns/test_pattern_extra_semicolon.hpp deleted file mode 100644 index c0149e2d0..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_extra_semicolon.hpp +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -namespace hex::test { - - class TestPatternExtraSemicolon : public TestPattern { - public: - TestPatternExtraSemicolon() : TestPattern("ExtraSemicolon") { - } - ~TestPatternExtraSemicolon() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - struct Test { - u32 x;;; - u8 y; - float z;; - };; - - struct Test2 { - u32 x; - u32 y; - }; - - Test test @ 0x00;;; - Test test2 @ 0x10; - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_failing_assert.hpp b/tests/pattern_language/include/test_patterns/test_pattern_failing_assert.hpp deleted file mode 100644 index 44b8c797c..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_failing_assert.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -namespace hex::test { - - class TestPatternFailingAssert : public TestPattern { - public: - TestPatternFailingAssert() : TestPattern("FailingAssert", Mode::Failing) { - } - ~TestPatternFailingAssert() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - #define MSG "Error" - - std::assert(false, MSG); - - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_literals.hpp b/tests/pattern_language/include/test_patterns/test_pattern_literals.hpp deleted file mode 100644 index 0d5bb34cd..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_literals.hpp +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -namespace hex::test { - - class TestPatternLiterals : public TestPattern { - public: - TestPatternLiterals() : TestPattern("Literals") { - } - ~TestPatternLiterals() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - #define MSG "Invalid literal" - - std::assert(255 == 0xFF, MSG); - std::assert(0xAA == 0b10101010, MSG); - std::assert(12345 != 67890, MSG); - std::assert(100U == 0x64U, MSG); - std::assert(-100 == -0x64, MSG); - std::assert(3.14159F > 1.414D, MSG); - std::assert('A' == 0x41, MSG); - - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_math.hpp b/tests/pattern_language/include/test_patterns/test_pattern_math.hpp deleted file mode 100644 index e365d2b0f..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_math.hpp +++ /dev/null @@ -1,73 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -namespace hex::test { - - class TestPatternMath : public TestPattern { - public: - TestPatternMath() : TestPattern("Math") { - } - ~TestPatternMath() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - // Compare operations - std::assert(123 == 123, "== operation error"); - std::assert(123 != 567, "!= operation error"); - std::assert(111 < 222, "< operation error"); - std::assert(333 > 222, "> operation error"); - std::assert(100 >= 100, ">= operation error"); - std::assert(200 <= 200, "<= operation error"); - - // Boolean operations - std::assert(true, "true literal invalid"); - std::assert(true && true, "&& operator error"); - std::assert(false || true, "|| operator error"); - std::assert(true ^^ false, "^^ operator error"); - std::assert(!false, "! operator error"); - - // Bitwise operations - std::assert(0xFF00FF | 0x00AA00 == 0xFFAAFF, "| operator error"); - std::assert(0xFFFFFF & 0x00FF00 == 0x00FF00, "& operator error"); - std::assert(0xFFFFFF ^ 0x00AA00 == 0xFF55FF, "^ operator error"); - std::assert(~0x00U == 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, "~ operator error"); - std::assert(0xAA >> 4 == 0x0A, ">> operator error"); - std::assert(0xAA << 4 == 0xAA0, "<< operator error"); - - // Basic operations - std::assert(100 + 200 == 300, "+ operator error"); - std::assert(400 - 200 == 200, "- operator error"); - std::assert(10 * 20 == 200, "* operator error"); - std::assert(200 / 100 == 2, "/ operator error"); - std::assert(100 % 2 == 0, "% operator error"); - - // Special operators - std::assert($ == 0, "$ operator error"); - std::assert(((10 == 20) ? 30 : 40) == 40, "?: operator error"); - - // Type operators - struct TypeTest { u32 x, y, z; }; - TypeTest typeTest @ 0x100; - - std::assert(addressof(typeTest) == 0x100, "addressof operator error"); - std::assert(sizeof(typeTest) == 3 * 4, "sizeof operator error"); - - // Properties - std::assert(100 + 200 == 200 + 100, "+ operator commutativity error"); - std::assert(100 - 200 != 200 - 100, "- operator commutativity error"); - std::assert(100 * 200 == 200 * 100, "* operator commutativity error"); - std::assert(100F / 200F != 200F / 100F, "/ operator commutativity error"); - - std::assert(10 + (20 + 30) == (10 + 20) + 30, "+ operator associativity error"); - std::assert(10 - (20 - 30) != (10 - 20) - 30, "- operator associativity error"); - std::assert(10 * (20 * 30) == (10 * 20) * 30, "* operator associativity error"); - std::assert(10F / (20F / 30F) != (10F / 20F) / 30F, "/ operator associativity error"); - - std::assert(10 * (20 + 30) == 10 * 20 + 10 * 30, "* operator distributivity error"); - std::assert(10F / (20F + 30F) != 10F / 20F + 10F / 30F, "/ operator distributivity error"); - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_namespaces.hpp b/tests/pattern_language/include/test_patterns/test_pattern_namespaces.hpp deleted file mode 100644 index 003d6193e..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_namespaces.hpp +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -namespace hex::test { - - class TestPatternNamespaces : public TestPattern { - public: - TestPatternNamespaces() : TestPattern("Namespaces") { - } - ~TestPatternNamespaces() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - namespace A { - struct Test { - u32 x; - }; - } - - namespace B { - struct Test { - u16 x; - }; - } - - using ATest = A::Test; - - A::Test test1 @ 0x10; - ATest test2 @ 0x20; - B::Test test3 @ 0x20; - - std::assert(sizeof(test1) == sizeof(test2), "error using namespaced type"); - std::assert(sizeof(test2) != sizeof(test3), "error differentiating two namespace types with same name"); - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_nested_structs.hpp b/tests/pattern_language/include/test_patterns/test_pattern_nested_structs.hpp deleted file mode 100644 index 0919a90d4..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_nested_structs.hpp +++ /dev/null @@ -1,83 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -#include -#include -#include - -#include - -namespace hex::test { - - class TestPatternNestedStructs : public TestPattern { - public: - TestPatternNestedStructs() : TestPattern("NestedStructs") { - const size_t HEADER_START = 0x0; - const size_t HEADER_SIZE = sizeof(u8); - const size_t BODY_START = HEADER_SIZE; - const size_t BODY_SIZE = 0x89 - 1; - - auto data = create("Data", "data", HEADER_START, HEADER_SIZE + BODY_SIZE); - { - auto hdr = create("Header", "hdr", HEADER_START, HEADER_SIZE); - { - std::vector> hdrMembers { - std::shared_ptr(create("u8", "len", HEADER_START, sizeof(u8))) - }; - hdr->setMembers(std::move(hdrMembers)); - } - - auto body = create("Body", "body", BODY_START, BODY_SIZE); - { - auto bodyArray = create("u8", "arr", BODY_START, BODY_SIZE); - bodyArray->setEntries(create("u8", "", BODY_START, sizeof(u8)), BODY_SIZE); - std::vector> bodyMembers { - std::shared_ptr(std::move(bodyArray)) - }; - body->setMembers(std::move(bodyMembers)); - } - - std::vector> dataMembers { - std::shared_ptr(std::move(hdr)), - std::shared_ptr(std::move(body)) - }; - data->setMembers(std::move(dataMembers)); - } - - addPattern(std::move(data)); - } - ~TestPatternNestedStructs() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - fn end_of_body() { - u32 start = addressof(parent.parent.hdr); - u32 len = parent.parent.hdr.len; - u32 end = start + len; - - return $ >= end; - }; - - struct Header { - u8 len; - }; - - struct Body { - u8 arr[while(!end_of_body())]; - }; - - struct Data { - Header hdr; - Body body; - }; - - Data data @ 0x0; - - std::assert(data.hdr.len == 0x89, "Invalid length"); - std::assert(sizeof(data.body.arr) == 0x89 - 1, "Invalid size of body"); - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_padding.hpp b/tests/pattern_language/include/test_patterns/test_pattern_padding.hpp deleted file mode 100644 index 9fb4d92bb..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_padding.hpp +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -#include -#include -#include -#include -#include - -namespace hex::test { - - class TestPatternPadding : public TestPattern { - public: - TestPatternPadding() : TestPattern("Padding") { - auto testStruct = create("TestStruct", "testStruct", 0x100, sizeof(i32) + 20 + sizeof(u8[0x10])); - - auto variable = create("s32", "variable", 0x100, sizeof(i32)); - auto padding = create("padding", "", 0x100 + sizeof(i32), 20); - auto array = create("u8", "array", 0x100 + sizeof(i32) + 20, sizeof(u8[0x10])); - array->setEntries(create("u8", "", 0x100 + sizeof(i32) + 20, sizeof(u8)), 0x10); - - std::vector> structMembers; - { - structMembers.push_back(std::move(variable)); - structMembers.push_back(std::move(padding)); - structMembers.push_back(std::move(array)); - } - - testStruct->setMembers(std::move(structMembers)); - - addPattern(std::move(testStruct)); - } - ~TestPatternPadding() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - struct TestStruct { - s32 variable; - padding[20]; - u8 array[0x10]; - }; - - TestStruct testStruct @ 0x100; - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_placement.hpp b/tests/pattern_language/include/test_patterns/test_pattern_placement.hpp deleted file mode 100644 index a8eef6051..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_placement.hpp +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -#include -#include - -namespace hex::test { - - class TestPatternPlacement : public TestPattern { - public: - TestPatternPlacement() : TestPattern("Placement") { - // placementVar - { - addPattern(create("u32", "placementVar", 0x00, sizeof(u32))); - } - - // placementArray - { - auto placementArray = create("u8", "placementArray", 0x10, sizeof(u8) * 10); - placementArray->setEntries(std::move(create("u8", "", 0x10, sizeof(u8))), 10); - addPattern(std::move(placementArray)); - } - } - ~TestPatternPlacement() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - u32 placementVar @ 0x00; - u8 placementArray[10] @ 0x10; - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_pointers.hpp b/tests/pattern_language/include/test_patterns/test_pattern_pointers.hpp deleted file mode 100644 index 6105e0876..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_pointers.hpp +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -#include -#include - -namespace hex::test { - - class TestPatternPointers : public TestPattern { - public: - TestPatternPointers() : TestPattern("Pointers") { - // placementPointer - { - auto placementPointer = create("", "placementPointer", 0x0C, sizeof(u8)); - placementPointer->setPointedAtAddress(0x49); - - auto pointedTo = create("u32", "", 0x49, sizeof(u32)); - placementPointer->setPointedAtPattern(std::move(pointedTo)); - addPattern(std::move(placementPointer)); - } - } - ~TestPatternPointers() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - u32 *placementPointer : u8 @ 0x0C; - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_rvalues.hpp b/tests/pattern_language/include/test_patterns/test_pattern_rvalues.hpp deleted file mode 100644 index 197ebadeb..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_rvalues.hpp +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -namespace hex::test { - - class TestPatternRValues : public TestPattern { - public: - TestPatternRValues() : TestPattern("RValues") { - } - ~TestPatternRValues() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - union C { - u8 y; - u8 array[parent.parent.x]; - }; - - struct B { - C *c : u8; - }; - - struct A { - u8 x; - B b; - }; - - A a @ 0x00; - - std::assert(sizeof(a.b.c) == a.x && a.x != 0x00, "RValue parent test failed!"); - std::assert(a.b.c.y == a.b.c.array[0], "RValue array access test failed!"); - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_structs.hpp b/tests/pattern_language/include/test_patterns/test_pattern_structs.hpp deleted file mode 100644 index 4912ba947..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_structs.hpp +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -#include -#include -#include -#include - -namespace hex::test { - - class TestPatternStructs : public TestPattern { - public: - TestPatternStructs() : TestPattern("Structs") { - auto testStruct = create("TestStruct", "testStruct", 0x100, sizeof(i32) + sizeof(u8[0x10])); - - auto variable = create("s32", "variable", 0x100, sizeof(i32)); - auto array = create("u8", "array", 0x100 + sizeof(i32), sizeof(u8[0x10])); - array->setEntries(create("u8", "", 0x100 + sizeof(i32), sizeof(u8)), 0x10); - - std::vector> structMembers; - { - structMembers.push_back(std::move(variable)); - structMembers.push_back(std::move(array)); - } - testStruct->setMembers(std::move(structMembers)); - - addPattern(std::move(testStruct)); - } - ~TestPatternStructs() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - struct TestStruct { - s32 variable; - u8 array[0x10]; - }; - - TestStruct testStruct @ 0x100; - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_succeeding_assert.hpp b/tests/pattern_language/include/test_patterns/test_pattern_succeeding_assert.hpp deleted file mode 100644 index df79fdd10..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_succeeding_assert.hpp +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -namespace hex::test { - - class TestPatternSucceedingAssert : public TestPattern { - public: - TestPatternSucceedingAssert() : TestPattern("SucceedingAssert") { - } - ~TestPatternSucceedingAssert() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - #define MSG "Error" - - std::assert(true, MSG); - std::assert(100 == 100, MSG); - std::assert(50 < 100, MSG); - std::assert(1, MSG); - - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_patterns/test_pattern_unions.hpp b/tests/pattern_language/include/test_patterns/test_pattern_unions.hpp deleted file mode 100644 index 16b09f54c..000000000 --- a/tests/pattern_language/include/test_patterns/test_pattern_unions.hpp +++ /dev/null @@ -1,45 +0,0 @@ -#pragma once - -#include "test_pattern.hpp" - -#include -#include -#include -#include - -namespace hex::test { - - class TestPatternUnions : public TestPattern { - public: - TestPatternUnions() : TestPattern("Unions") { - auto testUnion = create("TestUnion", "testUnion", 0x200, sizeof(u128)); - - auto array = create("s32", "array", 0x200, sizeof(i32[2])); - array->setEntries(create("s32", "", 0x200, sizeof(i32)), 2); - auto variable = create("u128", "variable", 0x200, sizeof(u128)); - - std::vector> unionMembers; - { - unionMembers.push_back(std::move(array)); - unionMembers.push_back(std::move(variable)); - } - - testUnion->setMembers(std::move(unionMembers)); - - addPattern(std::move(testUnion)); - } - ~TestPatternUnions() override = default; - - [[nodiscard]] std::string getSourceCode() const override { - return R"( - union TestUnion { - s32 array[2]; - u128 variable; - }; - - TestUnion testUnion @ 0x200; - )"; - } - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/include/test_provider.hpp b/tests/pattern_language/include/test_provider.hpp deleted file mode 100644 index a64ca1366..000000000 --- a/tests/pattern_language/include/test_provider.hpp +++ /dev/null @@ -1,55 +0,0 @@ -#include - -#include -#include -#include - -namespace hex::test { - using namespace hex::prv; - - class TestProvider : public prv::Provider { - public: - TestProvider() : Provider(), m_testFile(fs::File("test_data", fs::File::Mode::Read)) { - if (!this->m_testFile.isValid() || this->m_testFile.getSize() == 0) { - hex::log::fatal("Failed to open test data!"); - throw std::runtime_error(""); - } - } - ~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; } - - [[nodiscard]] std::string getName() const override { - return ""; - } - - [[nodiscard]] std::vector> getDataInformation() const override { - return {}; - } - - void readRaw(u64 offset, void *buffer, size_t size) override { - this->m_testFile.seek(offset); - this->m_testFile.readBuffer(static_cast(buffer), size); - } - - void writeRaw(u64 offset, const void *buffer, size_t size) override { - this->m_testFile.seek(offset); - this->m_testFile.write(static_cast(buffer), size); - } - - [[nodiscard]] size_t getActualSize() const override { - return this->m_testFile.getSize(); - } - - bool open() override { return true; } - void close() override { } - - private: - fs::File m_testFile; - }; - -} \ No newline at end of file diff --git a/tests/pattern_language/source/main.cpp b/tests/pattern_language/source/main.cpp deleted file mode 100644 index 18fa6809e..000000000 --- a/tests/pattern_language/source/main.cpp +++ /dev/null @@ -1,156 +0,0 @@ -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "test_provider.hpp" -#include "test_patterns/test_pattern.hpp" - -#include - -using namespace hex::test; - -static std::string format(pl::Evaluator *ctx, const auto ¶ms) { - auto format = pl::Token::literalToString(params[0], true); - std::string message; - - fmt::dynamic_format_arg_store formatArgs; - - for (u32 i = 1; i < params.size(); i++) { - auto ¶m = params[i]; - - std::visit(hex::overloaded { - [&](pl::Pattern *value) { - formatArgs.push_back(value->toString(ctx->getProvider())); - }, - [&](auto &&value) { - formatArgs.push_back(value); - } }, - param); - } - - try { - return fmt::vformat(format, formatArgs); - } catch (fmt::format_error &error) { - pl::LogConsole::abortEvaluation(hex::format("format error: {}", error.what())); - } -} - -void addFunctions() { - using namespace hex::ContentRegistry::PatternLanguage; - - Namespace nsStd = { "std" }; - hex::ContentRegistry::PatternLanguage::addFunction(nsStd, "assert", ParameterCount::exactly(2), [](Evaluator *ctx, auto params) -> Token::Literal { - auto condition = Token::literalToBoolean(params[0]); - auto message = Token::literalToString(params[1], false); - - if (!condition) - LogConsole::abortEvaluation(hex::format("assertion failed \"{0}\"", message)); - - return {}; - }); - - hex::ContentRegistry::PatternLanguage::addFunction(nsStd, "print", ParameterCount::atLeast(1), [](Evaluator *ctx, auto params) -> std::optional { - ctx->getConsole().log(LogConsole::Level::Info, format(ctx, params)); - - return std::nullopt; - }); -} - -int test(int argc, char **argv) { - auto &testPatterns = TestPattern::getTests(); - - // Check if a test to run has been provided - if (argc != 2) { - hex::log::fatal("Invalid number of arguments specified! {}", argc); - return EXIT_FAILURE; - } - - // Check if that test exists - std::string testName = argv[1]; - if (!testPatterns.contains(testName)) { - hex::log::fatal("No test with name {} found!", testName); - return EXIT_FAILURE; - } - - const auto &currTest = testPatterns[testName]; - bool failing = currTest->getMode() == Mode::Failing; - - auto provider = new TestProvider(); - ON_SCOPE_EXIT { delete provider; }; - if (provider->getActualSize() == 0) { - hex::log::fatal("Failed to load Testing Data"); - return EXIT_FAILURE; - } - - pl::PatternLanguage language; - - // Check if compilation succeeded - auto result = language.executeString(provider, testPatterns[testName]->getSourceCode()); - if (!result) { - hex::log::fatal("Error during compilation!"); - - if (auto error = language.getError(); error.has_value()) - hex::log::info("Compile error: {} : {}", error->getLineNumber(), error->what()); - for (auto &[level, message] : language.getConsoleLog()) - hex::log::info("Evaluate error: {}", message); - - return failing ? EXIT_SUCCESS : EXIT_FAILURE; - } - - if (failing) { - hex::log::fatal("Failing test succeeded!"); - return EXIT_FAILURE; - } - - // Check if the right number of patterns have been produced - if (language.getPatterns().size() != currTest->getPatterns().size() && !currTest->getPatterns().empty()) { - hex::log::fatal("Source didn't produce expected number of patterns"); - return EXIT_FAILURE; - } - - // Check if the produced patterns are the ones expected - for (u32 i = 0; i < currTest->getPatterns().size(); i++) { - auto &evaluatedPattern = *language.getPatterns()[i]; - auto &controlPattern = *currTest->getPatterns()[i]; - - if (evaluatedPattern != controlPattern) { - hex::log::fatal("Pattern with name {}:{} didn't match template", evaluatedPattern.getTypeName(), evaluatedPattern.getVariableName()); - return EXIT_FAILURE; - } - } - - return EXIT_SUCCESS; -} - -int main(int argc, char **argv) { - int result = EXIT_SUCCESS; - - addFunctions(); - - for (u32 i = 0; i < 16; i++) { - result = test(argc, argv); - if (result != EXIT_SUCCESS) - break; - } - - ON_SCOPE_EXIT { - for (auto &[key, value] : TestPattern::getTests()) - delete value; - }; - - if (result == EXIT_SUCCESS) - hex::log::info("Success!"); - else - hex::log::info("Failed!"); - - return result; -} \ No newline at end of file diff --git a/tests/pattern_language/source/tests.cpp b/tests/pattern_language/source/tests.cpp deleted file mode 100644 index 87ae14d1f..000000000 --- a/tests/pattern_language/source/tests.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include - -#include "test_patterns/test_pattern_placement.hpp" -#include "test_patterns/test_pattern_structs.hpp" -#include "test_patterns/test_pattern_unions.hpp" -#include "test_patterns/test_pattern_enums.hpp" -#include "test_patterns/test_pattern_literals.hpp" -#include "test_patterns/test_pattern_padding.hpp" -#include "test_patterns/test_pattern_succeeding_assert.hpp" -#include "test_patterns/test_pattern_failing_assert.hpp" -#include "test_patterns/test_pattern_bitfields.hpp" -#include "test_patterns/test_pattern_math.hpp" -#include "test_patterns/test_pattern_rvalues.hpp" -#include "test_patterns/test_pattern_namespaces.hpp" -#include "test_patterns/test_pattern_extra_semicolon.hpp" -#include "test_patterns/test_pattern_pointers.hpp" -#include "test_patterns/test_pattern_arrays.hpp" -#include "test_patterns/test_pattern_nested_structs.hpp" - -std::array Tests = { - TEST(Placement), - TEST(Structs), - TEST(Unions), - TEST(Enums), - TEST(Literals), - TEST(Padding), - TEST(SucceedingAssert), - TEST(FailingAssert), - TEST(Bitfields), - TEST(Math), - TEST(RValues), - TEST(Namespaces), - TEST(ExtraSemicolon), - TEST(Pointers), - TEST(Arrays), - TEST(NestedStructs), -}; \ No newline at end of file diff --git a/tests/pattern_language/test_data b/tests/pattern_language/test_data deleted file mode 100644 index 15ef05f10602ad38e47b09620201e70b37d8ab86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168419 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%0AlP?I6_C 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 bgE}|~C+@Cac=HqB->&WZ{zY&+^8Nn<4a-Oy