/*
 * Test the locks set by sys.gu_pmc_get_data( )
 */
BEGIN;
	SELECT * FROM sys.gu_pmc_get_data( 0 );
	SELECT plan( 7 );

	SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on planets' );
	SELECT set_eq ( $$
			SELECT name_id , shared , exclusive
				FROM verse.planets pl
					INNER JOIN ( SELECT * FROM _get_locks_on( 'verse.planets' ) ) p
						ON p.ctid = pl.ctid;
		$$ , $$
			VALUES ( _get_map_name( 'planet2' ) , TRUE , FALSE ) ,
				( _get_map_name( 'planet3' ) , TRUE , FALSE ) ,
				( _get_map_name( 'planet4' ) , TRUE , FALSE );
		$$
	);

	SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on resource providers' );
	SELECT set_eq ( $$
			SELECT planet_id , resource_name_id , shared , exclusive
				FROM verse.resource_providers rp
					INNER JOIN ( SELECT * FROM _get_locks_on( 'verse.resource_providers' ) ) p
						ON p.ctid = rp.ctid;
		$$ , $$
			VALUES ( _get_map_name( 'planet2' ) , _get_string('resource1') , FALSE , TRUE ) ,
				( _get_map_name( 'planet2' ) , _get_string('resource2') , FALSE , TRUE ) ,
				( _get_map_name( 'planet3' ) , _get_string('resource1') , FALSE , TRUE ) ,
				( _get_map_name( 'planet3' ) , _get_string('resource2') , FALSE , TRUE ) ,
				( _get_map_name( 'planet4' ) , _get_string('resource1') , FALSE , TRUE ) ,
				( _get_map_name( 'planet4' ) , _get_string('resource2') , FALSE , TRUE );
		$$
	);

	SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on planet resources' );
	SELECT set_eq ( $$
			SELECT planet_id , resource_name_id , shared , exclusive
				FROM verse.planet_resources pr
					INNER JOIN ( SELECT * FROM _get_locks_on( 'verse.planet_resources' ) ) p
						ON p.ctid = pr.ctid;
		$$ , $$
			VALUES ( _get_map_name( 'planet2' ) , _get_string('resource1') , FALSE , TRUE ) ,
				( _get_map_name( 'planet2' ) , _get_string('resource2') , FALSE , TRUE ) ,
				( _get_map_name( 'planet3' ) , _get_string('resource1') , FALSE , TRUE ) ,
				( _get_map_name( 'planet3' ) , _get_string('resource2') , FALSE , TRUE ) ,
				( _get_map_name( 'planet4' ) , _get_string('resource1') , FALSE , TRUE ) ,
				( _get_map_name( 'planet4' ) , _get_string('resource2') , FALSE , TRUE );
		$$
	);

	SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on empire planets' );
	SELECT set_eq ( $$
			SELECT planet_id , empire_id , shared , exclusive
				FROM emp.planets ep
					INNER JOIN ( SELECT * FROM _get_locks_on( 'emp.planets' ) ) p
						ON p.ctid = ep.ctid;
		$$ , $$
			VALUES ( _get_map_name( 'planet3' ) , _get_emp_name('empire1' ) , TRUE , FALSE ) ,
				( _get_map_name( 'planet4' ) , _get_emp_name('empire2' ) , TRUE , FALSE );
		$$
	);

	SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on mining settings' );
	SELECT set_eq ( $$
			SELECT empire_id , resource_name_id , shared , exclusive
				FROM emp.mining_settings ms
					INNER JOIN ( SELECT * FROM _get_locks_on( 'emp.mining_settings' ) ) p
						ON p.ctid = ms.ctid;
		$$ , $$
			VALUES ( _get_emp_name('empire1' ) , _get_string( 'resource1' ) , TRUE , FALSE ) ,
				( _get_emp_name('empire1' ) , _get_string( 'resource2' ) , TRUE , FALSE ) ,
				( _get_emp_name('empire2' ) , _get_string( 'resource1' ) , TRUE , FALSE ) ,
				( _get_emp_name('empire2' ) , _get_string( 'resource2' ) , TRUE , FALSE );
		$$
	);

	SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on planet mining settings' );
	SELECT set_eq ( $$
			SELECT empire_id , planet_id , resource_name_id , shared , exclusive
				FROM emp.planet_mining_settings ms
					INNER JOIN ( SELECT * FROM _get_locks_on( 'emp.planet_mining_settings' ) ) p
						ON p.ctid = ms.ctid;
		$$ , $$
			VALUES ( _get_emp_name('empire2' ) , _get_map_name( 'planet4' ) , _get_string( 'resource1' ) , TRUE , FALSE ) ,
				( _get_emp_name('empire2' ) , _get_map_name( 'planet4' ) , _get_string( 'resource2' ) , TRUE , FALSE );
		$$
	);

	SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on planet happiness records' );
	SELECT set_eq ( $$
			SELECT planet_id , shared , exclusive
				FROM verse.planet_happiness pl
					INNER JOIN ( SELECT * FROM _get_locks_on( 'verse.planet_happiness' ) ) p
						ON p.ctid = pl.ctid;
		$$ , $$
			VALUES ( _get_map_name( 'planet3' ) , TRUE , FALSE ) ,
				( _get_map_name( 'planet4' ) , TRUE , FALSE );
		$$
	);

	SELECT * FROM finish( );
ROLLBACK;