<?php 
 
namespace WsdlToPhp\PackageGenerator\Tests\Model; 
 
use WsdlToPhp\PackageGenerator\Tests\TestCase; 
use WsdlToPhp\PackageGenerator\Model\Struct; 
 
class StructTest extends TestCase 
{ 
    /** 
     * @param string $name 
     * @param bool $isStruct 
     * @return Struct 
     */ 
    public static function instance($name, $isStruct) 
    { 
        return new Struct(self::getBingGeneratorInstance(), $name, $isStruct); 
    } 
    /** 
     * 
     */ 
    public function testGetContextualPartEnum() 
    { 
        $struct = self::instance('Foo', false); 
        $struct->setIsRestriction(true); 
        $this->assertEquals('EnumType', $struct->getContextualPart()); 
        $struct->setIsStruct(false); 
        $this->assertEquals('EnumType', $struct->getContextualPart()); 
        $struct->setIsStruct(true); 
        $this->assertEquals('EnumType', $struct->getContextualPart()); 
    } 
    /** 
     * 
     */ 
    public function testGetDocSubPackagesEnum() 
    { 
        $struct = self::instance('Foo', false); 
        $struct->setIsRestriction(true); 
        $this->assertContains(Struct::DOC_SUB_PACKAGE_ENUMERATIONS, $struct->getDocSubPackages()); 
        $struct->setIsStruct(false); 
        $this->assertContains(Struct::DOC_SUB_PACKAGE_ENUMERATIONS, $struct->getDocSubPackages()); 
        $struct->setIsStruct(true); 
        $this->assertContains(Struct::DOC_SUB_PACKAGE_ENUMERATIONS, $struct->getDocSubPackages()); 
    } 
    /** 
     * 
     */ 
    public function testGetContextualPartStruct() 
    { 
        $struct = self::instance('Foo', false); 
        $this->assertEquals('StructType', $struct->getContextualPart()); 
        $struct->setIsRestriction(false); 
        $this->assertEquals('StructType', $struct->getContextualPart()); 
        $struct->setIsStruct(true); 
        $this->assertEquals('StructType', $struct->getContextualPart()); 
    } 
    /** 
     * 
     */ 
    public function testGetDocSubPackagesStruct() 
    { 
        $struct = self::instance('Foo', false); 
        $this->assertContains(Struct::DOC_SUB_PACKAGE_STRUCTS, $struct->getDocSubPackages()); 
        $struct->setIsRestriction(false); 
        $this->assertContains(Struct::DOC_SUB_PACKAGE_STRUCTS, $struct->getDocSubPackages()); 
    } 
    public function testGetCountAttributes() 
    { 
        $struct = self::instance('Foo', false); 
        $struct->addAttribute('bar', 'string'); 
        $struct->addAttribute('bool', 'bool'); 
 
        $this->assertSame(2, $struct->getAttributes()->count()); 
    } 
    /** 
     * 
     */ 
    public function testIsArrayTrue() 
    { 
        $struct = self::instance('ArrayFoo', false); 
        $struct->addAttribute('ArrayOfId', 'array'); 
        $this->assertTrue($struct->isArray()); 
    } 
    /** 
     * 
     */ 
    public function testIsArrayFalseForName() 
    { 
        $struct = self::instance('Foo', false); 
        $struct->addAttribute('ArrayOfId', 'array'); 
        $this->assertFalse($struct->isArray()); 
    } 
    /** 
     * 
     */ 
    public function testIsArrayFalseForMultipleAttributes() 
    { 
        $struct = self::instance('ArrayFoo', false); 
        $struct->addAttribute('ArrayOfId', 'array'); 
        $struct->addAttribute('ArrayOfString', 'array'); 
        $this->assertFalse($struct->isArray()); 
    } 
    /** 
     * 
     */ 
    public function testGetValue() 
    { 
        $struct = self::instance('Foo', true); 
        $struct->addValue('id'); 
        $struct->addValue('name'); 
        $struct->addValue('_key'); 
        $this->assertInstanceOf('\\WsdlToPhp\\PackageGenerator\\Model\\StructValue', $struct->getValue('id')); 
        $this->assertNotInstanceOf('\\WsdlToPhp\\PackageGenerator\\Model\\StructValue', $struct->getValue('_id')); 
    } 
    /** 
     * 
     */ 
    public function testGetAttibute() 
    { 
        $struct = self::instance('Foo', true); 
        $struct->addAttribute('id', 'int'); 
        $struct->addAttribute('name', 'string'); 
        $struct->addAttribute('_key', 'string'); 
        $this->assertInstanceOf('\\WsdlToPhp\\PackageGenerator\\Model\\StructAttribute', $struct->getAttribute('id')); 
        $this->assertNotInstanceOf('\\WsdlToPhp\\PackageGenerator\\Model\\StructAttribute', $struct->getAttribute('_id')); 
    } 
    /** 
     * @expectedException \InvalidArgumentException 
     */ 
    public function testAddEmptyAttributeNameWithException() 
    { 
        $struct = self::instance('Foo', true); 
        $struct->addAttribute('', 'string'); 
    } 
    /** 
     * @expectedException \InvalidArgumentException 
     */ 
    public function testAddEmptyAttributeTypeWithException() 
    { 
        $struct = self::instance('Foo', true); 
        $struct->addAttribute('bar', ''); 
    } 
} 
 
 |