/**
  * @test
  */
 public function sourceMatching()
 {
     $source = $this->getMockBuilder(SourceInterface::class)->getMock();
     $source->method('getName')->willReturn('my_source');
     $this->assertTrue(SourceFilterUtil::matches($source, array('name' => 'my_source')));
     $this->assertTrue(SourceFilterUtil::matches($source, array('names' => array('my_source', 'your_source', 'their_source'))));
     $this->assertFalse(SourceFilterUtil::matches($source, array('names' => array('my_source', 'your_source', 'their_source'), 'name' => 'non_existing')));
 }
 /**
  * Filter sources.
  *
  * Available filter criteria:
  * * name: string
  * * names: string[]
  *
  * @param SourceInterface[] $sources Sources to filter.
  * @param array $filters Filter criteria.
  *
  * @return SourceInterface[]
  */
 private function filter($sources, array $filters = array())
 {
     $result = array();
     foreach ($sources as $source) {
         if (SourceFilterUtil::matches($source, $filters)) {
             $result[] = $source;
         }
     }
     return $result;
 }