summaryrefslogtreecommitdiffstats
path: root/tests/LoadablePieces/LoadablePieces.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/LoadablePieces/LoadablePieces.cpp126
1 files changed, 123 insertions, 3 deletions
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<unsigned>(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;
}