// Copyright (c) Lysann Tranvouez. All rights reserved. #include #include #include "test_func.h" static int testFunctionDetourCounter = 0; int testFunctionDetour() { testFunctionDetourCounter++; return 94; } TEST_CASE( "Overriding custom function" ) { int (*realTestFunction)() = testFunction; testFunctionCounter = 0; testFunctionDetourCounter = 0; REQUIRE( testFunction() == 42 ); REQUIRE( testFunctionCounter == 1 ); REQUIRE( testFunctionDetourCounter == 0 ); CHECK( detour_transaction_begin() == err_none ); CHECK( detour_attach(reinterpret_cast(&realTestFunction), reinterpret_cast(testFunctionDetour)) == err_none ); CHECK( detour_transaction_commit() == err_none ); REQUIRE( realTestFunction != testFunction ); REQUIRE( testFunctionCounter == 1 ); REQUIRE( testFunctionDetourCounter == 0 ); REQUIRE( testFunction() == 94 ); REQUIRE( testFunctionCounter == 1 ); REQUIRE( testFunctionDetourCounter == 1 ); }