This repository has been archived on 2025-01-04. You can view files and clone it, but cannot push or open issues or pull requests.
lwb6/legacyworlds-server-data/db-structure/tests/admin/functions/050-computation/010-get-random-part.sql
Emmanuel BENOîT b054a379a9 Universe generator: resource providers
* The universe generator has been modified to generate resource
providers. The code attempts to keep the universe balanced according to
the natural resources definitions.
2012-01-06 10:05:47 +01:00

44 lines
No EOL
1.9 KiB
PL/PgSQL

/*
* Test the verse.get_random_part() function
*/
BEGIN;
SELECT plan( 6 );
/* First set of tests: results of the function with a fake
* verse.random_deviation() that always returns the minimal possible
* value.
*/
CREATE OR REPLACE FUNCTION verse.random_deviation( _mean DOUBLE PRECISION , _deviation DOUBLE PRECISION )
RETURNS DOUBLE PRECISION
STRICT VOLATILE
AS $$
SELECT $1 - $2;
$$ LANGUAGE SQL;
SELECT diag_test_name( 'verse.get_random_part() - Single part, minimal random value' );
SELECT is( verse.get_random_part( 0.5 , 1 , 0.5 , 0.25 ) , 0.5::DOUBLE PRECISION );
SELECT diag_test_name( 'verse.get_random_part() - Two parts, some extra quantity, minimal random value' );
SELECT is( verse.get_random_part( 0.75 , 2 , 0.5 , 0.25 ) , 0.25::DOUBLE PRECISION );
SELECT diag_test_name( 'verse.get_random_part() - Two parts, maximal quantity, minimal random value' );
SELECT is( verse.get_random_part( 1.5 , 2 , 0.5 , 0.25 ) , 0.75::DOUBLE PRECISION );
/* Second set of tests: results of the function with a fake
* verse.random_deviation() that always returns the maximal possible
* value.
*/
CREATE OR REPLACE FUNCTION verse.random_deviation( _mean DOUBLE PRECISION , _deviation DOUBLE PRECISION )
RETURNS DOUBLE PRECISION
STRICT VOLATILE
AS $$
SELECT $1 + $2;
$$ LANGUAGE SQL;
SELECT diag_test_name( 'verse.get_random_part() - Single part, maximal random value' );
SELECT is( verse.get_random_part( 0.5 , 1 , 0.5 , 0.25 ) , 0.5::DOUBLE PRECISION );
SELECT diag_test_name( 'verse.get_random_part() - Two parts, some extra quantity, maximal random value' );
SELECT is( verse.get_random_part( 1 , 2 , 0.5 , 0.25 ) , 0.75::DOUBLE PRECISION );
SELECT diag_test_name( 'verse.get_random_part() - Two parts, minimal quantity, maximal random value' );
SELECT is( verse.get_random_part( 0.5 , 2 , 0.5 , 0.25 ) , 0.25::DOUBLE PRECISION );
SELECT * FROM finish( );
ROLLBACK;