/**
  * @test
  */
 public function rateTypeMatching()
 {
     $configuration = new Configuration('EUR', 'my_rate_type', 'my_source');
     $this->assertTrue(ConfigurationFilterUtil::matches($configuration, array('rateType' => 'my_rate_type')));
     $this->assertTrue(ConfigurationFilterUtil::matches($configuration, array('rateTypes' => array('my_rate_type', 'your_rate_type', 'their_rate_type'))));
     $this->assertFalse(ConfigurationFilterUtil::matches($configuration, array('rateTypes' => array('my_rate_type', 'your_rate_type', 'their_rate_type'), 'rateType' => 'non_existing')));
 }
 /**
  * Get configurations that matches given filter criteria.
  *
  * @param Configuration[] $configurations Configurations to filter.
  * @param array $criteria Filter criteria.
  * @return Configuration[] Matched configurations.
  */
 private function filter($configurations, array $criteria)
 {
     $result = array();
     /**
      * @var Configuration $configuration
      */
     foreach ($configurations as $configuration) {
         if (ConfigurationFilterUtil::matches($configuration, $criteria)) {
             $result[] = $configuration;
         }
     }
     return $result;
 }