thirdparty/google_appengine/lib/django/tests/regressiontests/cache/tests.py
changeset 2866 a04b1e4126c4
parent 2864 2e0b0af889be
child 2868 9f7f269383f7
equal deleted inserted replaced
2864:2e0b0af889be 2866:a04b1e4126c4
     1 # Unit tests for cache framework
       
     2 # Uses whatever cache backend is set in the test settings file.
       
     3 
       
     4 from django.core.cache import cache
       
     5 import time, unittest
       
     6 
       
     7 # functions/classes for complex data type tests        
       
     8 def f():
       
     9     return 42
       
    10 class C:
       
    11     def m(n):
       
    12         return 24
       
    13 
       
    14 class Cache(unittest.TestCase):
       
    15     def test_simple(self):
       
    16         # simple set/get
       
    17         cache.set("key", "value")
       
    18         self.assertEqual(cache.get("key"), "value")
       
    19 
       
    20     def test_non_existent(self):
       
    21         # get with non-existent keys
       
    22         self.assertEqual(cache.get("does not exist"), None)
       
    23         self.assertEqual(cache.get("does not exist", "bang!"), "bang!")
       
    24 
       
    25     def test_get_many(self):
       
    26         # get_many
       
    27         cache.set('a', 'a')
       
    28         cache.set('b', 'b')
       
    29         cache.set('c', 'c')
       
    30         cache.set('d', 'd')
       
    31         self.assertEqual(cache.get_many(['a', 'c', 'd']), {'a' : 'a', 'c' : 'c', 'd' : 'd'})
       
    32         self.assertEqual(cache.get_many(['a', 'b', 'e']), {'a' : 'a', 'b' : 'b'})
       
    33 
       
    34     def test_delete(self):
       
    35         # delete
       
    36         cache.set("key1", "spam")
       
    37         cache.set("key2", "eggs")
       
    38         self.assertEqual(cache.get("key1"), "spam")
       
    39         cache.delete("key1")
       
    40         self.assertEqual(cache.get("key1"), None)
       
    41         self.assertEqual(cache.get("key2"), "eggs")
       
    42 
       
    43     def test_has_key(self):
       
    44         # has_key
       
    45         cache.set("hello", "goodbye")
       
    46         self.assertEqual(cache.has_key("hello"), True)
       
    47         self.assertEqual(cache.has_key("goodbye"), False)
       
    48 
       
    49     def test_data_types(self):
       
    50         # test data types
       
    51         stuff = {
       
    52             'string'    : 'this is a string',
       
    53             'int'       : 42,
       
    54             'list'      : [1, 2, 3, 4],
       
    55             'tuple'     : (1, 2, 3, 4),
       
    56             'dict'      : {'A': 1, 'B' : 2},
       
    57             'function'  : f,
       
    58             'class'     : C,
       
    59         }
       
    60         for (key, value) in stuff.items():
       
    61             cache.set(key, value)
       
    62             self.assertEqual(cache.get(key), value)
       
    63     
       
    64     def test_expiration(self):
       
    65         # expiration
       
    66         cache.set('expire', 'very quickly', 1)
       
    67         time.sleep(2)
       
    68         self.assertEqual(cache.get("expire"), None)
       
    69 
       
    70 if __name__ == '__main__':
       
    71     unittest.main()