def test_setClassNameSetAttribute(self):
        '''
            test_setClassNameSetAttribute - Test setting/changing/removing the class attribute using setAttribute and friends.
        '''
        tag = AdvancedTag('div')

        assert "class=" not in tag.getHTML() , "Expected to not find 'class=' when none is set. Got: " + tag.getHTML()

        # Try initial set

        tag.setAttribute("class", "cheese is good")

        assert tag.className == "cheese is good" , "Expected className to equal 'cheese is good' after setAttribute('class', ...). Got: " + repr(tag.className)

        assert 'class="cheese is good"' in str(tag) , "Expected to find class=\"cheese is good\" after setAttribute('class', ...). Got: " + str(tag)

        assert tag.classList == ['cheese', 'is', 'good'] , "Expected classList to be set after setAttribute('class', ...). Got: " + repr(tag.classList)

        # Try changing

        tag.setAttribute("class", "hello world")

        assert tag.className == "hello world" , "Expected to be able to change class using setAttribute('class', ...). Got: " + repr(tag.className)

        assert 'class="hello world"' in str(tag) , "Expected to be able to change class using setAttribute('class', ...)  and have it show up in html attribute. Got: " + str(tag)

        assert tag.classList == ['hello', 'world'] , "Expected to be able to change class using setAttribute('class', ...), but update not reflected in classList. Got: " + repr(tag.classList)

        # Try removing, both through removeAttribute and setAttribute('class', '')

        tag1 = tag.cloneNode()

        tag2 = tag.cloneNode()

        tag1.removeAttribute('class')

        assert tag1.className == '' , "Expected to be able to clear class attribute using removeAttribute. Got: " + repr(tag1.className)

        assert "class=" not in str(tag1) , "Expected class attribute to not be on HTML representation after removeAttribute. Got: " + str(tag1)

        assert tag1.classList == [] , "Expected to be able to clear class attribut with removeAttributee, but did not update classList to empty list. Got: " + repr(tag1.classList)

        # Ensure cloneNode unlinked class attribute
        assert tag2.className == 'hello world', 'Expected clearing tag1 (cloned node of tag) to not affect tag2 (another cloned node of tag). className was effected.'
        assert tag2.classList == ['hello', 'world'], 'Expected clearing tag1 (cloned node of tag) to not affect tag2 (another cloned node of tag). classList was effected.'
        assert 'class="hello world"' in str(tag2), 'Expected clearing tag1 (cloned node of tag) to not affect tag2 (another cloned node of tag). class on string of html was effected.'

        tag2.setAttribute('class', '')

        assert tag2.className == '' , "Expected to be able to clear class attribute using setAttribute('class', ''). Got: " + repr(tag2.className)

        assert "class=" not in str(tag2) , "Expected class attribute to not be on HTML representation after setAttribute('class', ''). Got: " + str(tag2)

        assert tag2.classList == [] , "Expected to be able to clear class attribut with setAttribute('class', '')e, but did not update classList to empty list. Got: " + repr(tag2.classList)
    def test_setClassNameString(self):
        '''
            test_setClassNameString - Test setting the "className" attribute on an AdvancedTag and it being reflected.
        '''

        tag = AdvancedTag('div')

        assert "class=" not in tag.getHTML() , "Expected to not find 'class=' when none is set. Got: " + tag.getHTML()

        assert 'class' not in tag.attributes , 'Expected "class" to not be "in" attributes'

        # Try initial set

        tag.className = "cheese is good"

        assert 'class' in tag.attributes , 'Expected "class" to be "in" attributes'


        assert tag.className == "cheese is good" , "Expected className to equal 'cheese is good' after assign on className attribute. Got: " + repr(tag.className)

        assert 'class="cheese is good"' in str(tag) , "Expected to find class=\"cheese is good\" after set on className attribute. Got: " + str(tag)

        assert tag.classList == ['cheese', 'is', 'good'] , "Expected classList to be set after setting on className attribute. Got: " + repr(tag.classList)

        assert 'class' in tag.attributes.keys() ,  'Expected "class" to be in .keys()'

        # Try changing

        tag.className = "hello world"

        assert tag.className == "hello world" , "Expected to be able to change className attribute. Got: " + repr(tag.className)

        assert 'class="hello world"' in str(tag) , "Expected to be able to change className and have it show up in html attribute. Got: " + str(tag)

        assert tag.classList == ['hello', 'world'] , "Expected to be able to change className attribute, but update not reflected in classList. Got: " + repr(tag.classList)

        # Try removing

        tag.className = ''

        assert tag.className == '' , "Expected to be able to clear className attribute. Got: " + repr(tag.className)

        assert "class=" not in str(tag) , "Expected class attribute to not be on HTML representation after clearing className. Got: " + str(tag)

        assert tag.classList == [] , "Expected to be able to clear className attribute, but did not update classList to empty list. Got: " + repr(tag.classList)
    def test_setClassNameSetAttribute(self):
        '''
            test_setClassNameSetAttribute - Test setting/changing/removing the class attribute using setAttribute and friends.
        '''
        tag = AdvancedTag('div')

        assert "class=" not in tag.getHTML(
        ), "Expected to not find 'class=' when none is set. Got: " + tag.getHTML(
        )

        # Try initial set

        tag.setAttribute("class", "cheese is good")

        assert tag.className == "cheese is good", "Expected className to equal 'cheese is good' after setAttribute('class', ...). Got: " + repr(
            tag.className)

        assert 'class="cheese is good"' in str(
            tag
        ), "Expected to find class=\"cheese is good\" after setAttribute('class', ...). Got: " + str(
            tag)

        assert tag.classList == [
            'cheese', 'is', 'good'
        ], "Expected classList to be set after setAttribute('class', ...). Got: " + repr(
            tag.classList)

        # Try changing

        tag.setAttribute("class", "hello world")

        assert tag.className == "hello world", "Expected to be able to change class using setAttribute('class', ...). Got: " + repr(
            tag.className)

        assert 'class="hello world"' in str(
            tag
        ), "Expected to be able to change class using setAttribute('class', ...)  and have it show up in html attribute. Got: " + str(
            tag)

        assert tag.classList == [
            'hello', 'world'
        ], "Expected to be able to change class using setAttribute('class', ...), but update not reflected in classList. Got: " + repr(
            tag.classList)

        # Try removing, both through removeAttribute and setAttribute('class', '')

        tag1 = tag.cloneNode()

        tag2 = tag.cloneNode()

        tag1.removeAttribute('class')

        assert tag1.className == '', "Expected to be able to clear class attribute using removeAttribute. Got: " + repr(
            tag1.className)

        assert "class=" not in str(
            tag1
        ), "Expected class attribute to not be on HTML representation after removeAttribute. Got: " + str(
            tag1)

        assert tag1.classList == [], "Expected to be able to clear class attribut with removeAttributee, but did not update classList to empty list. Got: " + repr(
            tag1.classList)

        # Ensure cloneNode unlinked class attribute
        assert tag2.className == 'hello world', 'Expected clearing tag1 (cloned node of tag) to not affect tag2 (another cloned node of tag). className was effected.'
        assert tag2.classList == [
            'hello', 'world'
        ], 'Expected clearing tag1 (cloned node of tag) to not affect tag2 (another cloned node of tag). classList was effected.'
        assert 'class="hello world"' in str(
            tag2
        ), 'Expected clearing tag1 (cloned node of tag) to not affect tag2 (another cloned node of tag). class on string of html was effected.'

        tag2.setAttribute('class', '')

        assert tag2.className == '', "Expected to be able to clear class attribute using setAttribute('class', ''). Got: " + repr(
            tag2.className)

        assert "class=" not in str(
            tag2
        ), "Expected class attribute to not be on HTML representation after setAttribute('class', ''). Got: " + str(
            tag2)

        assert tag2.classList == [], "Expected to be able to clear class attribut with setAttribute('class', '')e, but did not update classList to empty list. Got: " + repr(
            tag2.classList)
    def test_setClassNameString(self):
        '''
            test_setClassNameString - Test setting the "className" attribute on an AdvancedTag and it being reflected.
        '''

        tag = AdvancedTag('div')

        assert "class=" not in tag.getHTML(
        ), "Expected to not find 'class=' when none is set. Got: " + tag.getHTML(
        )

        assert 'class' not in tag.attributes, 'Expected "class" to not be "in" attributes'

        # Try initial set

        tag.className = "cheese is good"

        assert 'class' in tag.attributes, 'Expected "class" to be "in" attributes'

        assert tag.className == "cheese is good", "Expected className to equal 'cheese is good' after assign on className attribute. Got: " + repr(
            tag.className)

        assert 'class="cheese is good"' in str(
            tag
        ), "Expected to find class=\"cheese is good\" after set on className attribute. Got: " + str(
            tag)

        assert tag.classList == [
            'cheese', 'is', 'good'
        ], "Expected classList to be set after setting on className attribute. Got: " + repr(
            tag.classList)

        assert 'class' in tag.attributes.keys(
        ), 'Expected "class" to be in .keys()'

        # Try changing

        tag.className = "hello world"

        assert tag.className == "hello world", "Expected to be able to change className attribute. Got: " + repr(
            tag.className)

        assert 'class="hello world"' in str(
            tag
        ), "Expected to be able to change className and have it show up in html attribute. Got: " + str(
            tag)

        assert tag.classList == [
            'hello', 'world'
        ], "Expected to be able to change className attribute, but update not reflected in classList. Got: " + repr(
            tag.classList)

        # Try removing

        tag.className = ''

        assert tag.className == '', "Expected to be able to clear className attribute. Got: " + repr(
            tag.className)

        assert "class=" not in str(
            tag
        ), "Expected class attribute to not be on HTML representation after clearing className. Got: " + str(
            tag)

        assert tag.classList == [], "Expected to be able to clear className attribute, but did not update classList to empty list. Got: " + repr(
            tag.classList)