Emmanuel BENOîT
4e1bb91780
* Added structures for resource definitions, natural resources definitions, resource providers, empire resources and empire mining settings (both empire-wide and planet-specific). * Added a few common utility functions to the SQL test suite. These functions allow test initialisation to be a little shorter. * Added "MINE" production type and an associated building definition. The production will not be added to the XML dump or to the output of the planets summary page, as this is extremely temporary.
193 lines
No EOL
6 KiB
PL/PgSQL
193 lines
No EOL
6 KiB
PL/PgSQL
/*
|
|
* Test constraints and foreign keys on emp.mining_settings
|
|
*/
|
|
BEGIN;
|
|
|
|
/* We need to create a pair of resources, a pair of empires, a pair of planets, and resource providers */
|
|
\i utils/strings.sql
|
|
\i utils/resources.sql
|
|
\i utils/accounts.sql
|
|
\i utils/naming.sql
|
|
\i utils/universe.sql
|
|
SELECT _create_natural_resources( 2 , 'testResource' );
|
|
SELECT _create_emp_names( 2 , 'testUser' );
|
|
INSERT INTO emp.empires ( name_id , cash )
|
|
SELECT id , 0 FROM naming.empire_names;
|
|
SELECT _create_raw_planets( 2 , 'testPlanet' );
|
|
SELECT _create_resource_provider( 'testPlanet1' , 'testResource1' );
|
|
SELECT _create_resource_provider( 'testPlanet1' , 'testResource2' );
|
|
SELECT _create_resource_provider( 'testPlanet2' , 'testResource1' );
|
|
-- No provider for testResource2 on testPlanet2
|
|
|
|
/****** TESTS BEGIN HERE ******/
|
|
SELECT plan( 14 );
|
|
|
|
|
|
SELECT diag_test_name( 'Valid empire planet mining settings record' );
|
|
PREPARE _test_this AS
|
|
INSERT INTO emp.planet_mining_settings(
|
|
empire_id , planet_id ,
|
|
resource_name_id , emppmset_weight
|
|
) VALUES (
|
|
_get_emp_name( 'testUser1' ) , _get_map_name( 'testPlanet1' ) ,
|
|
_get_string( 'testResource1' ) , 0
|
|
);
|
|
SELECT lives_ok( '_test_this' );
|
|
|
|
SELECT diag_test_name( 'Duplicate empire planet mining settings record' );
|
|
SELECT throws_ok( '_test_this' , 23505 );
|
|
DEALLOCATE ALL;
|
|
|
|
SELECT diag_test_name( 'Empire planet mining settings records with different types' );
|
|
PREPARE _test_this AS
|
|
INSERT INTO emp.planet_mining_settings(
|
|
empire_id , planet_id ,
|
|
resource_name_id , emppmset_weight
|
|
) VALUES (
|
|
_get_emp_name( 'testUser1' ) , _get_map_name( 'testPlanet1' ) ,
|
|
_get_string( 'testResource2' ) , 0
|
|
);
|
|
SELECT lives_ok( '_test_this' );
|
|
DEALLOCATE ALL;
|
|
|
|
SELECT diag_test_name( 'Empire planet mining settings records with different empires' );
|
|
PREPARE _test_this AS
|
|
INSERT INTO emp.planet_mining_settings(
|
|
empire_id , planet_id ,
|
|
resource_name_id , emppmset_weight
|
|
) VALUES (
|
|
_get_emp_name( 'testUser2' ) , _get_map_name( 'testPlanet1' ) ,
|
|
_get_string( 'testResource1' ) , 0
|
|
);
|
|
SELECT lives_ok( '_test_this' );
|
|
DEALLOCATE ALL;
|
|
|
|
SELECT diag_test_name( 'Empire planet mining settings records with different planets' );
|
|
PREPARE _test_this AS
|
|
INSERT INTO emp.planet_mining_settings(
|
|
empire_id , planet_id ,
|
|
resource_name_id , emppmset_weight
|
|
) VALUES (
|
|
_get_emp_name( 'testUser1' ) , _get_map_name( 'testPlanet2' ) ,
|
|
_get_string( 'testResource1' ) , 0
|
|
);
|
|
SELECT lives_ok( '_test_this' );
|
|
DEALLOCATE ALL;
|
|
DELETE FROM emp.mining_settings;
|
|
|
|
|
|
SELECT diag_test_name( 'Empire planet mining setting record with NULL empire identifier' );
|
|
PREPARE _test_this AS
|
|
INSERT INTO emp.planet_mining_settings(
|
|
empire_id , planet_id ,
|
|
resource_name_id , emppmset_weight
|
|
) VALUES (
|
|
NULL , _get_map_name( 'testPlanet2' ) ,
|
|
_get_string( 'testResource1' ) , 0
|
|
);
|
|
SELECT throws_ok( '_test_this' , 23502 );
|
|
DEALLOCATE ALL;
|
|
|
|
SELECT diag_test_name( 'Empire planet mining setting record with invalid empire identifier' );
|
|
PREPARE _test_this AS
|
|
INSERT INTO emp.planet_mining_settings(
|
|
empire_id , planet_id ,
|
|
resource_name_id , emppmset_weight
|
|
) VALUES (
|
|
_get_bad_emp_name( ) , _get_map_name( 'testPlanet2' ) ,
|
|
_get_string( 'testResource1' ) , 0
|
|
);
|
|
SELECT throws_ok( '_test_this' , 23503 );
|
|
DEALLOCATE ALL;
|
|
|
|
|
|
SELECT diag_test_name( 'Empire planet mining setting record with NULL planet identifier' );
|
|
PREPARE _test_this AS
|
|
INSERT INTO emp.planet_mining_settings(
|
|
empire_id , planet_id ,
|
|
resource_name_id , emppmset_weight
|
|
) VALUES (
|
|
_get_emp_name( 'testUser1' ) , NULL ,
|
|
_get_string( 'testResource1' ) , 0
|
|
);
|
|
SELECT throws_ok( '_test_this' , 23502 );
|
|
DEALLOCATE ALL;
|
|
|
|
SELECT diag_test_name( 'Empire planet mining setting record with invalid planet identifier' );
|
|
PREPARE _test_this AS
|
|
INSERT INTO emp.planet_mining_settings(
|
|
empire_id , planet_id ,
|
|
resource_name_id , emppmset_weight
|
|
) VALUES (
|
|
_get_emp_name( 'testUser1' ) , _get_bad_map_name( ) ,
|
|
_get_string( 'testResource1' ) , 0
|
|
);
|
|
SELECT throws_ok( '_test_this' , 23503 );
|
|
DEALLOCATE ALL;
|
|
|
|
|
|
SELECT diag_test_name( 'Empire planet mining setting record with NULL resource identifier' );
|
|
PREPARE _test_this AS
|
|
INSERT INTO emp.planet_mining_settings(
|
|
empire_id , planet_id ,
|
|
resource_name_id , emppmset_weight
|
|
) VALUES (
|
|
_get_emp_name( 'testUser1' ) , _get_map_name( 'testPlanet2' ) ,
|
|
NULL , 0
|
|
);
|
|
SELECT throws_ok( '_test_this' , 23502 );
|
|
DEALLOCATE ALL;
|
|
|
|
SELECT diag_test_name( 'Empire planet mining setting record with invalid resource identifier' );
|
|
PREPARE _test_this AS
|
|
INSERT INTO emp.planet_mining_settings(
|
|
empire_id , planet_id ,
|
|
resource_name_id , emppmset_weight
|
|
) VALUES (
|
|
_get_emp_name( 'testUser1' ) , _get_map_name( 'testPlanet2' ) ,
|
|
_get_bad_string( ) , 0
|
|
);
|
|
SELECT throws_ok( '_test_this' , 23503 );
|
|
DEALLOCATE ALL;
|
|
|
|
|
|
SELECT diag_test_name( 'Empire planet mining setting record with invalid resource provider identifier' );
|
|
PREPARE _test_this AS
|
|
INSERT INTO emp.planet_mining_settings(
|
|
empire_id , planet_id ,
|
|
resource_name_id , emppmset_weight
|
|
) VALUES (
|
|
_get_emp_name( 'testUser1' ) , _get_map_name( 'testPlanet2' ) ,
|
|
_get_string( 'testResource2' ) , 0
|
|
);
|
|
SELECT throws_ok( '_test_this' , 23503 );
|
|
DEALLOCATE ALL;
|
|
|
|
|
|
SELECT diag_test_name( 'Empire planet mining setting record with NULL weight' );
|
|
PREPARE _test_this AS
|
|
INSERT INTO emp.planet_mining_settings(
|
|
empire_id , planet_id ,
|
|
resource_name_id , emppmset_weight
|
|
) VALUES (
|
|
_get_emp_name( 'testUser1' ) , _get_map_name( 'testPlanet1' ) ,
|
|
_get_string( 'testResource1' ) , NULL
|
|
);
|
|
SELECT throws_ok( '_test_this' , 23502 );
|
|
DEALLOCATE ALL;
|
|
|
|
SELECT diag_test_name( 'Empire planet mining setting record with weight < 0' );
|
|
PREPARE _test_this AS
|
|
INSERT INTO emp.planet_mining_settings(
|
|
empire_id , planet_id ,
|
|
resource_name_id , emppmset_weight
|
|
) VALUES (
|
|
_get_emp_name( 'testUser1' ) , _get_map_name( 'testPlanet1' ) ,
|
|
_get_string( 'testResource1' ) , -1
|
|
);
|
|
SELECT throws_ok( '_test_this' , 23514 );
|
|
DEALLOCATE ALL;
|
|
|
|
|
|
SELECT * FROM finish( );
|
|
ROLLBACK; |