/** * Setup and return a service with operations and types. * * @return Service */ private function givenServiceWithOperations() { // Response GetBook types $responseBookName = new ComplexType($this->config, 'Method_Get_Book_Response_BOOK_BOOK_NAME'); $responseBookName->addMember('string', 'bookName', false); $responseBook = new ComplexType($this->config, 'Method_Get_Book_Response_BOOK'); $responseBook->addMember('int', 'bookId', false); // Base type example $responseBook->setBaseType($responseBookName); $returnGetBookType = new ComplexType($this->config, 'Get_Book_Type_Response'); $returnGetBookType->addMember('Method_Get_Book_Response_BOOK', 'book_response', false); // Request GetBook types $bookType = new Enum($this->config, 'Book_Type_Enumeration', 'string'); $bookType->addValue('fiction'); $bookType->addValue('comedy'); $requestBook = new ComplexType($this->config, 'Method_Get_Book_Request_BOOK'); $requestBook->addMember('int', 'bookId', false); $requestBook->addMember('Book_Type_Enumeration', 'genre', false); $requestGetBook = new ComplexType($this->config, 'Get_Book_Type_Request'); $requestGetBook->addMember('Method_Get_Book_Request_BOOK', 'book_request', false); // Operation GetBook $getBookOperation = new Operation('GetBook', 'Get_Book_Type_Request $request', 'Get Book', 'Get_Book_Type_Response'); // Response GetAuthors type $responseAuthor = new ComplexType($this->config, 'Get_Authors_Response_Author'); $responseAuthor->addMember('int', 'authorId', false); $responseAuthor->addMember('string', 'authorName', false); $returnGetAuthors = new ComplexType($this->config, 'Method_Get_Authors_Response'); $returnGetAuthors->addMember('Get_Authors_Response_Author[]', 'Get_Authors_Response_Author', false); // Request GetAuthors type $requestGetAuthor = new ComplexType($this->config, 'Method_Get_Authors_Request'); $requestGetAuthor->addMember('Method_Get_Book_Request_BOOK', 'book_request', false); // Operation GetAuthors $getAuthorsOperator = new Operation('GetAuthor', 'Method_Get_Authors_Request $request', 'Get Authors', 'Method_Get_Authors_Response'); // Service creation $types = array($responseBookName, $responseBook, $returnGetBookType, $requestBook, $requestGetBook, $responseAuthor, $returnGetAuthors, $requestGetAuthor, $bookType); $service = new Service($this->config, 'Book_Shell', $types, 'Book shells'); $service->addOperation($getBookOperation); $service->addOperation($getAuthorsOperator); return $service; }
/** * Test classes that extend themselves. */ public function testExtendingOwnClass() { // It is actually possible to have a type which extends itself. This is caused by the poor understanding of PHP // namespaces. Two types with the same name but in different namespaces will have the same identifier. $config = new Config(array('inputFile' => null, 'outputDir' => null)); $type = new ComplexType($config, 'ExtendOwn'); $type->setBaseType($type); $this->generateClass($type); $object = new \ExtendOwn(); $class = new \ReflectionClass($object); $this->assertEmpty($class->getParentClass()); }