Ticket #19872: test_cached_property.patch

File test_cached_property.patch, 1.3 KB (added by Simon Percivall, 12 years ago)
  • tests/regressiontests/utils/functional.py

    diff --git a/tests/regressiontests/utils/functional.py b/tests/regressiontests/utils/functional.py
    index 90a6f08..b9615e8 100644
    a b  
    11from django.utils import unittest
    2 from django.utils.functional import lazy, lazy_property
     2from django.utils.functional import lazy, lazy_property, cached_property
    33
    44
    55class FunctionalTestCase(unittest.TestCase):
    class FunctionalTestCase(unittest.TestCase):  
    3737
    3838        self.assertRaises(NotImplementedError, lambda: A().do)
    3939        self.assertEqual(B().do, 'DO IT')
     40   
     41    def test_cached_property(self):
     42        """
     43        Test that cached_property caches its value,
     44        and that it behaves like a property
     45        """
     46
     47        class A(object):
     48
     49            @cached_property
     50            def value(self):
     51                return 1, object()
     52
     53        a = A()
     54
     55        # check that it is cached
     56        self.assertEqual(a.value, a.value)
     57
     58        # check that it returns the right thing
     59        self.assertEqual(a.value[0], 1)
     60
     61        # check that state isn't shared between instances
     62        a2 = A()
     63        self.assertNotEqual(a.value, a2.value)
     64
     65        # check that it behaves like a property when there's no instance
     66        self.assertIsInstance(A.value, cached_property)
Back to Top