diff options
author | Mattes D <github@xoft.cz> | 2014-05-31 10:12:54 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-05-31 10:12:54 +0200 |
commit | 0b758946ace41563a1763f557298879c894e56c2 (patch) | |
tree | 8ba9e2a3703c34ae317bd157f559bc72813805d9 /tests/ChunkData/Copies.cpp | |
parent | Fixed bindings for cCompositeChat:SetMessageType(). (diff) | |
parent | Reduced the number of cChunkData::CopyBlockTypes() tests, added progress. (diff) | |
download | cuberite-0b758946ace41563a1763f557298879c894e56c2.tar cuberite-0b758946ace41563a1763f557298879c894e56c2.tar.gz cuberite-0b758946ace41563a1763f557298879c894e56c2.tar.bz2 cuberite-0b758946ace41563a1763f557298879c894e56c2.tar.lz cuberite-0b758946ace41563a1763f557298879c894e56c2.tar.xz cuberite-0b758946ace41563a1763f557298879c894e56c2.tar.zst cuberite-0b758946ace41563a1763f557298879c894e56c2.zip |
Diffstat (limited to 'tests/ChunkData/Copies.cpp')
-rw-r--r-- | tests/ChunkData/Copies.cpp | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/tests/ChunkData/Copies.cpp b/tests/ChunkData/Copies.cpp new file mode 100644 index 000000000..312441eee --- /dev/null +++ b/tests/ChunkData/Copies.cpp @@ -0,0 +1,134 @@ + +#include "Globals.h" +#include "ChunkData.h" + + + +int main(int argc, char** argv) +{ + { + cChunkData buffer; + + buffer.SetBlock(3, 1, 4, 0xDE); + buffer.SetMeta(3, 1, 4, 0xA); + + cChunkData copy = buffer.Copy(); + testassert(copy.GetBlock(3, 1, 4) == 0xDE); + testassert(copy.GetMeta(3, 1, 4) == 0xA); + + BLOCKTYPE SrcBlockBuffer[16 * 16 * 256]; + for (int i = 0; i < 16 * 16 * 256; i += 4) + { + SrcBlockBuffer[i + 0] = 0xde; + SrcBlockBuffer[i + 1] = 0xad; + SrcBlockBuffer[i + 2] = 0xbe; + SrcBlockBuffer[i + 3] = 0xef; + } + + buffer.SetBlockTypes(SrcBlockBuffer); + BLOCKTYPE DstBlockBuffer[16 * 16 * 256]; + buffer.CopyBlockTypes(DstBlockBuffer); + testassert(memcmp(SrcBlockBuffer, DstBlockBuffer, (16 * 16 * 256) - 1) == 0); + + memset(SrcBlockBuffer, 0x00, 16 * 16 * 256); + buffer.SetBlockTypes(SrcBlockBuffer); + buffer.CopyBlockTypes(DstBlockBuffer); + testassert(memcmp(SrcBlockBuffer, DstBlockBuffer, (16 * 16 * 256) - 1) == 0); + } + + { + cChunkData buffer; + + NIBBLETYPE SrcNibbleBuffer[16 * 16 * 256 / 2]; + for (int i = 0; i < 16 * 16 * 256 / 2; i += 4) + { + SrcNibbleBuffer[i + 0] = 0xde; + SrcNibbleBuffer[i + 1] = 0xad; + SrcNibbleBuffer[i + 2] = 0xbe; + SrcNibbleBuffer[i + 3] = 0xef; + } + + buffer.SetMetas(SrcNibbleBuffer); + NIBBLETYPE DstNibbleBuffer[16 * 16 * 256/ 2]; + buffer.CopyMetas(DstNibbleBuffer); + testassert(memcmp(SrcNibbleBuffer, DstNibbleBuffer, (16 * 16 * 256 / 2) - 1) == 0); + + memset(SrcNibbleBuffer, 0x00, 16 * 16 * 256 /2); + buffer.SetMetas(SrcNibbleBuffer); + buffer.CopyMetas(DstNibbleBuffer); + testassert(memcmp(SrcNibbleBuffer, DstNibbleBuffer, (16 * 16 * 256 / 2) - 1) == 0); + } + + { + cChunkData buffer; + + NIBBLETYPE SrcNibbleBuffer[16 * 16 * 256 / 2]; + for (int i = 0; i < 16 * 16 * 256 / 2; i += 4) + { + SrcNibbleBuffer[i + 0] = 0xde; + SrcNibbleBuffer[i + 1] = 0xad; + SrcNibbleBuffer[i + 2] = 0xbe; + SrcNibbleBuffer[i + 3] = 0xef; + } + + buffer.SetBlockLight(SrcNibbleBuffer); + NIBBLETYPE DstNibbleBuffer[16 * 16 * 256 / 2]; + buffer.CopyBlockLight(DstNibbleBuffer); + testassert(memcmp(SrcNibbleBuffer, DstNibbleBuffer, (16 * 16 * 256 /2) - 1) == 0); + + memset(SrcNibbleBuffer, 0x00, 16 * 16 * 256 /2); + buffer.SetBlockLight(SrcNibbleBuffer); + buffer.CopyBlockLight(DstNibbleBuffer); + testassert(memcmp(SrcNibbleBuffer, DstNibbleBuffer, (16 * 16 * 256 /2) - 1) == 0); + } + + { + cChunkData buffer; + + NIBBLETYPE SrcNibbleBuffer[16 * 16 * 256 / 2]; + for (int i = 0; i < 16 * 16 * 256 / 2; i += 4) + { + SrcNibbleBuffer[i + 0] = 0xde; + SrcNibbleBuffer[i + 1] = 0xad; + SrcNibbleBuffer[i + 2] = 0xbe; + SrcNibbleBuffer[i + 3] = 0xef; + } + + buffer.SetSkyLight(SrcNibbleBuffer); + NIBBLETYPE DstNibbleBuffer[16 * 16 * 256/ 2]; + buffer.CopySkyLight(DstNibbleBuffer); + testassert(memcmp(SrcNibbleBuffer, DstNibbleBuffer, (16 * 16 * 256 / 2) - 1) == 0); + + memset(SrcNibbleBuffer, 0xFF, 16 * 16 * 256 / 2); + buffer.SetSkyLight(SrcNibbleBuffer); + buffer.CopySkyLight(DstNibbleBuffer); + testassert(memcmp(SrcNibbleBuffer, DstNibbleBuffer, (16 * 16 * 256 / 2) - 1) == 0); + } + + { + cChunkData buffer; + + BLOCKTYPE SrcBlockBuffer[16 * 16 * 256]; + memset(SrcBlockBuffer, 0x00, 16 * 16 * 256); + BLOCKTYPE DstBlockBuffer[16 * 16 * 256]; + buffer.CopyBlockTypes(DstBlockBuffer); + testassert(memcmp(SrcBlockBuffer, DstBlockBuffer, (16 * 16 * 256) - 1) == 0); + + NIBBLETYPE SrcNibbleBuffer[16 * 16 * 256 / 2]; + memset(SrcNibbleBuffer, 0x00, 16 * 16 * 256 / 2); + NIBBLETYPE DstNibbleBuffer[16 * 16 * 256 / 2]; + buffer.CopyMetas(DstNibbleBuffer); + testassert(memcmp(SrcNibbleBuffer, DstNibbleBuffer, (16 * 16 * 256 / 2) - 1) == 0); + + memset(SrcNibbleBuffer, 0x00, 16 * 16 * 256 / 2); + buffer.CopyBlockLight(DstNibbleBuffer); + testassert(memcmp(SrcNibbleBuffer, DstNibbleBuffer, (16 * 16 * 256 / 2) - 1) == 0); + + memset(SrcNibbleBuffer, 0xFF, 16 * 16 * 256 / 2); + buffer.CopySkyLight(DstNibbleBuffer); + testassert(memcmp(SrcNibbleBuffer, DstNibbleBuffer, (16 * 16 * 256 / 2) - 1) == 0); + } + + // All tests successful: + return 0; +} |