forked from pgRouting/GSoC-pgRouting
-
Notifications
You must be signed in to change notification settings - Fork 0
/
no_crash_test-breadthFirstSearch.sql
106 lines (80 loc) · 2.94 KB
/
no_crash_test-breadthFirstSearch.sql
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
\i setup.sql
SELECT plan(86);
PREPARE edges AS
SELECT id, source, target, cost, reverse_cost FROM edge_table;
PREPARE null_vertex AS
SELECT id FROM edge_table_vertices_pgr WHERE id IN (-1);
SELECT isnt_empty('edges', 'Should be not empty to tests be meaningful');
SELECT is_empty('null_vertex', 'Should be empty to tests be meaningful');
CREATE OR REPLACE FUNCTION test_function()
RETURNS SETOF TEXT AS
$BODY$
DECLARE
params TEXT[];
subs TEXT[];
BEGIN
-- breadthFirstSearch
params = ARRAY[
'$$SELECT id, source, target, cost, reverse_cost FROM edge_table$$',
'5'
]::TEXT[];
subs = ARRAY[
'NULL',
'(SELECT id FROM edge_table_vertices_pgr WHERE id IN (-1))'
]::TEXT[];
RETURN query SELECT * FROM no_crash_test('pgr_breadthFirstSearch', params, subs);
params[1] := '$$edges$$';
RETURN query SELECT * FROM no_crash_test('pgr_breadthFirstSearch', params, subs);
subs[2] := 'NULL::INTEGER';
RETURN query SELECT * FROM no_crash_test('pgr_breadthFirstSearch', params, subs);
-- breadthFirstSearch with depth
params = ARRAY[
'$$SELECT id, source, target, cost, reverse_cost FROM edge_table$$',
'5',
'3'
]::TEXT[];
subs = ARRAY[
'NULL',
'(SELECT id FROM edge_table_vertices_pgr WHERE id IN (-1))',
'NULL::INTEGER'
]::TEXT[];
RETURN query SELECT * FROM no_crash_test('pgr_breadthFirstSearch', params, subs);
params[1] := '$$edges$$';
RETURN query SELECT * FROM no_crash_test('pgr_breadthFirstSearch', params, subs);
subs[2] := 'NULL::BIGINT';
RETURN query SELECT * FROM no_crash_test('pgr_breadthFirstSearch', params, subs);
-- breadthFirstSearch Multiple vertices
params = ARRAY[
'$$SELECT id, source, target, cost, reverse_cost FROM edge_table$$',
'ARRAY[5,3]'
]::TEXT[];
subs = ARRAY[
'NULL',
'(SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id IN (-1))'
]::TEXT[];
RETURN query SELECT * FROM no_crash_test('pgr_breadthFirstSearch', params, subs);
params[1] := '$$edges$$';
RETURN query SELECT * FROM no_crash_test('pgr_breadthFirstSearch', params, subs);
subs[2] := 'NULL::BIGINT';
RETURN query SELECT * FROM no_crash_test('pgr_breadthFirstSearch', params, subs);
-- breadthFirstSearch with depth Multiple vertices
params = ARRAY[
'$$SELECT id, source, target, cost, reverse_cost FROM edge_table$$',
'ARRAY[5,3]',
'3'
]::TEXT[];
subs = ARRAY[
'NULL',
'(SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id IN (-1))',
'NULL::INTEGER'
]::TEXT[];
RETURN query SELECT * FROM no_crash_test('pgr_breadthFirstSearch', params, subs);
params[1] := '$$edges$$';
RETURN query SELECT * FROM no_crash_test('pgr_breadthFirstSearch', params, subs);
subs[2] := 'NULL::BIGINT[]';
RETURN query SELECT * FROM no_crash_test('pgr_breadthFirstSearch', params, subs);
END
$BODY$
LANGUAGE plpgsql VOLATILE;
SELECT * FROM test_function();
ROLLBACK;