/**
  * @covers ::getMethodsWhereRequestBodyIsAllowed()
  */
 public function testGetMethodsWhereRequestBodyIsAllowed()
 {
     $result = HttpMethods::getMethodsWhereRequestBodyIsAllowed();
     $http_methods_expected = array(HttpMethods::POST, HttpMethods::PUT);
     foreach ($http_methods_expected as $http_method_expected) {
         $this->assertContains($http_method_expected, $result, 'HTTP method ' . $http_method_expected . ' is not present in getAllMethods()');
     }
 }
 protected function generateMap($class, $basePath)
 {
     $reflection = Utilities::reflectionClassFromObjectOrClass($class);
     if (isset($reflection)) {
         $methods = $reflection->getMethods(ReflectionMethod::IS_PUBLIC);
     } else {
         $methods = array();
     }
     /** @var ReflectionMethod $method */
     foreach ($methods as $method) {
         $doc = $method->getDocComment();
         $all_http_verbs_joined_by_pipes = implode('|', HttpMethods::getAllMethods());
         if (preg_match_all('/@url[ \\t]+(' . $all_http_verbs_joined_by_pipes . ')[ \\t]+\\/?(\\S*)/s', $doc, $matches, PREG_SET_ORDER)) {
             $params = $method->getParameters();
             foreach ($matches as $match) {
                 $httpMethod = $match[1];
                 $url = $this->root . $basePath . $match[2];
                 // quick fix for running on windows
                 $url = str_replace('\\', '/', $url);
                 if ($url && $url[0] == '/') {
                     $url = substr($url, 1);
                 }
                 // end quick fix
                 if ($url && $url[strlen($url) - 1] == '/') {
                     $url = substr($url, 0, -1);
                 }
                 $call = array($class, $method->getName());
                 $args = array();
                 foreach ($params as $param) {
                     // The order of the parameters is essential, there is no name-matching
                     // inserting the name is just for easier debuging
                     try {
                         $args[$param->getName()] = $param->getDefaultValue();
                     } catch (ReflectionException $e) {
                         // If the method has no default parameter set the value to null
                         $args[$param->getName()] = null;
                     }
                 }
                 $call[] = $args;
                 $call[] = null;
                 $call[] = DocBlockParser::getDocKeys($method);
                 $this->map[$httpMethod][$url] = $call;
             }
         }
     }
 }