1
0
Fork 0

Moved cPrefab parser self-check to the LoadablePieces test. (#3536)

This commit is contained in:
Mattes D 2017-01-15 11:40:10 +01:00 committed by GitHub
parent 5ffe920f29
commit e28cecb3d1
4 changed files with 128 additions and 111 deletions

View File

@ -15,111 +15,6 @@ uses a prefabricate in a cBlockArea for drawing itself.
#ifdef SELF_TEST
// Create one static prefab to test the parser:
static const cPrefab::sDef g_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,
};
static cPrefab g_TestPrefab(g_TestPrefabDef);
#endif
cPrefab::cPrefab(const cPrefab::sDef & a_Def) :
m_Size(a_Def.m_SizeX, a_Def.m_SizeY, a_Def.m_SizeZ),
m_HitBox(

View File

@ -88,7 +88,8 @@ endif()
source_group("Shared" FILES ${SHARED_SRCS} ${SHARED_HDRS})
source_group("Sources" FILES ${SRCS})
add_executable(LoadablePieces ${SRCS} ${SHARED_SRCS} ${SHARED_HDRS})
source_group("Data files" FILES Test.cubeset Test1.schematic)
add_executable(LoadablePieces ${SRCS} ${SHARED_SRCS} ${SHARED_HDRS} Test.cubeset Test1.schematic)
target_link_libraries(LoadablePieces tolualib zlib)
add_test(NAME LoadablePieces-test WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND LoadablePieces)

View File

@ -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;
}

View File

@ -106,9 +106,10 @@ Cubeset =
["MergeStrategy"] = "msSpongePrint",
["IsStarting"] = "1",
["DepthWeight"] = "",
["ShouldExpandFloor"] = "1",
["ExpandFloorStrategy"] = "None",
["MoveToGround"] = "1",
["AddWeightIfSame"] = "0",
["VerticalStrategy"] = "Fixed|150",
},
},
@ -141,7 +142,7 @@ Cubeset =
["MergeStrategy"] = "msSpongePrint",
["IsStarting"] = "0",
["DepthWeight"] = "",
["ShouldExpandFloor"] = "1",
["ExpandFloorStrategy"] = "None",
["MoveToGround"] = "0",
["AddWeightIfSame"] = "0",
},