transfercontroltest.cpp

Go to the documentation of this file.
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 }

Generated on Mon May 21 01:26:38 2012 for Advanced Strategic Command by  doxygen 1.5.1