2012-03-01 09:50:20 +01:00
|
|
|
/*
|
|
|
|
* Unit tests for emp.technology_visibility_view
|
|
|
|
*/
|
|
|
|
BEGIN;
|
|
|
|
\i utils/strings.sql
|
|
|
|
\i utils/accounts.sql
|
|
|
|
\i utils/naming.sql
|
|
|
|
|
|
|
|
/* Create a single empire */
|
|
|
|
SELECT _create_emp_names( 1 , 'emp' );
|
|
|
|
INSERT INTO emp.empires ( name_id , cash )
|
|
|
|
VALUES ( _get_emp_name( 'emp1' ) , 200 );
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Set visibility thresholds to either 50% or 100 points.
|
|
|
|
*/
|
|
|
|
SELECT sys.uoc_constant( 'game.research.visibility.points' , '(test)' , 'Test' , 100.0 );
|
|
|
|
SELECT sys.uoc_constant( 'game.research.visibility.ratio' , '(test)' , 'Test' , 0.5 );
|
|
|
|
|
|
|
|
/* Create 6 technology definitions that will be used to test various
|
|
|
|
* states: pending, known, 4 variants of research in progress (points
|
|
|
|
* and ratio below thresholds, points below threshold, ratio below
|
|
|
|
* threshold, both points and ratio above thresholds).
|
|
|
|
*
|
|
|
|
* Disable all unused fields from the definition table.
|
|
|
|
*/
|
|
|
|
ALTER TABLE defs.technologies
|
|
|
|
ALTER technology_category_id DROP NOT NULL ,
|
|
|
|
ALTER technology_discovery_id DROP NOT NULL ,
|
|
|
|
ALTER technology_description_id DROP NOT NULL ,
|
|
|
|
ALTER technology_price DROP NOT NULL;
|
|
|
|
SELECT _create_test_strings( 6 , 'tech' );
|
|
|
|
INSERT INTO defs.technologies( technology_name_id , technology_points )
|
|
|
|
VALUES ( _get_string( 'tech1' ) , 100 ) ,
|
|
|
|
( _get_string( 'tech2' ) , 100 ) ,
|
|
|
|
( _get_string( 'tech3' ) , 100 ) ,
|
|
|
|
( _get_string( 'tech4' ) , 100 ) ,
|
|
|
|
( _get_string( 'tech5' ) , 1000 ) ,
|
|
|
|
( _get_string( 'tech6' ) , 1000 );
|
|
|
|
|
|
|
|
/* Insert empire state */
|
2012-04-09 15:01:04 +02:00
|
|
|
INSERT INTO emp.technologies (
|
2012-03-01 09:50:20 +01:00
|
|
|
empire_id , technology_name_id ,
|
|
|
|
emptech_state , emptech_points , emptech_priority
|
|
|
|
) VALUES (
|
|
|
|
_get_emp_name( 'emp1' ) , _get_string( 'tech1' ) ,
|
|
|
|
'KNOWN' , NULL , NULL
|
|
|
|
) , (
|
|
|
|
_get_emp_name( 'emp1' ) , _get_string( 'tech2' ) ,
|
|
|
|
'PENDING' , NULL , NULL
|
|
|
|
) , (
|
|
|
|
_get_emp_name( 'emp1' ) , _get_string( 'tech3' ) ,
|
|
|
|
'RESEARCH' , 10.0 , 2
|
|
|
|
) , (
|
|
|
|
_get_emp_name( 'emp1' ) , _get_string( 'tech4' ) ,
|
|
|
|
'RESEARCH' , 51.0 , 2
|
|
|
|
) , (
|
|
|
|
_get_emp_name( 'emp1' ) , _get_string( 'tech5' ) ,
|
|
|
|
'RESEARCH' , 101.0 , 2
|
|
|
|
) , (
|
|
|
|
_get_emp_name( 'emp1' ) , _get_string( 'tech6' ) ,
|
|
|
|
'RESEARCH' , 501.0 , 2
|
|
|
|
);
|
|
|
|
|
|
|
|
-- ***** TESTS BEGIN HERE *****
|
|
|
|
SELECT plan( 7 );
|
|
|
|
|
|
|
|
SELECT diag_test_name( 'emp.technology_visibility_view - All technologies are listed' );
|
|
|
|
SELECT is( COUNT( * )::INT , 6 )
|
|
|
|
FROM emp.technology_visibility_view
|
|
|
|
WHERE empire_id = _get_emp_name( 'emp1' );
|
|
|
|
|
|
|
|
SELECT diag_test_name( 'emp.technology_visibility_view - Known technologies are visible' );
|
|
|
|
SELECT ok( emptech_visible )
|
|
|
|
FROM emp.technology_visibility_view
|
|
|
|
WHERE technology_name_id = _get_string( 'tech1' )
|
|
|
|
AND empire_id = _get_emp_name( 'emp1' );
|
|
|
|
|
|
|
|
SELECT diag_test_name( 'emp.technology_visibility_view - Pending technologies are visible' );
|
|
|
|
SELECT ok( emptech_visible )
|
|
|
|
FROM emp.technology_visibility_view
|
|
|
|
WHERE technology_name_id = _get_string( 'tech2' )
|
|
|
|
AND empire_id = _get_emp_name( 'emp1' );
|
|
|
|
|
|
|
|
SELECT diag_test_name( 'emp.technology_visibility_view - In-progress technologies with both points and ratios below thresholds are not visible' );
|
|
|
|
SELECT ok( NOT emptech_visible )
|
|
|
|
FROM emp.technology_visibility_view
|
|
|
|
WHERE technology_name_id = _get_string( 'tech3' )
|
|
|
|
AND empire_id = _get_emp_name( 'emp1' );
|
|
|
|
|
|
|
|
SELECT diag_test_name( 'emp.technology_visibility_view - In-progress technologies with points below threshold are visible' );
|
|
|
|
SELECT ok( emptech_visible )
|
|
|
|
FROM emp.technology_visibility_view
|
|
|
|
WHERE technology_name_id = _get_string( 'tech4' )
|
|
|
|
AND empire_id = _get_emp_name( 'emp1' );
|
|
|
|
|
|
|
|
SELECT diag_test_name( 'emp.technology_visibility_view - In-progress technologies with ratio below threshold are visible' );
|
|
|
|
SELECT ok( emptech_visible )
|
|
|
|
FROM emp.technology_visibility_view
|
|
|
|
WHERE technology_name_id = _get_string( 'tech5' )
|
|
|
|
AND empire_id = _get_emp_name( 'emp1' );
|
|
|
|
|
|
|
|
SELECT diag_test_name( 'emp.technology_visibility_view - In-progress technologies with both points and ratios above threshold are visible' );
|
|
|
|
SELECT ok( emptech_visible )
|
|
|
|
FROM emp.technology_visibility_view
|
|
|
|
WHERE technology_name_id = _get_string( 'tech6' )
|
|
|
|
AND empire_id = _get_emp_name( 'emp1' );
|
|
|
|
|
|
|
|
|
|
|
|
SELECT * FROM finish( );
|
2012-04-09 15:01:04 +02:00
|
|
|
ROLLBACK;
|