Skip to content

Commit 53f3b64

Browse files
committed
Refactor Regression Tests for CASE statement (apache#1268)
Added some new cases to CASE statement regression tests to capture cases that were not tested for before. Refactored existing test cases to improve readability
1 parent 162bf30 commit 53f3b64

2 files changed

Lines changed: 94 additions & 21 deletions

File tree

regress/expected/expr.out

Lines changed: 57 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6245,32 +6245,22 @@ NOTICE: graph "case_statement" has been created
62456245

62466246
(1 row)
62476247

6248-
SELECT * FROM cypher('case_statement', $$CREATE ({i: 1, j: null})$$) AS (result agtype);
6248+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 1, i: 1, j: null})-[:connected_to {id: 1, k:0}]->({id: 2, i: 'a', j: 'b'})$$) AS (result agtype);
62496249
result
62506250
--------
62516251
(0 rows)
62526252

6253-
SELECT * FROM cypher('case_statement', $$CREATE ({i: 'a', j: 'b'})$$) AS (result agtype);
6253+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 3, i: 0, j: 1})-[:connected_to {id: 2, k:1}]->({id: 4, i: true, j: false})$$) AS (result agtype);
62546254
result
62556255
--------
62566256
(0 rows)
62576257

6258-
SELECT * FROM cypher('case_statement', $$CREATE ({i: 0, j: 1})$$) AS (result agtype);
6258+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 5, i: [], j: [0,1,2]})$$) AS (result agtype);
62596259
result
62606260
--------
62616261
(0 rows)
62626262

6263-
SELECT * FROM cypher('case_statement', $$CREATE ({i: true, j: false})$$) AS (result agtype);
6264-
result
6265-
--------
6266-
(0 rows)
6267-
6268-
SELECT * FROM cypher('case_statement', $$CREATE ({i: [], j: [0,1,2]})$$) AS (result agtype);
6269-
result
6270-
--------
6271-
(0 rows)
6272-
6273-
SELECT * FROM cypher('case_statement', $$CREATE ({i: {}, j: {i:1}})$$) AS (result agtype);
6263+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 6, i: {}, j: {i:1}})$$) AS (result agtype);
62746264
result
62756265
--------
62766266
(0 rows)
@@ -6355,6 +6345,57 @@ $$ ) AS (j agtype, case_statement agtype);
63556345
{"i": 1} | {"i": 1}
63566346
(6 rows)
63576347

6348+
--CASE agtype_vertex WHEN value THEN result END
6349+
SELECT * FROM cypher('case_statement', $$
6350+
MATCH (n)
6351+
RETURN CASE n
6352+
WHEN null THEN 'should not return me'
6353+
WHEN 'agtype_string' THEN 'wrong'
6354+
WHEN n THEN n
6355+
ELSE 'no n'
6356+
END
6357+
$$ ) AS (case_statement agtype);
6358+
case_statement
6359+
------------------------------------------------------------------------------------------------
6360+
{"id": 281474976710657, "label": "", "properties": {"i": 1, "id": 1}}::vertex
6361+
{"id": 281474976710658, "label": "", "properties": {"i": "a", "j": "b", "id": 2}}::vertex
6362+
{"id": 281474976710659, "label": "", "properties": {"i": 0, "j": 1, "id": 3}}::vertex
6363+
{"id": 281474976710660, "label": "", "properties": {"i": true, "j": false, "id": 4}}::vertex
6364+
{"id": 281474976710661, "label": "", "properties": {"i": [], "j": [0, 1, 2], "id": 5}}::vertex
6365+
{"id": 281474976710662, "label": "", "properties": {"i": {}, "j": {"i": 1}, "id": 6}}::vertex
6366+
(6 rows)
6367+
6368+
--CASE with match and edges
6369+
SELECT * FROM cypher('case_statement', $$
6370+
MATCH (n)-[e]->(m)
6371+
RETURN CASE
6372+
WHEN null THEN 'should not return me'
6373+
WHEN n.i = 1 THEN n
6374+
WHEN n.i = 0 THEN m
6375+
ELSE 'none'
6376+
END
6377+
$$ ) AS (case_statement agtype);
6378+
case_statement
6379+
----------------------------------------------------------------------------------------------
6380+
{"id": 281474976710657, "label": "", "properties": {"i": 1, "id": 1}}::vertex
6381+
{"id": 281474976710660, "label": "", "properties": {"i": true, "j": false, "id": 4}}::vertex
6382+
(2 rows)
6383+
6384+
SELECT * FROM cypher('case_statement', $$
6385+
MATCH (n)-[e]->(m)
6386+
RETURN CASE
6387+
WHEN null THEN 'should not return me'
6388+
WHEN e.k = 1 THEN e
6389+
WHEN e.k = 0 THEN e
6390+
ELSE 'none'
6391+
END
6392+
$$ ) AS (case_statement agtype);
6393+
case_statement
6394+
-------------------------------------------------------------------------------------------------------------------------------------------------
6395+
{"id": 844424930131969, "label": "connected_to", "end_id": 281474976710658, "start_id": 281474976710657, "properties": {"k": 0, "id": 1}}::edge
6396+
{"id": 844424930131970, "label": "connected_to", "end_id": 281474976710660, "start_id": 281474976710659, "properties": {"k": 1, "id": 2}}::edge
6397+
(2 rows)
6398+
63586399
-- RETURN * and (u)--(v) optional forms
63596400
SELECT create_graph('opt_forms');
63606401
NOTICE: graph "opt_forms" has been created
@@ -7213,9 +7254,10 @@ NOTICE: graph "VLE" has been dropped
72137254
(1 row)
72147255

72157256
SELECT * FROM drop_graph('case_statement', true);
7216-
NOTICE: drop cascades to 2 other objects
7257+
NOTICE: drop cascades to 3 other objects
72177258
DETAIL: drop cascades to table case_statement._ag_label_vertex
72187259
drop cascades to table case_statement._ag_label_edge
7260+
drop cascades to table case_statement.connected_to
72197261
NOTICE: graph "case_statement" has been dropped
72207262
drop_graph
72217263
------------

regress/sql/expr.sql

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2595,12 +2595,10 @@ $$) AS (i agtype);
25952595

25962596
--CASE
25972597
SELECT create_graph('case_statement');
2598-
SELECT * FROM cypher('case_statement', $$CREATE ({i: 1, j: null})$$) AS (result agtype);
2599-
SELECT * FROM cypher('case_statement', $$CREATE ({i: 'a', j: 'b'})$$) AS (result agtype);
2600-
SELECT * FROM cypher('case_statement', $$CREATE ({i: 0, j: 1})$$) AS (result agtype);
2601-
SELECT * FROM cypher('case_statement', $$CREATE ({i: true, j: false})$$) AS (result agtype);
2602-
SELECT * FROM cypher('case_statement', $$CREATE ({i: [], j: [0,1,2]})$$) AS (result agtype);
2603-
SELECT * FROM cypher('case_statement', $$CREATE ({i: {}, j: {i:1}})$$) AS (result agtype);
2598+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 1, i: 1, j: null})-[:connected_to {id: 1, k:0}]->({id: 2, i: 'a', j: 'b'})$$) AS (result agtype);
2599+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 3, i: 0, j: 1})-[:connected_to {id: 2, k:1}]->({id: 4, i: true, j: false})$$) AS (result agtype);
2600+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 5, i: [], j: [0,1,2]})$$) AS (result agtype);
2601+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 6, i: {}, j: {i:1}})$$) AS (result agtype);
26042602

26052603
--standalone case & edge cases
26062604
--base case
@@ -2646,6 +2644,39 @@ SELECT * FROM cypher('case_statement', $$
26462644
END
26472645
$$ ) AS (j agtype, case_statement agtype);
26482646

2647+
--CASE agtype_vertex WHEN value THEN result END
2648+
SELECT * FROM cypher('case_statement', $$
2649+
MATCH (n)
2650+
RETURN CASE n
2651+
WHEN null THEN 'should not return me'
2652+
WHEN 'agtype_string' THEN 'wrong'
2653+
WHEN n THEN n
2654+
ELSE 'no n'
2655+
END
2656+
$$ ) AS (case_statement agtype);
2657+
2658+
--CASE with match and edges
2659+
SELECT * FROM cypher('case_statement', $$
2660+
MATCH (n)-[e]->(m)
2661+
RETURN CASE
2662+
WHEN null THEN 'should not return me'
2663+
WHEN n.i = 1 THEN n
2664+
WHEN n.i = 0 THEN m
2665+
ELSE 'none'
2666+
END
2667+
$$ ) AS (case_statement agtype);
2668+
2669+
SELECT * FROM cypher('case_statement', $$
2670+
MATCH (n)-[e]->(m)
2671+
RETURN CASE
2672+
WHEN null THEN 'should not return me'
2673+
WHEN e.k = 1 THEN e
2674+
WHEN e.k = 0 THEN e
2675+
ELSE 'none'
2676+
END
2677+
$$ ) AS (case_statement agtype);
2678+
2679+
26492680
-- RETURN * and (u)--(v) optional forms
26502681
SELECT create_graph('opt_forms');
26512682
SELECT * FROM cypher('opt_forms', $$CREATE ({i:1})-[:KNOWS]->({i:2})<-[:KNOWS]-({i:3})$$)AS (result agtype);

0 commit comments

Comments
 (0)