polserver/pol-core/pol/testing/testenv.h
turleypol 774a9349f3
rewrite Decay system (#660)
* rewrite Decay system
removed setting to switch to multithread decay
Syshook:: call_long treats true/false as 1/0
can_decay hook if it returns 2 skip multicheck

* sleeptime is used outside of PolLock, guarded via atomic

* updated docs

* renamed syshook private methods
added corechanges
2024-07-14 17:34:17 +02:00

110 lines
2.3 KiB
C++

/** @file
*
* @par History
*/
#ifndef POL_TESTENV_H
#define POL_TESTENV_H
#include "../../clib/logfacility.h"
#include <string>
namespace Pol
{
namespace Mobile
{
class NPC;
}
namespace Items
{
class Item;
}
namespace Testing
{
class UnitTest
{
public:
template <typename F, typename T>
UnitTest( F f, T res, const std::string& msg )
{
INFO_PRINT( " {}", msg );
auto r = f();
if ( r == res )
{
UnitTest::inc_successes();
}
else
{
UnitTest::inc_failures();
INFO_PRINT( ": {} != {}", r, res );
}
INFO_PRINTLN( "" );
}
static void inc_failures() { ++UnitTest::failures; }
static void inc_successes() { ++UnitTest::successes; }
static void display_test_results()
{
INFO_PRINTLN(
"##############\n"
"Successes: {}\n"
"Failures: {}\n"
"##############",
UnitTest::successes, UnitTest::failures );
}
static bool result() { return UnitTest::failures == 0; }
private:
static unsigned int failures;
static unsigned int successes;
};
extern Mobile::NPC* test_banker;
extern Mobile::NPC* test_banker2;
extern Mobile::NPC* test_banker3;
extern Items::Item* test_guard_door;
extern Mobile::NPC* test_water_elemental;
extern Mobile::NPC* test_seaserpent;
extern Items::Item* test_chest1;
extern Items::Item* test_chest2;
extern Mobile::NPC* test_orclord;
Items::Item* add_item( unsigned int objtype, unsigned short x, unsigned short y, short z );
void add_multi( unsigned int objtype, unsigned short x, unsigned short y, short z );
void add_multi( unsigned int objtype, unsigned short x, unsigned short y, short z, int flags );
Mobile::NPC* add_npc( const char* npctype, unsigned short x, unsigned short y, short z );
void create_test_environment();
void test_splitnamevalue();
void test_convertquotedstring();
void test_sanitizeUnicodeWithIso();
void test_encodingconversions();
void map_test();
void skilladv_test();
void walk_test();
void multiwalk_test();
void drop_test();
void los_test();
void dynprops_test();
void dummy();
void packet_test();
void vector2d_test();
void vector3d_test();
void pos2d_test();
void pos3d_test();
void pos4d_test();
void range2d_test();
void range3d_test();
void test_curlfeatures();
void decay_test();
} // namespace Testing
} // namespace Pol
#endif