/* * ===================================================================================== * * Filename: catch.cpp * * Description: Unit Tests for EntityConverter * * Version: 0.1 * Created: 07/03/2017 08:25:04 PM * Revision: none * Compiler: gcc * * Author: suhrke@teknik.io * * ===================================================================================== */ #ifndef CATCH_CONFIG_MAIN #define CATCH_CONFIG_MAIN #include "catch.hpp" #include #include #include "EntityConverter.hpp" #define PICKUP_FILENAME "r2x.pck" TEST_CASE( "r2x: a single Pickup entity can be converted", "[EntityConverter]" ) { // Instantiate object EntityConverter ec (PICKUP_FILENAME); // Mock up entity std::vector entity; entity.push_back(" type Pickup"); entity.push_back(" Vector3 position -216.00000 -132.00000 -1488.000488"); entity.push_back(" Vector3 angles 180.00000 0.00000 0.00000"); entity.push_back(" UInt8 pickupType 2"); // Mock up entity queue std::queue> q; q.push( entity ); // Match related entities (none) ec.matchRelated( q ); // Convert a single entity std::vector converted = ec.convert(entity); REQUIRE( converted[0] == "\"classname\" \"weapon_grenadelauncher\"\n" ); REQUIRE( converted[1] == "\"origin\" \"-216.00000 -1488.000488 -132.00000\"\n" ); } TEST_CASE( "r2x: a single PlayerSpawn (teamA) entity can be converted", "[EntityConverter]" ) { // Instantiate object EntityConverter ec (PICKUP_FILENAME); // Mock up entity std::vector entity; entity.push_back(" type PlayerSpawn"); entity.push_back(" Vector3 position -216.00000 -132.00000 -1488.000488"); entity.push_back(" Vector3 angles 180.00000 0.00000 0.00000"); entity.push_back(" Bool8 teamB 0"); entity.push_back(" Bool8 modeRace 0"); // Mock up entity queue std::queue> q; q.push( entity ); // Match related entities (none) ec.matchRelated( q ); // Convert a single entity std::vector converted = ec.convert(entity); REQUIRE( converted[0] == "\"classname\" \"info_player_team1\"\n" ); REQUIRE( converted[1] == "\"origin\" \"-216.00000 -1488.000488 -132.00000\"\n" ); REQUIRE( converted[2] == "\"angle\" \"180.00000\"\n" ); } TEST_CASE( "r2x: a single RaceStart entity can be converted", "[EntityConverter]" ) { // Instantiate object EntityConverter ec (PICKUP_FILENAME); // Mock up entity std::vector entity; entity.push_back(" type RaceStart"); // Mock up entity queue std::queue> q; q.push( entity ); // Match related entities (none) ec.matchRelated( q ); // Convert a single entity std::vector converted = ec.convert(entity); REQUIRE( converted[0] == "\"classname\" \"trigger_race_checkpoint\"\n" ); REQUIRE( converted[1] == "\"targetname\" \"cp1\"\n" ); REQUIRE( converted[2] == "\"cnt\" \"1\"\n" ); } TEST_CASE( "r2x: a single RaceFinish entity can be converted", "[EntityConverter]" ) { // Instantiate object EntityConverter ec (PICKUP_FILENAME); // Mock up entity std::vector entity; entity.push_back(" type RaceFinish"); // Mock up entity queue std::queue> q; q.push( entity ); // Match related entities (none) ec.matchRelated( q ); // Convert a single entity std::vector converted = ec.convert(entity); REQUIRE( converted[0] == "\"classname\" \"trigger_race_checkpoint\"\n" ); REQUIRE( converted[1] == "\"targetname\" \"finish\"\n" ); REQUIRE( converted[2] == "\"cnt\" \"0\"\n" ); } TEST_CASE( "r2x: a single Teleporter and related Target can be converted", "[EntityConverter]" ) { // Instantiate object EntityConverter ec (PICKUP_FILENAME); // Mock up Teleporter entity std::vector entity; entity.push_back(" type Teleporter"); entity.push_back(" String32 target tp1"); // Mock up Target entity std::vector entity2; entity2.push_back(" type Target"); entity2.push_back(" Vector3 position -216.00000 -132.00000 -1488.000488"); entity2.push_back(" String32 name tp1"); // Mock up entity queue std::queue> q; q.push( entity ); q.push( entity2 ); // Match related entities (one pair) ec.matchRelated( q ); // Convert two entities std::vector converted = ec.convert(entity); REQUIRE( converted[0] == "\"classname\" \"trigger_teleport\"\n" ); REQUIRE( converted[1] == "\"target\" \"tp1\"\n" ); std::vector converted2 = ec.convert(entity2); REQUIRE( converted2[0] == "\"classname\" \"misc_teleporter_dest\"\n" ); REQUIRE( converted2[1] == "\"origin\" \"-216.00000 -1488.000488 -132.00000\"\n" ); REQUIRE( converted2[2] == "\"targetname\" \"tp1\"\n" ); } TEST_CASE( "r2x: a single JumpPad and related Target can be converted", "[EntityConverter]" ) { // Instantiate object EntityConverter ec (PICKUP_FILENAME); // Mock up JumpPad entity std::vector entity; entity.push_back(" type JumpPad"); entity.push_back(" String32 target jp1"); // Mock up Target entity std::vector entity2; entity2.push_back(" type Target"); entity2.push_back(" Vector3 position -216.00000 -132.00000 -1488.000488"); entity2.push_back(" String32 name jp1"); // Mock up entity queue std::queue> q; q.push( entity ); q.push( entity2 ); // Match related entities (one pair) ec.matchRelated( q ); // Convert two entities std::vector converted = ec.convert(entity); REQUIRE( converted[0] == "\"classname\" \"trigger_push\"\n" ); REQUIRE( converted[1] == "\"target\" \"jp1\"\n" ); std::vector converted2 = ec.convert(entity2); REQUIRE( converted2[0] == "\"classname\" \"target_position\"\n" ); REQUIRE( converted2[1] == "\"origin\" \"-216.00000 -1488.000488 -132.00000\"\n" ); REQUIRE( converted2[2] == "\"targetname\" \"jp1\"\n" ); } #endif //CATCH_CONFIG_MAIN