root/trunk/tests/definitions/AttributeDefinitionTestCase.php

Revision 142, 3.1 kB (checked in by mikey, 3 weeks ago)

upgrade to new namespace separator

Line 
1 <?php
2 /**
3  * Test for AttributeDefinition.
4  *
5  * @author  Frank Kleine <mikey@xjconf.net>
6  */
7 Mock::generatePartial('net\xjconf\definitions\AttributeDefinition', 'PartialMockAttributeDefinition', array('getValueConverter'));
8 Mock::generate('net\xjconf\Tag', 'MockTag');
9 Mock::generate('net\xjconf\converters\ValueConverter', 'MockValueConverter');
10 /**
11  * Test for AttributeDefinition.
12  *
13  * @package     XJConf
14  * @subpackage  test_definitions
15  */
16 class AttributeDefinitionTestCase extends UnitTestCase
17 {
18     /**
19      * instance to test
20      *
21      * @var  AttributeDefinition
22      */
23     protected $attributeDefinition;
24     /**
25      * a mocked tag
26      *
27      * @var  Tag
28      */
29     protected $tag;
30     
31     /**
32      * set up test resources
33      */
34     public function setUp()
35     {
36         $this->attributeDefinition = new PartialMockAttributeDefinition();
37         $this->tag                 = new MockTag();
38     }
39     
40     /**
41      * test if construction works
42      */
43     public function testConstruct()
44     {
45         $this->attributeDefinition->__construct('test');
46         $this->assertEqual($this->attributeDefinition->getName(), 'test');
47         $this->assertEqual($this->attributeDefinition->getType(), 'string');
48         
49         $this->attributeDefinition->__construct('test', 'int');
50         $this->assertEqual($this->attributeDefinition->getName(), 'test');
51         $this->assertEqual($this->attributeDefinition->getType(), 'int');
52         
53         $this->expectException('net\xjconf\exceptions\InvalidTagDefinitionException');
54         $this->attributeDefinition->__construct('');
55     }
56     
57     /**
58      * test that the setter method is as expected
59      */
60     public function testSetterMethod()
61     {
62         $this->attributeDefinition->__construct('test');
63         $this->assertEqual($this->attributeDefinition->getSetterMethod($this->tag), 'setTest');
64         $this->attributeDefinition->setSetterMethod('setFoo');
65         $this->assertEqual($this->attributeDefinition->getSetterMethod($this->tag), 'setFoo');
66     }
67     
68     /**
69      * test that converting the value works as expected
70      */
71     public function testConvertValue()
72     {
73         $this->tag->setReturnValue('hasAttribute', false);
74         $this->tag->setReturnValueAt(2, 'hasAttribute', true);
75         $this->tag->setReturnValue('getAttribute', null);
76         
77         $this->attributeDefinition->__construct('test');
78         $this->assertNull($this->attributeDefinition->convertValue($this->tag));
79         
80         $this->attributeDefinition->setDefault('foo');
81         $mockValueConverter = new MockValueConverter();
82         $mockValueConverter->setReturnValue('convertValue', 'bar');
83         $mockValueConverter->expectCallcount('convertValue', 1);
84         $this->attributeDefinition->setReturnValue('getValueConverter', $mockValueConverter);
85         $this->assertEqual($this->attributeDefinition->convertValue($this->tag), 'bar');
86         
87         $this->attributeDefinition->setRequired(true);
88         $this->expectException('net\xjconf\exceptions\MissingAttributeException');
89         $this->attributeDefinition->convertValue($this->tag);
90     }
91 }
92 ?>
Note: See TracBrowser for help on using the browser.