00001 /*************************************************************************** 00002 * * 00003 * This program is free software; you can redistribute it and/or modify * 00004 * it under the terms of the GNU General Public License as published by * 00005 * the Free Software Foundation; either version 2 of the License, or * 00006 * (at your option) any later version. * 00007 * * 00008 ***************************************************************************/ 00009 00010 #include "../gamemap.h" 00011 #include "../actions/transfercontrolcommand.h" 00012 #include "../loaders.h" 00013 #include "transfercontroltest.h" 00014 #include "unittestutil.h" 00015 #include "spfst.h" 00016 00017 00018 00019 void testTransferControl() 00020 { 00021 auto_ptr<GameMap> game ( startMap("unittest-transfercontrol.map")); 00022 00023 Vehicle* veh = game->getField(4,8)->vehicle; 00024 assertOrThrow( veh != NULL ); 00025 assertOrThrow( veh->getOwner() == 0 ); 00026 00027 MapField* fld = game->getField(4,0); 00028 assertOrThrow( fieldvisiblenow(fld,0) ); 00029 assertOrThrow( !fieldvisiblenow(fld,3) ); 00030 00031 auto_ptr<TransferControlCommand> tcc ( new TransferControlCommand( veh )); 00032 tcc->setReceiver( &game->player[3] ); 00033 ActionResult res = tcc->execute( createTestingContext( game.get() )); 00034 assertOrThrow( res.successful() ); 00035 tcc.release(); 00036 00037 assertOrThrow( veh->getOwner() == 3 ); 00038 assertOrThrow( !fieldvisiblenow(fld,0) ); 00039 assertOrThrow( fieldvisiblenow(fld,3) ); 00040 00041 res = game->actions.undo( createTestingContext( game.get() ) ); 00042 assertOrThrow( res.successful() ); 00043 00044 assertOrThrow( veh->getOwner() == 0 ); 00045 assertOrThrow( fieldVisibility(fld,0) == visible_now ); 00046 assertOrThrow( fieldVisibility(fld,3) == visible_not ); 00047 00048 00049 Building* bld = game->getField(14,7)->building; 00050 assertOrThrow( bld != NULL ); 00051 assertOrThrow( bld->getOwner() == 0 ); 00052 00053 00054 auto_ptr<TransferControlCommand> tcc2 ( new TransferControlCommand( bld)); 00055 tcc2->setReceiver( &game->player[1] ); 00056 ActionResult res2 = tcc2->execute( createTestingContext( game.get() )); 00057 assertOrThrow( res2.successful() ); 00058 tcc2.release(); 00059 00060 assertOrThrow( bld->getOwner() == 1 ); 00061 assertOrThrow( getFirstCargo(bld) ); 00062 assertOrThrow( getFirstCargo(bld)->getOwner() == 1 ); 00063 00064 }
1.5.1