diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/ChunkData/CopyBlocks.cpp | 4 | ||||
-rw-r--r-- | tests/Redstone/CMakeLists.txt | 10 | ||||
-rw-r--r-- | tests/Redstone/creatable.cpp | 164 |
4 files changed, 177 insertions, 2 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1fbd88f04..7e21ff94f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -5,3 +5,4 @@ enable_testing() include_directories(${CMAKE_CURRENT_SOURCE_DIR}) add_subdirectory(ChunkData) +add_subdirectory(Redstone) diff --git a/tests/ChunkData/CopyBlocks.cpp b/tests/ChunkData/CopyBlocks.cpp index ec9451099..99f416e94 100644 --- a/tests/ChunkData/CopyBlocks.cpp +++ b/tests/ChunkData/CopyBlocks.cpp @@ -45,7 +45,7 @@ int main(int argc, char ** argv) BLOCKTYPE * WritePosition = &TestBuffer[WritePosIdx]; memset(TestBuffer, 0x03, sizeof(TestBuffer)); size_t LastReportedStep = 1; - for (size_t idx = 0; idx < 5000; idx += 7) + for (size_t idx = 0; idx < 5000; idx += 73) { if (idx / 500 != LastReportedStep) { @@ -53,7 +53,7 @@ int main(int argc, char ** argv) LastReportedStep = idx / 500; } - for (size_t len = 3; len < 1000; len += 13) + for (size_t len = 3; len < 700; len += 13) { Data.CopyBlockTypes(WritePosition, idx, len); diff --git a/tests/Redstone/CMakeLists.txt b/tests/Redstone/CMakeLists.txt new file mode 100644 index 000000000..ee4a7a64f --- /dev/null +++ b/tests/Redstone/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required (VERSION 2.6) + +enable_testing() + +include_directories(${CMAKE_SOURCE_DIR}/src/) + +add_definitions(-DTEST_GLOBALS=1) + +add_executable(Redstone-creatable-exe creatable.cpp ../../src/BoundingBox.cpp) +add_test(NAME creatable-test COMMAND Redstone-creatable-exe) diff --git a/tests/Redstone/creatable.cpp b/tests/Redstone/creatable.cpp new file mode 100644 index 000000000..02c622788 --- /dev/null +++ b/tests/Redstone/creatable.cpp @@ -0,0 +1,164 @@ + +#include "Globals.h" + +class MockChest; +typedef cItemCallback<MockChest> cChestCallback; + +AString ItemToFullString(const cItem & a_Item) +{ +return ""; +} + +class cEntity +{ +public: + const Vector3d & GetPosition (void) const { return m_pos;} + double GetWidth (void) const { return 0; } + double GetHeight (void) const { return 0; } + static const Vector3d m_pos; +}; + +const Vector3d cEntity::m_pos = Vector3d(0,0,0); + +class cItem +{ +public: + cItem(BLOCKTYPE val) {} +}; + +void cBlockInfo::Initialize(cBlockInfoArray & a_Info) {} +cBlockInfo::~cBlockInfo () {} + +#include "Blocks/ChunkInterface.h" + +bool cChunkInterface::ForEachChunkInRect(int a_MinChunkX, int a_MaxChunkX, int a_MinChunkZ, int a_MaxChunkZ, cChunkDataCallback & a_Callback) +{ + return false; +} + +bool cChunkInterface::WriteBlockArea(cBlockArea & a_Area, int a_MinBlockX, int a_MinBlockY, int a_MinBlockZ, int a_DataTypes) +{ + return false; +} + +#include "Simulator/Simulator.inc" + +#include "Simulator/IncrementalRedstoneSimulator.inc" + +class MockWorld; + + +class MockHandler +{ +public: + static eBlockFace MetadataToDirection(NIBBLETYPE a_MetaData) { return BLOCK_FACE_NONE; } + static eBlockFace MetaDataToDirection(NIBBLETYPE a_MetaData) { return BLOCK_FACE_NONE; } + static eBlockFace BlockMetaDataToBlockFace(NIBBLETYPE a_MetaData) { return BLOCK_FACE_NONE; } + static NIBBLETYPE IsOpen(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ) { return 0; } + static void ExtendPiston(int a_BlockX, int a_BlockY, int a_BlockZ, MockWorld * a_World) {} + static void RetractPiston(int a_BlockX, int a_BlockY, int a_BlockZ, MockWorld * a_World) {} + static void SetOpen(cChunkInterface & a_ChunkInterface, int a_BlockX, int a_BlockY, int a_BlockZ, bool a_Open) {} + +}; + +template<unsigned char val> +class MockHandlerFetcher +{ +public: + typedef MockHandler type; +}; + +class MockWorld +{ +public: + bool IsChunkLighted(int a_ChunkX, int a_ChunkZ) { return false; } + bool ForEachEntityInChunk(int a_ChunkX, int a_ChunkZ, cEntityCallback & a_Callback) { return false; } + + void QueueLightChunk(int a_ChunkX, int a_ChunkZ, cChunkCoordCallback * a_Callback = NULL) {} + + + NIBBLETYPE GetBlockSkyLight (int a_BlockX, int a_BlockY, int a_BlockZ) { return 0; } + + cPlayer * FindClosestPlayer(const Vector3d & a_Pos, float a_SightLimit, bool a_CheckLineOfSight = true) { return NULL; } + + + void WakeUpSimulators(int a_BlockX, int a_BlockY, int a_BlockZ) {} + + void SpawnPrimedTNT(double a_X, double a_Y, double a_Z, int a_FuseTimeInSec = 80, double a_InitialVelocityCoeff = 1) {} + + + bool SetTrapdoorOpen(int a_BlockX, int a_BlockY, int a_BlockZ, bool a_Open) {return false; } + + + cChunkMap * GetChunkMap (void) { return NULL; } + +}; + + +class MockChunk +{ +public: + cRedstoneSimulatorChunkData * GetRedstoneSimulatorData() { return NULL; } + void SetRedstoneSimulatorData(cRedstoneSimulatorChunkData * a_Data) {} + bool IsRedstoneDirty() { return true; } + void SetIsRedstoneDirty(bool a_Param) {} + + void GetBlockTypeMeta(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta) {} + + void SetBlock(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, bool a_SendToClients = true) {} + void SetBlock( const Vector3i & a_RelBlockPos, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) {} + + int GetPosX(void) const { return 0; } + int GetPosZ(void) const { return 0; } + + MockChunk * GetRelNeighborChunkAdjustCoords(int & a_RelX, int & a_RelZ) const { return NULL; } + + + BLOCKTYPE GetBlock(int a_RelX, int a_RelY, int a_RelZ) const { return 0; } + BLOCKTYPE GetBlock(const Vector3i & a_RelCoords) const { return 0; } + + NIBBLETYPE GetMeta(int a_RelX, int a_RelY, int a_RelZ) const { return 0; } + void SetMeta(int a_RelX, int a_RelY, int a_RelZ, NIBBLETYPE a_Meta) {} + + + bool UnboundedRelGetBlock(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta) const { return false; } + + bool UnboundedRelGetBlockType(int a_RelX, int a_RelY, int a_RelZ, BLOCKTYPE & a_BlockType) const { return false; } + + MockChunk * GetNeighborChunk(int a_BlockX, int a_BlockZ) { return NULL; } + + MockChunk * GetRelNeighborChunk(int a_RelX, int a_RelZ) { return NULL; } + + bool IsValid(void) const { return false; } + + NIBBLETYPE GetTimeAlteredLight(NIBBLETYPE a_Skylight) const { return 0; } + + void BroadcastSoundParticleEffect(int a_EffectID, int a_SrcX, int a_SrcY, int a_SrcZ, int a_Data, const cClientHandle * a_Exclude = NULL) {} + void BroadcastSoundEffect (const AString & a_SoundName, double a_X, double a_Y, double a_Z, float a_Volume, float a_Pitch, const cClientHandle * a_Exclude = NULL) {} + + bool DoWithRedstonePoweredEntityAt(int a_BlockX, int a_BlockY, int a_BlockZ, cRedstonePoweredCallback & a_Callback) { return false; } + + template <class T> + bool DoWithChestAt(int a_BlockX, int a_BlockY, int a_BlockZ, T & a_Callback) + { + return false; + } + +}; +class MockChest +{ +public: + BLOCKTYPE GetBlockType(void) const { return 0; } + int GetNumberOfPlayers(void) const { return 0; } +}; + +int main(int argc, char** argv) +{ + + + + MockWorld World; + + cIncrementalRedstoneSimulator<MockChunk, MockWorld, MockHandlerFetcher, MockChest> Simulator(World); + return 0; +} |