<?php 
 
namespace WsdlToPhp\PackageGenerator\Tests\DomHandler; 
 
use WsdlToPhp\PackageGenerator\Tests\TestCase; 
use WsdlToPhp\PackageGenerator\DomHandler\AbstractAttributeHandler; 
 
class ElementHandlerTest extends TestCase 
{ 
    /** 
     * 
     */ 
    public function testHasAttribute() 
    { 
        $domDocument = DomDocumentHandlerTest::bingInstance(); 
 
        // first element tag 
        $element = $domDocument->getElementByName('element'); 
        // first schema tag 
        $schema = $domDocument->getElementByName('schema'); 
 
        $this->assertTrue($element->hasAttribute('minOccurs')); 
        $this->assertTrue($element->hasAttribute('type')); 
        $this->assertFalse($element->hasAttribute('minoccurs')); 
        $this->assertTrue($schema->hasAttribute('targetNamespace')); 
        $this->assertFalse($schema->hasAttribute('targetnamespace')); 
    } 
    /** 
     * 
     */ 
    public function testGetAttribute() 
    { 
        $domDocument = DomDocumentHandlerTest::bingInstance(); 
 
        // first element tag 
        $element = $domDocument->getElementByName('element'); 
        // first schema tag 
        $schema = $domDocument->getElementByName('schema'); 
 
        $this->assertInstanceOf('\\WsdlToPhp\\PackageGenerator\\DomHandler\\AttributeHandler', $schema->getAttribute('elementFormDefault')); 
        $this->assertEmpty($schema->getAttribute('targetnamespace')); 
        $this->assertInstanceOf('\\WsdlToPhp\\PackageGenerator\\DomHandler\\AttributeHandler', $element->getAttribute('name')); 
        $this->assertEmpty($schema->getAttribute('foo')); 
    } 
    /** 
     * 
     */ 
    public function testGetElementChildren() 
    { 
        $domDocument = DomDocumentHandlerTest::bingInstance(); 
 
        // first schema tag 
        $schema = $domDocument->getElementByName('schema'); 
        // first element tag 
        $element = $domDocument->getElementByName('element'); 
 
        $this->assertNotEmpty($schema->getElementChildren()); 
        $this->assertContainsOnlyInstancesOf('\\WsdlToPhp\\PackageGenerator\\DomHandler\\AbstractElementHandler', $schema->getElementChildren()); 
        $this->assertEmpty($element->getElementChildren()); 
    } 
    /** 
     * 
     */ 
    public function testGetChildrenByName() 
    { 
        $domDocument = DomDocumentHandlerTest::bingInstance(); 
 
        // first sequence tag 
        $sequence = $domDocument->getElementByName('sequence'); 
 
        $childrenByName = $sequence->getChildrenByName('element'); 
        foreach ($childrenByName as $child) { 
            $this->assertSame('element', $child->getName()); 
        } 
    } 
    /** 
     * 
     */ 
    public function testGetChildByNameAndAttributes() 
    { 
        $domDocument = DomDocumentHandlerTest::bingInstance(); 
 
        // first message tag 
        $message = $domDocument->getElementByName('message'); 
        $part = $message->getChildByNameAndAttributes('part', array( 
            'name' => 'parameters', 
            'element' => 'tns:SearchRequest', 
        )); 
 
        $this->assertInstanceOf('\\WsdlToPhp\\PackageGenerator\\DomHandler\\ElementHandler', $part); 
        $this->assertSame('parameters', $part->getAttributeValue('name')); 
        $this->assertSame('SearchRequest', $part->getAttributeValue('element')); 
    } 
    /** 
     * 
     */ 
    public function testGetMaxOccursUnbounded() 
    { 
        $domDocument = DomDocumentHandlerTest::yandeDirectApiAdGroupsInstance(); 
 
        $element = $domDocument->getElementByNameAndAttributes('element', array( 
            'name' => 'CampaignIds', 
        )); 
 
        $this->assertSame('unbounded', $element->getMaxOccurs()); 
    } 
    /** 
     * 
     */ 
    public function testGetMaxOccursOne() 
    { 
        $domDocument = DomDocumentHandlerTest::yandeDirectApiAdGroupsInstance(); 
 
        $element = $domDocument->getElementByNameAndAttributes('element', array( 
            'name' => 'NegativeKeywords', 
        )); 
 
        $this->assertSame(AbstractAttributeHandler::DEFAULT_OCCURENCE_VALUE, $element->getMaxOccurs()); 
    } 
    /** 
     * 
     */ 
    public function testGetMinOccursNone() 
    { 
        $domDocument = DomDocumentHandlerTest::yandeDirectApiAdGroupsInstance(); 
 
        $element = $domDocument->getElementByNameAndAttributes('element', array( 
            'name' => 'NegativeKeywords', 
        )); 
 
        $this->assertSame(0, $element->getMinOccurs()); 
    } 
    /** 
     * 
     */ 
    public function testGetMinOccursOne() 
    { 
        $domDocument = DomDocumentHandlerTest::yandeDirectApiAdGroupsInstance(); 
 
        $element = $domDocument->getElementByNameAndAttributes('element', array( 
            'name' => 'Name', 
        )); 
 
        $this->assertSame(1, $element->getMinOccurs()); 
    } 
    /** 
     * 
     */ 
    public function testCanOccurSeveralTimes() 
    { 
        $domDocument = DomDocumentHandlerTest::yandeDirectApiAdGroupsInstance(); 
 
        $element = $domDocument->getElementByNameAndAttributes('element', array( 
            'name' => 'RegionIds', 
        )); 
 
        $this->assertTrue($element->canOccurSeveralTimes()); 
    } 
    /** 
     * 
     */ 
    public function testCanOccurOnlyOnce() 
    { 
        $domDocument = DomDocumentHandlerTest::yandeDirectApiAdGroupsInstance(); 
 
        $element = $domDocument->getElementByNameAndAttributes('element', array( 
            'name' => 'CampaignId', 
        )); 
 
        $this->assertTrue($element->canOccurOnlyOnce()); 
    } 
    /** 
     * 
     */ 
    public function testCanOccurOnlyOnceEvenForOptionalElement() 
    { 
        $domDocument = DomDocumentHandlerTest::yandeDirectApiAdGroupsInstance(); 
 
        $element = $domDocument->getElementByNameAndAttributes('element', array( 
            'name' => 'NegativeKeywords', 
        )); 
 
        $this->assertTrue($element->canOccurOnlyOnce()); 
    } 
    /** 
     * 
     */ 
    public function testIsOptional() 
    { 
        $domDocument = DomDocumentHandlerTest::yandeDirectApiAdGroupsInstance(); 
 
        $element = $domDocument->getElementByNameAndAttributes('element', array( 
            'name' => 'NegativeKeywords', 
        )); 
 
        $this->assertTrue($element->isOptional()); 
    } 
    /** 
     * 
     */ 
    public function testIsRequired() 
    { 
        $domDocument = DomDocumentHandlerTest::yandeDirectApiAdGroupsInstance(); 
 
        $element = $domDocument->getElementByNameAndAttributes('element', array( 
            'name' => 'Name', 
        )); 
 
        $this->assertTrue($element->isRequired()); 
    } 
    /** 
     * 
     */ 
    public function testIsNotRequired() 
    { 
        $domDocument = DomDocumentHandlerTest::yandeDirectApiAdGroupsInstance(); 
 
        $element = $domDocument->getElementByNameAndAttributes('element', array( 
            'name' => 'NegativeKeywords', 
        )); 
 
        $this->assertFalse($element->isRequired()); 
    } 
} 
 
 |