X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=tst%2Fworld%2FChunkTest.cpp;h=408fec32dffaa5f3f4b8de747490d11f832a907c;hb=f2f254f8d576b48fde9305c3d2927552d1d4c20d;hp=3ecf0f6912b7d42ae2f5853c5ad71e6effbad170;hpb=a74e9630e55ca47c23f3ba3c9ccffcaccad394ff;p=blank.git diff --git a/tst/world/ChunkTest.cpp b/tst/world/ChunkTest.cpp index 3ecf0f6..408fec3 100644 --- a/tst/world/ChunkTest.cpp +++ b/tst/world/ChunkTest.cpp @@ -451,6 +451,85 @@ void ChunkTest::testLightPropagation() { // now block the light to the left chunk->SetBlock(Chunk::Pos(6, 7, 7), Block(1)); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "non-zero light level in solid block", + 0, chunk->GetLight(Chunk::Pos(6, 7, 7)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 5, chunk->GetLight(Chunk::Pos(7, 7, 7)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 4, chunk->GetLight(Chunk::Pos(8, 7, 7)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 4, chunk->GetLight(Chunk::Pos(7, 8, 7)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 4, chunk->GetLight(Chunk::Pos(7, 6, 7)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 4, chunk->GetLight(Chunk::Pos(7, 7, 8)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 4, chunk->GetLight(Chunk::Pos(7, 7, 6)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 3, chunk->GetLight(Chunk::Pos(6, 6, 7)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 3, chunk->GetLight(Chunk::Pos(6, 8, 7)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 3, chunk->GetLight(Chunk::Pos(6, 7, 6)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 3, chunk->GetLight(Chunk::Pos(6, 7, 6)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 2, chunk->GetLight(Chunk::Pos(5, 6, 7)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 2, chunk->GetLight(Chunk::Pos(5, 8, 7)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 2, chunk->GetLight(Chunk::Pos(5, 7, 6)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle affected unrelated index", + 2, chunk->GetLight(Chunk::Pos(5, 7, 6)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "adding obstacle resulted in unexpected light level behind it", + 1, chunk->GetLight(Chunk::Pos(5, 7, 7)) + ); + + // and remove it again + chunk->SetBlock(Chunk::Pos(6, 7, 7), Block(0)); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "removing obstacle did not refill light correctly", + 4, chunk->GetLight(Chunk::Pos(6, 7, 7)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "removing obstacle did not refill light correctly", + 3, chunk->GetLight(Chunk::Pos(5, 7, 7)) + ); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "removing obstacle did not refill light correctly", + 2, chunk->GetLight(Chunk::Pos(4, 7, 7)) + ); } }