forked from pgRouting/GSoC-pgRouting
-
Notifications
You must be signed in to change notification settings - Fork 0
/
breadthFirstSearch-edge-cases.sql
128 lines (104 loc) · 5.25 KB
/
breadthFirstSearch-edge-cases.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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
\i setup.sql
SELECT plan(29);
-- 0 edges tests
SELECT is_empty(' SELECT id, source, target, cost > 0, reverse_cost > 0 from edge_table where id>18 ','1');
-- directed graph
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table where id>18 '', 5)', '2');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table where id>18 '',array[5])','3');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table where id>18 '',array[2,5])', '4');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table where id>18 '', 5, 2)', '5');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table where id>18 '',array[5], 2)','6');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table where id>18 '',array[2,5], 2)', '7');
-- undirected graph
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table where id>18 '', 5, directed := false)', '8');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table where id>18 '',array[5], directed := false)','9');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table where id>18 '',array[2,5], directed := false)', '10');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table where id>18 '', 5, 2, directed := false)', '11');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table where id>18 '',array[5], 2, directed := false)','12');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table where id>18 '',array[2,5], 2, directed := false)', '13');
-- vertex not present in graph tests
-- directed graph
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table'', -10)', '14');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table'',array[-10])','15');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table'',array[20,-10])', '16');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table'', -10, 2)', '17');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table'',array[-10], 2)','18');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table'',array[20,-10], 2)', '19');
-- undirected graph
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table'', -10, directed := false)', '20');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table'',array[-10], directed := false)','21');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table'',array[20,-10], directed := false)', '22');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table'', -10, 2, directed := false)', '23');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table'',array[-10], 2, directed := false)','24');
SELECT is_empty('
SELECT * from pgr_breadthFirstSearch(''SELECT id, source, target, cost, reverse_cost from edge_table'',array[20,-10], 2, directed := false)', '25');
-- negative depth tests
PREPARE breadthFirstSearch26 AS
SELECT *
FROM pgr_breadthFirstSearch(
'SELECT id, source, target, cost, reverse_cost
FROM edge_table',
4, -3
);
SELECT throws_ok('breadthFirstSearch26',
'P0001',
'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 edge_table',
ARRAY[4, 10], -3
);
SELECT throws_ok('breadthFirstSearch27',
'P0001',
'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 edge_table',
4, -3, directed := false
);
SELECT throws_ok('breadthFirstSearch28',
'P0001',
'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 edge_table',
ARRAY[4, 10], -3, directed := false
);
SELECT throws_ok('breadthFirstSearch29',
'P0001',
'Negative value found on ''max_depth''',
'29: Negative max_depth throws');
SELECT * FROM finish();
ROLLBACK;