1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
/* :file: This file is part of the pgRouting project.
:copyright: Copyright (c) 2019-2026 pgRouting developers
:license: Creative Commons Attribution-Share Alike 3.0 https://creativecommons.org/licenses/by-sa/3.0 */
BEGIN;
UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost);
SELECT plan(29);
CREATE OR REPLACE FUNCTION types_check()
RETURNS SETOF TEXT AS
$BODY$
DECLARE code TEXT := 'P0001';
BEGIN
IF min_version('4.0.0') THEN
code := 'XX000';
END IF;
-- 0 edges tests
RETURN QUERY SELECT is_empty(' SELECT id, source, target, cost > 0, reverse_cost > 0 from edges where id>18 ','1');
-- directed graph
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges where id>18 '', 5)', '2');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges where id>18 '',array[5])','3');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges where id>18 '',array[2,5])', '4');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges where id>18 '', 5, max_depth => 2)', '5');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges where id>18 '',array[5], max_depth => 2)','6');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges where id>18 '',array[2,5], max_depth => 2)', '7');
-- undirected graph
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges where id>18 '', 5, directed := false)', '8');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges where id>18 '',array[5], directed := false)','9');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges where id>18 '',array[2,5], directed := false)', '10');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges where id>18 '', 5, max_depth => 2, directed := false)', '11');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges where id>18 '',array[5], max_depth => 2, directed := false)','12');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges where id>18 '',array[2,5], max_depth => 2, directed := false)', '13');
-- vertex not present in graph tests
-- directed graph
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges'', -10)', '14');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges'',array[-10])','15');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges'',array[20,-10])', '16');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges'', -10, max_depth => 2)', '17');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges'',array[-10], max_depth => 2)','18');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges'',array[20,-10], max_depth => 2)', '19');
-- undirected graph
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges'', -10, directed := false)', '20');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges'',array[-10], directed := false)','21');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges'',array[20,-10], directed := false)', '22');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges'', -10, max_depth => 2, directed := false)', '23');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges'',array[-10], max_depth => 2, directed := false)','24');
RETURN QUERY SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edges'',array[20,-10], max_depth => 2, directed := false)', '25');
-- negative depth tests
PREPARE breadthFirstSearch26 AS
SELECT *
FROM pgr_breadthFirstSearch(
'SELECT id, source, target, cost, reverse_cost
FROM edges',
4, max_depth => -3
);
RETURN QUERY SELECT throws_ok('breadthFirstSearch26',
code,
'Negative value found on ''max_depth''',
'26: Negative max_depth throws');
PREPARE breadthFirstSearch27 AS
SELECT *
FROM pgr_breadthFirstSearch(
'SELECT id, source, target, cost, reverse_cost
FROM edges',
ARRAY[4, 10], max_depth => -3
);
RETURN QUERY SELECT throws_ok('breadthFirstSearch27',
code,
'Negative value found on ''max_depth''',
'27: Negative max_depth throws');
PREPARE breadthFirstSearch28 AS
SELECT *
FROM pgr_breadthFirstSearch(
'SELECT id, source, target, cost, reverse_cost
FROM edges',
4, max_depth => -3, directed => false
);
RETURN QUERY SELECT throws_ok('breadthFirstSearch28',
code,
'Negative value found on ''max_depth''',
'28: Negative max_depth throws');
PREPARE breadthFirstSearch29 AS
SELECT *
FROM pgr_breadthFirstSearch(
'SELECT id, source, target, cost, reverse_cost
FROM edges',
ARRAY[4, 10], max_depth => -3, directed => false
);
RETURN QUERY SELECT throws_ok('breadthFirstSearch29',
code,
'Negative value found on ''max_depth''',
'29: Negative max_depth throws');
END;
$BODY$
LANGUAGE plpgsql;
SELECT types_check();
SELECT * FROM finish();
ROLLBACK;
|