44 lines
1.9 KiB
MySQL
44 lines
1.9 KiB
MySQL
|
/*
|
||
|
* 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;
|