#!/usr/bin/env python # -*- coding: utf-8 -*- """ Unit tests for gluon.cache """ import sys import os if os.path.isdir('gluon'): sys.path.append(os.path.realpath('gluon')) else: sys.path.append(os.path.realpath('../')) import unittest from storage import Storage from cache import CacheInRam, CacheOnDisk oldcwd = None def setUpModule(): global oldcwd if oldcwd is None: oldcwd = os.getcwd() if not os.path.isdir('gluon'): os.chdir(os.path.realpath('../../')) def tearDownModule(): global oldcwd if oldcwd: os.chdir(oldcwd) oldcwd = None class TestCache(unittest.TestCase): def testCacheInRam(self): # defaults to mode='http' cache = CacheInRam() self.assertEqual(cache('a', lambda: 1, 0), 1) self.assertEqual(cache('a', lambda: 2, 100), 1) cache.clear('b') self.assertEqual(cache('a', lambda: 2, 100), 1) cache.clear('a') self.assertEqual(cache('a', lambda: 2, 100), 2) cache.clear() self.assertEqual(cache('a', lambda: 3, 100), 3) self.assertEqual(cache('a', lambda: 4, 0), 4) def testCacheOnDisk(self): # defaults to mode='http' s = Storage({'application': 'admin', 'folder': 'applications/admin'}) cache = CacheOnDisk(s) self.assertEqual(cache('a', lambda: 1, 0), 1) self.assertEqual(cache('a', lambda: 2, 100), 1) cache.clear('b') self.assertEqual(cache('a', lambda: 2, 100), 1) cache.clear('a') self.assertEqual(cache('a', lambda: 2, 100), 2) cache.clear() self.assertEqual(cache('a', lambda: 3, 100), 3) self.assertEqual(cache('a', lambda: 4, 0), 4) if __name__ == '__main__': setUpModule() # pre-python-2.7 unittest.main() tearDownModule()