Emmanuel BENOîT
597429fadf
* Added session records to carry resource information over to the clients * Added SQL support code for the various views * Added interface and implementation of the resource information access component * Hooked resources information queries into both the empire and planet management component * Added resources display to planet and overview pages
187 lines
No EOL
6.4 KiB
PL/PgSQL
187 lines
No EOL
6.4 KiB
PL/PgSQL
/*
|
|
* Tests for the emp.get_planet_resources() function
|
|
*/
|
|
BEGIN;
|
|
/*
|
|
* We need two planets, one being owned by some empire, the other being
|
|
* neutral. Both planets' resource records must exist. Both planets will
|
|
* also include resource providers which will serve as tests for the
|
|
* various rounding which takes place.
|
|
*
|
|
* To avoid having to define actual natural resources, we disable the
|
|
* foreign keys on resource providers and mining settings. We can't do
|
|
* that for the empire, tho: we need an actual account as the translations
|
|
* must be looked up.
|
|
*/
|
|
|
|
\i utils/strings.sql
|
|
SELECT _create_test_strings( 3 , 'resource' , 'Resource name ' );
|
|
SELECT _create_test_strings( 3 , 'rDesc' , 'Resource description ' );
|
|
SELECT _create_test_strings( 1 , 'rCat' , 'Resource category ' );
|
|
|
|
INSERT INTO defs.resources (
|
|
resource_name_id , resource_description_id ,
|
|
resource_category_id , resource_weight
|
|
) VALUES (
|
|
_get_string( 'resource1' ) , _get_string( 'rDesc1' ) ,
|
|
_get_string( 'rCat1' ) , 2
|
|
) , (
|
|
_get_string( 'resource2' ) , _get_string( 'rDesc2' ) ,
|
|
NULL , 1
|
|
) , (
|
|
_get_string( 'resource3' ) , _get_string( 'rDesc3' ) ,
|
|
NULL , 3
|
|
);
|
|
|
|
\i utils/accounts.sql
|
|
\i utils/naming.sql
|
|
SELECT _create_emp_names( 1 , 'emp' );
|
|
INSERT INTO emp.empires( name_id , cash )
|
|
VALUES( _get_emp_name( 'emp1' ) , 0 );
|
|
|
|
ALTER TABLE emp.mining_settings DROP CONSTRAINT fk_empmset_resource;
|
|
INSERT INTO emp.mining_settings ( empire_id , resource_name_id )
|
|
SELECT _get_emp_name( 'emp1' ) , resource_name_id
|
|
FROM defs.resources;
|
|
|
|
\i utils/universe.sql
|
|
SELECT _create_raw_planets( 2 , 'planet' );
|
|
|
|
INSERT INTO verse.planet_resources (
|
|
planet_id , resource_name_id , pres_income , pres_upkeep
|
|
) VALUES (
|
|
_get_map_name( 'planet1' ) , _get_string( 'resource1' ) ,
|
|
99.4 / 720.0 , 99.4 / 720.0
|
|
) , (
|
|
_get_map_name( 'planet1' ) , _get_string( 'resource2' ) ,
|
|
99.5 / 720.0 , 99.5 / 720.0
|
|
) , (
|
|
_get_map_name( 'planet1' ) , _get_string( 'resource3' ) ,
|
|
99.6 / 720.0 , 99.6 / 720.0
|
|
);
|
|
INSERT INTO verse.planet_resources ( planet_id , resource_name_id )
|
|
SELECT _get_map_name( 'planet2' ) , resource_name_id
|
|
FROM defs.resources;
|
|
|
|
ALTER TABLE verse.resource_providers DROP CONSTRAINT fk_resprov_resource;
|
|
INSERT INTO verse.resource_providers(
|
|
planet_id , resource_name_id , resprov_quantity_max ,
|
|
resprov_quantity , resprov_difficulty , resprov_recovery
|
|
) VALUES (
|
|
_get_map_name( 'planet1' ) , _get_string( 'resource1' ) , 99.4 ,
|
|
99.4 , 0.494 , 0.5
|
|
) , (
|
|
_get_map_name( 'planet1' ) , _get_string( 'resource2' ) , 99.5 ,
|
|
99.5 , 0.495 , 0.5
|
|
) , (
|
|
_get_map_name( 'planet2' ) , _get_string( 'resource1' ) , 100 ,
|
|
100 , 0.5 , 0.5
|
|
);
|
|
|
|
INSERT INTO emp.planets ( empire_id , planet_id )
|
|
VALUES ( _get_emp_name( 'emp1' ) , _get_map_name( 'planet1' ) );
|
|
|
|
|
|
/***** TESTS BEGIN HERE *****/
|
|
SELECT plan( 13 );
|
|
|
|
SELECT diag_test_name( 'emp.get_planet_resources() - No results on missing planets' );
|
|
SELECT is_empty( $$ SELECT * FROM emp.get_planet_resources( _get_bad_map_name( ) ) $$ );
|
|
|
|
SELECT diag_test_name( 'emp.get_planet_resources() - No results on neutral planets' );
|
|
SELECT is_empty( $$ SELECT * FROM emp.get_planet_resources( _get_map_name( 'planet2' ) ) $$ );
|
|
|
|
SELECT diag_test_name( 'emp.get_planet_resources() - One row per resource type' );
|
|
SELECT is( COUNT(*)::INT , 3 ) FROM emp.get_planet_resources( _get_map_name( 'planet1' ) );
|
|
|
|
SELECT diag_test_name( 'emp.get_planet_resources() - Row ordering' );
|
|
SELECT set_eq(
|
|
$$ SELECT resource_identifier , row_number() OVER ( )
|
|
FROM emp.get_planet_resources( _get_map_name( 'planet1' ) ) $$ ,
|
|
$$ VALUES (
|
|
'resource1' , 2
|
|
) , (
|
|
'resource2' , 1
|
|
) , (
|
|
'resource3' , 3
|
|
) $$
|
|
);
|
|
|
|
SELECT diag_test_name( 'emp.get_planet_resources() - Name translation' );
|
|
SELECT is_empty( $$
|
|
SELECT *
|
|
FROM emp.get_planet_resources( _get_map_name( 'planet1' ) )
|
|
WHERE resource_name NOT LIKE 'Resource name %'
|
|
$$ );
|
|
|
|
SELECT diag_test_name( 'emp.get_planet_resources() - Description translation' );
|
|
SELECT is_empty( $$
|
|
SELECT *
|
|
FROM emp.get_planet_resources( _get_map_name( 'planet1' ) )
|
|
WHERE resource_description NOT LIKE 'Resource description %'
|
|
$$ );
|
|
|
|
SELECT diag_test_name( 'emp.get_planet_resources() - Category translation' );
|
|
SELECT is_empty( $$
|
|
SELECT *
|
|
FROM emp.get_planet_resources( _get_map_name( 'planet1' ) )
|
|
WHERE resource_identifier = 'resource1'
|
|
AND resource_category NOT LIKE 'Resource category %'
|
|
$$ );
|
|
|
|
SELECT diag_test_name( 'emp.get_planet_resources() - NULL category -> NULL translation' );
|
|
SELECT is_empty( $$
|
|
SELECT *
|
|
FROM emp.get_planet_resources( _get_map_name( 'planet1' ) )
|
|
WHERE resource_identifier <> 'resource1'
|
|
AND resource_category IS NOT NULL
|
|
$$ );
|
|
|
|
SELECT diag_test_name( 'emp.get_planet_resources() - Upkeep is valid and rounded up' );
|
|
SELECT is_empty( $$
|
|
SELECT *
|
|
FROM emp.get_planet_resources( _get_map_name( 'planet1' ) )
|
|
WHERE pres_upkeep IS NULL OR pres_upkeep <> 100
|
|
$$ );
|
|
|
|
SELECT diag_test_name( 'emp.get_planet_resources() - Income is valid and rounded down' );
|
|
SELECT is_empty( $$
|
|
SELECT * FROM emp.get_planet_resources( _get_map_name( 'planet1' ) )
|
|
WHERE pres_income IS NULL OR pres_income <> 99
|
|
$$ );
|
|
|
|
SELECT diag_test_name( 'emp.get_planet_resources() - No mining-related fields when there is no resource provider' );
|
|
SELECT is_empty( $$
|
|
SELECT * FROM emp.get_planet_resources( _get_map_name( 'planet1' ) )
|
|
WHERE resource_identifier = 'resource3' AND NOT (
|
|
resprov_capacity IS NULL
|
|
AND resprov_quantity IS NULL
|
|
AND resprov_difficulty IS NULL
|
|
AND mset_weight IS NULL
|
|
);
|
|
$$ );
|
|
|
|
SELECT diag_test_name( 'emp.get_planet_resources() - Resource provider fields are present' );
|
|
SELECT is_empty( $$
|
|
SELECT * FROM emp.get_planet_resources( _get_map_name( 'planet1' ) )
|
|
WHERE resource_identifier <> 'resource3' AND (
|
|
resprov_capacity IS NULL
|
|
OR resprov_quantity IS NULL
|
|
OR resprov_difficulty IS NULL
|
|
OR mset_weight IS NULL
|
|
);
|
|
$$ );
|
|
|
|
SELECT diag_test_name( 'emp.get_planet_resources() - Resource provider values' );
|
|
SELECT set_eq( $$
|
|
SELECT resource_identifier , resprov_capacity , resprov_quantity , resprov_difficulty
|
|
FROM emp.get_planet_resources( _get_map_name( 'planet1' ) )
|
|
WHERE resource_identifier <> 'resource3'
|
|
$$ , $$ VALUES (
|
|
'resource1' , 99 , 99 , 49
|
|
) , (
|
|
'resource2' , 100 , 100 , 50
|
|
) $$ );
|
|
|
|
SELECT * FROM finish( );
|
|
ROLLBACK; |