Emmanuel BENOîT
b054a379a9
* The universe generator has been modified to generate resource providers. The code attempts to keep the universe balanced according to the natural resources definitions.
175 lines
No EOL
9.5 KiB
PL/PgSQL
175 lines
No EOL
9.5 KiB
PL/PgSQL
/*
|
|
* Test the defs.uoc_natres_internal() function
|
|
*/
|
|
BEGIN;
|
|
|
|
/* We need a few strings to be used when creating resource definitions, and a basic resource. */
|
|
\i utils/strings.sql
|
|
\i utils/resources.sql
|
|
SELECT _create_test_strings( 7 );
|
|
SELECT _create_resources( 1 , 'basicRes' );
|
|
|
|
/****** TESTS BEGIN HERE ******/
|
|
SELECT plan( 37 );
|
|
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - creation without category' );
|
|
SELECT is( defs.uoc_natres_internal( 'test3' , 'test4' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'CREATED' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - creation results without category - basic' );
|
|
SELECT results_eq(
|
|
$$ SELECT resource_name_id , resource_description_id , resource_weight
|
|
FROM defs.resources
|
|
WHERE resource_name_id = _get_string( 'test3' )
|
|
AND resource_category_id IS NULL $$ ,
|
|
$$ VALUES ( _get_string( 'test3' ) , _get_string( 'test4' ) , 1 ) $$
|
|
);
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - creation results without category - nat. res.' );
|
|
SELECT results_eq(
|
|
$$ SELECT * FROM defs.natural_resources
|
|
WHERE resource_name_id = _get_string( 'test3' ) $$ ,
|
|
$$ VALUES ( _get_string( 'test3' ) , 0.5::DOUBLE PRECISION , 100::DOUBLE PRECISION ,
|
|
50::DOUBLE PRECISION , 0.5::DOUBLE PRECISION , 0.05::DOUBLE PRECISION ,
|
|
0.5::DOUBLE PRECISION , 0.05::DOUBLE PRECISION ) $$
|
|
);
|
|
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - creation with category' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test6' , 'test7' , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'CREATED' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - creation results with category - basic' );
|
|
SELECT results_eq(
|
|
$$ SELECT * FROM defs.resources
|
|
WHERE resource_name_id = _get_string( 'test5' ) $$ ,
|
|
$$ VALUES ( _get_string( 'test5' ) , _get_string( 'test6' ) , _get_string( 'test7' ) , 1 ) $$
|
|
);
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - creation results with category - nat. res.' );
|
|
SELECT results_eq(
|
|
$$ SELECT * FROM defs.natural_resources
|
|
WHERE resource_name_id = _get_string( 'test5' ) $$ ,
|
|
$$ VALUES ( _get_string( 'test5' ) , 0.5::DOUBLE PRECISION , 100::DOUBLE PRECISION ,
|
|
50::DOUBLE PRECISION , 0.5::DOUBLE PRECISION , 0.05::DOUBLE PRECISION ,
|
|
0.5::DOUBLE PRECISION , 0.05::DOUBLE PRECISION ) $$
|
|
);
|
|
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - update without category' );
|
|
SELECT is( defs.uoc_natres_internal( 'test3' , 'test7' , NULL , 2 ,
|
|
0.3 , 300 , 30 , 0.3 , 0.03 , 0.3 , 0.03 ) , 'UPDATED' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - update results without category - basic' );
|
|
SELECT results_eq(
|
|
$$ SELECT resource_name_id , resource_description_id , resource_weight
|
|
FROM defs.resources
|
|
WHERE resource_name_id = _get_string( 'test3' )
|
|
AND resource_category_id IS NULL $$ ,
|
|
$$ VALUES ( _get_string( 'test3' ) , _get_string( 'test7' ) , 2 ) $$
|
|
);
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - update results without category - nat. res.' );
|
|
SELECT results_eq(
|
|
$$ SELECT * FROM defs.natural_resources
|
|
WHERE resource_name_id = _get_string( 'test3' ) $$ ,
|
|
$$ VALUES ( _get_string( 'test3' ) , 0.3::DOUBLE PRECISION , 300::DOUBLE PRECISION ,
|
|
30::DOUBLE PRECISION , 0.3::DOUBLE PRECISION , 0.03::DOUBLE PRECISION ,
|
|
0.3::DOUBLE PRECISION , 0.03::DOUBLE PRECISION ) $$
|
|
);
|
|
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - update with category' );
|
|
SELECT is( defs.uoc_natres_internal( 'test3' , 'test4' , 'test7' , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'UPDATED' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - update results with category' );
|
|
SELECT results_eq(
|
|
$$ SELECT * FROM defs.resources
|
|
WHERE resource_name_id = _get_string( 'test3' ) $$ ,
|
|
$$ VALUES ( _get_string( 'test3' ) , _get_string( 'test4' ) , _get_string( 'test7' ) , 1 ) $$
|
|
);
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - update results with category - nat. res.' );
|
|
SELECT results_eq(
|
|
$$ SELECT * FROM defs.natural_resources
|
|
WHERE resource_name_id = _get_string( 'test3' ) $$ ,
|
|
$$ VALUES ( _get_string( 'test3' ) , 0.5::DOUBLE PRECISION , 100::DOUBLE PRECISION ,
|
|
50::DOUBLE PRECISION , 0.5::DOUBLE PRECISION , 0.05::DOUBLE PRECISION ,
|
|
0.5::DOUBLE PRECISION , 0.05::DOUBLE PRECISION ) $$
|
|
);
|
|
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - incorrect name string' );
|
|
SELECT is( defs.uoc_natres_internal( 'does-not-exist' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'BAD_STRINGS' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - incorrect description string' );
|
|
SELECT is( defs.uoc_natres_internal( 'test1' , 'does-not-exist' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'BAD_STRINGS' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - incorrect category string' );
|
|
SELECT is( defs.uoc_natres_internal( 'test1' , 'test2' , 'does-not-exist' , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'BAD_STRINGS' );
|
|
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - duplicate description on new resource' );
|
|
SELECT is( defs.uoc_natres_internal( 'test1' , 'test4' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'DUP_DESCR' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - duplicate description on existing resource' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test4' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'DUP_DESCR' );
|
|
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - update on basic resource' );
|
|
SELECT is( defs.uoc_natres_internal( 'basicRes1' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'BAD_TYPE' );
|
|
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - weight <= 0' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 0 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'BAD_VALUE' );
|
|
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - P(presence) <= 0' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0 , 100 , 50 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'BAD_VALUE' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - P(presence) >= 1' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0 , 100 , 50 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'BAD_VALUE' );
|
|
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - max. quantity <= 0' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 0 , 50 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'BAD_VALUE' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - quantity dev. < 0' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , -1 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'BAD_VALUE' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - quantity max. - dev. <= 0' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 100 , 0.5 , 0.05 , 0.5 , 0.05 ) , 'BAD_VALUE' );
|
|
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - difficulty max. = 0' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0 , 0 , 0.5 , 0.05 ) , 'UPDATED' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - difficulty max. < 0' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , -0.00001 , 0 , 0.5 , 0.05 ) , 'BAD_VALUE' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - difficulty max. = 1' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 1 , 0 , 0.5 , 0.05 ) , 'UPDATED' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - difficulty max. > 1' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 1.00001 , 0 , 0.5 , 0.05 ) , 'BAD_VALUE' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - difficulty dev. < 0' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , -1 , 0.5 , 0.05 ) , 'BAD_VALUE' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - difficulty max. - dev. < 0' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.25 , 0.5 , 0.5 , 0.05 ) , 'BAD_VALUE' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - difficulty max. + dev. > 1' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.75 , 0.5 , 0.5 , 0.05 ) , 'BAD_VALUE' );
|
|
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - recovery max. <= 0' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0 , 0 ) , 'BAD_VALUE' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - recovery max. = 1' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 1 , 0 ) , 'UPDATED' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - recovery max. > 1' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 1.0001 , 0 ) , 'BAD_VALUE' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - recovery dev. < 0' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0.5 , -0.25 ) , 'BAD_VALUE' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - recovery max. - dev. <= 0' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0.25 , 0.25 ) , 'BAD_VALUE' );
|
|
SELECT diag_test_name( 'defs.uoc_natres_internal() - recovery max. + dev. > 1' );
|
|
SELECT is( defs.uoc_natres_internal( 'test5' , 'test2' , NULL , 1 ,
|
|
0.5 , 100 , 50 , 0.5 , 0.05 , 0.75 , 0.5 ) , 'BAD_VALUE' );
|
|
|
|
SELECT * FROM finish( );
|
|
ROLLBACK; |