/** * @dataProvider getFilterData */ public function testFilter(array $expected, array $data, $filterFunction) { $filter = $this->getMockBuilder('MarkWilson\\ArrayFiltering\\FilterInterface')->disableOriginalConstructor()->getMock(); $filter->expects($this->exactly(count($data)))->method('isSatisfiedBy')->will($this->returnCallback($filterFunction)); $filtering = new ArrayFiltering($data); $this->assertEquals($expected, $filtering->filterBy($filter)->getArrayCopy()); }
/** * Excludes specified variables * @param array $environment Optional environment variables * @return array $environment Environment variables */ public function exclude(array $environment = array()) { $environment = empty($environment) ? $this->getValues() : $environment; $excludes = $this->getVal($this->excludeKey); $excludes = explode(',', $excludes); $excludes = !$excludes ? array() : $excludes; array_push($excludes, $this->excludeKey); foreach ($excludes as $exclude) { $filtering = new ArrayFiltering($environment); $exclude = new ArrayKeyFilter\KeyPatternFilter("/^((?!{$exclude}).)*\$/"); $environment = $filtering->filterBy($exclude); } return $environment; }