Skip to content
Snippets Groups Projects
test.py 1.91 KiB
Newer Older
import unittest
import os, sys
## make sure this instance of pyqtgraph gets imported first
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

## all tests should be defined with this class so we have the option to tweak it later.
class TestCase(unittest.TestCase):
        
    def testLRU(self):
        from pyqtgraph.lru_cache import LRUCache
        lru = LRUCache(2, 1)

        def CheckLru():
            lru[1] = 1
            lru[2] = 2
            lru[3] = 3

            self.assertEqual(2, len(lru))
            self.assertSetEqual(set([2, 3]), set(lru.keys()))
            self.assertSetEqual(set([2, 3]), set(lru.values()))

            lru[2] = 2
            self.assertSetEqual(set([2, 3]), set(lru.values()))
            
            lru[1] = 1
            self.assertSetEqual(set([2, 1]), set(lru.values()))

            #Iterates from the used in the last access to others based on access time.
            self.assertEqual([(2, 2), (1, 1)], list(lru.iteritems(access_time=True)))
            lru[2] = 2
            self.assertEqual([(1, 1), (2, 2)], list(lru.iteritems(access_time=True)))

            del lru[2]
            self.assertEqual([(1, 1), ], list(lru.iteritems(access_time=True)))

            lru[2] = 2
            self.assertEqual([(1, 1), (2, 2)], list(lru.iteritems(access_time=True)))

            _a = lru[1]
            self.assertEqual([(2, 2), (1, 1)], list(lru.iteritems(access_time=True)))

            _a = lru[2]
            self.assertEqual([(1, 1), (2, 2)], list(lru.iteritems(access_time=True)))

            self.assertEqual(lru.get(2), 2)
            self.assertEqual(lru.get(3), None)
            self.assertEqual([(1, 1), (2, 2)], list(lru.iteritems(access_time=True)))

            lru.clear()
            self.assertEqual([], list(lru.iteritems()))

        CheckLru()

        # Check it twice...
        CheckLru()

if __name__ == '__main__':
    unittest.main()