Mining settings in XML dumps

* Empire mining settings have been included in the empire's resource
information records

* Planet-specific mining settings have been included in the resource
provider information records
This commit is contained in:
Emmanuel BENOîT 2012-01-19 10:28:12 +01:00
parent 9b346a80c2
commit 3637b6e1d1
11 changed files with 380 additions and 70 deletions

View file

@ -28,7 +28,8 @@ final class EmpireResourceInformationMapper
* *
* <p> * <p>
* Create a new {@link EmpireResourceInformation} instance and set its fields using the row's * Create a new {@link EmpireResourceInformation} instance and set its fields using the row's
* contents. * contents. If a mining priority is present, set it, otherwise leave the field to its default
* <code>null</code> value.
*/ */
@Override @Override
public EmpireResourceInformation mapRow( ResultSet rs , int rowNum ) public EmpireResourceInformation mapRow( ResultSet rs , int rowNum )
@ -40,6 +41,11 @@ final class EmpireResourceInformationMapper
empRes.setOwed( rs.getDouble( "empres_owed" ) ); empRes.setOwed( rs.getDouble( "empres_owed" ) );
empRes.setPossessed( rs.getDouble( "empres_possessed" ) ); empRes.setPossessed( rs.getDouble( "empres_possessed" ) );
int priority = rs.getInt( "mining_priority" );
if ( !rs.wasNull( ) ) {
empRes.setMiningPriority( priority );
}
return empRes; return empRes;
} }

View file

@ -30,7 +30,8 @@ class ResourceRowMapper
* <p> * <p>
* Generate the {@link PlanetResourceRow} instance with the correct planet identifier, resource * Generate the {@link PlanetResourceRow} instance with the correct planet identifier, resource
* name, income and upkeep. If there is also a resource provider, attach a * name, income and upkeep. If there is also a resource provider, attach a
* {@link ResourceProviderInformation} instance to the result. * {@link ResourceProviderInformation} instance to the result, and set its mining priority if
* one exists.
*/ */
@Override @Override
public PlanetResourceRow mapRow( ResultSet rs , int rowNum ) public PlanetResourceRow mapRow( ResultSet rs , int rowNum )
@ -48,6 +49,12 @@ class ResourceRowMapper
rpi.setCurrentQuantity( rs.getDouble( "resprov_quantity" ) ); rpi.setCurrentQuantity( rs.getDouble( "resprov_quantity" ) );
rpi.setDifficulty( rs.getDouble( "resprov_difficulty" ) ); rpi.setDifficulty( rs.getDouble( "resprov_difficulty" ) );
rpi.setRecovery( rs.getDouble( "resprov_recovery" ) ); rpi.setRecovery( rs.getDouble( "resprov_recovery" ) );
int miningPriority = rs.getInt( "mining_priority" );
if ( !rs.wasNull( ) ) {
rpi.setMiningPriority( miningPriority );
}
row.setProvider( rpi ); row.setProvider( rpi );
} }

View file

@ -13,7 +13,8 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
* *
* <p> * <p>
* This class is used to store information about an empire's resources in debugging XML dumps. Each * This class is used to store information about an empire's resources in debugging XML dumps. Each
* instance indicates the amount possessed or owed for a given type of resources. * instance indicates the amount possessed or owed for a given type of resources, as well as the
* mining priority if it is a natural resource.
* *
* @author <a href="mailto:tseeker@legacyworlds.com">E. Benoît</a> * @author <a href="mailto:tseeker@legacyworlds.com">E. Benoît</a>
*/ */
@ -36,6 +37,14 @@ public class EmpireResourceInformation
@XStreamAsAttribute @XStreamAsAttribute
private Double owed; private Double owed;
/**
* The mining priority for this type of resource, or <code>null</code> if it is not a natural
* resource
*/
@XStreamAlias( "mining-priority" )
@XStreamAsAttribute
private Integer miningPriority;
/** @return the type of resources */ /** @return the type of resources */
public String getResource( ) public String getResource( )
@ -100,4 +109,26 @@ public class EmpireResourceInformation
this.owed = owed; this.owed = owed;
} }
/**
* @return the mining priority for this type of resource, or <code>null</code> if it is not a
* natural resource
*/
public Integer getMiningPriority( )
{
return this.miningPriority;
}
/**
* Set the mining priority for this type of resource
*
* @param miningPriority
* the mining priority for this type of resource
*/
public void setMiningPriority( int miningPriority )
{
this.miningPriority = miningPriority;
}
} }

View file

@ -47,6 +47,11 @@ public class ResourceProviderInformation
@XStreamAsAttribute @XStreamAsAttribute
private Double recovery; private Double recovery;
/** Planet-specific mining priority */
@XStreamAlias( "mining-priority" )
@XStreamAsAttribute
private Integer miningPriority;
/** @return the resource's identifier */ /** @return the resource's identifier */
public String getResource( ) public String getResource( )
@ -149,4 +154,26 @@ public class ResourceProviderInformation
this.recovery = recovery; this.recovery = recovery;
} }
/**
* @return the planet-specific mining priority, or <code>null</code> if the empire's global
* settings are in used
*/
public Integer getMiningPriority( )
{
return this.miningPriority;
}
/**
* Set the planet-specific mining priority
*
* @param miningPriority
* the planet-specific mining priority
*/
public void setMiningPriority( int miningPriority )
{
this.miningPriority = miningPriority;
}
} }

View file

@ -1217,12 +1217,19 @@ GRANT SELECT ON bugs.dump_research_view TO :dbuser;
* resource_name Text-based identifier of the resource type * resource_name Text-based identifier of the resource type
* empres_possessed Amount of resources possessed by the empire * empres_possessed Amount of resources possessed by the empire
* empres_owed Amount of resources owed by the empire * empres_owed Amount of resources owed by the empire
* mining_priority Mining priority for this resource, or NULL if it
* is not a natural resource
*/ */
DROP VIEW IF EXISTS bugs.dump_emp_resources_view CASCADE; DROP VIEW IF EXISTS bugs.dump_emp_resources_view CASCADE;
CREATE VIEW bugs.dump_emp_resources_view CREATE VIEW bugs.dump_emp_resources_view
AS SELECT empire_id , name AS resource_name , empres_possessed , empres_owed AS SELECT empire_id , name AS resource_name ,
empres_possessed , empres_owed ,
empmset_weight AS mining_priority
FROM emp.resources FROM emp.resources
INNER JOIN defs.strings ON id = resource_name_id; INNER JOIN defs.strings
ON id = resource_name_id
LEFT OUTER JOIN emp.mining_settings
USING ( empire_id , resource_name_id );
GRANT SELECT GRANT SELECT
ON bugs.dump_emp_resources_view ON bugs.dump_emp_resources_view
@ -1271,6 +1278,10 @@ GRANT SELECT ON bugs.dump_planets_view TO :dbuser;
* resprov_recovery The resource provider's recovery rate, or NULL * resprov_recovery The resource provider's recovery rate, or NULL
* if there is no resource provider of that * if there is no resource provider of that
* type on the planet * type on the planet
* mining_priority The planet-specific mining priority for the
* current resource type, or NULL if there
* are no planet-specific settings or no
* provider of this type.
*/ */
DROP VIEW IF EXISTS bugs.dump_planet_resources_view CASCADE; DROP VIEW IF EXISTS bugs.dump_planet_resources_view CASCADE;
CREATE VIEW bugs.dump_planet_resources_view CREATE VIEW bugs.dump_planet_resources_view
@ -1278,7 +1289,8 @@ CREATE VIEW bugs.dump_planet_resources_view
name AS resource_name , name AS resource_name ,
pres_income , pres_upkeep , pres_income , pres_upkeep ,
resprov_quantity_max , resprov_quantity , resprov_quantity_max , resprov_quantity ,
resprov_difficulty , resprov_recovery resprov_difficulty , resprov_recovery ,
emppmset_weight AS mining_priority
FROM emp.planets FROM emp.planets
INNER JOIN verse.planet_resources INNER JOIN verse.planet_resources
USING ( planet_id ) USING ( planet_id )
@ -1286,6 +1298,8 @@ CREATE VIEW bugs.dump_planet_resources_view
ON resource_name_id = id ON resource_name_id = id
LEFT OUTER JOIN verse.resource_providers LEFT OUTER JOIN verse.resource_providers
USING ( planet_id , resource_name_id ) USING ( planet_id , resource_name_id )
LEFT OUTER JOIN emp.planet_mining_settings
USING ( empire_id , planet_id , resource_name_id )
ORDER BY name; ORDER BY name;
GRANT SELECT GRANT SELECT

View file

@ -3,7 +3,8 @@
*/ */
BEGIN; BEGIN;
/* /*
* We need a resource type, an empire and the associated resource record. * We need a basic resource type, a natural resource type, an empire and
* the associated resources and mining settings records.
*/ */
\i utils/strings.sql \i utils/strings.sql
\i utils/resources.sql \i utils/resources.sql
@ -11,6 +12,7 @@ BEGIN;
\i utils/naming.sql \i utils/naming.sql
\i utils/universe.sql \i utils/universe.sql
SELECT _create_resources( 1 , 'resource' ); SELECT _create_resources( 1 , 'resource' );
SELECT _create_natural_resources( 1 , 'natRes' );
SELECT _create_emp_names( 1 , 'empire' ); SELECT _create_emp_names( 1 , 'empire' );
INSERT INTO emp.empires( name_id , cash ) INSERT INTO emp.empires( name_id , cash )
VALUES ( _get_emp_name( 'empire1' ) , 0 ); VALUES ( _get_emp_name( 'empire1' ) , 0 );
@ -18,19 +20,37 @@ BEGIN;
empire_id , resource_name_id , empres_possessed , empres_owed empire_id , resource_name_id , empres_possessed , empres_owed
) VALUES ( ) VALUES (
_get_emp_name( 'empire1' ) , _get_string( 'resource1' ) , 1 , 2 _get_emp_name( 'empire1' ) , _get_string( 'resource1' ) , 1 , 2
) , (
_get_emp_name( 'empire1' ) , _get_string( 'natRes1' ) , 3 , 4
);
INSERT INTO emp.mining_settings (
empire_id , resource_name_id , empmset_weight
) VALUES (
_get_emp_name( 'empire1' ) , _get_string( 'natRes1' ) , 0
); );
/***** TESTS BEGIN HERE *****/ /***** TESTS BEGIN HERE *****/
SELECT plan( 1 ); SELECT plan( 2 );
SELECT diag_test_name( 'bugs.dump_emp_resources_view - Contents' ); SELECT diag_test_name( 'bugs.dump_emp_resources_view - Basic resources' );
SELECT set_eq( $$ SELECT set_eq( $$
SELECT empire_id , resource_name , empres_possessed , empres_owed SELECT empire_id , resource_name , empres_possessed , empres_owed
FROM bugs.dump_emp_resources_view FROM bugs.dump_emp_resources_view
WHERE mining_priority IS NULL
$$ , $$ VALUES ( $$ , $$ VALUES (
_get_emp_name( 'empire1' ) , 'resource1' , 1 , 2 _get_emp_name( 'empire1' ) , 'resource1' , 1 , 2
) $$ ); ) $$ );
SELECT diag_test_name( 'bugs.dump_emp_resources_view - Natural resources' );
SELECT set_eq( $$
SELECT empire_id , resource_name , empres_possessed , empres_owed ,
mining_priority
FROM bugs.dump_emp_resources_view
WHERE mining_priority IS NOT NULL
$$ , $$ VALUES (
_get_emp_name( 'empire1' ) , 'natRes1' , 3 , 4 , 0
) $$ );
SELECT * FROM finish( ); SELECT * FROM finish( );
ROLLBACK; ROLLBACK;

View file

@ -3,10 +3,12 @@
*/ */
BEGIN; BEGIN;
/* /*
* We need a couple of resources (one natural, one basic), three planets * We need a couple of resources (one natural, one basic), four planets
* with valid planet resource records (two of the planets will have a * with valid planet resource records (three of the planets will have a
* resource provider), two empires (owning a planet with and without * resource provider and one of them will have planet-specific mining
* resource providers, respectively). * settings), three empires (owning a planet without resource provider,
* with resource provider and with resource provider and mining settings,
* respectively).
*/ */
\i utils/strings.sql \i utils/strings.sql
\i utils/resources.sql \i utils/resources.sql
@ -15,7 +17,7 @@ BEGIN;
\i utils/universe.sql \i utils/universe.sql
SELECT _create_natural_resources( 1 , 'natRes' ); SELECT _create_natural_resources( 1 , 'natRes' );
SELECT _create_resources( 1 , 'basicRes' ); SELECT _create_resources( 1 , 'basicRes' );
SELECT _create_raw_planets( 3 , 'planet' ); SELECT _create_raw_planets( 4 , 'planet' );
INSERT INTO verse.planet_resources( INSERT INTO verse.planet_resources(
planet_id , resource_name_id , pres_income , pres_upkeep planet_id , resource_name_id , pres_income , pres_upkeep
) VALUES ( ) VALUES (
@ -30,22 +32,37 @@ BEGIN;
_get_map_name( 'planet3' ) , _get_string( 'basicRes1' ) , 9 , 10 _get_map_name( 'planet3' ) , _get_string( 'basicRes1' ) , 9 , 10
) , ( ) , (
_get_map_name( 'planet3' ) , _get_string( 'natRes1' ) , 11 , 12 _get_map_name( 'planet3' ) , _get_string( 'natRes1' ) , 11 , 12
) , (
_get_map_name( 'planet4' ) , _get_string( 'basicRes1' ) , 13 , 14
) , (
_get_map_name( 'planet4' ) , _get_string( 'natRes1' ) , 15 , 16
); );
SELECT _create_resource_provider( 'planet1' , 'natRes1' ); SELECT _create_resource_provider( 'planet1' , 'natRes1' );
SELECT _create_resource_provider( 'planet3' , 'natRes1' ); SELECT _create_resource_provider( 'planet3' , 'natRes1' );
SELECT _create_resource_provider( 'planet4' , 'natRes1' );
SELECT _create_emp_names( 2 , 'empire' ); SELECT _create_emp_names( 3 , 'empire' );
SELECT emp.create_empire( _get_emp_name( 'empire1' ) , SELECT emp.create_empire( _get_emp_name( 'empire1' ) ,
_get_map_name( 'planet1' ) , _get_map_name( 'planet1' ) ,
200.0 ); 200.0 );
SELECT emp.create_empire( _get_emp_name( 'empire2' ) , SELECT emp.create_empire( _get_emp_name( 'empire2' ) ,
_get_map_name( 'planet2' ) , _get_map_name( 'planet2' ) ,
200.0 ); 200.0 );
SELECT emp.create_empire( _get_emp_name( 'empire3' ) ,
_get_map_name( 'planet4' ) ,
200.0 );
INSERT INTO emp.planet_mining_settings(
empire_id , planet_id , resource_name_id , emppmset_weight
) VALUES (
_get_emp_name( 'empire3' ) , _get_map_name( 'planet4' ) ,
_get_string( 'natRes1' ) , 2
);
/***** TESTS BEGIN HERE *****/ /***** TESTS BEGIN HERE *****/
SELECT plan( 2 ); SELECT plan( 3 );
SELECT diag_test_name( 'bugs.dump_planet_resources_view - Records without resource providers' ); SELECT diag_test_name( 'bugs.dump_planet_resources_view - Records without resource providers' );
SELECT set_eq( $$ SELECT set_eq( $$
@ -58,16 +75,30 @@ BEGIN;
_get_emp_name( 'empire2' ) , _get_map_name( 'planet2' ) , 'basicRes1' , 5 , 6 _get_emp_name( 'empire2' ) , _get_map_name( 'planet2' ) , 'basicRes1' , 5 , 6
) , ( ) , (
_get_emp_name( 'empire2' ) , _get_map_name( 'planet2' ) , 'natRes1' , 7 , 8 _get_emp_name( 'empire2' ) , _get_map_name( 'planet2' ) , 'natRes1' , 7 , 8
) , (
_get_emp_name( 'empire3' ) , _get_map_name( 'planet4' ) , 'basicRes1' , 13 , 14
) $$ ); ) $$ );
SELECT diag_test_name( 'bugs.dump_planet_resources_view - Records with resource providers' ); SELECT diag_test_name( 'bugs.dump_planet_resources_view - Records with resource providers, no settings' );
SELECT set_eq( $$ SELECT set_eq( $$
SELECT empire_id , planet_id , resource_name , pres_income , pres_upkeep SELECT empire_id , planet_id , resource_name , pres_income , pres_upkeep
FROM bugs.dump_planet_resources_view FROM bugs.dump_planet_resources_view
WHERE resprov_quantity IS NOT NULL WHERE resprov_quantity IS NOT NULL
AND mining_priority IS NULL
$$ , $$ VALUES ( $$ , $$ VALUES (
_get_emp_name( 'empire1' ) , _get_map_name( 'planet1' ) , 'natRes1' , 3 , 4 _get_emp_name( 'empire1' ) , _get_map_name( 'planet1' ) , 'natRes1' , 3 , 4
) $$ ); ) $$ );
SELECT diag_test_name( 'bugs.dump_planet_resources_view - Records with resource providers and settings' );
SELECT set_eq( $$
SELECT empire_id , planet_id , resource_name , pres_income ,
pres_upkeep , mining_priority
FROM bugs.dump_planet_resources_view
WHERE resprov_quantity IS NOT NULL
AND mining_priority IS NOT NULL
$$ , $$ VALUES (
_get_emp_name( 'empire3' ) , _get_map_name( 'planet4' ) , 'natRes1' , 15 , 16 , 2
) $$ );
SELECT * FROM finish( ); SELECT * FROM finish( );
ROLLBACK; ROLLBACK;

View file

@ -24,13 +24,22 @@ public class TestEmpireResourceInformationMapper
{ {
/** Resource identifier used in tests */ /** Resource identifier used in tests */
private static final String TEST_ID = "Test"; private static final String[] TEST_ID = {
"Test1" , "Test2"
};
/** "Owed" value used in tests */ /** "Owed" value used in tests */
private static final Double TEST_OWED = 1.0; private static final Double[] TEST_OWED = {
1.0 , 2.0
};
/** "Possessed" value used in tests */ /** "Possessed" value used in tests */
private static final Double TEST_POSSESSED = 2.0; private static final Double[] TEST_POSSESSED = {
3.0 , 4.0
};
/** Mining priority used in tests */
private static final Integer TEST_PRIORITY = 5;
/** The fake result set used in the tests */ /** The fake result set used in the tests */
private ResultSet resultSet; private ResultSet resultSet;
@ -46,18 +55,23 @@ public class TestEmpireResourceInformationMapper
{ {
this.mapper = new EmpireResourceInformationMapper( ); this.mapper = new EmpireResourceInformationMapper( );
HashMap< String , Object > rows[] = new HashMap[ 2 ];
for ( int i = 0 ; i < 2 ; i++ ) {
HashMap< String , Object > row = new HashMap< String , Object >( ); HashMap< String , Object > row = new HashMap< String , Object >( );
row.put( "resource_name" , TEST_ID ); row.put( "resource_name" , TEST_ID[ i ] );
row.put( "empres_possessed" , TEST_POSSESSED ); row.put( "empres_possessed" , TEST_POSSESSED[ i ] );
row.put( "empres_owed" , TEST_OWED ); row.put( "empres_owed" , TEST_OWED[ i ] );
if ( i == 1 ) {
row.put( "mining_priority" , TEST_PRIORITY );
}
rows[ i ] = row;
}
this.resultSet = MockResultSet.create( new HashMap[] { this.resultSet = MockResultSet.create( rows );
row
} );
} }
/** Mapping a row */ /** Mapping a row without mining priority */
@Test @Test
public void testMapRow( ) public void testMapRow( )
throws SQLException throws SQLException
@ -67,8 +81,26 @@ public class TestEmpireResourceInformationMapper
this.resultSet.absolute( 1 ); this.resultSet.absolute( 1 );
empRes = this.mapper.mapRow( this.resultSet , 1 ); empRes = this.mapper.mapRow( this.resultSet , 1 );
assertEquals( TEST_ID , empRes.getResource( ) ); assertEquals( TEST_ID[ 0 ] , empRes.getResource( ) );
assertEquals( TEST_POSSESSED , empRes.getPossessed( ) ); assertEquals( TEST_POSSESSED[ 0 ] , empRes.getPossessed( ) );
assertEquals( TEST_OWED , empRes.getOwed( ) ); assertEquals( TEST_OWED[ 0 ] , empRes.getOwed( ) );
assertNull( empRes.getMiningPriority( ) );
}
/** Mapping a row with mining priority */
@Test
public void testMapRowWithPriority( )
throws SQLException
{
EmpireResourceInformation empRes;
this.resultSet.absolute( 2 );
empRes = this.mapper.mapRow( this.resultSet , 2 );
assertEquals( TEST_ID[ 1 ] , empRes.getResource( ) );
assertEquals( TEST_POSSESSED[ 1 ] , empRes.getPossessed( ) );
assertEquals( TEST_OWED[ 1 ] , empRes.getOwed( ) );
assertEquals( TEST_PRIORITY , empRes.getMiningPriority( ) );
} }
} }

View file

@ -22,35 +22,46 @@ public class TestResourceRowMapper
{ {
/** Planet identifiers found in the "results" */ /** Planet identifiers found in the "results" */
private static final int[] PLANET_IDS = new int[] { private static final int[] PLANET_IDS = new int[] {
1 , 2 1 , 2 , 3
}; };
/** Resource names found in the two "results", respectively */ /** Resource names found in the three "results", respectively */
private static final String[] RESOURCE_NAMES = new String[] { private static final String[] RESOURCE_NAMES = new String[] {
"Test1" , "Test2" "Test1" , "Test2" , "Test3"
}; };
/** Income values found in the two results */ /** Income values found in the three results */
private static final double[] INCOME_VALUES = new double[] { private static final double[] INCOME_VALUES = new double[] {
3.0 , 4.0 4.0 , 5.0 , 6.0
}; };
/** Upkeep values found in the two results */ /** Upkeep values found in the three results */
private static final double[] UPKEEP_VALUES = new double[] { private static final double[] UPKEEP_VALUES = new double[] {
5.0 , 6.0 7.0 , 8.0 , 9.0
}; };
/** Resource provider quantity for the second row */ /** Resource provider quantity for the second and third rows */
private static final double RP_QUANTITY = 7.0; private static final double[] RP_QUANTITY = {
10.0 , 11.0
};
/** Resource provider capacity for the second row */ /** Resource provider capacity for the second and third rows */
private static final double RP_CAPACITY = 8.0; private static final double[] RP_CAPACITY = {
12.0 , 13.0
};
/** Resource provider extraction difficulty for the second row */ /** Resource provider extraction difficulty for the second and third rows */
private static final double RP_DIFFICULTY = 9.0; private static final double[] RP_DIFFICULTY = {
14.0 , 15.0
};
/** Resource provider recovery rate for the second row */ /** Resource provider recovery rate for the second and third rows */
private static final double RP_RECOVERY = 10.0; private static final double[] RP_RECOVERY = {
16.0 , 17.0
};
/** Mining priority value used for the third row */
private static final Integer MINING_PRIORITY = 18;
/** The fake result set used in the tests */ /** The fake result set used in the tests */
private ResultSet resultSet; private ResultSet resultSet;
@ -66,18 +77,21 @@ public class TestResourceRowMapper
this.mapper = new ResourceRowMapper( ); this.mapper = new ResourceRowMapper( );
@SuppressWarnings( "unchecked" ) @SuppressWarnings( "unchecked" )
HashMap< String , Object > rows[] = new HashMap[ 2 ]; HashMap< String , Object > rows[] = new HashMap[ 3 ];
for ( int i = 0 ; i < 2 ; i++ ) { for ( int i = 0 ; i < 3 ; i++ ) {
HashMap< String , Object > row = new HashMap< String , Object >( ); HashMap< String , Object > row = new HashMap< String , Object >( );
row.put( "planet_id" , PLANET_IDS[ i ] ); row.put( "planet_id" , PLANET_IDS[ i ] );
row.put( "resource_name" , RESOURCE_NAMES[ i ] ); row.put( "resource_name" , RESOURCE_NAMES[ i ] );
row.put( "pres_income" , INCOME_VALUES[ i ] ); row.put( "pres_income" , INCOME_VALUES[ i ] );
row.put( "pres_upkeep" , UPKEEP_VALUES[ i ] ); row.put( "pres_upkeep" , UPKEEP_VALUES[ i ] );
if ( i == 1 ) { if ( i > 0 ) {
row.put( "resprov_quantity_max" , RP_CAPACITY ); row.put( "resprov_quantity_max" , RP_CAPACITY[ i - 1 ] );
row.put( "resprov_quantity" , RP_QUANTITY ); row.put( "resprov_quantity" , RP_QUANTITY[ i - 1 ] );
row.put( "resprov_difficulty" , RP_DIFFICULTY ); row.put( "resprov_difficulty" , RP_DIFFICULTY[ i - 1 ] );
row.put( "resprov_recovery" , RP_RECOVERY ); row.put( "resprov_recovery" , RP_RECOVERY[ i - 1 ] );
if ( i > 1 ) {
row.put( "mining_priority" , MINING_PRIORITY );
}
} }
rows[ i ] = row; rows[ i ] = row;
} }
@ -106,7 +120,7 @@ public class TestResourceRowMapper
/** /**
* Mapping a row with a provider information record * Mapping a row with a provider information record but no mining priority
*/ */
@Test @Test
public void testMapWithProvider( ) public void testMapWithProvider( )
@ -121,9 +135,34 @@ public class TestResourceRowMapper
assertEquals( INCOME_VALUES[ 1 ] , row.getDelta( ).getIncome( ) , 0 ); assertEquals( INCOME_VALUES[ 1 ] , row.getDelta( ).getIncome( ) , 0 );
assertEquals( UPKEEP_VALUES[ 1 ] , row.getDelta( ).getUpkeep( ) , 0 ); assertEquals( UPKEEP_VALUES[ 1 ] , row.getDelta( ).getUpkeep( ) , 0 );
assertNotNull( row.getProvider( ) ); assertNotNull( row.getProvider( ) );
assertEquals( RP_CAPACITY , row.getProvider( ).getMaximalQuantity( ) , 0 ); assertEquals( RP_CAPACITY[ 0 ] , row.getProvider( ).getMaximalQuantity( ) , 0 );
assertEquals( RP_QUANTITY , row.getProvider( ).getCurrentQuantity( ) , 0 ); assertEquals( RP_QUANTITY[ 0 ] , row.getProvider( ).getCurrentQuantity( ) , 0 );
assertEquals( RP_DIFFICULTY , row.getProvider( ).getDifficulty( ) , 0 ); assertEquals( RP_DIFFICULTY[ 0 ] , row.getProvider( ).getDifficulty( ) , 0 );
assertEquals( RP_RECOVERY , row.getProvider( ).getRecovery( ) , 0 ); assertEquals( RP_RECOVERY[ 0 ] , row.getProvider( ).getRecovery( ) , 0 );
assertNull( row.getProvider( ).getMiningPriority( ) );
}
/**
* Mapping a row with a provider information record and a mining priority
*/
@Test
public void testMapWithPriority( )
throws SQLException
{
this.resultSet.absolute( 3 );
PlanetResourceRow row = this.mapper.mapRow( this.resultSet , 0 );
assertNotNull( row );
assertEquals( PLANET_IDS[ 2 ] , row.getPlanetId( ) );
assertEquals( RESOURCE_NAMES[ 2 ] , row.getDelta( ).getResource( ) );
assertEquals( INCOME_VALUES[ 2 ] , row.getDelta( ).getIncome( ) , 0 );
assertEquals( UPKEEP_VALUES[ 2 ] , row.getDelta( ).getUpkeep( ) , 0 );
assertNotNull( row.getProvider( ) );
assertEquals( RP_CAPACITY[ 1 ] , row.getProvider( ).getMaximalQuantity( ) , 0 );
assertEquals( RP_QUANTITY[ 1 ] , row.getProvider( ).getCurrentQuantity( ) , 0 );
assertEquals( RP_DIFFICULTY[ 1 ] , row.getProvider( ).getDifficulty( ) , 0 );
assertEquals( RP_RECOVERY[ 1 ] , row.getProvider( ).getRecovery( ) , 0 );
assertEquals( MINING_PRIORITY , row.getProvider( ).getMiningPriority( ) );
} }
} }

View file

@ -27,6 +27,9 @@ public class TestEmpireResourceInformation
/** "Possessed" value used in tests */ /** "Possessed" value used in tests */
private static final Double TEST_POSSESSED = 2.0; private static final Double TEST_POSSESSED = 2.0;
/** Mining priority value used in tests */
private static final Integer TEST_PRIORITY = 3;
/** Empire resource information instance used in tests */ /** Empire resource information instance used in tests */
private EmpireResourceInformation empRes; private EmpireResourceInformation empRes;
@ -46,6 +49,7 @@ public class TestEmpireResourceInformation
assertNull( this.empRes.getResource( ) ); assertNull( this.empRes.getResource( ) );
assertNull( this.empRes.getOwed( ) ); assertNull( this.empRes.getOwed( ) );
assertNull( this.empRes.getPossessed( ) ); assertNull( this.empRes.getPossessed( ) );
assertNull( this.empRes.getMiningPriority( ) );
} }
@ -90,7 +94,16 @@ public class TestEmpireResourceInformation
} }
/** Serialising the instance to XML */ /** Setting and reading the mining priority */
@Test
public void testMiningPriority( )
{
this.empRes.setMiningPriority( TEST_PRIORITY );
assertEquals( TEST_PRIORITY , this.empRes.getMiningPriority( ) );
}
/** Serialising the instance to XML - no mining priority */
@Test @Test
public void testXMLSerialisation( ) public void testXMLSerialisation( )
{ {
@ -105,10 +118,31 @@ public class TestEmpireResourceInformation
assertTrue( serialised.contains( " id=\"" + TEST_ID + "\"" ) ); assertTrue( serialised.contains( " id=\"" + TEST_ID + "\"" ) );
assertTrue( serialised.contains( " owed=\"" + TEST_OWED + "\"" ) ); assertTrue( serialised.contains( " owed=\"" + TEST_OWED + "\"" ) );
assertTrue( serialised.contains( " possessed=\"" + TEST_POSSESSED + "\"" ) ); assertTrue( serialised.contains( " possessed=\"" + TEST_POSSESSED + "\"" ) );
assertFalse( serialised.contains( "mining-priority=\"" ) );
} }
/** Deserialising an instance from XML */ /** Serialising the instance to XML - including mining priority */
@Test
public void testXMLSerialisationWithPriority( )
{
this.empRes.setResource( TEST_ID );
this.empRes.setOwed( TEST_OWED );
this.empRes.setPossessed( TEST_POSSESSED );
this.empRes.setMiningPriority( TEST_PRIORITY );
String serialised = this.createXStreamInstance( ).toXML( this.empRes );
assertNotNull( serialised );
assertTrue( serialised.startsWith( "<resource " ) );
assertTrue( serialised.endsWith( "/>" ) );
assertTrue( serialised.contains( " id=\"" + TEST_ID + "\"" ) );
assertTrue( serialised.contains( " owed=\"" + TEST_OWED + "\"" ) );
assertTrue( serialised.contains( " possessed=\"" + TEST_POSSESSED + "\"" ) );
assertTrue( serialised.contains( " mining-priority=\"" + TEST_PRIORITY + "\"" ) );
}
/** Deserialising an instance from XML - no mining priority */
@Test @Test
public void testXMLDeserialisation( ) public void testXMLDeserialisation( )
{ {
@ -123,6 +157,26 @@ public class TestEmpireResourceInformation
assertEquals( TEST_ID , this.empRes.getResource( ) ); assertEquals( TEST_ID , this.empRes.getResource( ) );
assertEquals( TEST_POSSESSED , this.empRes.getPossessed( ) ); assertEquals( TEST_POSSESSED , this.empRes.getPossessed( ) );
assertEquals( TEST_OWED , this.empRes.getOwed( ) ); assertEquals( TEST_OWED , this.empRes.getOwed( ) );
assertNull( this.empRes.getMiningPriority( ) );
}
/** Deserialising an instance from XML - including mining priority */
@Test
public void testXMLDeserialisationWithPriority( )
{
String xml = "<resource id=\"" + TEST_ID + "\" owed=\"" + TEST_OWED.toString( ) + "\" possessed=\""
+ TEST_POSSESSED.toString( ) + "\" mining-priority=\"" + TEST_PRIORITY.toString( ) + "\" />";
Object deserialised = this.createXStreamInstance( ).fromXML( xml );
assertNotNull( deserialised );
assertEquals( EmpireResourceInformation.class , deserialised.getClass( ) );
this.empRes = (EmpireResourceInformation) deserialised;
assertEquals( TEST_ID , this.empRes.getResource( ) );
assertEquals( TEST_POSSESSED , this.empRes.getPossessed( ) );
assertEquals( TEST_OWED , this.empRes.getOwed( ) );
assertEquals( TEST_PRIORITY , this.empRes.getMiningPriority( ) );
} }

View file

@ -2,6 +2,7 @@ package com.deepclone.lw.beans.bt.es.data;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@ -27,6 +28,9 @@ public class TestResourceProviderInformation
/** A real number used in tests */ /** A real number used in tests */
private static final Double TEST_DOUBLE = 4.2; private static final Double TEST_DOUBLE = 4.2;
/** Mining priority value used in tests */
private static final Integer TEST_PRIORITY = 3;
/** A resource provider information record */ /** A resource provider information record */
private ResourceProviderInformation rpi; private ResourceProviderInformation rpi;
@ -49,6 +53,7 @@ public class TestResourceProviderInformation
assertNull( this.rpi.getMaximalQuantity( ) ); assertNull( this.rpi.getMaximalQuantity( ) );
assertNull( this.rpi.getDifficulty( ) ); assertNull( this.rpi.getDifficulty( ) );
assertNull( this.rpi.getRecovery( ) ); assertNull( this.rpi.getRecovery( ) );
assertNull( this.rpi.getMiningPriority( ) );
} }
@ -124,7 +129,18 @@ public class TestResourceProviderInformation
/** /**
* Serialising the instance to XML * Setting and reading the mining priority
*/
@Test
public void testMiningPriority( )
{
this.rpi.setMiningPriority( TEST_PRIORITY );
assertEquals( TEST_PRIORITY , this.rpi.getMiningPriority( ) );
}
/**
* Serialising the instance to XML, without mining priority
*/ */
@Test @Test
public void testXMLSerialisation( ) public void testXMLSerialisation( )
@ -145,11 +161,39 @@ public class TestResourceProviderInformation
assertTrue( serialised.contains( " max=\"0.2\"" ) ); assertTrue( serialised.contains( " max=\"0.2\"" ) );
assertTrue( serialised.contains( " difficulty=\"0.3\"" ) ); assertTrue( serialised.contains( " difficulty=\"0.3\"" ) );
assertTrue( serialised.contains( " recovery=\"0.4\"" ) ); assertTrue( serialised.contains( " recovery=\"0.4\"" ) );
assertFalse( serialised.contains( "mining-priority=" ) );
} }
/** /**
* Deserialising an instance that contains data * Serialising the instance to XML, with a mining priority
*/
@Test
public void testXMLSerialisationWithPriority( )
{
this.rpi.setResource( TEST_STRING );
this.rpi.setCurrentQuantity( 0.1 );
this.rpi.setMaximalQuantity( 0.2 );
this.rpi.setDifficulty( 0.3 );
this.rpi.setRecovery( 0.4 );
this.rpi.setMiningPriority( TEST_PRIORITY );
XStream xstream = this.createXStreamInstance( );
String serialised = xstream.toXML( this.rpi );
assertNotNull( serialised );
assertTrue( serialised.startsWith( "<resource-provider " ) );
assertTrue( serialised.endsWith( "/>" ) );
assertTrue( serialised.contains( " resource=\"" + TEST_STRING + "\"" ) );
assertTrue( serialised.contains( " current=\"0.1\"" ) );
assertTrue( serialised.contains( " max=\"0.2\"" ) );
assertTrue( serialised.contains( " difficulty=\"0.3\"" ) );
assertTrue( serialised.contains( " recovery=\"0.4\"" ) );
assertTrue( serialised.contains( " mining-priority=\"" + TEST_PRIORITY.toString( ) + "\"" ) );
}
/**
* Deserialising an instance - no mining priority
*/ */
@Test @Test
public void testXMLDeserialisation( ) public void testXMLDeserialisation( )
@ -167,16 +211,19 @@ public class TestResourceProviderInformation
assertEquals( (Double) 0.2 , this.rpi.getMaximalQuantity( ) ); assertEquals( (Double) 0.2 , this.rpi.getMaximalQuantity( ) );
assertEquals( (Double) 0.3 , this.rpi.getDifficulty( ) ); assertEquals( (Double) 0.3 , this.rpi.getDifficulty( ) );
assertEquals( (Double) 0.4 , this.rpi.getRecovery( ) ); assertEquals( (Double) 0.4 , this.rpi.getRecovery( ) );
assertNull( this.rpi.getMiningPriority( ) );
} }
/** /**
* Deserialising an instance that contains no data * Deserialising an instance with mining priority
*/ */
@Test @Test
public void testXMLDeserialisationNoData( ) public void testXMLDeserialisationWithPriority( )
{ {
String xml = "<resource-provider />"; String xml = "<resource-provider resource=\"" + TEST_STRING
+ "\" current=\"0.1\" max=\"0.2\" difficulty=\"0.3\" recovery=\"0.4\" mining-priority=\""
+ TEST_PRIORITY.toString( ) + "\" />";
XStream xstream = this.createXStreamInstance( ); XStream xstream = this.createXStreamInstance( );
Object deserialised = xstream.fromXML( xml ); Object deserialised = xstream.fromXML( xml );
@ -184,11 +231,13 @@ public class TestResourceProviderInformation
assertEquals( ResourceProviderInformation.class , deserialised.getClass( ) ); assertEquals( ResourceProviderInformation.class , deserialised.getClass( ) );
this.rpi = (ResourceProviderInformation) deserialised; this.rpi = (ResourceProviderInformation) deserialised;
assertNull( this.rpi.getResource( ) ); assertEquals( TEST_STRING , this.rpi.getResource( ) );
assertNull( this.rpi.getCurrentQuantity( ) ); assertEquals( (Double) 0.1 , this.rpi.getCurrentQuantity( ) );
assertNull( this.rpi.getMaximalQuantity( ) ); assertEquals( (Double) 0.2 , this.rpi.getMaximalQuantity( ) );
assertNull( this.rpi.getDifficulty( ) ); assertEquals( (Double) 0.3 , this.rpi.getDifficulty( ) );
assertNull( this.rpi.getRecovery( ) ); assertEquals( (Double) 0.4 , this.rpi.getRecovery( ) );
assertEquals( TEST_PRIORITY , this.rpi.getMiningPriority( ) );
} }