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.
44 lines
No EOL
1.9 KiB
PL/PgSQL
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; |