From e28cecb3d1e36367cd915881d775072d105e3d03 Mon Sep 17 00:00:00 2001 From: Mattes D Date: Sun, 15 Jan 2017 11:40:10 +0100 Subject: Moved cPrefab parser self-check to the LoadablePieces test. (#3536) --- tests/LoadablePieces/LoadablePieces.cpp | 126 +++++++++++++++++++++++++++++++- 1 file changed, 123 insertions(+), 3 deletions(-) (limited to 'tests/LoadablePieces/LoadablePieces.cpp') diff --git a/tests/LoadablePieces/LoadablePieces.cpp b/tests/LoadablePieces/LoadablePieces.cpp index c4c44e3db..58b65464d 100644 --- a/tests/LoadablePieces/LoadablePieces.cpp +++ b/tests/LoadablePieces/LoadablePieces.cpp @@ -17,7 +17,7 @@ -static int DoTest(void) +static int DoLoaderTest(void) { cPrefabPiecePool test; auto res = test.LoadFromFile("Test.cubeset", true); @@ -39,6 +39,117 @@ static int DoTest(void) +static int DoParserTest(void) +{ + // Create one static prefab to test the parser: + static const cPrefab::sDef testPrefabDef = + { + // Size: + 7, 6, 7, // SizeX = 7, SizeY = 6, SizeZ = 7 + + // Hitbox (relative to bounding box): + 0, 0, 0, // MinX, MinY, MinZ + 6, 5, 6, // MaxX, MaxY, MaxZ + + // Block definitions: + ".: 0: 0\n" /* 0 */ + "a:112: 0\n" /* netherbrick */ + "b:113: 0\n" /* netherbrickfence */, + + // Block data: + // Level 1 + "aaaaaaa" + "aaaaaaa" + "aaaaaaa" + "aaaaaaa" + "aaaaaaa" + "aaaaaaa" + "aaaaaaa" + + // Level 2 + "aa...aa" + "a.....a" + "......." + "......." + "......." + "a.....a" + "aa...aa" + + // Level 3 + "aa...aa" + "a.....a" + "......." + "......." + "......." + "a.....a" + "aa...aa" + + // Level 4 + "aa...aa" + "a.....a" + "......." + "......." + "......." + "a.....a" + "aa...aa" + + // Level 5 + "aabbbaa" + "a.....a" + "b.....b" + "b.....b" + "b.....b" + "a.....a" + "aabbbaa" + + // Level 6 + "aaaaaaa" + "a.....a" + "a.....a" + "a.....a" + "a.....a" + "a.....a" + "aaaaaaa", + + // Connections: + "0: 0, 3, 2: 4\n" + "0: 2, 3, 0: 2\n", + + // AllowedRotations: + 7, /* 1, 2, 3 CCW rotations */ + + // Merge strategy: + cBlockArea::msImprint, + + // ExtendFloorStrategy: + cPrefab::efsNone, + + // DefaultWeight: + 10, + + // DepthWeight: + "", + + // AddWeightIfSame: + 1000, + + // MoveToGround: + false, + }; + + cPrefab testPrefab(testPrefabDef); + cPiece & prefabAsPiece(testPrefab); // GetConnectors() is private in cPrefab, need to cast to parent cPiece where it is public + if (prefabAsPiece.GetConnectors().size() != 2) + { + LOGWARNING("Piece parsing failed, connectors not parsed properly. Expected 2 connectors, got %u", static_cast(prefabAsPiece.GetConnectors().size())); + } + return 0; +} + + + + + int main(int argc, char * argv[]) { LOGD("Test started"); @@ -48,9 +159,18 @@ int main(int argc, char * argv[]) GetCurrentFolder(folder, sizeof(folder)); LOG("Running cPrefabPiecePool test from folder \"%s\".", folder); - // Run the test: - int res = DoTest(); + // Run the Loader test: + int res = DoLoaderTest(); LOG("cPrefabPiecePool loading test done: %s", (res == 0) ? "success" : "failure"); + if (res != 0) + { + return res; + } + + // Run the Parser test: + res = DoParserTest(); + LOG("cPrefab parser test done: %s", (res == 0) ? "success" : "failure"); + return res; } -- cgit v1.2.3