8000 Feature/hybrid smart graph test setup helper by mchacki · Pull Request #14455 · arangodb/arangodb · GitHub
[go: up one dir, main page]

Skip to content

Feature/hybrid smart graph test setup helper #14455

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
780a86c
Added Protected default constructor for Valdiators
mchacki Apr 20, 2021
b246d14
Make createKey constant
mchacki Apr 22, 2021
56bf5ef
Prepare to use an internal Validator that is not user-modifyable. Thi…
mchacki Apr 22, 2021
579230b
Make setIntenralValidator a public method so we can actually call it …
mchacki Apr 22, 2021
1a74899
todo
hkernbach Apr 22, 2021
4231ca4
add satellites to GraphNode v2
hkernbach Apr 22, 2021
8958c0b
add satellites to shard locking
hkernbach Apr 22, 2021
594b916
typo
hkernbach Apr 22, 2021
29479d0
added comments to some methods
hkernbach Apr 23, 2021
1eec739
adjusted shard locking
hkernbach Apr 23, 2021
663e6a2
extended getAllLocalShards
hkernbach Apr 23, 2021
f751a6c
remove not needed methods
hkernbach Apr 23, 2021
b6390d9
Add a place to inject internal Schema validation, used e.g. to valida…
mchacki Apr 26, 2021
3208a80
Merge remote-tracking branch 'origin' into feature/use-validators-on-…
mchacki Apr 26, 2021
eaca7ce
Disabled enterprise Validator Factory
mchacki Apr 27, 2021
5113205
Removed ValidatorFactory, we do it in a different way
mchacki Apr 27, 2021
b113a36
Merge branch 'feature/hybrid-smart-graph' of github.com:arangodb/aran…
hkernbach Apr 28, 2021
0c90d99
Merge branch 'feature/use-validators-on-smart-edge-collections' of gi…
hkernbach Apr 28, 2021
63f4ed2
Merge branch 'feature/hybrid-smart-graph' of github.com:arangodb/aran…
hkernbach May 4, 2021
d869fa2
Merge branch 'feature/hybrid-smart-graph' of github.com:arangodb/aran…
hkernbach May 4, 2021
f97e342
Added more template instanciations
mchacki May 5, 2021
c01bec8
Make collection to shard map a map of string -> vector<string>, requi…
mchacki May 5, 2021
cb9f78f
changed api of getNextPath, not modifying builder but returning PathR…
hkernbach May 5, 2021
add77c8
First draft of toSchreierEntry for HTTP transport. This is a hacky va…
mchacki May 6, 2021
dce04f4
Simplified SingleProviderPathResult and EdgeDocument token.
mchacki May 6, 2021
532ad82
typo, adjusted format for first step in schreier format
hkernbach May 7, 2021
0eb70ef
tmp enable smartSearchNew for testing
hkernbach May 7, 2021
877a6a7
add start/reset depth parameter, default is 0
hkernbach May 10, 2021
220aa99
added dfspathfinder path_loop test
hkernbach May 10, 2021
09337ed
added dfspathfinder triangle_loop test
hkernbach May 10, 2021
86360fe
added dfspathfinder triangle_loop_skip test
hkernbach May 10, 2021
310e321
change log ids, adjust later (added todo), in order to perform jenkin…
hkernbach May 11, 2021
3ad7e6a
remove type from toVelocyPack and addToBuilder
hkernbach May 11, 2021
c7b6a11
rm isHybrid, modified pathvalidator templates
hkernbach May 12, 2021
88bfc65
Fixed compile issue in DFSFinderTest
mchacki May 14, 2021
f819f6a
First draft to include a generice Enumerator Interface, that can be u…
mchacki May 14, 2021
6282568
Merge branch 'feature/hybrid-smart-graph' of github.com:arangodb/aran…
hkernbach Jun 1, 2021
847afd3
Merge branch 'feature/hybrid-smart-graph-testsuite' of github.com:ara…
hkernbach Jun 1, 2021
94f0ab4
Moved to a Configuration based Enumerator Template. This way it is mu…
mchacki May 14, 2021
73b0038
Merge branch 'feature/hybrid-smart-graph' of github.com:arangodb/aran…
hkernbach Jun 1, 2021
9fa2e7d
Prepared PathValidatorOpitons to contain Prune condition
mchacki Jun 2, 2021
e44fcbe
Added ValidatorOptions and Provider information to Validator. This is…
mchacki Jun 2, 2021
ecf685f
Implemented evaluateEdgeCondition, however no one sets an edgeConditi…
mchacki Jun 2, 2021
afdc047
Make Temporary builder reusable.
mchacki Jun 2, 2021
55ec101
Moved from Edge Condition to VertexCondition. The EdgeCondition canno…
mchacki Jun 7, 2021
1b49c0e
preperation for evaluateExpression, not done yet
hkernbach Jun 7, 2021
d0ff849
prep for include of expression in indexaccessor
hkernbach Jun 8, 2021
6c13a95
return false in callback
hkernbach Jun 8, 2021
2c2557f
broken trx state
hkernbach Jun 8, 2021
7960fa1
Switched std::optional with std::unique_ptr. Somehow std::optional of…
mchacki Jun 8, 2021
9c62834
Very first draft of a PathValidatorTest based on Vertex conditions. T…
mchacki Jun 8, 2021
b4ea993
Fixed nullptr access
mchacki Jun 8, 2021
3f7ded0
still broken, transactionState cookies acceess, wip, pointer instead …
hkernbach Jun 8, 2021
097d246
Merge branch 'feature/hybrid-smart-graph-testsuite' of github.com:ara…
hkernbach Jun 8, 2021
05d17df
tmp commit - needs to be reverted before merge!
hkernbach Jun 9, 2021
e3dc6b7
Make BaseStep copy and movable
mchacki Jun 9, 2021
129da07
MockGraphProvidder now uses default step destructor
mchacki Jun 9, 2021
2b693d2
Started rewireing PathValidatorTest to use GraphMockProvider. Most te…
mchacki Jun 9, 2021
7874264
Rewritten and activated more tests for validator
mchacki Jun 9, 2021
ddaf7b0
All basic vertex tests are back online
mchacki Jun 9, 2021
751586c
Implemented a reset method in PathValidator, and used in in test.
mchacki Jun 9, 2021
a99554e
Fixed potentially out of scope for String
mchacki Jun 9, 2021
830d9b4
Implemented a very rough draft for SingleServerProvider Test
mchacki Jun 9, 2021
2f7bad6
Merge remote-tracking branch 'origin/devel' into feature/hybrid-smart…
mchacki Jun 10, 2021
3f5b04f
Fixed invalid memory access after parent move
mchacki Jun 10, 2021
c7eca19
Removed temporary debug output
mchacki Jun 10, 2021
a640b41
Merge branch 'feature/hybrid-smart-graph' of github.com:arangodb/aran…
hkernbach Jun 10, 2021
053e96c
Removed twice lookup of Document
mchacki Jun 10, 2021
f9b4747
pass-through all index information (depth and global)
hkernbach Jun 10, 2021
42c5e7a
remove log
hkernbach Jun 10, 2021
fc022b3
Register TransactionManager Feature in MockServers
mchacki Jun 11, 2021
0a6c535
Include nextExtra implementation in MockEdgeIndex. This is what will …
mchacki Jun 11, 2021
1404011
Moved Mock Test classes into MockFolder and include it in all tests f…
mchacki Jun 11, 2021
f8dacd9
Fixed EdgeIndexMock, it was only able to return exactly on time the l…
mchacki Jun 11, 2021
9ef5bc8
Actually count read edges
mchacki Jun 11, 2021
039fbdd
enabled depth based expressions
hkernbach Jun 11, 2021
523da6a
Merge branch 'feature/hybrid-smart-graph-testsuite' of github.com:ara…
hkernbach Jun 11, 2021
079017a
Allow to set or overwrite a variable in a FixedVarContext
mchacki Jun 11, 2021
53a65ce
Forward the FixedVarExpression Context into the Provider. This way it…
mchacki Jun 11, 2021
1e1f934
use shared expressionContext in PathValidator as well
hkernbach Jun 11, 2021
2372616
Move ValidatorOptions into the Enumerators. Also made the ValidatorOp…
mchacki Jun 14, 2021
26f7f91
Fixed Assertion in Cpp test
mchacki Jun 14, 2021
153b8fd
First rule of Results: Do not throw them, throw ARANGODB_EXCEPTION
mchacki Jun 14, 2021
91565e5
fixed one test - wrong scannedIndex in original test
hkernbach Jun 14, 2021
dcc2c77
Merge branch 'feature/hybrid-smart-graph-testsuite' of github.com:ara…
hkernbach Jun 14, 2021
b86b835
Poor persons workaround for loose end processing. This is not good, b…
mchacki Jun 14, 2021
ef8d7d0
modified complexFilteringSuite
hkernbach Jun 14, 2021
c51553d
modified optimizeQuantifierSuite
hkernbach Jun 14, 2021
2380ca7
Merge branch 'feature/hybrid-smart-graph' of github.com:arangodb/aran…
hkernbach Jun 14, 2021
b38fe3f
adjusted testModify
hkernbach Jun 15, 2021
c30989b
fixed queue type in DFS Enumerator Queue
hkernbach Jun 15, 2021
fd3fa59
added isCluster section to test
hkernbach Jun 15, 2021
72b4f93
Made Expressions use shared_ptr in path validator. We can happily reu…
mchacki Jun 15, 2021
7887420
allow to restrict collections
hkernbach Jun 15, 2021
1eaa27d
Merge branch 'feature/hybrid-smart-graph-testsuite' of github.com:ara…
hkernbach Jun 15, 2021
5ee84fc
fixed cpp test compilation
hkernbach Jun 16, 2021
d315a04
added method to shard to check wheter we're responsible
hkernbach Jun 18, 2021
83d5d91
trying to fix se search with lookupTable
hkernbach Jun 18, 2021
6559d38
added isResponsible method to mock provider step
hkernbach Jun 21, 2021
bed40c2
implemented schreier path building
hkernbach Jun 21, 2021
e957a22
Merge branch 'feature/hybrid-smart-graph' of github.com:arangodb/aran…
hkernbach Jun 21, 2021
96b58aa
Fixed looseEndReporting.
mchacki Jun 22, 2021
2c87281
adjusted print method
hkernbach Jun 22, 2021
eda7279
Merge branch 'feature/hybrid-smart-graph-testsuite' of github.com:ara…
hkernbach Jun 22, 2021
4d6de4d
Let enumerator report Filtered Paths
mchacki Jun 22, 2021
c88f5de
removed obsolete comment
hkernbach Jun 22, 2021
7fc5a2d
Fixed unnecessary document lookup if the server is NOT responsible to…
mchacki Jun 23, 2021
817434e
Do not apply validators on Vertices the server is not responsible for…
mchacki Jun 23, 2021
d015160
Use a different method to get a transaction while preparing the Engin…
mchacki Jul 1, 2021
0d3a171
Expose registering of Indexes in ClusterIndexFactory
mchacki Jul 1, 2021
cfbab0d
Allow to create a FakeQuery for Coordiantor and DBServers in Mocks
mchacki Jul 1, 2021
523948c
Prepared MockServers to Link Indexes on Coordinator. This is required…
mchacki Jul 2, 2021
2ce8262
Fixed a MockOnly bug, that does cause nullptr access when shutting do…
mchacki Jul 2, 2021
faab49e
Included Temporary TraverserEngineShardList access. needs to be removed
mchacki Jul 2, 2021
fb6a8b3
Merge remote-tracking branch 'origin/feature/hybrid-smart-graph' into…
mchacki Jul 3, 2021
521a209
Update tests/Mocks/Servers.cpp
mchacki Jul 7, 2021
93dc786
Merge branch 'feature/hybrid-smart-graph' into feature/hybrid-smart-g…
mchacki Jul 7, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
changed api of getNextPath, not modifying builder but returning PathR…
…esult instead - will lead to more flexibility handling the result
  • Loading branch information
hkernbach committed May 5, 2021
commit cb9f78f0e683f12c1036682431625ab35c17471b
18 changes: 9 additions & 9 deletions arangod/Graph/Enumerators/OneSidedEnumerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,7 @@ OneSidedEnumerator<QueueType, PathStoreType, ProviderType, PathValidator>::OneSi
_queue(resourceMonitor),
_provider(std::move(forwardProvider)),
_validator(_interior),
_interior(resourceMonitor),
_resultPath{_provider} {}
_interior(resourceMonitor) {}

template <class QueueType, class PathStoreType, class ProviderType, class PathValidator>
OneSidedEnumerator<QueueType, PathStoreType, ProviderType, PathValidator>::~OneSidedEnumerator() {
Expand Down Expand Up @@ -153,7 +152,8 @@ void OneSidedEnumerator<QueueType, PathStoreType, ProviderType, PathValidator>::
* @return false No path found, result has not been changed.
*/
template <class QueueType, class PathStoreType, class ProviderType, class PathValidator>
bool OneSidedEnumerator<QueueType, PathStoreType, ProviderType, PathValidator>::getNextPath(VPackBuilder& result) {
auto OneSidedEnumerator<QueueType, PathStoreType, ProviderType, PathValidator>::getNextPath()
-> std::optional<SingleProviderPathResult<ProviderType, typename ProviderType::Step>> {
while (!isDone()) {
searchMoreResults();

Expand All @@ -165,15 +165,15 @@ bool OneSidedEnumerator<QueueType, PathStoreType, ProviderType, PathValidator>::
// everything in to the _resultPath object
// and then iterate again to return the path
// we should be able to return the path in the first go.
_resultPath.clear();
_interior.buildPath(vertex, _resultPath);
TRI_ASSERT(!_resultPath.isEmpty());
auto resultPath = SingleProviderPathResult<ProviderType, Step>{_provider};
_interior.buildPath(vertex, resultPath);
TRI_ASSERT(!resultPath.isEmpty());
_results.pop_back();
_resultPath.toVelocyPack(result);
return true;

return resultPath; // TODO: Please let us check alternatives here (e.g. std::move)
}
}
return false;
return std::nullopt;
}

template <class QueueType, class PathStoreType, class ProviderType, class PathValidator>
Expand Down
7 changes: 1 addition & 6 deletions arangod/Graph/Enumerators/OneSidedEnumerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,6 @@ namespace graph {

struct OneSidedEnumeratorOptions;

template <class ProviderType, class Step>
class PathResult;

template <class QueueType, class PathStoreType, class ProviderType, class PathValidatorType>
class OneSidedEnumerator {
public:
Expand Down Expand Up @@ -106,7 +103,7 @@ class OneSidedEnumerator {
* @return true Found and written a path, result is modified.
* @return false No path found, result has not been changed.
*/
bool getNextPath(arangodb::velocypack::Builder& result);
auto getNextPath() -> std::optional<SingleProviderPathResult<ProviderType, Step>>;

/**
* @brief Skip the next Path, like getNextPath, but does not return the path.
Expand Down Expand Up @@ -151,8 +148,6 @@ class OneSidedEnumerator {

// This stores all paths processed
PathStoreType _interior;

SingleProviderPathResult<ProviderType, Step> _resultPath;
};
} // namespace graph
} // namespace arangodb
75 changes: 52 additions & 23 deletions tests/Graph/DFSFinderTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -248,8 +248,9 @@ TEST_P(DFSFinderTest, no_path_exists) {
EXPECT_FALSE(finder.isDone());
{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);
pathEquals(result.slice(), {91});
pathStructureValid(result.slice(), 0);
EXPECT_TRUE(finder.isDone());
Expand All @@ -258,7 +259,7 @@ TEST_P(DFSFinderTest, no_path_exists) {
{
result.clear();
// Try again to make sure we stay at non-existing
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_FALSE(hasPath);
EXPECT_TRUE(result.isEmpty());
EXPECT_TRUE(finder.isDone());
Expand All @@ -282,8 +283,10 @@ TEST_P(DFSFinderTest, path_depth_0) {
EXPECT_FALSE(finder.isDone());
{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);

pathEquals(result.slice(), {1});
pathStructureValid(result.slice(), 0);
EXPECT_TRUE(finder.isDone());
Expand All @@ -292,7 +295,7 @@ TEST_P(DFSFinderTest, path_depth_0) {
{
result.clear();
// Try again to make sure we stay at non-existing
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_FALSE(hasPath);
EXPECT_TRUE(result.isEmpty());
EXPECT_TRUE(finder.isDone());
Expand All @@ -315,8 +318,10 @@ TEST_P(DFSFinderTest, path_depth_1) {
EXPECT_FALSE(finder.isDone());
{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);


pathStructureValid(result.slice(), 1);
pathEquals(result.slice(), {1, 2});
Expand All @@ -327,7 +332,7 @@ TEST_P(DFSFinderTest, path_depth_1) {
{
result.clear();
// Try again to make sure we stay at non-existing
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_FALSE(hasPath);
EXPECT_TRUE(result.isEmpty());
EXPECT_TRUE(finder.isDone());
Expand All @@ -351,8 +356,10 @@ TEST_P(DFSFinderTest, path_depth_2) {
EXPECT_FALSE(finder.isDone());
{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);

pathStructureValid(result.slice(), 2);
pathEquals(result.slice(), {1, 2, 3});

Expand All @@ -362,7 +369,7 @@ TEST_P(DFSFinderTest, path_depth_2) {
{
result.clear();
// Try again to make sure we stay at non-existing
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_FALSE(hasPath);
EXPECT_TRUE(result.isEmpty());
EXPECT_TRUE(finder.isDone());
Expand All @@ -385,8 +392,10 @@ TEST_P(DFSFinderTest, path_depth_3) {
EXPECT_FALSE(finder.isDone());
{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);

pathStructureValid(result.slice(), 3);
pathEquals(result.slice(), {1, 2, 3, 4});

Expand All @@ -396,7 +405,7 @@ TEST_P(DFSFinderTest, path_depth_3) {
{
result.clear();
// Try again to make sure we stay at non-existing
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_FALSE(hasPath);
EXPECT_TRUE(result.isEmpty());
EXPECT_TRUE(finder.isDone());
Expand All @@ -420,24 +429,30 @@ TEST_P(DFSFinderTest, path_diamond) {
EXPECT_FALSE(finder.isDone());
{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);

pathStructureValid(result.slice(), 2);

EXPECT_FALSE(finder.isDone());
}
{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);

pathStructureValid(result.slice(), 2);

EXPECT_FALSE(finder.isDone());
}
{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);

pathStructureValid(result.slice(), 2);

EXPECT_TRUE(finder.isDone());
Expand All @@ -446,7 +461,7 @@ TEST_P(DFSFinderTest, path_diamond) {
{
result.clear();
// Try again to make sure we stay at non-existing
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_FALSE(hasPath);
EXPECT_TRUE(result.isEmpty());
EXPECT_TRUE(finder.isDone());
Expand All @@ -469,8 +484,10 @@ TEST_P(DFSFinderTest, path_depth_1_to_2) {
EXPECT_FALSE(finder.isDone());
{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);

pathStructureValid(result.slice(), 1);
pathEquals(result.slice(), {10, 12});

Expand All @@ -479,26 +496,32 @@ TEST_P(DFSFinderTest, path_depth_1_to_2) {

{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);

pathStructureValid(result.slice(), 2);
pathEquals(result.slice(), {10, 12, 13});
EXPECT_FALSE(finder.isDone());
}

{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);

pathStructureValid(result.slice(), 2);
pathEquals(result.slice(), {10, 12, 11});
EXPECT_FALSE(finder.isDone());
}

{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);

pathStructureValid(result.slice(), 1);
pathEquals(result.slice(), {10, 11});
EXPECT_TRUE(finder.isDone());
Expand All @@ -507,7 +530,7 @@ TEST_P(DFSFinderTest, path_depth_1_to_2) {
{
result.clear();
// Try again to make sure we stay at non-existing
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_FALSE(hasPath);
EXPECT_TRUE(result.isEmpty());
EXPECT_TRUE(finder.isDone());
Expand All @@ -524,8 +547,10 @@ TEST_P(DFSFinderTest, path_depth_1_to_2_skip) {
EXPECT_FALSE(finder.isDone());
{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);

pathStructureValid(result.slice(), 1);
pathEquals(result.slice(), {10, 12});

Expand All @@ -541,17 +566,21 @@ TEST_P(DFSFinderTest, path_depth_1_to_2_skip) {

{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);

pathStructureValid(result.slice(), 2);
pathEquals(result.slice(), {10, 12, 11});
EXPECT_FALSE(finder.isDone());
}

{
result.clear();
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_TRUE(hasPath);
hasPath->toVelocyPack(result);

pathStructureValid(result.slice(), 1);
pathEquals(result.slice(), {10, 11});
EXPECT_TRUE(finder.isDone());
Expand All @@ -560,7 +589,7 @@ TEST_P(DFSFinderTest, path_depth_1_to_2_skip) {
{
result.clear();
// Try again to make sure we stay at non-existing
auto hasPath = finder.getNextPath(result);
auto hasPath = finder.getNextPath();
EXPECT_FALSE(hasPath);
EXPECT_TRUE(result.isEmpty());
EXPECT_TRUE(finder.isDone());
Expand Down
0