class UnboundAttr_Test(TestCase):
    def setUp(self):
        self.unboundattr = UnboundAttribute(Class.descAttr, Class)

    def test_creation(self):
        instance = Class()
        instance.descAttr = 5

        result = self.unboundattr(instance)

        self.assertEqual(result, 5)

    def test_attribute_forwarding(self):
        self.assertIs(self.unboundattr.__get__.__func__, Descriptor.__get__)
        self.assertIs(self.unboundattr.__set__.__func__, Descriptor.__set__)

    def test_setter(self):
        instance = Class()

        self.unboundattr.set(instance, 5)

        self.assertEqual(instance.descAttr, 5)

    def test_deleter(self):
        instance = Class()
        instance.descAttr = 5

        self.unboundattr.delete(instance)

        self.assertFalse(hasattr(instance, "descAttr"))
class UnboundAttr_Test(TestCase):
    def setUp(self):
        self.unboundattr = UnboundAttribute(Class.descAttr, Class)

    def test_creation(self):
        instance = Class()
        instance.descAttr = 5

        result = self.unboundattr(instance)

        self.assertEqual(result, 5)

    def test_attribute_forwarding(self):
        self.assertIs(self.unboundattr.__get__.__func__,
                      Descriptor.__get__)
        self.assertIs(self.unboundattr.__set__.__func__,
                      Descriptor.__set__)

    def test_setter(self):
        instance = Class()

        self.unboundattr.set(instance, 5)

        self.assertEqual(instance.descAttr, 5)

    def test_deleter(self):
        instance = Class()
        instance.descAttr = 5

        self.unboundattr.delete(instance)

        self.assertFalse(hasattr(instance, "descAttr"))