getCompletions(''); $this->assertSame($values, $result); } public function testFiltersValuesBasedOnCurrentValuePrefix() { $values = ['apple', 'apricot', 'banana', 'cherry']; $provider = new ListCompletionProvider($values); $result = $provider->getCompletions('ap'); $this->assertSame(['apple', 'apricot'], $result); } public function testReturnsEmptyArrayWhenNoValuesMatch() { $values = ['apple', 'banana', 'cherry']; $provider = new ListCompletionProvider($values); $result = $provider->getCompletions('xyz'); $this->assertSame([], $result); } public function testWorksWithSingleCharacterPrefix() { $values = ['apple', 'banana', 'cherry']; $provider = new ListCompletionProvider($values); $result = $provider->getCompletions('a'); $this->assertSame(['apple'], $result); } public function testIsCaseSensitiveByDefault() { $values = ['Apple', 'apple', 'APPLE']; $provider = new ListCompletionProvider($values); $result = $provider->getCompletions('A'); $this->assertEquals(['Apple', 'APPLE'], $result); } public function testHandlesEmptyValuesArray() { $provider = new ListCompletionProvider([]); $result = $provider->getCompletions('test'); $this->assertSame([], $result); } public function testPreservesArrayOrder() { $values = ['zebra', 'apple', 'banana']; $provider = new ListCompletionProvider($values); $result = $provider->getCompletions(''); $this->assertSame(['zebra', 'apple', 'banana'], $result); } }