<?php 
/** 
 * Created by PhpStorm. 
 * Package: org\majkel\tcpdfwarper 
 * User: Micha? (majkel) Kowalik <[email protected]> 
 * Date: 12/28/2014 
 * Time: 18:17 
 */ 
 
namespace org\majkel\tcpdfwarper; 
 
require_once 'AbstractTestCase.php'; 
 
/** 
 * Class AbstractOpTest 
 * @package org\majkel\tcpdfwarper 
 * @coversDefaultClass \org\majkel\tcpdfwarper\AbstractOp 
 */ 
class AbstractOpTest extends AbstractTestCase { 
 
    const CLS = '\org\majkel\tcpdfwarper\AbstractOp'; 
 
    /** 
     * @return \org\majkel\tcpdfwarper\AbstractOp 
     */ 
    private function getObject() { 
        return $this->mock(self::CLS) 
                ->getDefaultArguments(array(), array()) 
                ->getMethod(null); 
    } 
 
    /** 
     * @covers ::render 
     */ 
    public function testRender() { 
        $obj = $this->getObject() 
                ->put($this->once()) 
                ->new(); 
        $obj->render(); 
    } 
 
    /** 
     * @covers ::write 
     */ 
    public function testWrite() { 
        $obj = $this->getObject() 
                ->put($this->once()) 
                ->new(); 
        $obj->write(); 
    } 
 
    /** 
     * @covers ::put 
     */ 
    public function testPut() { 
        $pdf = $this->getTcpdfMock(); 
        $pdf->expects($this->once()) 
                ->method('AddSpotColor') 
                ->with(1, 2, 3, 4, 5); 
        $obj = $this->getObject() 
                ->getTcpdf($pdf) 
                ->getArguments([], [1, 2, 3, 4, 5]) 
                ->getMethod('AddSpotColor') 
                ->new(); 
        $obj->put(); 
    } 
 
    /** 
     * @covers ::__construct 
     */ 
    public function testConstruct() { 
        $pdf = new \stdClass; 
        $obj = $this->getObject()->new($pdf); 
        self::assertSame($pdf, $obj->getTcpdf()); 
    } 
 
    /** 
     * @covers ::setTcpdf 
     * @covers ::getTcpdf 
     */ 
    public function testSettersTcpdf() { 
        $obj = $this->getObject()->new(); 
 
        $obj->setTcpdf(33); 
        self::assertNull($obj->getTcpdf()); 
 
        $pdf = new \stdClass; 
        $obj->setTcpdf($pdf); 
        self::assertSame($pdf, $obj->getTcpdf()); 
 
        $obj->setTcpdf(false); 
        self::assertSame($pdf, $obj->getTcpdf()); 
    } 
 
    /** 
     * @covers ::assertArgExists 
     */ 
    public function testAssertArgExists() { 
        $obj = $this->getObject()->new(); 
        $obj->setProperty(1); 
        $this->reflect($obj)->assertArgExists('property'); 
        $this->success(); 
    } 
 
    /** 
     * @expectedException \org\majkel\tcpdfwarper\MissingArgException 
     * @expectedExceptionMessage Argument `property` is missing 
     * @covers ::assertArgExists 
     */ 
    public function testAssertArgExistsException() { 
        $obj = $this->getObject()->new(); 
        $this->reflect($obj)->assertArgExists('property'); 
    } 
 
    /** 
     * @covers ::assertArgsExist 
     */ 
    public function testAssertArgsExist() { 
        $obj = $this->getObject()->new(); 
        $obj->property = true; 
        $this->reflect($obj)->assertArgsExist(array('property')); 
        $this->success(); 
    } 
 
    /** 
     * @expectedException \org\majkel\tcpdfwarper\MissingArgException 
     * @expectedExceptionMessage Argument `property` is missing 
     * @covers ::assertArgsExist 
     */ 
    public function testAssertArgsExistException() { 
        $obj = $this->getObject()->new(); 
        $this->reflect($obj)->assertArgsExist(array('property')); 
    } 
 
    /** 
     * @covers ::setArguments 
     */ 
    public function testSetArguments() { 
        $obj = $this->getObject()->new(); 
        $obj->setArguments(array( 
            'property' => 1 
        )); 
        self::assertSame(1, $obj->property); 
    } 
 
    /** 
     * @covers ::getArguments 
     */ 
    public function testGetArguments() { 
        $obj = $this->mock(self::CLS) 
                ->getMethod() 
                ->getDefaultArguments(array(), array( 
                    'a' => 1, 
                    'b' => 1, 
                    'c' => 1, 
                )) 
                ->new(); 
        $obj->d = 2; 
        $obj->c = 2; 
        $obj->b = 2; 
        $actualArgs = $obj->getArguments(); 
        self::assertSame(array( 
                'a' => 1, 
                'b' => 2, 
                'c' => 2, 
                'd' => 2, 
        ), $actualArgs); 
    } 
 
    /** 
     * @covers ::__set 
     * @covers ::__get 
     * @covers ::__call 
     * @covers ::__isset 
     * @covers ::__unset 
     */ 
    public function testMagicArguments() { 
        $obj = $this->getObject()->new(); 
 
        self::assertFalse(isset($obj->property)); 
 
        $obj->property = 1; 
 
        self::assertSame(1, $obj->property); 
        self::assertTrue(isset($obj->property)); 
 
        unset($obj->property); 
 
        self::assertFalse(isset($obj->property)); 
    } 
 
    public function testMagicArgumentsSetters() { 
        $obj = $this->getObject()->new(); 
 
        self::assertNull($obj->getProperty()); 
 
        $obj->setProperty(1); 
 
        self::assertSame(1, $obj->getProperty()); 
 
        $obj->setProperty(); 
 
        self::assertNull($obj->getProperty()); 
    } 
 
    public function testSetPropCamelCase() { 
        $obj = $this->getObject()->new(); 
 
        $obj->propCamelCase = 1; 
 
        self::assertSame(1, $obj->getPropCamelCase()); 
    } 
 
    public function testSetMethodCamelCase() { 
        $obj = $this->getObject()->new(); 
 
        $obj->setPropCamelCase(1); 
 
        self::assertSame(1, $obj->propCamelCase); 
    } 
 
    /** 
     * @expectedException \org\majkel\tcpdfwarper\MissingMethodException 
     * @expectedExceptionMessage Call to undefined method `doesNotExists` 
     */ 
    public function testMagicArgumentsSettersException() { 
        $obj = $this->getObject()->new(); 
        $obj->doesNotExists(); 
    } 
} 
 
 |