TCK Test Scenario Inventory¶
Comprehensive inventory of all OpenCypher Technology Compatibility Kit (TCK) test scenarios in GraphForge. Generated: 2026-02-17 21:56:38 UTC Total feature files: 222 Total scenarios: 1626
Table of Contents¶
- clauses (93 files, 827 scenarios)
- expressions (125 files, 758 scenarios)
- legacy (2 files, 11 scenarios)
- useCases (2 files, 30 scenarios)
Summary Statistics¶
| Category | Feature Files | Scenarios | Avg Scenarios/File |
|---|---|---|---|
| clauses | 93 | 827 | 8.9 |
| expressions | 125 | 758 | 6.1 |
| legacy | 2 | 11 | 5.5 |
| useCases | 2 | 30 | 15.0 |
| TOTAL | 222 | 1626 | 7.3 |
Detailed Inventory by Category¶
clauses¶
93 feature files, 827 scenarios
official/clauses/call/Call1.feature¶
Feature: Call1 - Basic procedure calling
Scenarios: 16
- [1] Standalone call to procedure that takes no arguments and yields no results (Scenario, line 33)
- [2] Standalone call to procedure that takes no arguments and yields no results, called with implicit arguments (Scenario, line 44)
- [3] In-query call to procedure that takes no arguments and yields no results (Scenario, line 55)
- [4] In-query call to procedure that takes no arguments and yields no results and consumes no rows (Scenario, line 69)
- [5] Standalone call to STRING procedure that takes no arguments (Scenario, line 92)
- [6] In-query call to STRING procedure that takes no arguments (Scenario, line 110)
- [7] Standalone call to procedure should fail if explicit argument is missing (Scenario, line 129)
- [8] In-query call to procedure should fail if explicit argument is missing (Scenario, line 139)
- [9] Standalone call to procedure should fail if too many explicit argument are given (Scenario, line 150)
- [10] In-query call to procedure should fail if too many explicit argument are given (Scenario, line 160)
- [11] Standalone call to procedure should fail if implicit argument is missing (Scenario, line 171)
- [12] In-query call to procedure that has outputs fails if no outputs are yielded (Scenario, line 183)
- [13] Standalone call to unknown procedure should fail (Scenario, line 194)
- [14] In-query call to unknown procedure should fail (Scenario, line 202)
- [15] In-query procedure call should fail if shadowing an already bound variable (Scenario, line 211)
- [16] In-query procedure call should fail if one of the argument expressions uses an aggregation function (Scenario, line 226)
official/clauses/call/Call2.feature¶
Feature: Call2 - Procedure arguments
Scenarios: 6
- [1] In-query call to procedure with explicit arguments (Scenario, line 33)
- [2] Standalone call to procedure with explicit arguments (Scenario, line 53)
- [3] Standalone call to procedure with implicit arguments (Scenario, line 72)
- [4] In-query call to procedure that takes arguments fails when trying to pass them implicitly (Scenario, line 95)
- [5] Standalone call to procedure should fail if input type is wrong (Scenario, line 106)
- [6] In-query call to procedure should fail if input type is wrong (Scenario, line 116)
official/clauses/call/Call3.feature¶
Feature: Call3 - Assignable-type arguments
Scenarios: 6
- [1] Standalone call to procedure with argument of type NUMBER accepts value of type INTEGER (Scenario, line 33)
- [2] In-query call to procedure with argument of type NUMBER accepts value of type INTEGER (Scenario, line 48)
- [3] Standalone call to procedure with argument of type NUMBER accepts value of type FLOAT (Scenario, line 64)
- [4] In-query call to procedure with argument of type NUMBER accepts value of type FLOAT (Scenario, line 79)
- [5] Standalone call to procedure with argument of type FLOAT accepts value of type INTEGER (Scenario, line 95)
- [6] In-query call to procedure with argument of type FLOAT accepts value of type INTEGER (Scenario, line 109)
official/clauses/call/Call4.feature¶
Feature: Call4 - Null Arguments
Scenarios: 2
- [1] Standalone call to procedure with null argument (Scenario, line 33)
- [2] In-query call to procedure with null argument (Scenario, line 47)
official/clauses/call/Call5.feature¶
Feature: Call5 - Results projection
Scenarios: 8
- [1] Explicit procedure result projection (Scenario, line 33)
- [2] Explicit procedure result projection with RETURN * (Scenario, line 48)
- [3] The order of yield items is irrelevant (Scenario Outline, line 63)
- [4] Rename outputs to unbound variable names (Scenario Outline, line 83)
- [5] Fail on renaming to an already bound variable name (Scenario, line 113)
- [6] Fail on renaming all outputs to the same variable name (Scenario, line 125)
- [7] Fail on in-query call to procedure with YIELD * (Scenario, line 138)
- [8] Allow standalone call to procedure with YIELD * (Scenario, line 155)
official/clauses/call/Call6.feature¶
Feature: Call6 - Call clause interoperation with other clauses
Scenarios: 3
- [1] Calling the same STRING procedure twice using the same outputs in each call (Scenario, line 33)
- [2] Project procedure results between query scopes with WITH clause (Scenario, line 54)
- [3] Project procedure results between query scopes with WITH clause and rename the projection (Scenario, line 69)
official/clauses/create/Create1.feature¶
Feature: Create1 - Creating nodes
Scenarios: 20
- [1] Create a single node (Scenario, line 33)
- [2] Create two nodes (Scenario, line 43)
- [3] Create a single node with a label (Scenario, line 53)
- [4] Create two nodes with same label (Scenario, line 64)
- [5] Create a single node with multiple labels (Scenario, line 75)
- [6] Create three nodes with multiple labels (Scenario, line 86)
- [7] Create a single node with a property (Scenario, line 97)
- [8] Create a single node with a property and return it (Scenario, line 108)
- [9] Create a single node with two properties (Scenario, line 122)
- [10] Create a single node with two properties and return them (Scenario, line 133)
- [11] Create a single node with null properties should not return those properties (Scenario, line 147)
- [12] CREATE does not lose precision on large integers (Scenario, line 161)
- [13] Fail when creating a node that is already bound (Scenario, line 176)
- [14] Fail when creating a node with properties that is already bound (Scenario, line 185)
- [15] Fail when adding a new label predicate on a node that is already bound 1 (Scenario, line 195)
- [16] Fail when adding new label predicate on a node that is already bound 2 (Scenario, line 205)
- [17] Fail when adding new label predicate on a node that is already bound 3 (Scenario, line 214)
- [18] Fail when adding new label predicate on a node that is already bound 4 (Scenario, line 223)
- [19] Fail when adding new label predicate on a node that is already bound 5 (Scenario, line 232)
- [20] Fail when creating a node using undefined variable in pattern (Scenario, line 241)
official/clauses/create/Create2.feature¶
Feature: Create2 - Creating relationships
Scenarios: 24
- [1] Create two nodes and a single relationship in a single pattern (Scenario, line 33)
- [2] Create two nodes and a single relationship in separate patterns (Scenario, line 44)
- [3] Create two nodes and a single relationship in separate clauses (Scenario, line 56)
- [4] Create two nodes and a single relationship in the reverse direction (Scenario, line 69)
- [5] Create a single relationship between two existing nodes (Scenario, line 89)
- [6] Create a single relationship between two existing nodes in the reverse direction (Scenario, line 105)
- [7] Create a single node and a single self loop in a single pattern (Scenario, line 129)
- [8] Create a single node and a single self loop in separate patterns (Scenario, line 140)
- [9] Create a single node and a single self loop in separate clauses (Scenario, line 152)
- [10] Create a single self loop on an existing node (Scenario, line 164)
- [11] Create a single relationship and an end node on an existing starting node (Scenario, line 179)
- [12] Create a single relationship and a starting node on an existing end node (Scenario, line 204)
- [13] Create a single relationship with a property (Scenario, line 229)
- [14] Create a single relationship with a property and return it (Scenario, line 241)
- [15] Create a single relationship with two properties (Scenario, line 256)
- [16] Create a single relationship with two properties and return them (Scenario, line 268)
- [17] Create a single relationship with null properties should not return those properties (Scenario, line 283)
- [18] Fail when creating a relationship without a type (Scenario, line 298)
- [19] Fail when creating a relationship without a direction (Scenario, line 306)
- [20] Fail when creating a relationship with two directions (Scenario, line 314)
- [21] Fail when creating a relationship with more than one type (Scenario, line 322)
- [22] Fail when creating a variable-length relationship (Scenario, line 330)
- [23] Fail when creating a relationship that is already bound (Scenario, line 338)
- [24] Fail when creating a relationship using undefined variable in pattern (Scenario, line 347)
official/clauses/create/Create3.feature¶
Feature: Create3 - Interoperation with other clauses
Scenarios: 13
- [1] MATCH-CREATE (Scenario, line 33)
- [2] WITH-CREATE (Scenario, line 48)
- [3] MATCH-CREATE-WITH-CREATE (Scenario, line 65)
- [4] MATCH-CREATE: Newly-created nodes not visible to preceding MATCH (Scenario, line 83)
- [5] WITH-CREATE: Nodes are not created when aliases are applied to variable names (Scenario, line 98)
- [6] WITH-CREATE: Only a single node is created when an alias is applied to a variable name (Scenario, line 118)
- [7] WITH-CREATE: Nodes are not created when aliases are applied to variable names multiple times (Scenario, line 138)
- [8] WITH-CREATE: Only a single node is created when an alias is applied to a variable name multiple times (Scenario, line 160)
- [9] WITH-CREATE: A bound node should be recognized after projection with WITH + WITH (Scenario, line 182)
- [10] WITH-UNWIND-CREATE: A bound node should be recognized after projection with WITH + UNWIND (Scenario, line 197)
- [11] WITH-MERGE-CREATE: A bound node should be recognized after projection with WITH + MERGE node (Scenario, line 212)
- [12] WITH-MERGE-CREATE: A bound node should be recognized after projection with WITH + MERGE pattern (Scenario, line 227)
- [13] Merge followed by multiple creates (Scenario, line 244)
official/clauses/create/Create4.feature¶
Feature: Create4 - Large Create Query
Scenarios: 2
- [1] Generate the movie graph (Scenario, line 33)
- [2] Many CREATE clauses (Scenario, line 579)
official/clauses/create/Create5.feature¶
Feature: Create5 - Multiple hops create patterns
Scenarios: 5
- [1] Create a pattern with multiple hops (Scenario, line 33)
- [2] Create a pattern with multiple hops in the reverse direction (Scenario, line 53)
- [3] Create a pattern with multiple hops in varying directions (Scenario, line 73)
- [4] Create a pattern with multiple hops with multiple types and varying directions (Scenario, line 93)
- [5] Create a pattern with multiple hops and varying directions (Scenario, line 112)
official/clauses/create/Create6.feature¶
Feature: Create6 - Persistence of create clause side effects
Scenarios: 14
- [1] Limiting to zero results after creating nodes affects the result set but not the side effects (Scenario, line 33)
- [2] Skipping all results after creating nodes affects the result set but not the side effects (Scenario, line 48)
- [3] Skipping and limiting to a few results after creating nodes does not affect the result set nor the side effects (Scenario, line 63)
- [4] Skipping zero result and limiting to all results after creating nodes does not affect the result set nor the side effects (Scenario, line 81)
- [5] Filtering after creating nodes affects the result set but not the side effects (Scenario, line 102)
- [6] Aggregating in
RETURNafter creating nodes affects the result set but not the side effects (Scenario, line 121) - [7] Aggregating in
WITHafter creating nodes affects the result set but not the side effects (Scenario, line 137) - [8] Limiting to zero results after creating relationships affects the result set but not the side effects (Scenario, line 154)
- [9] Skipping all results after creating relationships affects the result set but not the side effects (Scenario, line 169)
- [10] Skipping and limiting to a few results after creating relationships does not affect the result set nor the side effects (Scenario, line 184)
- [11] Skipping zero result and limiting to all results after creating relationships does not affect the result set nor the side effects (Scenario, line 202)
- [12] Filtering after creating relationships affects the result set but not the side effects (Scenario, line 223)
- [13] Aggregating in
RETURNafter creating relationships affects the result set but not the side effects (Scenario, line 242) - [14] Aggregating in
WITHafter creating relationships affects the result set but not the side effects (Scenario, line 258)
official/clauses/delete/Delete1.feature¶
Feature: Delete1 - Deleting nodes
Scenarios: 8
- [1] Delete nodes (Scenario, line 33)
- [2] Detach delete node (Scenario, line 48)
- [3] Detach deleting connected nodes and relationships (Scenario, line 63)
- [4] Delete on null node (Scenario, line 83)
- [5] Ignore null when deleting node (Scenario, line 93)
- [6] Detach delete on null node (Scenario, line 106)
- [7] Failing when deleting connected nodes (Scenario, line 116)
- [8] Failing when deleting a label (Scenario, line 132)
official/clauses/delete/Delete2.feature¶
Feature: Delete2 - Deleting relationships
Scenarios: 5
- [1] Delete relationships (Scenario, line 33)
- [2] Delete optionally matched relationship (Scenario, line 49)
- [3] Delete relationship with bidirectional matching (Scenario, line 65)
- [4] Ignore null when deleting relationship (Scenario, line 83)
- [5] Failing when deleting a relationship type (Scenario, line 96)
official/clauses/delete/Delete3.feature¶
Feature: Delete3 - Deleting named paths
Scenarios: 2
- [1] Detach deleting paths (Scenario, line 33)
- [2] Delete on null path (Scenario, line 53)
official/clauses/delete/Delete4.feature¶
Feature: Delete4 - Delete clause interoperation with other clauses
Scenarios: 3
- [1] Undirected expand followed by delete and count (Scenario, line 33)
- [2] Undirected variable length expand followed by delete and count (Scenario, line 52)
- [3] Create and delete in same query (Scenario, line 73)
official/clauses/delete/Delete5.feature¶
Feature: Delete5 - Delete clause interoperation with built-in data types
Scenarios: 9
- [1] Delete node from a list (Scenario, line 33)
- [2] Delete relationship from a list (Scenario, line 56)
- [3] Delete nodes from a map (Scenario, line 78)
- [4] Delete relationships from a map (Scenario, line 95)
- [5] Detach delete nodes from nested map/list (Scenario, line 113)
- [6] Delete relationships from nested map/list (Scenario, line 132)
- [7] Delete paths from nested map/list (Scenario, line 150)
- [8] Failing when using undefined variable in DELETE (Scenario, line 170)
- [9] Failing when deleting an integer expression (Scenario, line 179)
official/clauses/delete/Delete6.feature¶
Feature: Delete6 - Persistence of delete clause side effects
Scenarios: 14
- [1] Limiting to zero results after deleting nodes affects the result set but not the side effects (Scenario, line 33)
- [2] Skipping all results after deleting nodes affects the result set but not the side effects (Scenario, line 53)
- [3] Skipping and limiting to a few results after deleting nodes affects the result set but not the side effects (Scenario, line 73)
- [4] Skipping zero results and limiting to all results after deleting nodes does not affect the result set nor the side effects (Scenario, line 99)
- [5] Filtering after deleting nodes affects the result set but not the side effects (Scenario, line 128)
- [6] Aggregating in
RETURNafter deleting nodes affects the result set but not the side effects (Scenario, line 156) - [7] Aggregating in
WITHafter deleting nodes affects the result set but not the side effects (Scenario, line 181) - [8] Limiting to zero results after deleting relationships affects the result set but not the side effects (Scenario, line 207)
- [9] Skipping all results after deleting relationships affects the result set but not the side effects (Scenario, line 226)
- [10] Skipping and limiting to a few results after deleting relationships affects the result set but not the side effects (Scenario, line 245)
- [11] Skipping zero result and limiting to all results after deleting relationships does not affect the result set nor the side effects (Scenario, line 270)
- [12] Filtering after deleting relationships affects the result set but not the side effects (Scenario, line 298)
- [13] Aggregating in
RETURNafter deleting relationships affects the result set but not the side effects (Scenario, line 325) - [14] Aggregating in
WITHafter deleting relationships affects the result set but not the side effects (Scenario, line 349)
official/clauses/match-where/MatchWhere1.feature¶
Feature: MatchWhere1 - Filter single variable
Scenarios: 15
- [1] Filter node with node label predicate on multi variables with multiple bindings (Scenario, line 33)
- [2] Filter node with node label predicate on multi variables without any bindings (Scenario, line 50)
- [3] Filter node with property predicate on a single variable with multiple bindings (Scenario, line 66)
- [4] Filter start node of relationship with property predicate on multi variables with multiple bindings (Scenario, line 83)
- [5] Filter end node of relationship with property predicate on multi variables with multiple bindings (Scenario, line 103)
- [6] Filter node with a parameter in a property predicate on multi variables with one binding (Scenario, line 120)
- [7] Filter relationship with relationship type predicate on multi variables with multiple bindings (Scenario, line 139)
- [8] Filter relationship with property predicate on multi variables with multiple bindings (Scenario, line 160)
- [9] Filter relationship with a parameter in a property predicate on multi variables with one binding (Scenario, line 177)
- [10] Filter node with disjunctive property predicate on single variables with multiple bindings (Scenario, line 196)
- [11] Filter relationship with disjunctive relationship type predicate on multi variables with multiple bindings (Scenario, line 216)
- [12] Filter path with path length predicate on multi variables with one binding (Scenario, line 239)
- [13] Filter path with false path length predicate on multi variables with one binding (Scenario, line 256)
- [14] Fail when filtering path with property predicate (Scenario, line 272)
- [15] Fail on aggregation in WHERE (Scenario, line 283)
official/clauses/match-where/MatchWhere2.feature¶
Feature: MatchWhere2 - Filter multiple variables
Scenarios: 2
- [1] Filter nodes with conjunctive two-part property predicate on multi variables with multiple bindings (Scenario, line 33)
- [2] Filter node with conjunctive multi-part property predicates on multi variables with multiple bindings (Scenario, line 58)
official/clauses/match-where/MatchWhere3.feature¶
Feature: MatchWhere3 - Equi-Joins on variables
Scenarios: 3
- [1] Join between node identities (Scenario, line 33)
- [2] Join between node properties of disconnected nodes (Scenario, line 51)
- [3] Join between node properties of adjacent nodes (Scenario, line 71)
official/clauses/match-where/MatchWhere4.feature¶
Feature: MatchWhere4 - Non-Equi-Joins on variables
Scenarios: 2
- [1] Join nodes on inequality (Scenario, line 33)
- [2] Join with disjunctive multi-part predicates including patterns (Scenario, line 51)
official/clauses/match-where/MatchWhere5.feature¶
Feature: MatchWhere5 - Filter on predicate resulting in null
Scenarios: 4
- [1] Filter out on null (Scenario, line 33)
- [2] Filter out on null if the AND'd predicate evaluates to false (Scenario, line 54)
- [3] Filter out on null if the AND'd predicate evaluates to true (Scenario, line 75)
- [4] Do not filter out on null if the OR'd predicate evaluates to true (Scenario, line 96)
official/clauses/match-where/MatchWhere6.feature¶
Feature: MatchWhere6 - Filter optional matches
Scenarios: 8
- [1] Filter node with node label predicate on multi variables with multiple bindings after MATCH and OPTIONAL MATCH (Scenario, line 33)
- [2] Filter node with false node label predicate after OPTIONAL MATCH (Scenario, line 55)
- [3] Filter node with property predicate on multi variables with multiple bindings after OPTIONAL MATCH (Scenario, line 78)
- [4] Do not fail when predicates on optionally matched and missed nodes are invalid (Scenario, line 101)
- [5] Matching and optionally matching with unbound nodes and equality predicate in reverse direction (Scenario, line 120)
- [6] Join nodes on non-equality of properties – OPTIONAL MATCH and WHERE (Scenario, line 140)
- [7] Join nodes on non-equality of properties – OPTIONAL MATCH on two relationships and WHERE (Scenario, line 163)
- [8] Join nodes on non-equality of properties – Two OPTIONAL MATCH clauses and WHERE (Scenario, line 186)
official/clauses/match/Match1.feature¶
Feature: Match1 - Match nodes
Scenarios: 11
- [1] Match non-existent nodes returns empty (Scenario, line 33)
- [2] Matching all nodes (Scenario, line 44)
- [3] Matching nodes using multiple labels (Scenario, line 62)
- [4] Simple node inline property predicate (Scenario, line 81)
- [5] Use multiple MATCH clauses to do a Cartesian product (Scenario, line 97)
- [6] Fail when using parameter as node predicate in MATCH (Scenario, line 123)
- [7] Fail when a relationship has the same variable in a preceding MATCH (Scenario Outline, line 132)
- [8] Fail when a path has the same variable in a preceding MATCH (Scenario Outline, line 156)
- [9] Fail when a relationship has the same variable in the same pattern (Scenario Outline, line 185)
- [10] Fail when a path has the same variable in the same pattern (Scenario Outline, line 222)
- [11] Fail when matching a node variable bound to a value (Scenario Outline, line 254)
official/clauses/match/Match2.feature¶
Feature: Match2 - Match relationships
Scenarios: 13
- [1] Match non-existent relationships returns empty (Scenario, line 33)
- [2] Matching a relationship pattern using a label predicate on both sides (Scenario, line 44)
- [3] Matching a self-loop with an undirected relationship pattern (Scenario, line 63)
- [4] Matching a self-loop with a directed relationship pattern (Scenario, line 80)
- [5] Match relationship with inline property value (Scenario, line 97)
- [6] Match relationships with multiple types (Scenario, line 113)
- [7] Matching twice with conflicting relationship types on same relationship (Scenario, line 135)
- [8] Fail when using parameter as relationship predicate in MATCH (Scenario, line 152)
- [9] Fail when a node has the same variable in a preceding MATCH (Scenario Outline, line 161)
- [10] Fail when a path has the same variable in a preceding MATCH (Scenario Outline, line 200)
- [11] Fail when a node has the same variable in the same pattern (Scenario Outline, line 232)
- [12] Fail when a path has the same variable in the same pattern (Scenario Outline, line 261)
- [13] Fail when matching a relationship variable bound to a value (Scenario Outline, line 281)
official/clauses/match/Match3.feature¶
Feature: Match3 - Match fixed length patterns
Scenarios: 30
- [1] Get neighbours (Scenario, line 33)
- [2] Directed match of a simple relationship (Scenario, line 49)
- [3] Undirected match on simple relationship graph (Scenario, line 65)
- [4] Get two related nodes (Scenario, line 82)
- [5] Return two subgraphs with bound undirected relationship (Scenario, line 101)
- [6] Matching a relationship pattern using a label predicate (Scenario, line 118)
- [7] Matching nodes with many labels (Scenario, line 136)
- [8] Matching using relationship predicate with multiples of the same type (Scenario, line 154)
- [9] Get related to related to (Scenario, line 171)
- [10] Matching using self-referencing pattern returns no result (Scenario, line 187)
- [11] Undirected match in self-relationship graph (Scenario, line 204)
- [12] Undirected match of self-relationship in self-relationship graph (Scenario, line 220)
- [13] Directed match on self-relationship graph (Scenario, line 236)
- [14] Directed match of self-relationship on self-relationship graph (Scenario, line 252)
- [15] Mixing directed and undirected pattern parts with self-relationship, simple (Scenario, line 268)
- [16] Mixing directed and undirected pattern parts with self-relationship, undirected (Scenario, line 287)
- [17] Handling cyclic patterns (Scenario, line 310)
- [18] Handling cyclic patterns when separated into two parts (Scenario, line 329)
- [19] Two bound nodes pointing to the same node (Scenario, line 348)
- [20] Three bound nodes pointing to the same node (Scenario, line 371)
- [21] Three bound nodes pointing to the same node with extra connections (Scenario, line 396)
- [22] Returning bound nodes that are not part of the pattern (Scenario, line 432)
- [23] Matching disconnected patterns (Scenario, line 451)
- [24] Matching twice with duplicate relationship types on same relationship (Scenario, line 473)
- [25] Matching twice with an additional node label (Scenario, line 491)
- [26] Matching twice with a duplicate predicate (Scenario, line 508)
- [27] Matching from null nodes should return no results owing to finding no matches (Scenario, line 526)
- [28] Matching from null nodes should return no results owing to matches being filtered out (Scenario, line 539)
- [29] Fail when re-using a relationship in the same pattern (Scenario, line 556)
- [30] Fail when using a list or nodes as a node (Scenario, line 565)
official/clauses/match/Match4.feature¶
Feature: Match4 - Match variable length patterns scenarios
Scenarios: 10
- [1] Handling fixed-length variable length pattern (Scenario, line 33)
- [2] Simple variable length pattern (Scenario, line 49)
- [3] Zero-length variable length pattern in the middle of the pattern (Scenario, line 71)
- [4] Matching longer variable length paths (Scenario, line 93)
- [5] Matching variable length pattern with property predicate (Scenario, line 116)
- [6] Matching variable length patterns from a bound node (Scenario, line 134)
- [7] Matching variable length patterns including a bound relationship (Scenario, line 153)
- [8] Matching relationships into a list and matching variable length using the list (Scenario, line 176)
- [9] Fail when asterisk operator is missing (Scenario, line 198)
- [10] Fail on negative bound (Scenario, line 241)
official/clauses/match/Match5.feature¶
Feature: Match5 - Match variable length patterns over given graphs scenarios
Scenarios: 29
- [1] Handling unbounded variable length match (Scenario, line 69)
- [2] Handling explicitly unbounded variable length match (Scenario, line 94)
- [3] Handling single bounded variable length match 1 (Scenario, line 119)
- [4] Handling single bounded variable length match 2 (Scenario, line 131)
- [5] Handling single bounded variable length match 3 (Scenario, line 144)
- [6] Handling upper and lower bounded variable length match 1 (Scenario, line 159)
- [7] Handling upper and lower bounded variable length match 2 (Scenario, line 177)
- [8] Handling symmetrically bounded variable length match, bounds are zero (Scenario, line 194)
- [9] Handling symmetrically bounded variable length match, bounds are one (Scenario, line 206)
- [10] Handling symmetrically bounded variable length match, bounds are two (Scenario, line 219)
- [11] Handling upper and lower bounded variable length match, empty interval 1 (Scenario, line 234)
- [12] Handling upper and lower bounded variable length match, empty interval 2 (Scenario, line 245)
- [13] Handling upper bounded variable length match, empty interval (Scenario, line 256)
- [14] Handling upper bounded variable length match 1 (Scenario, line 267)
- [15] Handling upper bounded variable length match 2 (Scenario, line 280)
- [16] Handling lower bounded variable length match 1 (Scenario, line 297)
- [17] Handling lower bounded variable length match 2 (Scenario, line 323)
- [18] Handling lower bounded variable length match 3 (Scenario, line 348)
- [19] Handling a variable length relationship and a standard relationship in chain, zero length 1 (Scenario, line 371)
- [20] Handling a variable length relationship and a standard relationship in chain, zero length 2 (Scenario, line 384)
- [21] Handling a variable length relationship and a standard relationship in chain, single length 1 (Scenario, line 397)
- [22] Handling a variable length relationship and a standard relationship in chain, single length 2 (Scenario, line 412)
- [23] Handling a variable length relationship and a standard relationship in chain, longer 1 (Scenario, line 427)
- [24] Handling a variable length relationship and a standard relationship in chain, longer 2 (Scenario, line 446)
- [25] Handling a variable length relationship and a standard relationship in chain, longer 3 (Scenario, line 465)
- [26] Handling mixed relationship patterns and directions 1 (Scenario, line 500)
- [27] Handling mixed relationship patterns and directions 2 (Scenario, line 541)
- [28] Handling mixed relationship patterns 1 (Scenario, line 584)
- [29] Handling mixed relationship patterns 2 (Scenario, line 619)
official/clauses/match/Match6.feature¶
Feature: Match6 - Match named paths scenarios
Scenarios: 25
- [1] Zero-length named path (Scenario, line 33)
- [2] Return a simple path (Scenario, line 49)
- [3] Return a three node path (Scenario, line 66)
- [4] Respecting direction when matching non-existent path (Scenario, line 82)
- [5] Path query should return results in written order (Scenario, line 98)
- [6] Handling direction of named paths (Scenario, line 114)
- [7] Respecting direction when matching existing path (Scenario, line 130)
- [8] Respecting direction when matching non-existent path with multiple directions (Scenario, line 147)
- [9] Longer path query should return results in written order (Scenario, line 164)
- [10] Named path with alternating directed/undirected relationships (Scenario, line 180)
- [11] Named path with multiple alternating directed/undirected relationships (Scenario, line 198)
- [12] Matching path with multiple bidirectional relationships (Scenario, line 217)
- [13] Matching path with both directions should respect other directions (Scenario, line 238)
- [14] Named path with undirected fixed variable length pattern (Scenario, line 257)
- [15] Variable-length named path (Scenario, line 281)
- [16] Return a var length path (Scenario, line 297)
- [17] Return a named var length path of length zero (Scenario, line 314)
- [18] Undirected named path (Scenario, line 332)
- [19] Variable length relationship without lower bound (Scenario, line 350)
- [20] Variable length relationship without bounds (Scenario, line 370)
- [21] Fail when a node has the same variable in a preceding MATCH (Scenario Outline, line 390)
- [22] Fail when a relationship has the same variable in a preceding MATCH (Scenario Outline, line 417)
- [23] Fail when a node has the same variable in the same pattern (Scenario Outline, line 445)
- [24] Fail when a relationship has the same variable in the same pattern (Scenario Outline, line 477)
- [25] Fail when matching a path variable bound to a value (Scenario Outline, line 509)
official/clauses/match/Match7.feature¶
Feature: Match7 - Optional match
Scenarios: 31
- [1] Simple OPTIONAL MATCH on empty graph (Scenario, line 34)
- [2] OPTIONAL MATCH with previously bound nodes (Scenario, line 46)
- [3] OPTIONAL MATCH and bound nodes (Scenario, line 63)
- [4] Optionally matching relationship with bound nodes in reverse direction (Scenario, line 85)
- [5] Optionally matching relationship with a relationship that is already bound (Scenario, line 104)
- [6] Optionally matching relationship with a relationship and node that are both already bound (Scenario, line 123)
- [7] MATCH with OPTIONAL MATCH in longer pattern (Scenario, line 142)
- [8] Longer pattern with bound nodes without matches (Scenario, line 161)
- [9] Longer pattern with bound nodes (Scenario, line 183)
- [10] Optionally matching from null nodes should return null (Scenario, line 205)
- [11] Return two subgraphs with bound undirected relationship and optional relationship (Scenario, line 219)
- [12] Variable length optional relationships (Scenario, line 238)
- [13] Variable length optional relationships with bound nodes (Scenario, line 263)
- [14] Variable length optional relationships with length predicates (Scenario, line 285)
- [15] Variable length patterns and nulls (Scenario, line 307)
- [16] Optionally matching named paths - null result (Scenario, line 325)
- [17] Optionally matching named paths - existing result (Scenario, line 347)
- [18] Named paths inside optional matches with node predicates (Scenario, line 367)
- [19] Optionally matching named paths with single and variable length patterns (Scenario, line 389)
- [20] Variable length optional relationships with bound nodes, no matches (Scenario, line 407)
- [21] Handling optional matches between nulls (Scenario, line 429)
- [22] MATCH after OPTIONAL MATCH (Scenario, line 453)
- [23] OPTIONAL MATCH with labels on the optional end node (Scenario, line 477)
- [24] Optionally matching self-loops (Scenario, line 498)
- [25] Optionally matching self-loops without matches (Scenario, line 520)
- [26] Handling correlated optional matches; first does not match implies second does not match (Scenario, line 545)
- [27] Handling optional matches between optionally matched entities (Scenario, line 568)
- [28] Handling optional matches with inline label predicate (Scenario, line 593)
- [29] Satisfies the open world assumption, relationships between same nodes (Scenario, line 615)
- [30] Satisfies the open world assumption, single relationship (Scenario, line 634)
- [31] Satisfies the open world assumption, relationships between different nodes (Scenario, line 652)
official/clauses/match/Match8.feature¶
Feature: Match8 - Match clause interoperation with other clauses
Scenarios: 3
- [1] Pattern independent of bound variables results in cross product (Scenario, line 33)
- [2] Counting rows after MATCH, MERGE, OPTIONAL MATCH (Scenario, line 54)
- [3] Matching and disregarding output, then matching again (Scenario, line 75)
official/clauses/match/Match9.feature¶
Feature: Match9 - Match deprecated scenarios
Scenarios: 9
- [1] Variable length relationship variables are lists of relationships (Scenario, line 33)
- [2] Return relationships by collecting them as a list - directed, one way (Scenario, line 54)
- [3] Return relationships by collecting them as a list - undirected, starting from two extremes (Scenario, line 70)
- [4] Return relationships by collecting them as a list - undirected, starting from one extreme (Scenario, line 87)
- [5] Variable length pattern with label predicate on both sides (Scenario, line 103)
- [6] Matching relationships into a list and matching variable length using the list, with bound nodes (Scenario, line 122)
- [7] Matching relationships into a list and matching variable length using the list, with bound nodes, wrong direction (Scenario, line 143)
- [8] Variable length relationship in OPTIONAL MATCH (Scenario, line 163)
- [9] Optionally matching named paths with variable length patterns (Scenario, line 182)
official/clauses/merge/Merge1.feature¶
Feature: Merge1 - Merge node
Scenarios: 17
- [1] Merge node when no nodes exist (Scenario, line 33)
- [2] Merge node with label (Scenario, line 46)
- [3] Merge node with label when it exists (Scenario, line 60)
- [4] Merge node should create when it doesn't match, properties (Scenario, line 76)
- [5] Merge node should create when it doesn't match, properties and label (Scenario, line 94)
- [6] Merge node with prop and label (Scenario, line 112)
- [7] Merge should work when finding multiple elements (Scenario, line 128)
- [8] Merge should handle argument properly (Scenario, line 141)
- [9] Merge should support updates while merging (Scenario, line 159)
- [10] Merge must properly handle multiple labels (Scenario, line 192)
- [11] Merge should be able to merge using property of bound node (Scenario, line 211)
- [12] Merge should be able to merge using property of freshly created node (Scenario, line 233)
- [13] Merge should bind a path (Scenario, line 245)
- [14] Merges should not be able to match on deleted nodes (Scenario, line 259)
- [15] Fail when merge a node that is already bound (Scenario, line 282)
- [16] Fail when using parameter as node predicate in MERGE (Scenario, line 291)
- [17] Fail on merging node with null property (Scenario, line 300)
official/clauses/merge/Merge2.feature¶
Feature: Merge2 - Merge node - on create
Scenarios: 6
- [1] Merge node with label add label on create (Scenario, line 33)
- [2] ON CREATE on created nodes (Scenario, line 48)
- [3] Merge node with label add property on create (Scenario, line 60)
- [4] Merge node with label add property on update when it exists (Scenario, line 76)
- [5] Merge should be able to use properties of bound node in ON CREATE (Scenario, line 93)
- [6] Fail when using undefined variable in ON CREATE (Scenario, line 116)
official/clauses/merge/Merge3.feature¶
Feature: Merge3 - Merge node - on match
Scenarios: 5
- [1] Merge should be able to set labels on match (Scenario, line 33)
- [2] Merge node with label add label on match when it exists (Scenario, line 48)
- [3] Merge node and set property on match (Scenario, line 66)
- [4] Merge should be able to use properties of bound node in ON MATCH (Scenario, line 84)
- [5] Fail when using undefined variable in ON MATCH (Scenario, line 107)
official/clauses/merge/Merge4.feature¶
Feature: Merge4 - Merge node - on match and on create
Scenarios: 2
- [1] Merge should be able to set labels on match and on create (Scenario, line 33)
- [2] Merge should be able to use properties of bound node in ON MATCH and ON CREATE (Scenario, line 51)
official/clauses/merge/Merge5.feature¶
Feature: Merge5 - Merge relationships
Scenarios: 29
- [1] Creating a relationship (Scenario, line 33)
- [2] Matching a relationship (Scenario, line 51)
- [3] Matching two relationships (Scenario, line 69)
- [4] Using bound variables from other updating clause (Scenario, line 88)
- [5] Filtering relationships (Scenario, line 103)
- [6] Creating relationship when all matches filtered out (Scenario, line 122)
- [7] Matching incoming relationship (Scenario, line 142)
- [8] Creating relationship with property (Scenario, line 161)
- [9] Creating relationship using merged nodes (Scenario, line 180)
- [10] Merge should bind a path (Scenario, line 196)
- [11] Use outgoing direction when unspecified (Scenario, line 213)
- [12] Match outgoing relationship when direction unspecified (Scenario, line 229)
- [13] Match both incoming and outgoing relationships when direction unspecified (Scenario, line 247)
- [14] Using list properties via variable (Scenario, line 267)
- [15] Matching using list property (Scenario, line 287)
- [16] Aliasing of existing nodes 1 (Scenario, line 305)
- [17] Aliasing of existing nodes 2 (Scenario, line 325)
- [18] Double aliasing of existing nodes 1 (Scenario, line 344)
- [19] Double aliasing of existing nodes 2 (Scenario, line 368)
- [20] Do not match on deleted entities (Scenario, line 391)
- [21] Do not match on deleted relationships (Scenario, line 421)
- [22] Fail when imposing new predicates on a variable that is already bound (Scenario, line 446)
- [23] Fail when merging relationship without type (Scenario, line 455)
- [24] Fail when merging relationship without type, no colon (Scenario, line 464)
- [25] Fail when merging relationship with more than one type (Scenario, line 473)
- [26] Fail when merging relationship that is already bound (Scenario, line 482)
- [27] Fail when using parameter as relationship predicate in MERGE (Scenario, line 491)
- [28] Fail when using variable length relationship in MERGE (Scenario, line 502)
- [29] Fail on merging relationship with null property (Scenario, line 512)
official/clauses/merge/Merge6.feature¶
Feature: Merge6 - Merge relationships - on create
Scenarios: 6
- [1] Using ON CREATE on a node (Scenario, line 33)
- [2] Using ON CREATE on a relationship (Scenario, line 50)
- [3] Updating one property with ON CREATE (Scenario, line 70)
- [4] Null-setting one property with ON CREATE (Scenario, line 95)
- [6] Copying properties from node with ON CREATE (Scenario, line 119)
- [7] Copying properties from literal map with ON CREATE (Scenario, line 144)
official/clauses/merge/Merge7.feature¶
Feature: Merge7 - Merge relationships - on match
Scenarios: 5
- [1] Using ON MATCH on created node (Scenario, line 33)
- [2] Using ON MATCH on created relationship (Scenario, line 49)
- [3] Using ON MATCH on a relationship (Scenario, line 65)
- [4] Copying properties from node with ON MATCH (Scenario, line 85)
- [5] Copying properties from literal map with ON MATCH (Scenario, line 115)
official/clauses/merge/Merge8.feature¶
Feature: Merge8 - Merge relationships - on match and on create
Scenarios: 1
- [1] Using ON CREATE and ON MATCH (Scenario, line 33)
official/clauses/merge/Merge9.feature¶
Feature: Merge9 - Merge clause interoperation with other clauses
Scenarios: 4
- [1] UNWIND with one MERGE (Scenario, line 33)
- [2] UNWIND with multiple MERGE (Scenario, line 48)
- [3] Mixing MERGE with CREATE (Scenario, line 64)
- [4] MERGE after WITH with predicate and WITH with aggregation (Scenario, line 81)
official/clauses/remove/Remove1.feature¶
Feature: Remove1 - Remove a Property
Scenarios: 7
- [1] Remove a single node property (Scenario, line 33)
- [2] Remove multiple node properties (Scenario, line 51)
- [3] Remove a single relationship property (Scenario, line 69)
- [4] Remove multiple relationship properties (Scenario, line 87)
- [5] Ignore null when removing property from a node (Scenario, line 105)
- [6] Ignore null when removing property from a relationship (Scenario, line 118)
- [7] Remove a missing node property (Scenario, line 136)
official/clauses/remove/Remove2.feature¶
Feature: Remove2 - Remove a Label
Scenarios: 5
- [1] Remove a single label from a node with a single label (Scenario, line 33)
- [2] Remove a single label from a node with two labels (Scenario, line 51)
- [3] Remove two labels from a node with three labels (Scenario, line 69)
- [4] Remove a non-existent node label (Scenario, line 87)
- [5] Ignore null when removing a node label (Scenario, line 104)
official/clauses/remove/Remove3.feature¶
Feature: Remove3 - Persistence of remove clause side effects
Scenarios: 21
- [1] Limiting to zero results after removing a property from nodes affects the result set but not the side effects (Scenario, line 33)
- [2] Skipping all results after removing a property from nodes affects the result set but not the side effects (Scenario, line 51)
- [3] Skipping and limiting to a few results after removing a property from nodes affects the result set but not the side effects (Scenario, line 69)
- [4] Skipping zero results and limiting to all results after removing a property from nodes does not affect the result set nor the side effects (Scenario, line 93)
- [5] Filtering after removing a property from nodes affects the result set but not the side effects (Scenario, line 120)
- [6] Aggregating in
RETURNafter removing a property from nodes affects the result set but not the side effects (Scenario, line 145) - [7] Aggregating in
WITHafter removing a property from nodes affects the result set but not the side effects (Scenario, line 167) - [8] Limiting to zero results after removing a label from nodes affects the result set but not the side effects (Scenario, line 190)
- [9] Skipping all results after removing a label from nodes affects the result set but not the side effects (Scenario, line 208)
- [10] Skipping and limiting to a few results after removing a label from nodes affects the result set but not the side effects (Scenario, line 226)
- [11] Skipping zero result and limiting to all results after removing a label from nodes does not affect the result set nor the side effects (Scenario, line 250)
- [12] Filtering after removing a label from nodes affects the result set but not the side effects (Scenario, line 277)
- [13] Aggregating in
RETURNafter removing a label from nodes affects the result set but not the side effects (Scenario, line 302) - [14] Aggregating in
WITHafter removing a label from nodes affects the result set but not the side effects (Scenario, line 324) - [15] Limiting to zero results after removing a property from relationships affects the result set but not the side effects (Scenario, line 347)
- [16] Skipping all results after removing a property from relationships affects the result set but not the side effects (Scenario, line 365)
- [17] Skipping and limiting to a few results after removing a property from relationships affects the result set but not the side effects (Scenario, line 383)
- [18] Skipping zero result and limiting to all results after removing a property from relationships does not affect the result set nor the side effects (Scenario, line 407)
- [19] Filtering after removing a property from relationships affects the result set but not the side effects (Scenario, line 434)
- [20] Aggregating in
RETURNafter removing a property from relationships affects the result set but not the side effects (Scenario, line 459) - [21] Aggregating in
WITHafter removing a property from relationships affects the result set but not the side effects (Scenario, line 481)
official/clauses/return-orderby/ReturnOrderBy1.feature¶
Feature: ReturnOrderBy1 - Order by a single variable (correct order of values according to their type)
Scenarios: 12
- [1] ORDER BY should order booleans in the expected order (Scenario, line 33)
- [2] ORDER BY DESC should order booleans in the expected order (Scenario, line 47)
- [3] ORDER BY should order strings in the expected order (Scenario, line 61)
- [4] ORDER BY DESC should order strings in the expected order (Scenario, line 77)
- [5] ORDER BY should order ints in the expected order (Scenario, line 93)
- [6] ORDER BY DESC should order ints in the expected order (Scenario, line 108)
- [7] ORDER BY should order floats in the expected order (Scenario, line 123)
- [8] ORDER BY DESC should order floats in the expected order (Scenario, line 138)
- [9] ORDER BY should order lists in the expected order (Scenario, line 153)
- [10] ORDER BY DESC should order lists in the expected order (Scenario, line 173)
- [11] ORDER BY should order distinct types in the expected order (Scenario, line 193)
- [12] ORDER BY DESC should order distinct types in the expected order (Scenario, line 220)
official/clauses/return-orderby/ReturnOrderBy2.feature¶
Feature: ReturnOrderBy2 - Order by a single expression (order of projection)
Scenarios: 14
- [1] ORDER BY should return results in ascending order (Scenario, line 33)
- [2] ORDER BY DESC should return results in descending order (Scenario, line 54)
- [3] Sort on aggregated function (Scenario, line 75)
- [4] Support sort and distinct (Scenario, line 98)
- [5] Support ordering by a property after being distinct-ified (Scenario, line 119)
- [6] Count star should count everything in scope (Scenario, line 136)
- [7] Ordering with aggregation (Scenario, line 155)
- [8] Returning all variables with ordering (Scenario, line 172)
- [9] Using aliased DISTINCT expression in ORDER BY (Scenario, line 190)
- [10] Returned columns do not change from using ORDER BY (Scenario, line 208)
- [11] Aggregates ordered by arithmetics (Scenario, line 226)
- [12] Aggregation of named paths (Scenario, line 243)
- [13] Fail when sorting on variable removed by DISTINCT (Scenario, line 266)
- [14] Fail on aggregation in ORDER BY after RETURN (Scenario, line 280)
official/clauses/return-orderby/ReturnOrderBy3.feature¶
Feature: ReturnOrderBy3 - Order by multiple expressions (order obey priority of expressions)
Scenarios: 1
- [1] Sort on aggregate function and normal property (Scenario, line 33)
official/clauses/return-orderby/ReturnOrderBy4.feature¶
Feature: ReturnOrderBy4 - Order by in combination with projection
Scenarios: 2
- [1] ORDER BY of a column introduced in RETURN should return salient results in ascending order (Scenario, line 33)
- [2] Handle projections with ORDER BY (Scenario, line 50)
official/clauses/return-orderby/ReturnOrderBy5.feature¶
Feature: ReturnOrderBy5 - Order by in combination with column renaming
Scenarios: 1
- [1] Renaming columns before ORDER BY should return results in ascending order (Scenario, line 33)
official/clauses/return-orderby/ReturnOrderBy6.feature¶
Feature: ReturnOrderBy6 - Aggregation expressions in order by
Scenarios: 5
- [1] Handle constants and parameters inside an order by item which contains an aggregation expression (Scenario, line 33)
- [2] Handle returned aliases inside an order by item which contains an aggregation expression (Scenario, line 48)
- [3] Handle returned property accesses inside an order by item which contains an aggregation expression (Scenario, line 60)
- [4] Fail if not returned variables are used inside an order by item which contains an aggregation expression (Scenario, line 72)
- [5] Fail if more complex expressions, even if returned, are used inside an order by item which contains an aggregation expression (Scenario, line 82)
official/clauses/return-skip-limit/ReturnSkipLimit1.feature¶
Feature: ReturnSkipLimit1 - Skip
Scenarios: 11
- [1] Start the result from the second row (Scenario, line 33)
- [2] Start the result from the second row by param (Scenario, line 57)
- [3] SKIP with an expression that does not depend on variables (Scenario, line 83)
- [4] Accept skip zero (Scenario, line 102)
- [5] SKIP with an expression that depends on variables should fail (Scenario, line 114)
- [6] Negative parameter for SKIP should fail (Scenario, line 122)
- [7] Negative SKIP should fail (Scenario, line 139)
- [8] Floating point parameter for SKIP should fail (Scenario, line 154)
- [9] Floating point SKIP should fail (Scenario, line 171)
- [10] Fail when using non-constants in SKIP (Scenario, line 186)
- [11] Fail when using negative value in SKIP (Scenario, line 196)
official/clauses/return-skip-limit/ReturnSkipLimit2.feature¶
Feature: ReturnSkipLimit2 - Limit
Scenarios: 17
- [1] Limit to two hits (Scenario, line 33)
- [2] Limit to two hits with explicit order (Scenario, line 47)
- [3] LIMIT 0 should return an empty result (Scenario, line 70)
- [4] Handle ORDER BY with LIMIT 1 (Scenario, line 86)
- [5] ORDER BY with LIMIT 0 should not generate errors (Scenario, line 105)
- [6] LIMIT with an expression that does not depend on variables (Scenario, line 118)
- [7] Limit to more rows than actual results 1 (Scenario, line 136)
- [8] Limit to more rows than actual results 2 (Scenario, line 156)
- [9] Fail when using non-constants in LIMIT (Scenario, line 180)
- [10] Negative parameter for LIMIT should fail (Scenario, line 188)
- [11] Negative parameter for LIMIT with ORDER BY should fail (Scenario, line 205)
- [12] Fail when using negative value in LIMIT 1 (Scenario, line 222)
- [13] Fail when using negative value in LIMIT 2 (Scenario, line 232)
- [14] Floating point parameter for LIMIT should fail (Scenario, line 247)
- [15] Floating point parameter for LIMIT with ORDER BY should fail (Scenario, line 264)
- [16] Fail when using floating point in LIMIT 1 (Scenario, line 281)
- [17] Fail when using floating point in LIMIT 2 (Scenario, line 291)
official/clauses/return-skip-limit/ReturnSkipLimit3.feature¶
Feature: ReturnSkipLimit3 - Skip and limit
Scenarios: 3
- [1] Get rows in the middle (Scenario, line 33)
- [2] Get rows in the middle by param (Scenario, line 57)
- [3] Limiting amount of rows when there are fewer left than the LIMIT argument (Scenario, line 84)
official/clauses/return/Return1.feature¶
Feature: Return1 - Return single variable (correct return of values according to their type)
Scenarios: 2
- [1] Returning a list property (Scenario, line 33)
- [2] Fail when returning an undefined variable (Scenario, line 49)
official/clauses/return/Return2.feature¶
Feature: Return2 - Return single expression (correctly projecting an expression)
Scenarios: 18
- [1] Arithmetic expressions should propagate null values (Scenario, line 33)
- [2] Returning a node property value (Scenario, line 44)
- [3] Missing node property should become null (Scenario, line 60)
- [4] Returning a relationship property value (Scenario, line 76)
- [5] Missing relationship property should become null (Scenario, line 92)
- [6] Adding a property and a literal in projection (Scenario, line 108)
- [7] Adding list properties in projection (Scenario, line 124)
- [8] Returning label predicate expression (Scenario, line 140)
- [9] Returning a projected map (Scenario, line 157)
- [10] Return count aggregation over an empty graph (Scenario, line 172)
- [11] RETURN does not lose precision on large integers (Scenario, line 184)
- [12] Projecting a list of nodes and relationships (Scenario, line 200)
- [13] Projecting a map of nodes and relationships (Scenario, line 217)
- [14] Do not fail when returning type of deleted relationships (Scenario, line 234)
- [15] Fail when returning properties of deleted nodes (Scenario, line 252)
- [16] Fail when returning labels of deleted nodes (Scenario, line 266)
- [17] Fail when returning properties of deleted relationships (Scenario, line 280)
- [18] Fail on projecting a non-existent function (Scenario, line 294)
official/clauses/return/Return3.feature¶
Feature: Return3 - Return multiple expressions (if column order correct)
Scenarios: 3
- [1] Returning multiple expressions (Scenario, line 33)
- [2] Returning multiple node property values (Scenario, line 49)
- [3] Projecting nodes and relationships (Scenario, line 65)
official/clauses/return/Return4.feature¶
Feature: Return4 - Column renaming
Scenarios: 11
- [1] Honour the column name for RETURN items (Scenario, line 33)
- [2] Support column renaming (Scenario, line 50)
- [3] Aliasing expressions (Scenario, line 66)
- [4] Keeping used expression 1 (Scenario, line 82)
- [5] Keeping used expression 2 (Scenario, line 98)
- [6] Keeping used expression 3 (Scenario, line 114)
- [7] Keeping used expression 4 (Scenario, line 130)
- [8] Support column renaming for aggregations (Scenario, line 146)
- [9] Handle subexpression in aggregation also occurring as standalone expression with nested aggregation in a literal map (Scenario, line 163)
- [10] Fail when returning multiple columns with same name (Scenario, line 181)
- [11] Reusing variable names in RETURN (Scenario, line 189)
official/clauses/return/Return5.feature¶
Feature: Return5 - Implicit grouping with distinct
Scenarios: 5
- [1] DISTINCT inside aggregation should work with lists in maps (Scenario, line 33)
- [2] DISTINCT on nullable values (Scenario, line 49)
- [3] DISTINCT inside aggregation should work with nested lists in maps (Scenario, line 66)
- [4] DISTINCT inside aggregation should work with nested lists of maps in maps (Scenario, line 82)
- [5] Aggregate on list values (Scenario, line 98)
official/clauses/return/Return6.feature¶
Feature: Return6 - Implicit grouping with aggregates
Scenarios: 21
- [1] Return count aggregation over nodes (Scenario, line 33)
- [2] Projecting an arithmetic expression with aggregation (Scenario, line 49)
- [3] Aggregating by a list property has a correct definition of equality (Scenario, line 65)
- [4] Support multiple divisions in aggregate function (Scenario, line 82)
- [5] Aggregates inside normal functions (Scenario, line 99)
- [6] Handle aggregates inside non-aggregate expressions (Scenario, line 116)
- [7] Aggregate on property (Scenario, line 127)
- [8] Handle aggregation on functions (Scenario, line 146)
- [9] Aggregates with arithmetics (Scenario, line 164)
- [10] Multiple aggregates on same variable (Scenario, line 180)
- [11] Counting matches (Scenario, line 196)
- [12] Counting matches per group (Scenario, line 213)
- [13] Returning the minimum length of paths (Scenario, line 230)
- [14] Aggregates in aggregates (Scenario, line 251)
- [15] Using
rand()in aggregations (Scenario, line 259) - [16] Aggregation on complex expressions (Scenario, line 267)
- [17] Handle constants and parameters inside an expression which contains an aggregation expression (Scenario, line 300)
- [18] Handle returned variables inside an expression which contains an aggregation expression (Scenario, line 314)
- [19] Handle returned property accesses inside an expression which contains an aggregation expression (Scenario, line 326)
- [20] Fail if not returned variables are used inside an expression which contains an aggregation expression (Scenario, line 337)
- [21] Fail if more complex expressions, even if returned, are used inside expression which contains an aggregation expression (Scenario, line 346)
official/clauses/return/Return7.feature¶
Feature: Return7 - Return all variables
Scenarios: 2
- [1] Return all variables (Scenario, line 33)
- [2] Fail when using RETURN * without variables in scope (Scenario, line 49)
official/clauses/return/Return8.feature¶
Feature: Return8 - Return clause interoperation with other clauses
Scenarios: 1
- [1] Return aggregation after With filtering (Scenario, line 33)
official/clauses/set/Set1.feature¶
Feature: Set1 - Set a Property
Scenarios: 11
- [1] Set a property (Scenario, line 33)
- [2] Set a property to an expression (Scenario, line 53)
- [3] Set a property by selecting the node using a simple expression (Scenario, line 73)
- [4] Set a property by selecting the relationship using a simple expression (Scenario, line 91)
- [5] Adding a list property (Scenario, line 109)
- [6] Concatenate elements onto a list property (Scenario, line 127)
- [7] Concatenate elements in reverse onto a list property (Scenario, line 142)
- [8] Ignore null when setting property (Scenario, line 157)
- [9] Failing when using undefined variable in SET (Scenario, line 170)
- [10] Failing when setting a list of maps as a property (Scenario, line 180)
- [11] Set multiple node properties (Scenario, line 189)
official/clauses/set/Set2.feature¶
Feature: Set2 - Set a Property to Null
Scenarios: 3
- [1] Setting a node property to null removes the existing property (Scenario, line 33)
- [2] Setting a node property to null removes the existing property, but not before SET (Scenario, line 51)
- [3] Setting a relationship property to null removes the existing property (Scenario, line 70)
official/clauses/set/Set3.feature¶
Feature: Set3 - Set a Label
Scenarios: 8
- [1] Add a single label to a node with no label (Scenario, line 33)
- [2] Adding multiple labels to a node with no label (Scenario, line 51)
- [3] Add a single label to a node with an existing label (Scenario, line 69)
- [4] Adding multiple labels to a node with an existing label (Scenario, line 87)
- [5] Ignore whitespace before colon 1 (Scenario, line 105)
- [6] Ignore whitespace before colon 2 (Scenario, line 123)
- [7] Ignore whitespace before colon 3 (Scenario, line 141)
- [8] Ignore null when setting label (Scenario, line 159)
official/clauses/set/Set4.feature¶
Feature: Set4 - Set all properties with a map
Scenarios: 5
- [1] Set multiple properties with a property map (Scenario, line 33)
- [2] Non-existent values in a property map are removed with SET (Scenario, line 51)
- [3] Null values in a property map are removed with SET (Scenario, line 70)
- [4] All properties are removed if node is set to empty property map (Scenario, line 89)
- [5] Ignore null when setting properties using an overriding map (Scenario, line 107)
official/clauses/set/Set5.feature¶
Feature: Set5 - Set multiple properties with a map
Scenarios: 5
- [1] Ignore null when setting properties using an appending map (Scenario, line 33)
- [2] Overwrite values when using += (Scenario, line 46)
- [3] Retain old values when using += (Scenario, line 65)
- [4] Explicit null values in a map remove old values (Scenario, line 83)
- [5] Set an empty map when using += has no effect (Scenario, line 101)
official/clauses/set/Set6.feature¶
Feature: Set6 - Persistence of set clause side effects
Scenarios: 21
- [1] Limiting to zero results after setting a property on nodes affects the result set but not the side effects (Scenario, line 33)
- [2] Skipping all results after setting a property on nodes affects the result set but not the side effects (Scenario, line 52)
- [3] Skipping and limiting to a few results after setting a property on nodes affects the result set but not the side effects (Scenario, line 71)
- [4] Skipping zero results and limiting to all results after setting a property on nodes does not affect the result set nor the side effects (Scenario, line 96)
- [5] Filtering after setting a property on nodes affects the result set but not the side effects (Scenario, line 124)
- [6] Aggregating in
RETURNafter setting a property on nodes affects the result set but not the side effects (Scenario, line 151) - [7] Aggregating in
WITHafter setting a property on nodes affects the result set but not the side effects (Scenario, line 174) - [8] Limiting to zero results after adding a label on nodes affects the result set but not the side effects (Scenario, line 198)
- [9] Skipping all results after adding a label on nodes affects the result set but not the side effects (Scenario, line 216)
- [10] Skipping and limiting to a few results after adding a label on nodes affects the result set but not the side effects (Scenario, line 234)
- [11] Skipping zero result and limiting to all results after adding a label on nodes does not affect the result set nor the side effects (Scenario, line 258)
- [12] Filtering after adding a label on nodes affects the result set but not the side effects (Scenario, line 285)
- [13] Aggregating in
RETURNafter adding a label on nodes affects the result set but not the side effects (Scenario, line 310) - [14] Aggregating in
WITHafter adding a label on nodes affects the result set but not the side effects (Scenario, line 332) - [15] Limiting to zero results after setting a property on relationships affects the result set but not the side effects (Scenario, line 355)
- [16] Skipping all results after setting a property on relationships affects the result set but not the side effects (Scenario, line 374)
- [17] Skipping and limiting to a few results after setting a property on relationships affects the result set but not the side effects (Scenario, line 393)
- [18] Skipping zero result and limiting to all results after setting a property on relationships does not affect the result set nor the side effects (Scenario, line 418)
- [19] Filtering after setting a property on relationships affects the result set but not the side effects (Scenario, line 446)
- [20] Aggregating in
RETURNafter setting a property on relationships affects the result set but not the side effects (Scenario, line 473) - [21] Aggregating in
WITHafter setting a property on relationships affects the result set but not the side effects (Scenario, line 496)
official/clauses/union/Union1.feature¶
Feature: Union1 - Union
Scenarios: 5
- [1] Two elements, both unique, distinct (Scenario, line 33)
- [2] Three elements, two unique, distinct (Scenario, line 47)
- [3] Two single-column inputs, one with duplicates, distinct (Scenario, line 63)
- [4] Should be able to create text output from union queries (Scenario, line 81)
- [5] Failing when UNION has different columns (Scenario, line 101)
official/clauses/union/Union2.feature¶
Feature: Union2 - Union All
Scenarios: 5
- [1] Two elements, both unique, not distinct (Scenario, line 33)
- [2] Three elements, two unique, not distinct (Scenario, line 47)
- [3] Two single-column inputs, one with duplicates, not distinct (Scenario, line 64)
- [4] Should be able to create text output from union all queries (Scenario, line 84)
- [5] Failing when UNION ALL has different columns (Scenario, line 104)
official/clauses/union/Union3.feature¶
Feature: Union3 - Union in combination with Union All
Scenarios: 2
- [1] Failing when mixing UNION and UNION ALL (Scenario, line 33)
- [2] Failing when mixing UNION ALL and UNION (Scenario, line 45)
official/clauses/unwind/Unwind1.feature¶
Feature: Unwind1
Scenarios: 14
- [1] Unwinding a list (Scenario, line 33)
- [2] Unwinding a range (Scenario, line 47)
- [3] Unwinding a concatenation of lists (Scenario, line 61)
- [4] Unwinding a collected unwound expression (Scenario, line 79)
- [5] Unwinding a collected expression (Scenario, line 94)
- [6] Creating nodes from an unwound parameter list (Scenario, line 113)
- [7] Double unwinding a list of lists (Scenario, line 140)
- [8] Unwinding the empty list (Scenario, line 159)
- [9] Unwinding null (Scenario, line 170)
- [10] Unwinding list with duplicates (Scenario, line 181)
- [11] Unwind does not prune context (Scenario, line 202)
- [12] Unwind does not remove variables from scope (Scenario, line 217)
- [13] Multiple unwinds after each other (Scenario, line 241)
- [14] Unwind with merge (Scenario, line 263)
official/clauses/with-orderBy/WithOrderBy1.feature¶
Feature: WithOrderBy1 - Order by a single variable
Scenarios: 46
- [1] Sort booleans in ascending order (Scenario, line 35)
- [2] Sort booleans in descending order (Scenario, line 50)
- [3] Sort integers in ascending order (Scenario, line 65)
- [4] Sort integers in descending order (Scenario, line 81)
- [5] Sort floats in ascending order (Scenario, line 97)
- [6] Sort floats in descending order (Scenario, line 113)
- [7] Sort strings in ascending order (Scenario, line 129)
- [8] Sort strings in descending order (Scenario, line 145)
- [9] Sort lists in ascending order (Scenario, line 161)
- [10] Sort lists in descending order (Scenario, line 179)
- [11] Sort dates in ascending order (Scenario, line 197)
- [12] Sort dates in descending order (Scenario, line 218)
- [13] Sort local times in ascending order (Scenario, line 239)
- [14] Sort local times in descending order (Scenario, line 260)
- [15] Sort times in ascending order (Scenario, line 281)
- [16] Sort times in descending order (Scenario, line 302)
- [17] Sort local date times in ascending order (Scenario, line 323)
- [18] Sort local date times in descending order (Scenario, line 344)
- [19] Sort date times in ascending order (Scenario, line 365)
- [20] Sort date times in descending order (Scenario, line 386)
- [21] Sort distinct types in ascending order (Scenario, line 407)
- [22] Sort distinct types in descending order (Scenario, line 431)
- [23] Sort by a boolean variable projected from a node property in ascending order (Scenario Outline, line 455)
- [24] Sort by a boolean variable projected from a node property in descending order (Scenario Outline, line 487)
- [25] Sort by an integer variable projected from a node property in ascending order (Scenario Outline, line 517)
- [26] Sort by an integer variable projected from a node property in descending order (Scenario Outline, line 549)
- [27] Sort by a float variable projected from a node property in ascending order (Scenario Outline, line 580)
- [28] Sort by a float variable projected from a node property in descending order (Scenario Outline, line 612)
- [29] Sort by a string variable projected from a node property in ascending order (Scenario Outline, line 643)
- [30] Sort by a string variable projected from a node property in descending order (Scenario Outline, line 675)
- [31] Sort by a list variable projected from a node property in ascending order (Scenario Outline, line 706)
- [32] Sort by a list variable projected from a node property in descending order (Scenario Outline, line 738)
- [33] Sort by a date variable projected from a node property in ascending order (Scenario Outline, line 769)
- [34] Sort by a date variable projected from a node property in descending order (Scenario Outline, line 801)
- [35] Sort by a local time variable projected from a node property in ascending order (Scenario Outline, line 832)
- [36] Sort by a local time variable projected from a node property in descending order (Scenario Outline, line 864)
- [37] Sort by a time variable projected from a node property in ascending order (Scenario Outline, line 895)
- [38] Sort by a time variable projected from a node property in descending order (Scenario Outline, line 927)
- [39] Sort by a local date time variable projected from a node property in ascending order (Scenario Outline, line 958)
- [40] Sort by a local date time variable projected from a node property in descending order (Scenario Outline, line 990)
- [41] Sort by a date time variable projected from a node property in ascending order (Scenario Outline, line 1021)
- [42] Sort by a date time variable projected from a node property in descending order (Scenario Outline, line 1053)
- [43] Sort by a variable that is only partially orderable on a non-distinct binding table (Scenario Outline, line 1084)
- [44] Sort by a variable that is only partially orderable on a non-distinct binding table, but made distinct (Scenario Outline, line 1105)
- [45] Sort order should be consistent with comparisons where comparisons are defined #Example:
(Scenario Outline, line 1125) - [46] Fail on sorting by an undefined variable #Example:
(Scenario Outline, line 1155)
official/clauses/with-orderBy/WithOrderBy2.feature¶
Feature: WithOrderBy2 - Order by a single expression
Scenarios: 25
- [1] Sort by a boolean expression in ascending order (Scenario Outline, line 35)
- [2] Sort by a boolean expression in descending order (Scenario Outline, line 65)
- [3] Sort by an integer expression in ascending order (Scenario Outline, line 95)
- [4] Sort by an integer expression in descending order (Scenario Outline, line 126)
- [5] Sort by a float expression in ascending order (Scenario Outline, line 156)
- [6] Sort by a float expression in descending order (Scenario Outline, line 187)
- [7] Sort by a string expression in ascending order (Scenario Outline, line 217)
- [8] Sort by a string expression in descending order (Scenario Outline, line 248)
- [9] Sort by a list expression in ascending order (Scenario Outline, line 278)
- [10] Sort by a list expression in descending order (Scenario Outline, line 309)
- [11] Sort by a date expression in ascending order (Scenario Outline, line 339)
- [12] Sort by a date expression in descending order (Scenario Outline, line 370)
- [13] Sort by a local time expression in ascending order (Scenario Outline, line 400)
- [14] Sort by a local time expression in descending order (Scenario Outline, line 431)
- [15] Sort by a time expression in ascending order (Scenario Outline, line 461)
- [16] Sort by a time expression in descending order (Scenario Outline, line 492)
- [17] Sort by a local date time expression in ascending order (Scenario Outline, line 522)
- [18] Sort by a local date time expression in descending order (Scenario Outline, line 553)
- [19] Sort by a date time expression in ascending order (Scenario Outline, line 583)
- [20] Sort by a date time expression in descending order (Scenario Outline, line 614)
- [21] Sort by an expression that is only partially orderable on a non-distinct binding table (Scenario Outline, line 644)
- [22] Sort by an expression that is only partially orderable on a non-distinct binding table, but used as a grouping key (Scenario Outline, line 673)
- [23] Sort by an expression that is only partially orderable on a non-distinct binding table, but used in parts as a grouping key (Scenario Outline, line 701)
- [24] Sort by an expression that is only partially orderable on a non-distinct binding table, but made distinct (Scenario Outline, line 729)
- [25] Fail on sorting by an aggregation (Scenario Outline, line 757)
official/clauses/with-orderBy/WithOrderBy3.feature¶
Feature: WithOrderBy3 - Order by multiple expressions
Scenarios: 8
- [1] Sort by two expressions, both in ascending order (Scenario Outline, line 35)
- [2] Sort by two expressions, first in ascending order, second in descending order (Scenario Outline, line 73)
- [3] Sort by two expressions, first in descending order, second in ascending order (Scenario Outline, line 108)
- [4] Sort by two expressions, both in descending order (Scenario Outline, line 143)
- [5] An expression without explicit sort direction is sorted in ascending order (Scenario Outline, line 176)
- [6] An constant expression does not influence the order determined by other expression before and after the constant expression (Scenario Outline, line 209)
- [7] The order direction cannot be overwritten (Scenario Outline, line 262)
- [8] Fail on sorting by any number of undefined variables in any position #Example:
(Scenario Outline, line 290)
official/clauses/with-orderBy/WithOrderBy4.feature¶
Feature: WithOrderBy4 - Order by in combination with projection and aliasing
Scenarios: 20
- [1] Sort by a projected expression (Scenario, line 35)
- [2] Sort by an alias of a projected expression (Scenario, line 60)
- [3] Sort by two projected expressions with order priority being different than projection order (Scenario, line 85)
- [4] Sort by one projected expression and one alias of a projected expression with order priority being different than projection order (Scenario, line 110)
- [5] Sort by one alias of a projected expression and one projected expression with order priority being different than projection order (Scenario, line 135)
- [6] Sort by aliases of two projected expressions with order priority being different than projection order (Scenario, line 160)
- [7] Sort by an alias of a projected expression where the alias shadows an existing variable (Scenario, line 185)
- [8] Sort by non-projected existing variable (Scenario, line 211)
- [9] Sort by an alias of a projected expression containing the variable shadowed by the alias (Scenario, line 237)
- [10] Sort by a non-projected expression containing an alias of a projected expression containing the variable shadowed by the alias (Scenario, line 263)
- [11] Sort by an aggregate projection (Scenario, line 289)
- [12] Sort by an aliased aggregate projection (Scenario, line 313)
- [13] Fail on sorting by a non-projected aggregation on a variable (Scenario, line 337)
- [14] Fail on sorting by a non-projected aggregation on an expression (Scenario, line 358)
- [15] Sort by an aliased aggregate projection does allow subsequent matching (Scenario, line 378)
- [16] Handle constants and parameters inside an order by item which contains an aggregation expression (Scenario, line 401)
- [17] Handle projected variables inside an order by item which contains an aggregation expression (Scenario, line 417)
- [18] Handle projected property accesses inside an order by item which contains an aggregation expression (Scenario, line 430)
- [19] Fail if not projected variables are used inside an order by item which contains an aggregation expression (Scenario, line 443)
- [20] Fail if more complex expressions, even if projected, are used inside an order by item which contains an aggregation expression (Scenario, line 454)
official/clauses/with-skip-limit/WithSkipLimit1.feature¶
Feature: WithSkipLimit1 - Skip
Scenarios: 2
- [1] Handle dependencies across WITH with SKIP (Scenario, line 62)
- [2] Ordering and skipping on aggregate (Scenario, line 85)
official/clauses/with-skip-limit/WithSkipLimit2.feature¶
Feature: WithSkipLimit2 - Limit
Scenarios: 4
- [1] ORDER BY and LIMIT can be used (Scenario, line 62)
- [2] Handle dependencies across WITH with LIMIT (Scenario, line 84)
- [3] Connected components succeeding WITH with LIMIT (Scenario, line 106)
- [4] Ordering and limiting on aggregate (Scenario, line 126)
official/clauses/with-skip-limit/WithSkipLimit3.feature¶
Feature: WithSkipLimit3 - Skip and limit
Scenarios: 3
- [1] Get rows in the middle (Scenario, line 62)
- [2] Get rows in the middle by param (Scenario, line 87)
- [3] Limiting amount of rows when there are fewer left than the LIMIT argument (Scenario, line 115)
official/clauses/with-where/WithWhere1.feature¶
Feature: WithWhere1 - Filter single variable
Scenarios: 4
- [1] Filter node with property predicate on a single variable with multiple bindings (Scenario, line 33)
- [2] Filter node with property predicate on a single variable with multiple distinct bindings (Scenario, line 53)
- [3] Filter for an unbound relationship variable (Scenario, line 73)
- [4] Filter for an unbound node variable (Scenario, line 92)
official/clauses/with-where/WithWhere2.feature¶
Feature: WithWhere2 - Filter multiple variables
Scenarios: 2
- [1] Filter nodes with conjunctive two-part property predicate on multi variables with multiple bindings (Scenario, line 33)
- [2] Filter node with conjunctive multi-part property predicates on multi variables with multiple bindings (Scenario, line 59)
official/clauses/with-where/WithWhere3.feature¶
Feature: WithWhere3 - Equi-Joins on variables
Scenarios: 3
- [1] Join between node identities (Scenario, line 33)
- [2] Join between node properties of disconnected nodes (Scenario, line 52)
- [3] Join between node properties of adjacent nodes (Scenario, line 73)
official/clauses/with-where/WithWhere4.feature¶
Feature: WithWhere4 - Non-Equi-Joins on variables
Scenarios: 2
- [1] Join nodes on inequality (Scenario, line 33)
- [2] Join with disjunctive multi-part predicates including patterns (Scenario, line 52)
official/clauses/with-where/WithWhere5.feature¶
Feature: WithWhere5 - Filter on predicate resulting in null
Scenarios: 4
- [1] Filter out on null (Scenario, line 33)
- [2] Filter out on null if the AND'd predicate evaluates to false (Scenario, line 55)
- [3] Filter out on null if the AND'd predicate evaluates to true (Scenario, line 77)
- [4] Do not filter out on null if the OR'd predicate evaluates to true (Scenario, line 99)
official/clauses/with-where/WithWhere6.feature¶
Feature: WithWhere6 - Filter on aggregates
Scenarios: 1
- [1] Filter a single aggregate (Scenario, line 33)
official/clauses/with-where/WithWhere7.feature¶
Feature: WithWhere7 - Variable visibility under aliasing
Scenarios: 3
- [1] WHERE sees a variable bound before but not after WITH (Scenario, line 33)
- [2] WHERE sees a variable bound after but not before WITH (Scenario, line 53)
- [3] WHERE sees both, variable bound before but not after WITH and variable bound after but not before WITH (Scenario, line 73)
official/clauses/with/With1.feature¶
Feature: With1 - Forward single variable
Scenarios: 6
- [1] Forwarind a node variable 1 (Scenario, line 34)
- [2] Forwarind a node variable 2 (Scenario, line 52)
- [3] Forwarding a relationship variable (Scenario, line 71)
- [4] Forwarding a path variable (Scenario, line 92)
- [5] Forwarding null (Scenario, line 109)
- [6] Forwarding a node variable possibly null (Scenario, line 122)
official/clauses/with/With2.feature¶
Feature: With2 - Forward single expression
Scenarios: 2
- [1] Forwarding a property to express a join (Scenario, line 34)
- [2] Forwarding a nested map literal (Scenario, line 55)
official/clauses/with/With3.feature¶
Feature: With3 - Forward multiple expressions
Scenarios: 1
- [1] Forwarding multiple node and relationship variables (Scenario, line 33)
official/clauses/with/With4.feature¶
Feature: With4 - Variable aliasing
Scenarios: 7
- [1] Aliasing relationship variable (Scenario, line 34)
- [2] Aliasing expression to new variable name (Scenario, line 53)
- [3] Aliasing expression to existing variable name (Scenario, line 74)
- [4] Fail when forwarding multiple aliases with the same name (Scenario, line 93)
- [5] Fail when not aliasing expressions in WITH (Scenario, line 102)
- [6] Reusing variable names in WITH (Scenario, line 112)
- [7] Multiple aliasing and backreferencing (Scenario, line 134)
official/clauses/with/With5.feature¶
Feature: With5 - Implicit grouping with DISTINCT
Scenarios: 2
- [1] DISTINCT on an expression (Scenario, line 33)
- [2] Handling DISTINCT with lists in maps (Scenario, line 53)
official/clauses/with/With6.feature¶
Feature: With6 - Implicit grouping with aggregates
Scenarios: 9
- [1] Implicit grouping with single expression as grouping key and single aggregation (Scenario, line 33)
- [2] Implicit grouping with single relationship variable as grouping key and single aggregation (Scenario, line 53)
- [3] Implicit grouping with multiple node and relationship variables as grouping key and single aggregation (Scenario, line 74)
- [4] Implicit grouping with single path variable as grouping key and single aggregation (Scenario, line 95)
- [5] Handle constants and parameters inside an expression which contains an aggregation expression (Scenario, line 116)
- [6] Handle projected variables inside an expression which contains an aggregation expression (Scenario, line 131)
- [7] Handle projected property accesses inside an expression which contains an aggregation expression (Scenario, line 144)
- [8] Fail if not projected variables are used inside an expression which contains an aggregation expression (Scenario, line 156)
- [9] Fail if more complex expression, even if projected, are used inside expression which contains an aggregation expression (Scenario, line 166)
official/clauses/with/With7.feature¶
Feature: With7 - WITH on WITH
Scenarios: 2
- [1] A simple pattern with one bound endpoint (Scenario, line 33)
- [2] Multiple WITHs using a predicate and aggregation (Scenario, line 53)
expressions¶
125 feature files, 758 scenarios
official/expressions/aggregation/Aggregation1.feature¶
Feature: Aggregation1 - Count
Scenarios: 2
- [1] Count only non-null values (Scenario, line 33)
- [2] Counting loop relationships (Scenario, line 52)
official/expressions/aggregation/Aggregation2.feature¶
Feature: Aggregation2 - Min and Max
Scenarios: 12
- [1]
max()over integers (Scenario, line 33) - [2]
min()over integers (Scenario, line 45) - [3]
max()over floats (Scenario, line 57) - [4]
min()over floats (Scenario, line 69) - [5]
max()over mixed numeric values (Scenario, line 81) - [6]
min()over mixed numeric values (Scenario, line 93) - [7]
max()over strings (Scenario, line 105) - [8]
min()over strings (Scenario, line 117) - [9]
max()over list values (Scenario, line 129) - [10]
min()over list values (Scenario, line 141) - [11]
max()over mixed values (Scenario, line 153) - [12]
min()over mixed values (Scenario, line 165)
official/expressions/aggregation/Aggregation3.feature¶
Feature: Aggregation3 - Sum
Scenarios: 2
- [1] Sum only non-null values (Scenario, line 33)
- [2] No overflow during summation (Scenario, line 51)
official/expressions/aggregation/Aggregation4.feature¶
Feature: Aggregation4 - Avg
Scenarios: 0
official/expressions/aggregation/Aggregation5.feature¶
Feature: Aggregation5 - Collect
Scenarios: 2
- [1]
collect()filtering nulls (Scenario, line 33) - [2] OPTIONAL MATCH and
collect()on node property (Scenario, line 50)
official/expressions/aggregation/Aggregation6.feature¶
Feature: Aggregation6 - Percentiles
Scenarios: 5
- [1]
percentileDisc()(Scenario Outline, line 33) - [2]
percentileCont()(Scenario Outline, line 59) - [3]
percentileCont()failing on bad arguments (Scenario Outline, line 85) - [4]
percentileDisc()failing on bad arguments (Scenario Outline, line 106) - [5]
percentileDisc()failing in more involved query (Scenario, line 127)
official/expressions/aggregation/Aggregation7.feature¶
Feature: Aggregation7 - Standard deviation
Scenarios: 0
official/expressions/aggregation/Aggregation8.feature¶
Feature: Aggregation8 - DISTINCT
Scenarios: 4
- [1] Distinct on unbound node (Scenario, line 33)
- [2] Distinct on null (Scenario, line 45)
- [3] Collect distinct nulls (Scenario, line 61)
- [4] Collect distinct values mixed with nulls (Scenario, line 73)
official/expressions/boolean/Boolean1.feature¶
Feature: Boolean1 - And logical operations
Scenarios: 8
- [1] Conjunction of two truth values (Scenario, line 33)
- [2] Conjunction of three truth values (Scenario, line 52)
- [3] Conjunction of many truth values (Scenario, line 89)
- [4] Conjunction is commutative on non-null (Scenario, line 111)
- [5] Conjunction is commutative on null (Scenario, line 127)
- [6] Conjunction is associative on non-null (Scenario, line 145)
- [7] Conjunction is associative on null (Scenario, line 166)
- [8] Fail on conjunction of at least one non-booleans (Scenario Outline, line 199)
official/expressions/boolean/Boolean2.feature¶
Feature: Boolean2 - OR logical operations
Scenarios: 8
- [1] Disjunction of two truth values (Scenario, line 33)
- [2] Disjunction of three truth values (Scenario, line 52)
- [3] Disjunction of many truth values (Scenario, line 89)
- [4] Disjunction is commutative on non-null (Scenario, line 111)
- [5] Disjunction is commutative on null (Scenario, line 127)
- [6] Disjunction is associative on non-null (Scenario, line 145)
- [7] Disjunction is associative on null (Scenario, line 166)
- [8] Fail on disjunction of at least one non-booleans (Scenario Outline, line 199)
official/expressions/boolean/Boolean3.feature¶
Feature: Boolean3 - XOR logical operations
Scenarios: 8
- [1] Exclusive disjunction of two truth values (Scenario, line 33)
- [2] Exclusive disjunction of three truth values (Scenario, line 52)
- [3] Exclusive disjunction of many truth values (Scenario, line 89)
- [4] Exclusive disjunction is commutative on non-null (Scenario, line 111)
- [5] Exclusive disjunction is commutative on null (Scenario, line 127)
- [6] Exclusive disjunction is associative on non-null (Scenario, line 145)
- [7] Exclusive disjunction is associative on null (Scenario, line 166)
- [8] Fail on exclusive disjunction of at least one non-booleans (Scenario Outline, line 199)
official/expressions/boolean/Boolean4.feature¶
Feature: Boolean4 - NOT logical operations
Scenarios: 4
- [1] Logical negation of truth values (Scenario, line 33)
- [2] Double logical negation of truth values (Scenario, line 44)
- [3] NOT and false (Scenario, line 55)
- [4] Fail when using NOT on a non-boolean literal (Scenario Outline, line 72)
official/expressions/boolean/Boolean5.feature¶
Feature: Boolean5 - Interop of logical operations
Scenarios: 8
- [1] Disjunction is distributive over conjunction on non-null (Scenario, line 33)
- [2] Disjunction is distributive over conjunction on null (Scenario, line 54)
- [3] Conjunction is distributive over disjunction on non-null (Scenario, line 87)
- [4] Conjunction is distributive over disjunction on null (Scenario, line 108)
- [5] Conjunction is distributive over exclusive disjunction on non-null (Scenario, line 141)
- [6] Conjunction is not distributive over exclusive disjunction on null (Scenario, line 162)
- [7] De Morgan's law on non-null: the negation of a disjunction is the conjunction of the negations (Scenario, line 195)
- [8] De Morgan's law on non-null: the negation of a conjunction is the disjunction of the negations (Scenario, line 211)
official/expressions/comparison/Comparison1.feature¶
Feature: Comparison1 - Equality
Scenarios: 17
- [1] Number-typed integer comparison (Scenario, line 33)
- [2] Number-typed float comparison (Scenario, line 52)
- [3] Any-typed string comparison (Scenario, line 70)
- [4] Comparing nodes to nodes (Scenario, line 88)
- [5] Comparing relationships to relationships (Scenario, line 107)
- [6] Comparing lists to lists (Scenario Outline, line 126)
- [7] Comparing maps to maps (Scenario Outline, line 146)
- [8] Equality and inequality of NaN (Scenario Outline, line 176)
- [9] Equality between strings and numbers (Scenario Outline, line 194)
- [10] Handling inlined equality of large integer (Scenario, line 212)
- [11] Handling explicit equality of large integer (Scenario, line 228)
- [12] Handling inlined equality of large integer, non-equal values (Scenario, line 245)
- [13] Handling explicit equality of large integer, non-equal values (Scenario, line 260)
- [14] Direction of traversed relationship is not significant for path equality, simple (Scenario, line 276)
- [15] It is unknown - i.e. null - if a null is equal to a null (Scenario, line 293)
- [16] It is unknown - i.e. null - if a null is not equal to a null (Scenario, line 304)
- [17] Failing when comparing to an undefined variable (Scenario, line 315)
official/expressions/comparison/Comparison2.feature¶
Feature: Comparison2 - Half-bounded Range
Scenarios: 6
- [1] Comparing strings and integers using > in an AND'd predicate (Scenario, line 33)
- [2] Comparing strings and integers using > in a OR'd predicate (Scenario, line 52)
- [3] Comparing across types yields null, except numbers (Scenario Outline, line 72)
- [4] Comparing lists (Scenario Outline, line 102)
- [5] Comparing NaN (Scenario Outline, line 121)
- [6] Comparability between numbers and strings (Scenario Outline, line 139)
official/expressions/comparison/Comparison3.feature¶
Feature: Comparison3 - Full-Bound Range
Scenarios: 9
- [1] Handling numerical ranges 1 (Scenario, line 33)
- [2] Handling numerical ranges 2 (Scenario, line 51)
- [3] Handling numerical ranges 3 (Scenario, line 70)
- [4] Handling numerical ranges 4 (Scenario, line 89)
- [5] Handling string ranges 1 (Scenario, line 109)
- [6] Handling string ranges 2 (Scenario, line 127)
- [7] Handling string ranges 3 (Scenario, line 146)
- [8] Handling string ranges 4 (Scenario, line 165)
- [9] Handling empty range (Scenario, line 185)
official/expressions/comparison/Comparison4.feature¶
Feature: Comparison4 - Combination of Comparisons
Scenarios: 1
- [1] Handling long chains of operators (Scenario, line 33)
official/expressions/conditional/Conditional1.feature¶
Feature: Conditional1 - Coalesce expression
Scenarios: 1
- [1] Run coalesce (Scenario, line 33)
official/expressions/conditional/Conditional2.feature¶
Feature: Conditional2 - Case Expression
Scenarios: 1
- [1] Simple cases over integers (Scenario Outline, line 33)
official/expressions/existentialSubqueries/ExistentialSubquery1.feature¶
Feature: ExistentialSubquery1 - Simple existential subquery
Scenarios: 4
- [1] Simple subquery without WHERE clause (Scenario, line 33)
- [2] Simple subquery with WHERE clause (Scenario, line 53)
- [3] Simple subquery without WHERE clause, not existing pattern (Scenario, line 74)
- [4] Simple subquery with WHERE clause, not existing pattern (Scenario, line 93)
official/expressions/existentialSubqueries/ExistentialSubquery2.feature¶
Feature: ExistentialSubquery2 - Full existential subquery
Scenarios: 3
- [1] Full existential subquery (Scenario, line 33)
- [2] Full existential subquery with aggregation (Scenario, line 54)
- [3] Full existential subquery with update clause should fail (Scenario, line 78)
official/expressions/existentialSubqueries/ExistentialSubquery3.feature¶
Feature: ExistentialSubquery3 - Nested existential subquery
Scenarios: 3
- [1] Nested simple existential subquery (Scenario, line 33)
- [2] Nested full existential subquery (Scenario, line 56)
- [3] Nested full existential subquery with pattern predicate (Scenario, line 79)
official/expressions/graph/Graph1.feature¶
Feature: Graph1 - Node and edge identifier - ID function
Scenarios: 0
official/expressions/graph/Graph2.feature¶
Feature: Graph2 - Edge source and destination
Scenarios: 0
official/expressions/graph/Graph3.feature¶
Feature: Graph3 - Node labels
Scenarios: 9
- [1] Creating node without label (Scenario, line 34)
- [2] Creating node with two labels (Scenario, line 48)
- [3] Ignore space when creating node with labels (Scenario, line 64)
- [4] Create node with label in pattern (Scenario, line 79)
- [5] Using
labels()in return clauses (Scenario, line 94) - [6]
labels()should accept type Any (Scenario, line 110) - [7]
labels()on null node (Scenario, line 128) - [8]
labels()failing on a path (Scenario, line 140) - [9]
labels()failing on invalid arguments (Scenario, line 153)
official/expressions/graph/Graph4.feature¶
Feature: Graph4 - Edge relationship type
Scenarios: 7
- [1]
type()(Scenario, line 33) - [2]
type()on two relationships (Scenario, line 49) - [3]
type()on null relationship (Scenario, line 65) - [4]
type()on mixed null and non-null relationships (Scenario, line 82) - [5]
type()handling Any type (Scenario, line 100) - [6]
type()failing on invalid arguments (Scenario Outline, line 117) - [7] Failing when using
type()on a node (Scenario, line 138)
official/expressions/graph/Graph5.feature¶
Feature: Graph5 - Node and edge label expressions
Scenarios: 5
- [1] Single-labels expression on nodes (Scenario, line 33)
- [2] Single-labels expression on relationships (Scenario, line 59)
- [3] Conjunctive labels expression on nodes (Scenario, line 83)
- [4] Conjunctive labels expression on nodes with varying order and repeating labels (Scenario Outline, line 107)
- [5] Label expression on null (Scenario, line 133)
official/expressions/graph/Graph6.feature¶
Feature: Graph6 - Static property access
Scenarios: 9
- [1] Statically access a property of a non-null node (Scenario, line 34)
- [2] Statically access a property of a optional non-null node (Scenario, line 50)
- [3] Statically access a property of a null node (Scenario, line 66)
- [4] Statically access a property of a node resulting from an expression (Scenario, line 78)
- [5] Statically access a property of a non-null relationship (Scenario, line 95)
- [6] Statically access a property of a optional non-null relationship (Scenario, line 111)
- [7] Statically access a property of a null relationship (Scenario, line 127)
- [8] Statically access a property of a relationship resulting from an expression (Scenario, line 139)
- [9] Fail when performing property access on a non-graph element (Scenario Outline, line 156)
official/expressions/graph/Graph7.feature¶
Feature: Graph7 - Dynamic property access
Scenarios: 3
- [1] Execute n['name'] in read queries (Scenario, line 34)
- [2] Execute n['name'] in update queries (Scenario, line 50)
- [3] Use dynamic property lookup based on parameters when there is lhs type information (Scenario, line 64)
official/expressions/graph/Graph8.feature¶
Feature: Graph8 - Property keys function
Scenarios: 8
- [1] Using
keys()on a single node, non-empty result (Scenario, line 33) - [2] Using
keys()on multiple nodes, non-empty result (Scenario, line 51) - [3] Using
keys()on a single node, empty result (Scenario, line 72) - [4] Using
keys()on an optionally matched node (Scenario, line 88) - [5] Using
keys()on a relationship, non-empty result (Scenario, line 104) - [6] Using
keys()on a relationship, empty result (Scenario, line 122) - [7] Using
keys()on an optionally matched relationship (Scenario, line 138) - [8] Using
keys()andINto check property existence (Scenario, line 154)
official/expressions/graph/Graph9.feature¶
Feature: Graph9 - Retrieve all properties as a property map
Scenarios: 7
- [1]
properties()on a node (Scenario, line 33) - [2]
properties()on a relationship (Scenario, line 49) - [3]
properties()on null (Scenario, line 65) - [4]
properties()on a map (Scenario, line 78) - [5]
properties()failing on an integer literal (Scenario, line 89) - [6]
properties()failing on a string literal (Scenario, line 97) - [7]
properties()failing on a list of booleans (Scenario, line 105)
official/expressions/list/List1.feature¶
Feature: List1 - Dynamic Element Access
Scenarios: 9
- [1] Indexing into literal list (Scenario, line 34)
- [2] Indexing into nested literal lists (Scenario, line 45)
- [3] Use list lookup based on parameters when there is no type information (Scenario, line 56)
- [4] Use list lookup based on parameters when there is lhs type information (Scenario, line 71)
- [5] Use list lookup based on parameters when there is rhs type information (Scenario, line 85)
- [6] Fail when indexing a non-list #Example:
(Scenario Outline, line 100) - [7] Fail when indexing a non-list given by a parameter #Example:
(Scenario Outline, line 116) - [8] Fail when indexing with a non-integer #Example:
(Scenario Outline, line 135) - [9] Fail when indexing with a non-integer given by a parameter #Example:
(Scenario Outline, line 152)
official/expressions/list/List10.feature¶
Feature: List10 - Reverse List
Scenarios: 0
official/expressions/list/List11.feature¶
Feature: List11 - Create a list from a range
Scenarios: 5
- [1] Create list from
range()with default step (Scenario Outline, line 33) - [2] Create list from
range()with explicitly given step (Scenario Outline, line 61) - [3] Create an empty list if range direction and step direction are inconsistent (Scenario, line 101)
- [4] Fail on invalid arguments for
range()(Scenario Outline, line 117) - [5] Fail on invalid argument types for
range()(Scenario Outline, line 132)
official/expressions/list/List12.feature¶
Feature: List12 - List Comprehension
Scenarios: 7
- [1] Collect and extract using a list comprehension (Scenario, line 33)
- [2] Collect and filter using a list comprehension (Scenario, line 55)
- [3] Size of list comprehension (Scenario, line 77)
- [4] Returning a list comprehension (Scenario, line 90)
- [5] Using a list comprehension in a WITH (Scenario, line 108)
- [6] Using a list comprehension in a WHERE (Scenario, line 127)
- [7] Fail when using aggregation in list comprehension (Scenario, line 146)
official/expressions/list/List2.feature¶
Feature: List2 - List Slicing
Scenarios: 11
- [1] List slice (Scenario, line 33)
- [2] List slice with implicit end (Scenario, line 45)
- [3] List slice with implicit start (Scenario, line 57)
- [4] List slice with singleton range (Scenario, line 69)
- [5] List slice with empty range (Scenario, line 81)
- [6] List slice with negative range (Scenario, line 93)
- [7] List slice with invalid range (Scenario, line 105)
- [8] List slice with exceeding range (Scenario, line 117)
- [9] List slice with null range (Scenario Outline, line 129)
- [10] List slice with parameterised range (Scenario, line 149)
- [11] List slice with parameterised invalid range (Scenario, line 164)
official/expressions/list/List3.feature¶
Feature: List3 - List Equality
Scenarios: 7
- [1] Equality between list and literal should return false (Scenario, line 33)
- [2] Equality of lists of different length should return false despite nulls (Scenario, line 44)
- [3] Equality between different lists with null should return false (Scenario, line 55)
- [4] Equality between almost equal lists with null should return null (Scenario, line 66)
- [5] Equality of nested lists of different length should return false despite nulls (Scenario, line 77)
- [6] Equality between different nested lists with null should return false (Scenario, line 88)
- [7] Equality between almost equal nested lists with null should return null (Scenario, line 99)
official/expressions/list/List4.feature¶
Feature: List4 - List Concatenation
Scenarios: 2
- [1] Concatenating lists of same type (Scenario, line 33)
- [2] Concatenating a list with a scalar of same type (Scenario, line 44)
official/expressions/list/List5.feature¶
Feature: List5 - List Membership Validation - IN Operator
Scenarios: 42
- [1] IN should work with nested list subscripting (Scenario, line 33)
- [2] IN should work with nested literal list subscripting (Scenario, line 45)
- [3] IN should work with list slices (Scenario, line 56)
- [4] IN should work with literal list slices (Scenario, line 68)
- [5] IN should return false when matching a number with a string (Scenario, line 79)
- [6] IN should return false when matching a number with a string - list version (Scenario, line 90)
- [7] IN should return false when types of LHS and RHS don't match - singleton list (Scenario, line 101)
- [8] IN should return false when types of LHS and RHS don't match - list (Scenario, line 112)
- [9] IN should return true when types of LHS and RHS match - singleton list (Scenario, line 123)
- [10] IN should return true when types of LHS and RHS match - list (Scenario, line 134)
- [11] IN should return false when order of elements in LHS list and RHS list don't match (Scenario, line 145)
- [12] IN with different length lists should return false (Scenario, line 156)
- [13] IN should return false when matching a list with a nested list with same elements (Scenario, line 167)
- [14] IN should return true when both LHS and RHS contain nested lists (Scenario, line 178)
- [15] IN should return true when both LHS and RHS contain a nested list alongside a scalar element (Scenario, line 189)
- [16] IN should return true when LHS and RHS contain a nested list - singleton version (Scenario, line 200)
- [17] IN should return true when LHS and RHS contain a nested list (Scenario, line 211)
- [18] IN should return false when LHS contains a nested list and type mismatch on RHS - singleton version (Scenario, line 222)
- [19] IN should return false when LHS contains a nested list and type mismatch on RHS (Scenario, line 233)
- [20] IN should return null if LHS and RHS are null (Scenario, line 246)
- [21] IN should return null if LHS and RHS are null - list version (Scenario, line 257)
- [22] IN should return null when LHS and RHS both ultimately contain null, even if LHS and RHS are of different types (nested list and flat list) (Scenario, line 268)
- [23] IN with different length lists should return false despite nulls (Scenario, line 279)
- [24] IN should return true if match despite nulls (Scenario, line 290)
- [25] IN should return null if comparison with null is required (Scenario, line 301)
- [26] IN should return true if correct list found despite other lists having nulls (Scenario, line 312)
- [27] IN should return true if correct list found despite null being another element within containing list (Scenario, line 323)
- [28] IN should return false if no match can be found, despite nulls (Scenario, line 334)
- [29] IN should return null if comparison with null is required, list version (Scenario, line 345)
- [30] IN should return false if different length lists compared, even if the extra element is null (Scenario, line 356)
- [31] IN should return null when comparing two so-called identical lists where one element is null (Scenario, line 367)
- [32] IN should return true with previous null match, list version (Scenario, line 378)
- [33] IN should return false if different length lists with nested elements compared, even if the extra element is null (Scenario, line 389)
- [34] IN should return null if comparison with null is required, list version 2 (Scenario, line 400)
- [35] IN should work with an empty list (Scenario, line 413)
- [36] IN should return false for the empty list if the LHS and RHS types differ (Scenario, line 424)
- [37] IN should work with an empty list in the presence of other list elements: matching (Scenario, line 435)
- [38] IN should work with an empty list in the presence of other list elements: not matching (Scenario, line 446)
- [39] IN should work with an empty list when comparing nested lists (Scenario, line 457)
- [40] IN should return null if comparison with null is required for empty list (Scenario, line 468)
- [41] IN should return true when LHS and RHS contain nested list with multiple empty lists (Scenario, line 479)
- [42] Failing when using IN on a non-list literal (Scenario Outline, line 490)
official/expressions/list/List6.feature¶
Feature: List6 - List size
Scenarios: 10
- [1] Return list size (Scenario, line 33)
- [2] Setting and returning the size of a list property (Scenario, line 44)
- [3] Concatenating and returning the size of literal lists (Scenario, line 62)
- [4]
size()on null list (Scenario, line 73) - [5] Fail for
size()on paths (Scenario, line 85) - [6] Fail for
size()on pattern predicates (Scenario Outline, line 94) - [7] Using size of pattern comprehension to test existence (Scenario, line 114)
- [8] Get node degree via size of pattern comprehension (Scenario, line 132)
- [9] Get node degree via size of pattern comprehension that specifies a relationship type (Scenario, line 151)
- [10] Get node degree via size of pattern comprehension that specifies multiple relationship types (Scenario, line 171)
official/expressions/list/List7.feature¶
Feature: List7 - List Head
Scenarios: 0
official/expressions/list/List8.feature¶
Feature: List8 - List Last
Scenarios: 0
official/expressions/list/List9.feature¶
Feature: List9 - List Tail
Scenarios: 1
- [1] Returning nested expressions based on list property (Scenario, line 33)
official/expressions/literals/Literals1.feature¶
Feature: Literals1 - Boolean and Null
Scenarios: 6
- [1] Return a boolean true lower case (Scenario, line 33)
- [2] Return a boolean true upper case (Scenario, line 45)
- [3] Return a boolean false lower case (Scenario, line 56)
- [4] Return a boolean false upper case (Scenario, line 68)
- [5] Return null lower case (Scenario, line 79)
- [6] Return null upper case (Scenario, line 91)
official/expressions/literals/Literals2.feature¶
Feature: Literals2 - Decimal integer
Scenarios: 12
- [1] Return a short positive integer (Scenario, line 33)
- [2] Return a long positive integer (Scenario, line 44)
- [3] Return the largest integer (Scenario, line 55)
- [4] Return a positive zero (Scenario, line 66)
- [5] Return a negative zero (Scenario, line 77)
- [6] Return a short negative integer (Scenario, line 88)
- [7] Return a long negative integer (Scenario, line 99)
- [8] Return the smallest integer (Scenario, line 110)
- [9] Fail on a too large integer (Scenario, line 121)
- [10] Fail on a too small integer (Scenario, line 129)
- [11] Fail on an integer containing a alphabetic character (Scenario, line 138)
- [12] Fail on an integer containing a invalid symbol character (Scenario, line 147)
official/expressions/literals/Literals3.feature¶
Feature: Literals3 - Hexadecimal integer
Scenarios: 16
- [1] Return a short positive hexadecimal integer (Scenario, line 33)
- [2] Return a long positive hexadecimal integer (Scenario, line 44)
- [3] Return the largest hexadecimal integer (Scenario, line 55)
- [4] Return a positive hexadecimal zero (Scenario, line 66)
- [5] Return a negative hexadecimal zero (Scenario, line 77)
- [6] Return a short negative hexadecimal integer (Scenario, line 88)
- [7] Return a long negative hexadecimal integer (Scenario, line 99)
- [8] Return the smallest hexadecimal integer (Scenario, line 110)
- [9] Return a lower case hexadecimal integer (Scenario, line 121)
- [10] Return a upper case hexadecimal integer (Scenario, line 132)
- [11] Return a mixed case hexadecimal integer (Scenario, line 143)
- [12] Fail on an incomplete hexadecimal integer (Scenario, line 155)
- [13] Fail on an hexadecimal literal containing a lower case invalid alphanumeric character (Scenario, line 164)
- [14] Fail on an hexadecimal literal containing a upper case invalid alphanumeric character (Scenario, line 173)
- [16] Fail on a too large hexadecimal integer (Scenario, line 191)
- [17] Fail on a too small hexadecimal integer (Scenario, line 199)
official/expressions/literals/Literals4.feature¶
Feature: Literals4 - Octal integer
Scenarios: 10
- [1] Return a short positive octal integer (Scenario, line 33)
- [2] Return a long positive octal integer (Scenario, line 44)
- [3] Return the largest octal integer (Scenario, line 55)
- [4] Return a positive octal zero (Scenario, line 66)
- [5] Return a negative octal zero (Scenario, line 77)
- [6] Return a short negative octal integer (Scenario, line 88)
- [7] Return a long negative octal integer (Scenario, line 99)
- [8] Return the smallest octal integer (Scenario, line 110)
- [9] Fail on a too large octal integer (Scenario, line 121)
- [10] Fail on a too small octal integer (Scenario, line 129)
official/expressions/literals/Literals5.feature¶
Feature: Literals5 - Float
Scenarios: 27
- [1] Return a short positive float (Scenario, line 33)
- [2] Return a short positive float without integer digits (Scenario, line 44)
- [3] Return a long positive float (Scenario, line 55)
- [4] Return a long positive float without integer digits (Scenario, line 66)
- [5] Return a very long positive float (Scenario, line 77)
- [6] Return a very long positive float without integer digits (Scenario, line 88)
- [7] Return a positive zero float (Scenario, line 99)
- [8] Return a positive zero float without integer digits (Scenario, line 110)
- [9] Return a negative zero float (Scenario, line 121)
- [10] Return a negative zero float without integer digits (Scenario, line 132)
- [11] Return a very long negative float (Scenario, line 143)
- [12] Return a very long negative float without integer digits (Scenario, line 154)
- [13] Return a positive float with positive lower case exponent (Scenario, line 165)
- [14] Return a positive float with positive upper case exponent (Scenario, line 176)
- [15] Return a positive float with positive lower case exponent without integer digits (Scenario, line 187)
- [16] Return a positive float with negative lower case exponent (Scenario, line 198)
- [17] Return a positive float with negative lower case exponent without integer digits (Scenario, line 209)
- [18] Return a positive float with negative upper case exponent without integer digits (Scenario, line 220)
- [19] Return a negative float in with positive lower case exponent (Scenario, line 231)
- [20] Return a negative float in with positive upper case exponent (Scenario, line 242)
- [21] Return a negative float with positive lower case exponent without integer digits (Scenario, line 253)
- [22] Return a negative float with negative lower case exponent (Scenario, line 264)
- [23] Return a negative float with negative lower case exponent without integer digits (Scenario, line 275)
- [24] Return a negative float with negative upper case exponent without integer digits (Scenario, line 286)
- [25] Return a positive float with one integer digit and maximum positive exponent (Scenario, line 297)
- [26] Return a positive float with nine integer digit and maximum positive exponent (Scenario, line 308)
- [27] Fail when float value is too large (Scenario, line 319)
official/expressions/literals/Literals6.feature¶
Feature: Literals6 - String
Scenarios: 13
- [1] Return a single-quoted empty string (Scenario, line 33)
- [2] Return a single-quoted string with one character (Scenario, line 44)
- [3] Return a single-quoted string with uft-8 characters (Scenario, line 55)
- [4] Return a single-quoted string with escaped single-quoted (Scenario, line 66)
- [5] Return a single-quoted string with escaped characters (Scenario, line 78)
- [6] Return a single-quoted string with 100 characters (Scenario, line 90)
- [7] Return a single-quoted string with 1000 characters (Scenario, line 101)
- [8] Return a single-quoted string with 10000 characters (Scenario, line 112)
- [9] Return a double-quoted empty string (Scenario, line 123)
- [10] Accept valid Unicode literal (Scenario, line 134)
- [11] Return a double-quoted string with one character (Scenario, line 146)
- [12] Return a double-quoted string with uft-8 characters (Scenario, line 158)
- [13] Failing on incorrect unicode literal (Scenario, line 170)
official/expressions/literals/Literals7.feature¶
Feature: Literals7 - List
Scenarios: 20
- [1] Return an empty list (Scenario, line 33)
- [2] Return a list containing a boolean (Scenario, line 44)
- [3] Return a list containing a null (Scenario, line 55)
- [4] Return a list containing a integer (Scenario, line 66)
- [5] Return a list containing a hexadecimal integer (Scenario, line 77)
- [6] Return a list containing a octal integer (Scenario, line 88)
- [7] Return a list containing a float (Scenario, line 99)
- [8] Return a list containing a string (Scenario, line 110)
- [9] Return a list containing an empty lists (Scenario, line 121)
- [10] Return seven-deep nested empty lists (Scenario, line 132)
- [11] Return 20-deep nested empty lists (Scenario, line 143)
- [12] Return 40-deep nested empty lists (Scenario, line 154)
- [13] Return a list containing an empty map (Scenario, line 165)
- [14] Return a list containing multiple integer (Scenario, line 176)
- [16] Return a list containing multiple mixed values (Scenario, line 199)
- [17] Return a list containing real and fake nested lists (Scenario, line 210)
- [18] Return a complex list containing multiple mixed and nested values (Scenario, line 222)
- [19] Fail on a list containing only a comma (Scenario, line 301)
- [20] Fail on a nested list with non-matching brackets (Scenario, line 310)
- [21] Fail on a nested list with missing commas (Scenario, line 319)
official/expressions/literals/Literals8.feature¶
Feature: Literals8 - Maps
Scenarios: 27
- [1] Return an empty map (Scenario, line 33)
- [2] Return a map containing one value with alphabetic lower case key (Scenario, line 44)
- [3] Return a map containing one value with alphabetic upper case key (Scenario, line 55)
- [4] Return a map containing one value with alphabetic mixed case key (Scenario, line 66)
- [5] Return a map containing one value with alphanumeric mixed case key (Scenario, line 77)
- [6] Return a map containing a boolean (Scenario, line 88)
- [7] Return a map containing a null (Scenario, line 99)
- [8] Return a map containing a integer (Scenario, line 110)
- [9] Return a map containing a hexadecimal integer (Scenario, line 121)
- [10] Return a map containing a octal integer (Scenario, line 132)
- [11] Return a map containing a float (Scenario, line 143)
- [12] Return a map containing a string (Scenario, line 154)
- [13] Return a map containing an empty map (Scenario, line 165)
- [14] Return seven-deep nested maps (Scenario, line 176)
- [15] Return 20-deep nested maps (Scenario, line 187)
- [16] Return 40-deep nested maps (Scenario, line 198)
- [17] Return a map containing real and fake nested maps (Scenario, line 209)
- [18] Return a complex map containing multiple mixed and nested values (Scenario, line 221)
- [19] Fail on a map containing key starting with a number (Scenario, line 300)
- [20] Fail on a map containing key with symbol (Scenario, line 309)
- [21] Fail on a map containing key with dot (Scenario, line 318)
- [22] Fail on a map containing unquoted string (Scenario, line 326)
- [23] Fail on a map containing only a comma (Scenario, line 335)
- [24] Fail on a map containing a value without key (Scenario, line 344)
- [25] Fail on a map containing a list without key (Scenario, line 353)
- [26] Fail on a map containing a map without key (Scenario, line 362)
- [27] Fail on a nested map with non-matching braces (Scenario, line 371)
official/expressions/map/Map1.feature¶
Feature: Map1 - Static value access
Scenarios: 6
- [1] Statically access a field of a non-null map (Scenario, line 34)
- [2] Statically access a field of a null map (Scenario, line 46)
- [3] Statically access a field of a map resulting from an expression (Scenario, line 58)
- [4] Statically access a field is case-sensitive (Scenario Outline, line 70)
- [5] Statically access a field with a delimited identifier (Scenario Outline, line 89)
- [6] Fail when performing property access on a non-map (Scenario Outline, line 110)
official/expressions/map/Map2.feature¶
Feature: Map2 - Dynamic Value Access
Scenarios: 8
- [1] Dynamically access a field based on parameters when there is no type information (Scenario, line 34)
- [2] Dynamically access a field based on parameters when there is rhs type information (Scenario, line 49)
- [3] Dynamically access a field on null results in null (Scenario, line 64)
- [4] Dynamically access a field with null results in null (Scenario, line 76)
- [5] Dynamically access a field is case-sensitive (Scenario Outline, line 88)
- [6] Fail at runtime when attempting to index with an Int into a Map (Scenario, line 110)
- [7] Fail at runtime when trying to index into a map with a non-string (Scenario, line 122)
- [8] Fail at runtime when trying to index something which is not a map (Scenario, line 134)
official/expressions/map/Map3.feature¶
Feature: Map3 - Keys function
Scenarios: 5
- [1] Using
keys()on a literal map (Scenario, line 33) - [2] Using
keys()on a parameter map (Scenario, line 44) - [3] Using
keys()on null map (Scenario, line 57) - [4] Using
keys()on map with null values (Scenario Outline, line 69) - [5] Using
keys()andINto check field existence (Scenario, line 90)
official/expressions/mathematical/Mathematical1.feature¶
Feature: Mathematical1 - Unary delimiter
Scenarios: 0
official/expressions/mathematical/Mathematical10.feature¶
Feature: Mathematical10 - Random numbers
Scenarios: 0
official/expressions/mathematical/Mathematical11.feature¶
Feature: Mathematical11 - Signed numbers functions
Scenarios: 1
- [1] Absolute function (Scenario, line 33)
official/expressions/mathematical/Mathematical12.feature¶
Feature: Mathematical12 - Rounding numbers
Scenarios: 0
official/expressions/mathematical/Mathematical13.feature¶
Feature: Mathematical13 - Square root
Scenarios: 1
- [1]
sqrt()returning float values (Scenario, line 33)
official/expressions/mathematical/Mathematical14.feature¶
Feature: Mathematical14 - Logarithm
Scenarios: 0
official/expressions/mathematical/Mathematical15.feature¶
Feature: Mathematical15 - Degrees and radians
Scenarios: 0
official/expressions/mathematical/Mathematical16.feature¶
Feature: Mathematical16 - Trigonometric functions
Scenarios: 0
official/expressions/mathematical/Mathematical17.feature¶
Feature: Mathematical17 - Inverse trigonometric functions
Scenarios: 0
official/expressions/mathematical/Mathematical2.feature¶
Feature: Mathematical2 - Addition
Scenarios: 1
- [1] Allow addition (Scenario, line 33)
official/expressions/mathematical/Mathematical3.feature¶
Feature: Mathematical3 - Subtraction
Scenarios: 1
- [1] Fail for invalid Unicode hyphen in subtraction (Scenario, line 34)
official/expressions/mathematical/Mathematical4.feature¶
Feature: Mathematical4 - Multiplication
Scenarios: 0
official/expressions/mathematical/Mathematical5.feature¶
Feature: Mathematical5 - Division
Scenarios: 0
official/expressions/mathematical/Mathematical6.feature¶
Feature: Mathematical6 - Modulo division
Scenarios: 0
official/expressions/mathematical/Mathematical7.feature¶
Feature: Mathematical7 - Power
Scenarios: 0
official/expressions/mathematical/Mathematical8.feature¶
Feature: Mathematical8 - Arithmetic precedence
Scenarios: 2
- [1] Arithmetic precedence test (Scenario, line 33)
- [2] Arithmetic precedence with parenthesis test (Scenario, line 44)
official/expressions/mathematical/Mathematical9.feature¶
Feature: Mathematical9 - Mathematical constants
Scenarios: 0
official/expressions/null/Null1.feature¶
Feature: Null1 - IS NULL validation
Scenarios: 6
- [1] Property null check on non-null node (Scenario, line 33)
- [2] Property null check on optional non-null node (Scenario, line 50)
- [3] Property null check on null node (Scenario, line 67)
- [4] A literal null IS null (Scenario, line 79)
- [5] IS NULL on a map (Scenario Outline, line 90)
- [6] IS NULL is case insensitive (Scenario, line 118)
official/expressions/null/Null2.feature¶
Feature: Null2 - IS NOT NULL validation
Scenarios: 6
- [1] Property not null check on non-null node (Scenario, line 33)
- [2] Property not null check on optional non-null node (Scenario, line 50)
- [3] Property not null check on null node (Scenario, line 67)
- [4] A literal null is not IS NOT null (Scenario, line 79)
- [5] IS NOT NULL on a map (Scenario Outline, line 90)
- [6] IS NOT NULL is case insensitive (Scenario, line 118)
official/expressions/null/Null3.feature¶
Feature: Null3 - Null evaluation
Scenarios: 4
- [1] The inverse of a null is a null (Scenario, line 34)
- [2] It is unknown - i.e. null - if a null is equal to a null (Scenario, line 45)
- [3] It is unknown - i.e. null - if a null is not equal to a null (Scenario, line 56)
- [4] Using null in IN (Scenario Outline, line 67)
official/expressions/path/Path1.feature¶
Feature: Path1 - Nodes of a path
Scenarios: 1
- [1]
nodes()on null path (Scenario, line 33)
official/expressions/path/Path2.feature¶
Feature: Path2 - Relationships of a path
Scenarios: 3
- [1] Return relationships by fetching them from the path (Scenario, line 33)
- [2] Return relationships by fetching them from the path - starting from the end (Scenario, line 50)
- [3]
relationships()on null path (Scenario, line 66)
official/expressions/path/Path3.feature¶
Feature: Path3 - Length of a path
Scenarios: 3
- [1] Return a var length path of length zero (Scenario, line 33)
- [2] Failing when using
length()on a node (Scenario, line 51) - [3] Failing when using
length()on a relationship (Scenario, line 60)
official/expressions/pattern/Pattern1.feature¶
Feature: Pattern1 - Pattern predicate
Scenarios: 25
- [1] Matching on any single outgoing directed connection (Scenario, line 33)
- [2] Matching on a single undirected connection (Scenario, line 49)
- [3] Matching on any single incoming directed connection (Scenario, line 67)
- [4] Matching on a specific type of single outgoing directed connection (Scenario, line 85)
- [5] Matching on a specific type of single undirected connection (Scenario, line 100)
- [6] Matching on a specific type of single incoming directed connection (Scenario, line 117)
- [7] Matching on a specific type of a variable length outgoing directed connection (Scenario, line 133)
- [8] Matching on a specific type of variable length undirected connection (Scenario, line 148)
- [9] Matching on a specific type of variable length incoming directed connection (Scenario, line 165)
- [10] Matching on a specific type of undirected connection with length 2 (Scenario, line 181)
- [10] Fail on introducing unbounded variables in pattern (Scenario Outline, line 197)
- [11] Fail on checking self pattern (Scenario, line 223)
- [12] Matching two nodes on a single directed connection between them (Scenario, line 231)
- [13] Fail on matching two nodes on a single undirected connection between them (Scenario, line 249)
- [14] Matching two nodes on a specific type of single outgoing directed connection (Scenario, line 269)
- [15] Matching two nodes on a specific type of single undirected connection (Scenario, line 285)
- [16] Matching two nodes on a specific type of a variable length outgoing directed connection (Scenario, line 303)
- [17] Matching two nodes on a specific type of variable length undirected connection (Scenario, line 319)
- [18] Matching two nodes on a specific type of undirected connection with length 2 (Scenario, line 339)
- [19] Using a negated existential pattern predicate (Scenario, line 356)
- [20] Using two existential pattern predicates in a conjunction (Scenario, line 372)
- [21] Using two existential pattern predicates in a disjunction (Scenario, line 387)
- [22] Fail on using pattern in RETURN projection (Scenario, line 404)
- [23] Fail on using pattern in WITH projection (Scenario, line 412)
- [24] Fail on using pattern in right-hand side of SET (Scenario, line 420)
official/expressions/pattern/Pattern2.feature¶
Feature: Pattern2 - Pattern Comprehension
Scenarios: 11
- [1] Return a pattern comprehension (Scenario, line 33)
- [2] Return a pattern comprehension with label predicate (Scenario, line 53)
- [3] Return a pattern comprehension with bound nodes (Scenario, line 72)
- [4] Introduce a new node variable in pattern comprehension (Scenario, line 89)
- [5] Introduce a new relationship variable in pattern comprehension (Scenario, line 109)
- [6] Aggregate on a pattern comprehension (Scenario, line 129)
- [7] Use a pattern comprehension inside a list comprehension (Scenario, line 146)
- [8] Use a pattern comprehension in WITH (Scenario, line 170)
- [9] Use a variable-length pattern comprehension in WITH (Scenario, line 190)
- [10] Use a pattern comprehension in RETURN (Scenario, line 207)
- [11] Use a pattern comprehension and ORDER BY (Scenario, line 226)
official/expressions/precedence/Precedence1.feature¶
Feature: Precedence1 - On boolean values
Scenarios: 28
- [1] Exclusive disjunction takes precedence over inclusive disjunction (Scenario, line 33)
- [2] Conjunction disjunction takes precedence over exclusive disjunction (Scenario, line 46)
- [3] Conjunction disjunction takes precedence over inclusive disjunction (Scenario, line 59)
- [4] Negation takes precedence over conjunction (Scenario, line 72)
- [5] Negation takes precedence over inclusive disjunction (Scenario, line 87)
- [6] Comparison operator takes precedence over boolean negation (Scenario, line 100)
- [7] Comparison operator takes precedence over binary boolean operator (Scenario, line 113)
- [8] Null predicate takes precedence over comparison operator (Scenario, line 126)
- [9] Null predicate takes precedence over negation (Scenario, line 139)
- [10] Null predicate takes precedence over boolean operator (Scenario, line 152)
- [11] List predicate takes precedence over comparison operator (Scenario, line 165)
- [12] List predicate takes precedence over negation (Scenario, line 178)
- [13] List predicate takes precedence over boolean operator (Scenario, line 191)
- [14] Exclusive disjunction takes precedence over inclusive disjunction in every combination of truth values (Scenario, line 204)
- [15] Conjunction takes precedence over exclusive disjunction in every combination of truth values (Scenario, line 220)
- [16] Conjunction takes precedence over inclusive disjunction in every combination of truth values (Scenario, line 236)
- [17] Negation takes precedence over conjunction in every combination of truth values (Scenario, line 252)
- [18] Negation takes precedence over inclusive disjunction in every combination of truth values (Scenario, line 269)
- [19] Comparison operators takes precedence over boolean negation in every combination of truth values (Scenario Outline, line 284)
- [20] Pairs of comparison operators and boolean negation that are associative in every combination of truth values (Scenario Outline, line 308)
- [21] Comparison operators take precedence over binary boolean operators in every combination of truth values (Scenario Outline, line 327)
- [22] Pairs of comparison operators and binary boolean operators that are associative in every combination of truth values (Scenario Outline, line 364)
- [23] Null predicates take precedence over comparison operators in every combination of truth values (Scenario Outline, line 386)
- [24] Null predicates take precedence over boolean negation on every truth values (Scenario Outline, line 416)
- [25] Null predicates take precedence over binary boolean operators in every combination of truth values (Scenario Outline, line 436)
- [26] List predicate takes precedence over comparison operators in every combination of truth values (Scenario Outline, line 460)
- [27] List predicate takes precedence over negation in every combination of truth values (Scenario, line 485)
- [28] List predicate takes precedence over binary boolean operators in every combination of truth values (Scenario Outline, line 500)
official/expressions/precedence/Precedence2.feature¶
Feature: Precedence2 - On numeric values
Scenarios: 5
- [1] Numeric multiplicative operations takes precedence over numeric additive operations (Scenario Outline, line 33)
- [2] Exponentiation takes precedence over numeric multiplicative operations (Scenario Outline, line 67)
- [3] Exponentiation takes precedence over numeric additive operations (Scenario Outline, line 86)
- [4] Numeric unary negative takes precedence over exponentiation (Scenario, line 104)
- [5] Numeric unary negative takes precedence over numeric additive operations (Scenario Outline, line 119)
official/expressions/precedence/Precedence3.feature¶
Feature: Precedence3 - On list values
Scenarios: 6
- [1] List element access takes precedence over list appending (Scenario, line 33)
- [2] List element access takes precedence over list concatenation (Scenario, line 46)
- [3] List slicing takes precedence over list concatenation (Scenario, line 59)
- [4] List appending takes precedence over list element containment (Scenario, line 72)
- [5] List concatenation takes precedence over list element containment (Scenario, line 85)
- [6] List element containment takes precedence over comparison operator (Scenario Outline, line 99)
official/expressions/precedence/Precedence4.feature¶
Feature: Precedence4 - On null value
Scenarios: 4
- [1] Null predicate takes precedence over comparison operator (Scenario Outline, line 34)
- [2] Null predicate takes precedence over boolean negation (Scenario, line 53)
- [3] Null predicate takes precedence over binary boolean operator (Scenario Outline, line 66)
- [4] String predicate takes precedence over binary boolean operator (Scenario, line 89)
official/expressions/quantifier/Quantifier1.feature¶
Feature: Quantifier1 - None quantifier
Scenarios: 15
- [1] None quantifier is always true on empty list (Scenario, line 33)
- [2] None quantifier on list literal containing booleans (Scenario Outline, line 44)
- [3] None quantifier on list literal containing integers (Scenario Outline, line 67)
- [4] None quantifier on list literal containing floats (Scenario Outline, line 98)
- [5] None quantifier on list literal containing strings (Scenario Outline, line 124)
- [6] None quantifier on list literal containing lists (Scenario Outline, line 147)
- [7] None quantifier on list literal containing maps (Scenario Outline, line 170)
- [8] None quantifier on list containing nodes (Scenario, line 193)
- [9] None quantifier on list containing relationships (Scenario, line 239)
- [10] None quantifier on lists containing nulls (Scenario Outline, line 285)
- [11] None quantifier with IS NULL predicate (Scenario Outline, line 307)
- [12] None quantifier with IS NOT NULL predicate (Scenario Outline, line 333)
- [13] None quantifier is true if the predicate is statically false and the list is not empty (Scenario, line 359)
- [14] None quantifier is false if the predicate is statically true and the list is not empty (Scenario, line 370)
- [15] Fail none quantifier on type mismatch between list elements and predicate (Scenario Outline, line 381)
official/expressions/quantifier/Quantifier10.feature¶
Feature: Quantifier10 - Single quantifier invariants
Scenarios: 4
- [1] Single quantifier is always false if the predicate is statically false and the list is not empty (Scenario, line 33)
- [2] Single quantifier is always false if the predicate is statically true and the list has more than one element (Scenario, line 56)
- [3] Single quantifier is always true if the predicate is statically true and the list has exactly one non-null element (Scenario, line 79)
- [4] Single quantifier is always equal whether the size of the list filtered with same the predicate is one (Scenario Outline, line 93)
official/expressions/quantifier/Quantifier11.feature¶
Feature: Quantifier11 - Any quantifier invariants
Scenarios: 6
- [1] Any quantifier is always false if the predicate is statically false and the list is not empty (Scenario, line 33)
- [2] Any quantifier is always true if the predicate is statically true and the list is not empty (Scenario, line 56)
- [3] Any quantifier is always true if the single or the all quantifier is true (Scenario Outline, line 79)
- [4] Any quantifier is always equal the boolean negative of the none quantifier (Scenario Outline, line 115)
- [5] Any quantifier is always equal the boolean negative of the all quantifier on the boolean negative of the predicate (Scenario Outline, line 145)
- [6] Any quantifier is always equal whether the size of the list filtered with same the predicate is grater zero (Scenario Outline, line 175)
official/expressions/quantifier/Quantifier12.feature¶
Feature: Quantifier12 - All quantifier invariants
Scenarios: 5
- [1] All quantifier is always false if the predicate is statically false and the list is not empty (Scenario, line 33)
- [2] All quantifier is always true if the predicate is statically true and the list is not empty (Scenario, line 56)
- [3] All quantifier is always equal the none quantifier on the boolean negative of the predicate (Scenario Outline, line 79)
- [4] All quantifier is always equal the boolean negative of the any quantifier on the boolean negative of the predicate (Scenario Outline, line 109)
- [5] All quantifier is always equal whether the size of the list filtered with same the predicate is equal the size of the unfiltered list (Scenario Outline, line 139)
official/expressions/quantifier/Quantifier2.feature¶
Feature: Quantifier2 - Single quantifier
Scenarios: 16
- [1] Single quantifier is always false on empty list (Scenario, line 33)
- [2] Single quantifier on list literal (Scenario Outline, line 44)
- [3] Single quantifier on list literal containing integers (Scenario Outline, line 67)
- [4] Single quantifier on list literal containing floats (Scenario Outline, line 98)
- [5] Single quantifier on list literal containing strings (Scenario Outline, line 124)
- [6] Single quantifier on list literal containing lists (Scenario Outline, line 147)
- [7] Single quantifier on list literal containing maps (Scenario Outline, line 170)
- [8] Single quantifier on list containing nodes (Scenario, line 193)
- [9] Single quantifier on list containing relationships (Scenario, line 239)
- [10] Single quantifier on lists containing nulls (Scenario Outline, line 285)
- [11] Single quantifier with IS NULL predicate (Scenario Outline, line 307)
- [12] Single quantifier with IS NOT NULL predicate (Scenario Outline, line 333)
- [13] Single quantifier is false if the predicate is statically false and the list is not empty (Scenario, line 359)
- [14] Single quantifier is false if the predicate is statically true and the list has more than one element (Scenario, line 370)
- [15] Single quantifier is true if the predicate is statically true and the list has exactly one non-null element (Scenario, line 381)
- [16] Fail single quantifier on type mismatch between list elements and predicate (Scenario Outline, line 392)
official/expressions/quantifier/Quantifier3.feature¶
Feature: Quantifier3 - Any quantifier
Scenarios: 15
- [1] Any quantifier is always false on empty list (Scenario, line 33)
- [2] Any quantifier on list literal (Scenario Outline, line 44)
- [3] Any quantifier on list literal containing integers (Scenario Outline, line 67)
- [4] Any quantifier on list literal containing floats (Scenario Outline, line 98)
- [5] Any quantifier on list literal containing strings (Scenario Outline, line 124)
- [6] Any quantifier on list literal containing lists (Scenario Outline, line 147)
- [7] Any quantifier on list literal containing maps (Scenario Outline, line 170)
- [8] Any quantifier on list containing nodes (Scenario, line 193)
- [9] Any quantifier on list containing relationships (Scenario, line 239)
- [10] Any quantifier on lists containing nulls (Scenario Outline, line 285)
- [11] Any quantifier with IS NULL predicate (Scenario Outline, line 307)
- [12] Any quantifier with IS NOT NULL predicate (Scenario Outline, line 333)
- [13] Any quantifier is false if the predicate is statically false and the list is not empty (Scenario, line 359)
- [14] Any quantifier is true if the predicate is statically true and the list is not empty (Scenario, line 370)
- [15] Fail any quantifier on type mismatch between list elements and predicate (Scenario Outline, line 381)
official/expressions/quantifier/Quantifier4.feature¶
Feature: Quantifier4 - All quantifier
Scenarios: 15
- [1] All quantifier is always true on empty list (Scenario, line 33)
- [2] All quantifier on list literal (Scenario Outline, line 44)
- [3] All quantifier on list literal containing integers (Scenario Outline, line 67)
- [4] All quantifier on list literal containing floats (Scenario Outline, line 98)
- [5] All quantifier on list literal containing strings (Scenario Outline, line 124)
- [6] All quantifier on list literal containing lists (Scenario Outline, line 147)
- [7] All quantifier on list literal containing maps (Scenario Outline, line 170)
- [8] All quantifier on list containing nodes (Scenario, line 193)
- [9] All quantifier on list containing relationships (Scenario, line 239)
- [10] All quantifier on lists containing nulls (Scenario Outline, line 285)
- [11] All quantifier with IS NULL predicate (Scenario Outline, line 307)
- [12] All quantifier with IS NOT NULL predicate (Scenario Outline, line 333)
- [13] All quantifier is false if the predicate is statically false and the list is not empty (Scenario, line 359)
- [14] All quantifier is true if the predicate is statically true and the list is not empty (Scenario, line 370)
- [15] Fail all quantifier on type mismatch between list elements and predicate (Scenario Outline, line 381)
official/expressions/quantifier/Quantifier5.feature¶
Feature: Quantifier5 - None quantifier interop
Scenarios: 5
- [1] None quantifier can nest itself and other quantifiers on nested lists (Scenario Outline, line 33)
- [2] None quantifier can nest itself and other quantifiers on the same list (Scenario Outline, line 55)
- [3] None quantifier is equal the boolean negative of the any quantifier (Scenario Outline, line 78)
- [4] None quantifier is equal the all quantifier on the boolean negative of the predicate (Scenario Outline, line 97)
- [5] None quantifier is equal whether the size of the list filtered with same the predicate is zero (Scenario Outline, line 116)
official/expressions/quantifier/Quantifier6.feature¶
Feature: Quantifier6 - Single quantifier interop
Scenarios: 3
- [1] Single quantifier can nest itself and other quantifiers on nested lists (Scenario Outline, line 33)
- [2] Single quantifier can nest itself and other quantifiers on the same list (Scenario Outline, line 55)
- [3] Single quantifier is equal whether the size of the list filtered with same the predicate is one (Scenario Outline, line 78)
official/expressions/quantifier/Quantifier7.feature¶
Feature: Quantifier7 - Any quantifier interop
Scenarios: 6
- [1] Any quantifier can nest itself and other quantifiers on nested lists (Scenario Outline, line 33)
- [2] Any quantifier can nest itself and other quantifiers on the same list (Scenario Outline, line 55)
- [3] Any quantifier is true if the single or the all quantifier is true (Scenario Outline, line 78)
- [4] Any quantifier is equal the boolean negative of the none quantifier (Scenario Outline, line 98)
- [5] Any quantifier is equal the boolean negative of the all quantifier on the boolean negative of the predicate (Scenario Outline, line 117)
- [6] Any quantifier is equal whether the size of the list filtered with same the predicate is grater zero (Scenario Outline, line 136)
official/expressions/quantifier/Quantifier8.feature¶
Feature: Quantifier8 - All quantifier interop
Scenarios: 5
- [1] All quantifier can nest itself and other quantifiers on nested lists (Scenario Outline, line 33)
- [2] All quantifier can nest itself and other quantifiers on the same list (Scenario Outline, line 55)
- [3] All quantifier is equal the none quantifier on the boolean negative of the predicate (Scenario Outline, line 78)
- [4] All quantifier is equal the boolean negative of the any quantifier on the boolean negative of the predicate (Scenario Outline, line 97)
- [5] All quantifier is equal whether the size of the list filtered with same the predicate is equal the size of the unfiltered list (Scenario Outline, line 116)
official/expressions/quantifier/Quantifier9.feature¶
Feature: Quantifier9 - None quantifier invariants
Scenarios: 5
- [1] None quantifier is always true if the predicate is statically false and the list is not empty (Scenario, line 33)
- [2] None quantifier is always false if the predicate is statically true and the list is not empty (Scenario, line 56)
- [3] None quantifier is always equal the boolean negative of the any quantifier (Scenario Outline, line 79)
- [4] None quantifier is always equal the all quantifier on the boolean negative of the predicate (Scenario Outline, line 109)
- [5] None quantifier is always equal whether the size of the list filtered with same the predicate is zero (Scenario Outline, line 139)
official/expressions/string/String1.feature¶
Feature: String1 - Substring extraction
Scenarios: 1
- [1]
substring()with default second argument (Scenario, line 33)
official/expressions/string/String10.feature¶
Feature: String10 - Exact Substring Search
Scenarios: 9
- [1] Finding exact matches with non-proper substring (Scenario, line 33)
- [2] Finding substring of string (Scenario, line 52)
- [3] Finding the empty substring (Scenario, line 71)
- [4] Finding strings containing whitespace (Scenario, line 94)
- [5] Finding strings containing newline (Scenario, line 116)
- [6] No string contains null (Scenario, line 138)
- [7] No string does not contain null (Scenario, line 156)
- [8] Handling non-string operands for CONTAINS (Scenario, line 174)
- [9] NOT with CONTAINS (Scenario, line 195)
official/expressions/string/String11.feature¶
Feature: String11 - Combining Exact String Search
Scenarios: 2
- [1] Combining prefix and suffix search (Scenario, line 33)
- [2] Combining prefix, suffix, and substring search (Scenario, line 53)
official/expressions/string/String12.feature¶
Feature: String12 - Exact Substring Replacement
Scenarios: 0
official/expressions/string/String13.feature¶
Feature: String13 - Regex Search
Scenarios: 0
official/expressions/string/String14.feature¶
Feature: String14 - Regex Replacing
Scenarios: 0
official/expressions/string/String2.feature¶
Feature: String2 - Whitespace Trimming
Scenarios: 0
official/expressions/string/String3.feature¶
Feature: String3 - String Reversal
Scenarios: 1
- [1]
reverse()(Scenario, line 33)
official/expressions/string/String4.feature¶
Feature: String4 - String Splitting
Scenarios: 1
- [1]
split()(Scenario, line 33)
official/expressions/string/String5.feature¶
Feature: String5 - Manipulate Letter Casing
Scenarios: 0
official/expressions/string/String6.feature¶
Feature: String6 - String Concatenation
Scenarios: 0
official/expressions/string/String7.feature¶
Feature: String7 - String Length
Scenarios: 0
official/expressions/string/String8.feature¶
Feature: String8 - Exact String Prefix Search
Scenarios: 9
- [1] Finding exact matches with non-proper prefix (Scenario, line 33)
- [2] Finding beginning of string (Scenario, line 52)
- [3] Finding the empty prefix (Scenario, line 71)
- [4] Finding strings starting with whitespace (Scenario, line 94)
- [5] Finding strings starting with newline (Scenario, line 116)
- [6] No string starts with null (Scenario, line 138)
- [7] No string does not start with null (Scenario, line 156)
- [8] Handling non-string operands for STARTS WITH (Scenario, line 174)
- [9] NOT with STARTS WITH (Scenario, line 195)
official/expressions/string/String9.feature¶
Feature: String9 - Exact String Suffix Search
Scenarios: 9
- [1] Finding exact matches with non-proper suffix (Scenario, line 33)
- [2] Finding end of string (Scenario, line 52)
- [3] Finding the empty suffix (Scenario, line 71)
- [4] Finding strings ending with whitespace (Scenario, line 94)
- [5] Finding strings ending with newline (Scenario, line 116)
- [6] No string ends with null (Scenario, line 138)
- [7] No string does not end with null (Scenario, line 156)
- [8] Handling non-string operands for ENDS WITH (Scenario, line 174)
- [9] NOT with ENDS WITH (Scenario, line 195)
official/expressions/temporal/Temporal1.feature¶
Feature: Temporal1 - Create Temporal Values from a Map
Scenarios: 13
- [1] Should construct week date (Scenario Outline, line 33)
- [2] Should construct week localdatetime (Scenario Outline, line 62)
- [3] Should construct week datetime (Scenario Outline, line 91)
- [4] Should construct date (Scenario Outline, line 120)
- [5] Should construct local time (Scenario Outline, line 142)
- [6] Should construct time (Scenario Outline, line 163)
- [7] Should construct local date time (Scenario Outline, line 191)
- [8] Should construct date time with default time zone (Scenario Outline, line 236)
- [9] Should construct date time with offset time zone (Scenario Outline, line 280)
- [10] Should construct date time with named time zone (Scenario Outline, line 323)
- [11] Should construct date time from epoch (Scenario, line 366)
- [12] Should construct duration (Scenario Outline, line 378)
- [13] Should construct temporal with time offset with second precision (Scenario Outline, line 401)
official/expressions/temporal/Temporal10.feature¶
Feature: Temporal10 - Compute Durations Between two Temporal Values
Scenarios: 13
- [1] Should split between boundaries correctly (Scenario Outline, line 33)
- [2] Should compute duration between two temporals (Scenario Outline, line 54)
- [3] Should compute duration between two temporals in months (Scenario Outline, line 93)
- [4] Should compute duration between two temporals in days (Scenario Outline, line 128)
- [5] Should compute duration between two temporals in seconds (Scenario Outline, line 163)
- [6] Should compute duration between if they differ only by a fraction of a second and the first comes after the second. (Scenario, line 202)
- [7] Should compute negative duration between in big units (Scenario Outline, line 213)
- [8] Should handle durations at daylight saving time day (Scenario Outline, line 232)
- [9] Should handle large durations (Scenario, line 252)
- [10] Should handle large durations in seconds (Scenario, line 263)
- [11] Should handle when seconds and subseconds have different signs (Scenario Outline, line 274)
- [12] Should compute durations with no difference (Scenario Outline, line 298)
- [13] Should propagate null (Scenario Outline, line 317)
official/expressions/temporal/Temporal2.feature¶
Feature: Temporal2 - Create Temporal Values from a String
Scenarios: 7
- [1] Should parse date from string (Scenario Outline, line 33)
- [2] Should parse local time from string (Scenario Outline, line 58)
- [3] Should parse time from string (Scenario Outline, line 79)
- [4] Should parse local date time from string (Scenario Outline, line 101)
- [5] Should parse date time from string (Scenario Outline, line 122)
- [6] Should parse date time with named time zone from string (Scenario Outline, line 144)
- [7] Should parse duration from string (Scenario Outline, line 163)
official/expressions/temporal/Temporal3.feature¶
Feature: Temporal3 - Project Temporal Values from other Temporal Values
Scenarios: 11
- [1] Should select date (Scenario Outline, line 32)
- [2] Should select local time (Scenario Outline, line 68)
- [3] Should select time (Scenario Outline, line 95)
- [4] Should select date into local date time (Scenario Outline, line 130)
- [5] Should select time into local date time (Scenario Outline, line 151)
- [6] Should select date and time into local date time (Scenario Outline, line 174)
- [7] Should select datetime into local date time (Scenario Outline, line 213)
- [8] Should select date into date time (Scenario Outline, line 234)
- [9] Should select time into date time (Scenario Outline, line 261)
- [10] Should select date and time into date time (Scenario Outline, line 292)
- [11] Should datetime into date time (Scenario Outline, line 355)
official/expressions/temporal/Temporal4.feature¶
Feature: Temporal4 - Store Temporal Values
Scenarios: 13
- [1] Should store date (Scenario Outline, line 34)
- [2] Should store date array (Scenario Outline, line 57)
- [3] Should store local time (Scenario Outline, line 81)
- [4] Should store local time array (Scenario Outline, line 104)
- [5] Should store time (Scenario Outline, line 128)
- [6] Should store time array (Scenario Outline, line 151)
- [7] Should store local date time (Scenario Outline, line 175)
- [8] Should store local date time array (Scenario Outline, line 198)
- [9] Should store date time (Scenario Outline, line 222)
- [10] Should store date time array (Scenario Outline, line 245)
- [11] Should store duration (Scenario Outline, line 269)
- [12] Should store duration array (Scenario Outline, line 292)
- [13] Should propagate null (Scenario Outline, line 316)
official/expressions/temporal/Temporal5.feature¶
Feature: Temporal5 - Access Components of Temporal Values
Scenarios: 7
- [1] Should provide accessors for date (Scenario, line 33)
- [2] Should provide accessors for date in last weekYear (Scenario, line 50)
- [3] Should provide accessors for local time (Scenario, line 67)
- [4] Should provide accessors for time (Scenario, line 84)
- [5] Should provide accessors for local date time (Scenario, line 101)
- [6] Should provide accessors for date time (Scenario, line 119)
- [7] Should provide accessors for duration (Scenario, line 138)
official/expressions/temporal/Temporal6.feature¶
Feature: Temporal6 - Render Temporal Values as a String
Scenarios: 7
- [1] Should serialize date (Scenario, line 33)
- [2] Should serialize local time (Scenario, line 45)
- [3] Should serialize time (Scenario, line 57)
- [4] Should serialize local date time (Scenario, line 69)
- [5] Should serialize date time (Scenario, line 81)
- [6] Should serialize duration (Scenario Outline, line 93)
- [7] Should serialize timezones correctly (Scenario, line 119)
official/expressions/temporal/Temporal7.feature¶
Feature: Temporal7 - Compare Temporal Values
Scenarios: 6
- [1] Should compare dates (Scenario Outline, line 33)
- [2] Should compare local times (Scenario Outline, line 50)
- [3] Should compare times (Scenario Outline, line 67)
- [4] Should compare local date times (Scenario Outline, line 84)
- [5] Should compare date times (Scenario Outline, line 101)
- [6] Should compare durations for equality (Scenario Outline, line 118)
official/expressions/temporal/Temporal8.feature¶
Feature: Temporal8 - Compute Arithmetic Operations on Temporal Values
Scenarios: 7
- [1] Should add or subtract duration to or from date (Scenario Outline, line 33)
- [2] Should add or subtract duration to or from local time (Scenario Outline, line 56)
- [3] Should add or subtract duration to or from time (Scenario Outline, line 79)
- [4] Should add or subtract duration to or from local date time (Scenario Outline, line 102)
- [5] Should add or subtract duration to or from date time (Scenario Outline, line 125)
- [6] Should add or subtract durations (Scenario Outline, line 148)
- [7] Should multiply or divide durations by numbers (Scenario Outline, line 177)
official/expressions/temporal/Temporal9.feature¶
Feature: Temporal9 - Truncate Temporal Values
Scenarios: 5
- [1] Should truncate date (Scenario Outline, line 33)
- [2] Should truncate datetime (Scenario Outline, line 98)
- [3] Should truncate localdatetime (Scenario Outline, line 217)
- [4] Should truncate localtime (Scenario Outline, line 305)
- [5] Should truncate time (Scenario Outline, line 363)
official/expressions/typeConversion/TypeConversion1.feature¶
Feature: TypeConversion1 - To Boolean
Scenarios: 5
- [1]
toBoolean()on booleans (Scenario, line 33) - [2]
toBoolean()on valid literal string (Scenario, line 46) - [3]
toBoolean()on variables with valid string values (Scenario, line 57) - [4]
toBoolean()on invalid strings (Scenario, line 70) - [5] Fail
toBoolean()on invalid types #Example:(Scenario Outline, line 85)
official/expressions/typeConversion/TypeConversion2.feature¶
Feature: TypeConversion2 - To Integer
Scenarios: 8
- [1]
toInteger()on float (Scenario, line 33) - [2]
toInteger()returning null on non-numerical string (Scenario, line 45) - [3]
toInteger()handling mixed number types (Scenario, line 57) - [4]
toInteger()handling Any type (Scenario, line 69) - [5]
toInteger()on a list of strings (Scenario, line 81) - [6]
toInteger()on a complex-typed expression (Scenario, line 93) - [7]
toInteger()on node property (Scenario, line 106) - [8] Fail
toInteger()on invalid types #Example:(Scenario Outline, line 124)
official/expressions/typeConversion/TypeConversion3.feature¶
Feature: TypeConversion3 - To Float
Scenarios: 6
- [1]
toFloat()on mixed number types (Scenario, line 33) - [2]
toFloat()returning null on non-numerical string (Scenario, line 45) - [3]
toFloat()handling Any type (Scenario, line 57) - [4]
toFloat()on a list of strings (Scenario, line 69) - [5]
toFloat()on node property (Scenario, line 81) - [6] Fail
toFloat()on invalid types #Example:(Scenario Outline, line 99)
official/expressions/typeConversion/TypeConversion4.feature¶
Feature: TypeConversion4 - To String
Scenarios: 10
- [1]
toString()handling integer literal (Scenario, line 33) - [2]
toString()handling boolean literal (Scenario, line 44) - [3]
toString()handling inlined boolean (Scenario, line 55) - [4]
toString()handling boolean properties (Scenario, line 66) - [5]
toString()should work on Any type (Scenario, line 82) - [6]
toString()on a list of integers (Scenario, line 93) - [7]
toString()on node property (Scenario, line 105) - [8]
toString()should accept potentially correct types 1 (Scenario, line 123) - [9]
toString()should accept potentially correct types 2 (Scenario, line 137) - [10] Fail
toString()on invalid types #Example:(Scenario Outline, line 151)
official/expressions/typeConversion/TypeConversion5.feature¶
Feature: TypeConversion5 - To List
Scenarios: 0
official/expressions/typeConversion/TypeConversion6.feature¶
Feature: TypeConversion6 - To Map
Scenarios: 0
legacy¶
2 feature files, 11 scenarios
Aggregation1_BasicAggregation.feature¶
Feature: Aggregation1 - Basic aggregation functions
Scenarios: 6
- Count all rows with COUNT(*) (Scenario, line 5)
- Count non-null values with COUNT(expr) (Scenario, line 24)
- Sum numeric values with SUM (Scenario, line 43)
- Average numeric values with AVG (Scenario, line 62)
- Find minimum and maximum with MIN and MAX (Scenario, line 81)
- Group by property and count (Scenario, line 100)
Match1_SimpleMatches.feature¶
Feature: Match1 - Basic MATCH patterns
Scenarios: 5
- Match all nodes (Scenario, line 5)
- Match nodes with a specific label (Scenario, line 26)
- Match nodes with WHERE clause on property (Scenario, line 46)
- Match with LIMIT clause (Scenario, line 66)
- Match with SKIP clause (Scenario, line 84)
useCases¶
2 feature files, 30 scenarios
official/useCases/countingSubgraphMatches/CountingSubgraphMatches1.feature¶
Feature: CountingSubgraphMatches1 - Matching subgraph patterns and count the number of matches
Scenarios: 11
- [1] Undirected match in self-relationship graph, count (Scenario, line 33)
- [2] Undirected match of self-relationship in self-relationship graph, count (Scenario, line 49)
- [3] Undirected match on simple relationship graph, count (Scenario, line 65)
- [4] Directed match on self-relationship graph, count (Scenario, line 81)
- [5] Directed match of self-relationship on self-relationship graph, count (Scenario, line 97)
- [6] Counting undirected self-relationships in self-relationship graph (Scenario, line 113)
- [7] Counting distinct undirected self-relationships in self-relationship graph (Scenario, line 129)
- [8] Directed match of a simple relationship, count (Scenario, line 145)
- [9] Counting directed self-relationships (Scenario, line 161)
- [10] Mixing directed and undirected pattern parts with self-relationship, count (Scenario, line 178)
- [11] Mixing directed and undirected pattern parts with self-relationship, undirected count (Scenario, line 196)
official/useCases/triadicSelection/TriadicSelection1.feature¶
Feature: TriadicSelection1 - Query three related nodes on binary-tree graphs
Scenarios: 19
- [1] Handling triadic friend of a friend (Scenario, line 33)
- [2] Handling triadic friend of a friend that is not a friend (Scenario, line 50)
- [3] Handling triadic friend of a friend that is not a friend with different relationship type (Scenario, line 68)
- [4] Handling triadic friend of a friend that is not a friend with superset of relationship type (Scenario, line 86)
- [5] Handling triadic friend of a friend that is not a friend with implicit subset of relationship type (Scenario, line 103)
- [6] Handling triadic friend of a friend that is not a friend with explicit subset of relationship type (Scenario, line 126)
- [7] Handling triadic friend of a friend that is not a friend with same labels (Scenario, line 149)
- [8] Handling triadic friend of a friend that is not a friend with different labels (Scenario, line 165)
- [9] Handling triadic friend of a friend that is not a friend with implicit subset of labels (Scenario, line 180)
- [10] Handling triadic friend of a friend that is not a friend with implicit superset of labels (Scenario, line 196)
- [11] Handling triadic friend of a friend that is a friend (Scenario, line 214)
- [12] Handling triadic friend of a friend that is a friend with different relationship type (Scenario, line 228)
- [13] Handling triadic friend of a friend that is a friend with superset of relationship type (Scenario, line 242)
- [14] Handling triadic friend of a friend that is a friend with implicit subset of relationship type (Scenario, line 257)
- [15] Handling triadic friend of a friend that is a friend with explicit subset of relationship type (Scenario, line 272)
- [16] Handling triadic friend of a friend that is a friend with same labels (Scenario, line 287)
- [17] Handling triadic friend of a friend that is a friend with different labels (Scenario, line 301)
- [18] Handling triadic friend of a friend that is a friend with implicit subset of labels (Scenario, line 314)
- [19] Handling triadic friend of a friend that is a friend with implicit superset of labels (Scenario, line 328)