class DescriptorDecorator_WrappingABindingDescriptor(TestCase):
    def setUp(self):
        self.decor = DescriptorDecoratorBase(mocks.Binding(mocks.Descriptor()))
        self.Class = type(mocks.ClassWithDescriptor(self.decor))

    def test_get_from_class_returns_UnboundAttribute(self):
        result = self.decor.__get__(None, self.Class)

        self.assertIsInstance(result, UnboundAttribute)

    def test_UnboundAttribute_lifts_descriptor(self):
        result = self.decor.__get__(None, self.Class)

        self.assertIs(result.descriptor, self.decor)
Esempio n. 2
0
class DescriptorDecorator_WrappingABindingDescriptor(TestCase):
    def setUp(self):
        self.decor = DescriptorDecoratorBase(mocks.Binding(mocks.Descriptor()))
        self.Class = type(mocks.ClassWithDescriptor(self.decor))

    def test_get_from_class_returns_UnboundAttribute(self):
        result = self.decor.__get__(None, self.Class)

        self.assertIsInstance(result, UnboundAttribute)

    def test_UnboundAttribute_lifts_descriptor(self):
        result = self.decor.__get__(None, self.Class)

        self.assertIs(result.descriptor, self.decor)
class DescriptorDecorator_WrappingADataDescriptorWithoutGet(TestCase):
    def setUp(self):
        self.decor = DescriptorDecoratorBase(mocks.Stubs.DataDescriptorWithoutGet())
        self.instance = mocks.ClassWithDescriptor(self.decor)
        self.Class = type(self.instance)

    def test_get_from_instance_returns_self(self):
        result = self.decor.__get__(self.instance, self.Class)

        self.assertIs(result, self.decor)

    def test_get_from_class_returns_self(self):
        result = self.decor.__get__(None, self.Class)

        self.assertIs(result, self.decor)
class DescriptorDecorator_WrappingADataDescriptorWithoutGet(TestCase):
    def setUp(self):
        self.decor = DescriptorDecoratorBase(mocks.Stubs.DataDescriptorWithoutGet())
        self.instance = mocks.ClassWithDescriptor(self.decor)
        self.Class = type(self.instance)

    def test_get_from_instance_returns_self(self):
        result = self.decor.__get__(self.instance, self.Class)

        self.assertIs(result, self.decor)

    def test_get_from_class_returns_self(self):
        result = self.decor.__get__(None, self.Class)

        self.assertIs(result, self.decor)
class DescriptorDecorator_WrappingANonDataDescriptor_Test(TestCase):
    def setUp(self):
        self.wrapped = mocks.Stubs.NonDataDescriptor()
        self.decor = DescriptorDecoratorBase(self.wrapped)
        self.instance = mocks.ClassWithDescriptor(self.decor)
        self.Class = type(self.instance)

    def test_get_from_class(self):
        self.assertIs(self.decor, self.decor.__get__(None, self.Class))

    def test_get_from_class_redirects(self):
        self.decor.__get__(None, self.Class)

        self.assertTrue(self.wrapped.get_called)

    def test_get_from_instance(self):
        # The NonDataDescriptor returns self regardless of whether there's an
        #  instance - typical non-data descriptors ignore instance
        self.assertIs(self.decor, self.decor.__get__(self.instance, self.Class))

    def test_get_from_instance_redirects(self):
        self.decor.__get__(self.instance, self.Class)

        self.assertTrue(self.wrapped.get_called)

    def test_set_adds_to_instance(self):
        self.decor.__set__(self.instance, 5)

        self.assertEqual(self.instance.__dict__['attr'], 5)

    def test_delete_fails(self):
        with self.assertRaises(AttributeError):
            self.decor.__delete__(self.instance)
class DescriptorDecorator_WrappingANonDataDescriptor_Test(TestCase):
    def setUp(self):
        self.wrapped = mocks.Stubs.NonDataDescriptor()
        self.decor = DescriptorDecoratorBase(self.wrapped)
        self.instance = mocks.ClassWithDescriptor(self.decor)
        self.Class = type(self.instance)

    def test_get_from_class(self):
        self.assertIs(self.decor, self.decor.__get__(None, self.Class))

    def test_get_from_class_redirects(self):
        self.decor.__get__(None, self.Class)

        self.assertTrue(self.wrapped.get_called)

    def test_get_from_instance(self):
        # The NonDataDescriptor returns self regardless of whether there's an
        #  instance - typical non-data descriptors ignore instance
        self.assertIs(self.decor, self.decor.__get__(self.instance, self.Class))

    def test_get_from_instance_redirects(self):
        self.decor.__get__(self.instance, self.Class)

        self.assertTrue(self.wrapped.get_called)

    def test_set_adds_to_instance(self):
        self.decor.__set__(self.instance, 5)

        self.assertEqual(self.instance.__dict__['attr'], 5)

    def test_delete_fails(self):
        with self.assertRaises(AttributeError):
            self.decor.__delete__(self.instance)
Esempio n. 7
0
class DescriptorDecorator_WrappingADataDescriptor_Test(TestCase):
    def setUp(self):
        self.wrapped = mocks.Stubs.FullDataDescriptor()
        self.decor = DescriptorDecoratorBase(self.wrapped)
        self.instance = mocks.ClassWithDescriptor(self.decor)
        self.Class = type(self.instance)

    def test_get_from_class_lifts_to_self(self):
        self.assertIs(self.decor, self.decor.__get__(None, self.Class))

    def test_get_from_class_redirects(self):
        self.decor.__get__(None, self.Class)

        self.assertTrue(self.wrapped.get_called)

    def test_get_from_instance(self):
        result = self.decor.__get__(self.instance, self.Class)

        self.assertEqual(result, self.wrapped.__get__(self.instance,
                                                      self.Class))

    def test_get_from_instance_redirects(self):
        self.decor.__get__(self.instance, self.Class)

        self.assertTrue(self.wrapped.get_called)

    def test_set_does_not_add_to_instance(self):
        self.decor.__set__(self.instance, 5)

        self.assertFalse('attr' in self.instance.__dict__)

    def test_set_redirects(self):
        self.decor.__set__(self.instance, 5)

        self.assertTrue(self.wrapped.set_called)

    def test_delete_redirects(self):
        self.decor.__delete__(self.instance)

        self.assertTrue(self.wrapped.delete_called)
class DescriptorDecorator_WrappingADataDescriptor_Test(TestCase):
    def setUp(self):
        self.wrapped = mocks.Stubs.FullDataDescriptor()
        self.decor = DescriptorDecoratorBase(self.wrapped)
        self.instance = mocks.ClassWithDescriptor(self.decor)
        self.Class = type(self.instance)

    def test_get_from_class_lifts_to_self(self):
        self.assertIs(self.decor, self.decor.__get__(None, self.Class))

    def test_get_from_class_redirects(self):
        self.decor.__get__(None, self.Class)

        self.assertTrue(self.wrapped.get_called)

    def test_get_from_instance(self):
        result = self.decor.__get__(self.instance, self.Class)

        self.assertEqual(result, self.wrapped.__get__(self.instance, self.Class))

    def test_get_from_instance_redirects(self):
        self.decor.__get__(self.instance, self.Class)

        self.assertTrue(self.wrapped.get_called)

    def test_set_does_not_add_to_instance(self):
        self.decor.__set__(self.instance, 5)

        self.assertFalse('attr' in self.instance.__dict__)

    def test_set_redirects(self):
        self.decor.__set__(self.instance, 5)

        self.assertTrue(self.wrapped.set_called)

    def test_delete_redirects(self):
        self.decor.__delete__(self.instance)

        self.assertTrue(self.wrapped.delete_called)