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)
class DescriptorDecorator_WrappingADataDescriptorWithoutSet(TestCase):
    def setUp(self):
        self.decor = DescriptorDecoratorBase(mocks.Stubs.DataDescriptorWithoutSet())
        self.instance = mocks.ClassWithDescriptor(self.decor)

    def test_set_raises_AttributeError(self):
        with self.assertRaises(AttributeError):
            self.decor.__set__(self.instance, 5)

    def test_instance_set_raises_AttributeError(self):
        with self.assertRaises(AttributeError):
            self.instance.attr = 5
class DescriptorDecorator_WrappingADataDescriptorWithoutSet(TestCase):
    def setUp(self):
        self.decor = DescriptorDecoratorBase(mocks.Stubs.DataDescriptorWithoutSet())
        self.instance = mocks.ClassWithDescriptor(self.decor)

    def test_set_raises_AttributeError(self):
        with self.assertRaises(AttributeError):
            self.decor.__set__(self.instance, 5)

    def test_instance_set_raises_AttributeError(self):
        with self.assertRaises(AttributeError):
            self.instance.attr = 5
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)
Beispiel #6
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)
Beispiel #9
0
    def test_lift_descriptor_new_descriptor(self):
        unboundattr = UnboundAttribute(Class.descAttr, Class)
        wrapper_descriptor = DescriptorDecoratorBase(Class.descAttr)

        new_unboundattr = unboundattr.lift_descriptor(wrapper_descriptor)

        self.assertEqual(new_unboundattr.descriptor, wrapper_descriptor)
    def test_self_lifting(self):
        wrapped = mocks.Descriptor()
        wrapper = DescriptorDecoratorBase(None)

        result = _lifted_desc_results(wrapped, wrapper, None, object)

        self.assertIs(result, wrapper)
    def test_Unbounded_lifting(self):
        wrapped = Binding(None)
        wrapper = DescriptorDecoratorBase(wrapped)

        result = _lifted_desc_results(wrapped, wrapper, None, object)

        self.assertIs(result, wrapper)
Beispiel #12
0
    def test_lift_descriptor_set(self):
        instance = Class()
        unboundattr = UnboundAttribute(Class.descAttr, Class)
        wrapper_descriptor = DescriptorDecoratorBase(Class.descAttr)

        new_unboundattr = unboundattr.lift_descriptor(wrapper_descriptor)
        new_unboundattr.set(instance, 5)

        self.assertEqual(instance.descAttr, 5)
    def test_other(self):
        wrapped = mocks.Descriptor()
        instance = mocks.ClassWithDescriptor(wrapped)
        instance.attr = 5
        wrapper = DescriptorDecoratorBase(wrapped)

        result = _lifted_desc_results(wrapped, wrapper, instance, type(instance))

        self.assertEqual(result, 5)
    def test_redirects_to_wrapped_methods(self):
        wrapper = DescriptorDecoratorBase(DescriptorDecorator_Base_Test.Wrapped())

        self.assertTrue(wrapper.other_method())
 def setUp(self):
     self.decor = DescriptorDecoratorBase(Binding(mocks.Descriptor()))
     self.Class = type(mocks.ClassWithDescriptor(self.decor))
     self.instance = self.Class()
     self.instance.attr = 5
Beispiel #16
0
 def setUp(self):
     self.decor = DescriptorDecoratorBase(mocks.Binding(mocks.Descriptor()))
     self.Class = type(mocks.ClassWithDescriptor(self.decor))
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)
 def setUp(self):
     self.decor = DescriptorDecoratorBase(mocks.Stubs.DataDescriptorWithoutGet())
     self.instance = mocks.ClassWithDescriptor(self.decor)
     self.Class = type(self.instance)
 def setUp(self):
     self.decor = DescriptorDecoratorBase(mocks.Stubs.DataDescriptorWithoutGet())
     self.instance = mocks.ClassWithDescriptor(self.decor)
     self.Class = type(self.instance)
 def setUp(self):
     self.decor = DescriptorDecoratorBase(mocks.Binding(mocks.Descriptor()))
     self.Class = type(mocks.ClassWithDescriptor(self.decor))
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)
 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_redirects_to_wrapped_methods(self):
        wrapper = DescriptorDecoratorBase(DescriptorDecorator_Base_Test.Wrapped())

        self.assertTrue(wrapper.other_method())
    def test_doesnt_redirect_to_nonexistant_methods(self):
        wrapper = DescriptorDecoratorBase(DescriptorDecorator_Base_Test.Wrapped())

        with self.assertRaises(AttributeError):
            wrapper.non_existant_method()
    def test_doesnt_redirect_to_nonexistant_methods(self):
        wrapper = DescriptorDecoratorBase(DescriptorDecorator_Base_Test.Wrapped())

        with self.assertRaises(AttributeError):
            wrapper.non_existant_method()
 def setUp(self):
     self.wrapped = mocks.Stubs.NonDataDescriptor()
     self.decor = DescriptorDecoratorBase(self.wrapped)
     self.instance = mocks.ClassWithDescriptor(self.decor)
     self.Class = type(self.instance)
Beispiel #27
0
    def setUp(self):
        unboundattr = UnboundAttribute(Class.descAttr, Class)
        self.wrapper_descriptor = DescriptorDecoratorBase(Class.descAttr)

        self.new_unboundattr = unboundattr.lift_descriptor(
            self.wrapper_descriptor)