Skip to content

Commit 2bdd182

Browse files
committed
Issue #3: fixed adding elements to empty array
1 parent c294b56 commit 2bdd182

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

src/Query/Query.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public function __invoke(NodeValueInterface $rootNode): QueryResultInterface
6161
}
6262
}
6363

64-
if (isset($key) && $key != $lastIndex + 1) {
64+
if (isset($key, $lastIndex) && $key != $lastIndex + 1) {
6565
return new QueryResult($this->source);
6666
}
6767

tests/AcceptanceTest.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,30 @@ public function providerDelete(): array
8484
'Nested inner element' => ['[1,[2,3,4],5]', '/1/1', '[1,[2,4],5]'],
8585
];
8686
}
87+
88+
/**
89+
* @param string $document
90+
* @param string $pointer
91+
* @param string $value
92+
* @param string $expectedValue
93+
* @dataProvider providerAdd
94+
*/
95+
public function testAdd(string $document, string $pointer, string $value, string $expectedValue): void
96+
{
97+
$rootNode = NodeValueFactory::create()->createValue($document);
98+
$valueNode = NodeValueFactory::create()->createValue($value);
99+
$query = QueryFactory::create()->createQuery($pointer);
100+
$selection = Processor::create()
101+
->add($query, $rootNode, $valueNode)
102+
->encode();
103+
self::assertSame($expectedValue, $selection);
104+
}
105+
106+
public function providerAdd(): array
107+
{
108+
return [
109+
'Add element to empty array' => ['[]', '/0', '1', '[1]'],
110+
'Add property to empty object' => ['{}', '/a', '"b"', '{"a":"b"}'],
111+
];
112+
}
87113
}

0 commit comments

Comments
 (0)