Skip to content

Commit 11b1cd7

Browse files
committed
Adding a one file check for Vias
1 parent 50ca5a9 commit 11b1cd7

1 file changed

Lines changed: 112 additions & 0 deletions

File tree

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
/* :file: This file is part of the pgRouting project.
2+
:copyright: Copyright (c) 2016-2026 pgRouting developers
3+
:license: Creative Commons Attribution-Share Alike 3.0 https://creativecommons.org/licenses/by-sa/3.0 */
4+
5+
BEGIN;
6+
SET client_min_messages TO WARNING;
7+
8+
SELECT CASE WHEN min_version('4.0.2') THEN plan(14) ELSE plan(14) END;
9+
10+
PREPARE edges AS
11+
SELECT *
12+
FROM (
13+
VALUES
14+
(100, 1, 2, 1, 1),
15+
(101, 2, 3, 1, 1),
16+
(102, 3, 4, 1, 1)
17+
) AS edge_table(id, source, target, cost, reverse_cost);
18+
19+
PREPARE points AS
20+
SELECT *
21+
FROM (
22+
VALUES (1, 101, 0.5::FLOAT)
23+
) AS t(pid, edge_id, fraction);
24+
25+
26+
CREATE OR REPLACE FUNCTION test_wpVia()
27+
RETURNS SETOF TEXT AS
28+
$BODY$
29+
BEGIN
30+
/*
31+
IF NOT min_version('4.0.1') THEN
32+
RETURN query
33+
SELECT skip(1, 'bad alloc error Fixed on 4.0.1');
34+
RETURN;
35+
END IF;
36+
*/
37+
38+
RETURN QUERY
39+
SELECT lives_ok($$SELECT * FROM pgr_withPointsVia('edges', 'points', ARRAY[1, 3, 4])$$,
40+
'withPointsVia lives when all via vertices exist in the graph');
41+
RETURN QUERY
42+
SELECT isnt_empty($$SELECT * FROM pgr_withPointsVia('edges', 'points', ARRAY[1, 3, 4])$$,
43+
'withPointsVia returns results when all via vertices exist in the graph');
44+
45+
RETURN QUERY
46+
SELECT lives_ok($$SELECT * FROM pgr_withPointsVia('edges', 'points', ARRAY[1, 3, 5])$$,
47+
'withPointsVia lives when a via vertex does not exist in the graph');
48+
RETURN QUERY
49+
SELECT isnt_empty($$SELECT * FROM pgr_withPointsVia('edges', 'points', ARRAY[1, 3, 5])$$,
50+
'withPointsVia returns results when a via vertex does not exist in the graph');
51+
52+
RETURN QUERY
53+
SELECT lives_ok($$SELECT * FROM pgr_withPointsVia('edges', 'points', ARRAY[1, 5, 4])$$,
54+
'withPointsVia handles via vertex missing between two valid vertices');
55+
RETURN QUERY
56+
SELECT is_empty($$SELECT * FROM pgr_withPointsVia('edges', 'points', ARRAY[1, 5, 4]);$$,
57+
'withPointsVia returns empty when via vertex missing between two valid vertices');
58+
59+
RETURN QUERY
60+
SELECT lives_ok($$SELECT * FROM pgr_withPointsVia('edges', 'points', ARRAY[1, -1, 4])$$,
61+
'withPointsVia lives when via includes a point pid that exists');
62+
RETURN QUERY
63+
SELECT isnt_empty($$SELECT * FROM pgr_withPointsVia('edges', 'points', ARRAY[1, -1, 4])$$,
64+
'withPointsVia returns results when via includes a point pid that exists');
65+
END
66+
$BODY$
67+
language plpgsql;
68+
69+
CREATE OR REPLACE FUNCTION test_dVia()
70+
RETURNS SETOF TEXT AS
71+
$BODY$
72+
BEGIN
73+
74+
/*
75+
IF NOT min_lib_version('4.0.2') THEN
76+
RETURN query
77+
SELECT skip(1, 'bad alloc error Fixed on 4.0.2');
78+
RETURN;
79+
END IF;
80+
*/
81+
82+
83+
RETURN QUERY
84+
SELECT lives_ok($$SELECT * FROM pgr_dijkstraVia('edges', ARRAY[1, 3, 4] )$$,
85+
'dijkstraVia lives when all via vertices exist in the graph');
86+
RETURN QUERY
87+
SELECT isnt_empty($$SELECT * FROM pgr_dijkstraVia('edges', ARRAY[1, 3, 4] )$$,
88+
'dijkstraVia lives when all via vertices exist in the graph');
89+
90+
RETURN QUERY
91+
SELECT lives_ok($$SELECT * FROM pgr_dijkstraVia('edges', ARRAY[1, 3, 5])$$,
92+
'dijkstraVia lives when a via vertex does not exist in the graph');
93+
RETURN QUERY
94+
SELECT isnt_empty($$SELECT * FROM pgr_dijkstraVia('edges', ARRAY[1, 3, 5])$$,
95+
'dijkstraVia lives when a via vertex does not exist in the graph');
96+
97+
98+
RETURN QUERY
99+
SELECT lives_ok($$SELECT * FROM pgr_dijkstraVia('edges', ARRAY[1, 5, 4])$$,
100+
'dijkstraVia handles via vertex missing between two valid vertices');
101+
RETURN QUERY
102+
SELECT is_empty($$SELECT * FROM pgr_dijkstraVia('edges', ARRAY[1, 5, 4]);$$,
103+
'dijkstraVia handles via vertex missing between two valid vertices');
104+
END
105+
$BODY$
106+
language plpgsql;
107+
108+
SELECT test_dVia();
109+
SELECT test_wpVia();
110+
111+
SELECT * FROM finish();
112+
ROLLBACK;

0 commit comments

Comments
 (0)