class ComponentHtmlInstanceTests(TestCase):
    
    def test_create_tag_without_content_and_without_attributes(self):
        self.component = ComponentHtml('x')
        self.assertEquals('<x></x>', self.component.as_html())
    
    def test_create_tag_with_content_and_without_attributes(self):
        self.component = ComponentHtml('x', 'y')
        self.assertEquals('<x>y</x>', self.component.as_html())
    
    def test_create_tag_without_content_and_with_attributes(self):
        self.component = ComponentHtml('x', '', a='b')
        self.assertEquals('<x a="b"></x>', self.component.as_html())
        self.component = ComponentHtml('x', '', a='b', c='d')
        self.assertEquals('<x a="b" c="d"></x>', self.component.as_html())
    
    def test_create_tag_with_content_and_with_attributes(self):
        self.component = ComponentHtml('x', 'y', a='b')
        self.assertEquals('<x a="b">y</x>', self.component.as_html())
        self.component = ComponentHtml('x', 'y', a='b', c='d')
        self.assertEquals('<x a="b" c="d">y</x>', self.component.as_html())
        
    def test_get_return_value_of_the_attribute(self):
        self.component = ComponentHtml('x', 'y', a='b')
        self.assertEquals('b', self.component.get('a'))
        
    def test_get_return_value_of_a_inexistent_attribute_must_return_None(self):
        self.component = ComponentHtml('x', 'y')
        self.assertEquals(None, self.component.get('a'))
        
    def test_set_value_of_the_attribute(self):
        self.component = ComponentHtml('x', 'y', a='b')
        self.component.set('a', 'c')
        self.assertEquals('c', self.component.get('a'))