Skip to content

Commit

Permalink
(pgtap/drivingdistance) adjusting tests
Browse files Browse the repository at this point in the history
  • Loading branch information
cvvergara committed Jan 27, 2025
1 parent e209796 commit 6234651
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 49 deletions.
9 changes: 8 additions & 1 deletion pgtap/dijkstra/driving_distance/edge_cases/issue_519.pg
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
BEGIN;

UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost);
SELECT plan(3);
SELECT CASE WHEN NOT min_version('3.6.0') AND min_lib_version('5.0.0') THEN plan(1) ELSE plan(3) END;

CREATE OR REPLACE FUNCTION test_function() RETURNS SETOF TEXT AS
$BODY$
Expand All @@ -41,6 +41,11 @@ BEGIN
RETURN QUERY SELECT bag_has('q4', 'q2', '2: DD from [1, 5, 25] should have results of DD from 5');
RETURN QUERY SELECT bag_has('q4', 'q3', '3: DD from [1, 5, 25] should have results of DD from 25');
ELSE
IF min_lib_version('5.0.0') THEN
RETURN QUERY SELECT skip(1, 'Internal function deprecated on 3.6.0 and removed on 5.0.0');
ELSE
--Internal function deprecated on 3.6.0
SET client_min_messages TO WARNING;
PREPARE q1 AS
SELECT 1 AS from_v, node, edge, cost, agg_cost FROM pgr_drivingDistance('SELECT id, source, target, cost FROM edges', 1, 3.5);

Expand All @@ -56,6 +61,8 @@ BEGIN
RETURN QUERY SELECT bag_has('q4', 'q1', '1: DD from [1, 5, 25] should have results of DD from 1');
RETURN QUERY SELECT bag_has('q4', 'q2', '2: DD from [1, 5, 25] should have results of DD from 5');
RETURN QUERY SELECT bag_has('q4', 'q3', '3: DD from [1, 5, 25] should have results of DD from 25');
SET client_min_messages TO NOTICE;
END IF;
END IF;
END;
$BODY$
Expand Down
21 changes: 14 additions & 7 deletions pgtap/dijkstra/driving_distance/inner_query.pg
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,23 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
BEGIN;

UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost);
SELECT plan(108);
SELECT CASE WHEN NOT min_version('3.6.0') AND min_lib_version('5.0.0') THEN plan(1) ELSE plan(108) END;


-- ONE SOURCE
SELECT style_dijkstra('pgr_drivingdistance(', ',2, 1, true)');

-- MANY SOURCES
SELECT style_dijkstra('pgr_drivingdistance(', ',ARRAY[2,3], 1, true)');

CREATE OR REPLACE FUNCTION inner_query() RETURNS SETOF TEXT AS
$BODY$
BEGIN
IF NOT min_version('3.6.0') AND min_lib_version('5.0.0') THEN
RETURN NEXT skip(1, 'Internal function deprecated on 3.6.0 and removed on 5.0.0');
RETURN;
END IF;

RETURN QUERY SELECT style_dijkstra('pgr_drivingdistance(', ',2, 1, true)');
RETURN QUERY SELECT style_dijkstra('pgr_drivingdistance(', ',ARRAY[2,3], 1, true)');
END;
$BODY$
LANGUAGE plpgsql;

SELECT inner_query();
SELECT finish();
ROLLBACK;
7 changes: 6 additions & 1 deletion pgtap/dijkstra/driving_distance/no_crash_test.pg
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
BEGIN;

UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost);
SELECT plan(34);
SELECT CASE WHEN NOT min_version('3.6.0') AND min_lib_version('5.0.0') THEN plan(1) ELSE plan(34) END;

PREPARE edges AS
SELECT id, source, target, cost, reverse_cost FROM edges;
Expand All @@ -39,6 +39,11 @@ DECLARE
params TEXT[];
subs TEXT[];
BEGIN
IF NOT min_version('3.6.0') AND min_lib_version('5.0.0') THEN
RETURN NEXT skip(1, 'Internal function deprecated on 3.6.0 and removed on 5.0.0');
RETURN;
END IF;

-- 1 to distance
params = ARRAY['$$SELECT id, source, target, cost, reverse_cost FROM edges$$','1', '1.3::FLOAT']::TEXT[];
subs = ARRAY[
Expand Down
69 changes: 29 additions & 40 deletions pgtap/dijkstra/driving_distance/types_check.pg
Original file line number Diff line number Diff line change
Expand Up @@ -29,49 +29,38 @@ SELECT has_function('pgr_drivingdistance', ARRAY['text','anyarray','double preci
SELECT function_returns('pgr_drivingdistance', ARRAY['text','bigint','double precision','boolean'],'setof record');
SELECT function_returns('pgr_drivingdistance', ARRAY['text','anyarray','double precision','boolean','boolean'],'setof record');

CREATE OR REPLACE FUNCTION types_check()
RETURNS SETOF TEXT AS
$BODY$
BEGIN
SELECT CASE
WHEN (min_version('3.6.0')) THEN
collect_tap(
set_eq(
$$SELECT proargnames from pg_proc where proname = 'pgr_drivingdistance'$$,
$$VALUES
('{"","","","directed","seq","depth","start_vid","pred","node","edge","cost","agg_cost"}'::TEXT[]),
('{"","","","directed","equicost","seq","depth","start_vid","pred","node","edge","cost","agg_cost"}'::TEXT[])
$$),

IF (min_version('3.6.0')) THEN
RETURN QUERY
SELECT set_eq(
$$SELECT proargnames from pg_proc where proname = 'pgr_drivingdistance'$$,
$$VALUES
('{"","","","directed","seq","depth","start_vid","pred","node","edge","cost","agg_cost"}'::TEXT[]),
('{"","","","directed","equicost","seq","depth","start_vid","pred","node","edge","cost","agg_cost"}'::TEXT[])
$$);
set_eq(
$$SELECT proallargtypes from pg_proc where proname = 'pgr_drivingdistance'$$,
$$VALUES
('{25,20,701,16,20,20,20,20,20,20,701,701}'::OID[]),
('{25,2277,701,16,16,20,20,20,20,20,20,701,701}'::OID[])
$$))
ELSE
collect_tap(
set_eq(
$$SELECT proargnames from pg_proc where proname = 'pgr_drivingdistance'$$,
$$VALUES
('{"","","","directed","seq","node","edge","cost","agg_cost"}'::TEXT[]),
('{"","","","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}'::TEXT[])
$$),

RETURN QUERY
SELECT set_eq(
$$SELECT proallargtypes from pg_proc where proname = 'pgr_drivingdistance'$$,
$$VALUES
('{25,20,701,16,20,20,20,20,20,20,701,701}'::OID[]),
('{25,2277,701,16,16,20,20,20,20,20,20,701,701}'::OID[])
$$);
ELSE
-- old signatures
RETURN QUERY
SELECT set_eq(
$$SELECT proargnames from pg_proc where proname = 'pgr_drivingdistance'$$,
$$VALUES
('{"","","","directed","seq","node","edge","cost","agg_cost"}'::TEXT[]),
('{"","","","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}'::TEXT[])
$$);

RETURN QUERY
SELECT set_eq(
$$SELECT proallargtypes from pg_proc where proname = 'pgr_drivingdistance'$$,
$$VALUES
('{25,20,701,16,23,20,20,701,701}'::OID[]),
('{25,2277,701,16,16,23,20,20,20,701,701}'::OID[])
$$);
END IF;
set_eq(
$$SELECT proallargtypes from pg_proc where proname = 'pgr_drivingdistance'$$,
$$VALUES
('{25,20,701,16,23,20,20,701,701}'::OID[]),
('{25,2277,701,16,16,23,20,20,20,701,701}'::OID[])
$$))
END;
$BODY$
LANGUAGE plpgsql;

SELECT * FROM types_check();
SELECT finish();
ROLLBACK;

0 comments on commit 6234651

Please sign in to comment.