File: tests/Element/PhpAnnotationBlockTest.php

Recommend this page to a friend!
  Classes of WsdlToPhp  >  PHP Code Generator  >  tests/Element/PhpAnnotationBlockTest.php  >  Download  
File: tests/Element/PhpAnnotationBlockTest.php
Role: Unit test script
Content type: text/plain
Description: Unit test script
Class: PHP Code Generator
Generate PHP code elements programatically
Author: By
Last change: Implement declare statement,
Code requires PHP 7.4,
Code cleaning and various tests
Date: 1 month ago
Size: 5,249 bytes
 

Contents

Class file image Download
<?php

declare(strict_types=1);

namespace
WsdlToPhp\PhpGenerator\Tests\Element;

use
InvalidArgumentException;
use
WsdlToPhp\PhpGenerator\Element\PhpFunction;
use
WsdlToPhp\PhpGenerator\Element\PhpAnnotation;
use
WsdlToPhp\PhpGenerator\Element\PhpAnnotationBlock;
use
WsdlToPhp\PhpGenerator\Tests\TestCase;

class
PhpAnnotationBlockTest extends TestCase
{
    public function
testGetOneLineToString()
    {
       
$annotationBlock = new PhpAnnotationBlock([
           
'This sample annotation is on one line',
        ]);

       
$this->assertSame("/**\n * This sample annotation is on one line\n */", $annotationBlock->toString());
    }

    public function
testGetOneLineToStringWithName()
    {
       
$annotationBlock = new PhpAnnotationBlock([
            new
PhpAnnotation('Author', 'PhpTeam'),
        ]);

       
$this->assertSame("/**\n * @Author PhpTeam\n */", $annotationBlock->toString());
    }

    public function
testGetSeveralLinesToString()
    {
       
$annotationBlock = new PhpAnnotationBlock([
           
str_repeat('This sample annotation is on one line ', 7),
        ]);

       
$this->assertSame("/**\n" .
                         
" * This sample annotation is on one line This sample annotation is on one line This\n" .
                         
" * sample annotation is on one line This sample annotation is on one line This\n" .
                         
" * sample annotation is on one line This sample annotation is on one line This\n" .
                         
" * sample annotation is on one line\n" .
                         
" */", $annotationBlock->toString());
    }

    public function
testGetSeveralLinesWithNameToString()
    {
       
$annotationBlock = new PhpAnnotationBlock([
            new
PhpAnnotation('description', str_repeat('This sample annotation is on one line ', 7)),
        ]);

       
$this->assertSame("/**\n" .
                         
" * @description This sample annotation is on one line This sample annotation is on one line This sample annotation is on one line This sample annotation is on one line This sample annotation is on one line This sample annotation is on one line This sample annotation is on one line\n" .
                         
" */", $annotationBlock->toString());
    }

    public function
testAddChildString()
    {
       
$annotationBlock = new PhpAnnotationBlock([
           
'Foo',
        ]);

       
$annotationBlock->addChild('bar');

       
$this->assertCount(2, $annotationBlock->getChildren());
    }

    public function
testAddChildAnnotation()
    {
       
$annotationBlock = new PhpAnnotationBlock([
           
'Foo',
        ]);

       
$annotationBlock->addChild(new PhpAnnotation('date', '2015-06-02'));

       
$this->assertCount(2, $annotationBlock->getChildren());
    }

    public function
testAddChildWithException()
    {
       
$this->expectException(InvalidArgumentException::class);

       
$annotationBlock = new PhpAnnotationBlock([
           
'Foo',
        ]);

       
$annotationBlock->addChild(new PhpFunction('test'));
    }

    public function
testToStringSeveralLinesWithNameToString()
    {
       
$annotationBlock = new PhpAnnotationBlock([
            new
PhpAnnotation('description', str_repeat('This sample annotation is on one line ', 7)),
        ]);

       
$this->assertSame("/**\n" .
                         
" * @description This sample annotation is on one line This sample annotation is on one line This sample annotation is on one line This sample annotation is on one line This sample annotation is on one line This sample annotation is on one line This sample annotation is on one line\n" .
                         
" */", $annotationBlock->toString());
    }

    public function
testToStringChildAnnotation()
    {
       
$annotationBlock = new PhpAnnotationBlock();

       
$annotationBlock->addChild(new PhpAnnotation('Author', 'PhpTeam'));

       
$this->assertSame("/**\n * @Author PhpTeam\n */", $annotationBlock->toString());
    }

    public function
testToStringChildrendAnnotation()
    {
       
$annotationBlock = new PhpAnnotationBlock();

       
$annotationBlock
           
->addChild(new PhpAnnotation('date', '2015-01-01'))
            ->
addChild(new PhpAnnotation('author', 'PhpTeam'))
            ->
addChild('This annotation is useful!');

       
$this->assertSame("/**\n * @date 2015-01-01\n * @author PhpTeam\n * This annotation is useful!\n */", $annotationBlock->toString());
    }

    public function
testAddChildContentWithException()
    {
       
$this->expectException(InvalidArgumentException::class);

       
$annotationBlock = new PhpAnnotationBlock();

       
$annotationBlock->addChild([
           
'Toto',
        ]);
    }

    public function
testAddChildContentOk()
    {
       
$annotationBlock = new PhpAnnotationBlock();

       
$annotationBlock->addChild([
           
'content' => 'The content',
           
'name' => 'name',
        ]);

       
$this->assertCount(1, $annotationBlock->getChildren());
    }

    public function
testGetConstructWithException()
    {
       
$this->expectException(InvalidArgumentException::class);

        new
PhpAnnotationBlock([
            new
PhpFunction('Bar'),
        ]);
    }
}


For more information send a message to info at phpclasses dot org.