Advertisement
Uno-Dan

Cache

Dec 1st, 2019
1,418
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.84 KB | None | 0 0
  1. import unittest
  2.  
  3. from os import path, remove
  4. from copy import deepcopy
  5. from cache import Cache
  6. import random
  7. import string
  8.  
  9.  
  10. class TestCache(unittest.TestCase):
  11.  
  12.     def setUp(self):
  13.         """Set up test fixtures, if any."""
  14.         self.test_file = 'test.json'
  15.         self.default_data = {
  16.             'node1': {
  17.                 'test1': 123,
  18.                 'test2': 123,
  19.             },
  20.             'node2': {
  21.                 'options': {
  22.                     'background': 'white',
  23.                     'foreground': 'black',
  24.                 },
  25.                 'settings': {
  26.                     'user': 'Dan',
  27.                 }
  28.             }
  29.         }
  30.         self.cache = Cache(**self.default_data)
  31.  
  32.     def tearDown(self):
  33.         """Tear down test fixtures, if any."""
  34.         self.cache.destroy()
  35.         if path.exists(self.test_file):
  36.             remove(self.test_file)
  37.  
  38.     def test_destroy(self):
  39.         # Action
  40.         self.assertEqual(self.cache.get('node1/test1'), 123)
  41.         self.cache.destroy()
  42.  
  43.         # Asert
  44.         self.assertEqual(self.cache.get(), {})
  45.  
  46.     def test_set(self):
  47.         # Action
  48.         self.cache.set('abc1', 10)
  49.         # Asert
  50.         self.assertEqual(self.cache.get('abc1'), 10)
  51.  
  52.         # Action
  53.         self.cache.set({'abc1': 10})
  54.         # Asert
  55.         self.assertEqual(self.cache.get('abc1'), 10)
  56.  
  57.         # Action
  58.         self.cache.set({'abc2': {'xyx': {'test1': 100}}})
  59.         # Asert
  60.         self.assertEqual(self.cache.get('abc2'), {'xyx': {'test1': 100}})
  61.  
  62.         # Action
  63.         self.cache.set('abc3', {'xyx': {'test1': 100}})
  64.         # Asert
  65.         self.assertEqual(self.cache.get('abc3'), {'xyx': {'test1': 100}})
  66.  
  67.     def test_save(self):
  68.         # Action
  69.         self.cache.save(self.test_file)
  70.         self.cache.destroy()
  71.         self.assertEqual(self.cache.get(), {})
  72.         self.cache.load(self.test_file)
  73.  
  74.         # Asert
  75.         self.assertEqual(self.cache.get('node1/test1'), 123)
  76.  
  77.     def test_load(self):
  78.         # Action
  79.         self.cache.save(self.test_file)
  80.         self.cache.destroy()
  81.         self.cache.load(self.test_file)
  82.  
  83.         # Asert
  84.         self.assertEqual(self.cache.get('node1/test1'), 123)
  85.  
  86.     def test_copy(self):
  87.         # Action
  88.         new_cache = self.cache.copy()
  89.  
  90.         # Asert
  91.         self.assertTrue(self.cache is not new_cache)
  92.         self.assertEqual(self.cache.get(), new_cache.get())
  93.  
  94.     def test_merge(self):
  95.         # Assume
  96.         self.cache.destroy()
  97.         self.cache.set('abc/test1', 123)
  98.         new_cache = Cache('abc/test2', 456)
  99.  
  100.         merged_cache = Cache(**{'abc': {'test1': 123, 'test2': 456}})
  101.  
  102.         # Action
  103.         self.cache.merge(new_cache)
  104.  
  105.         # Asert
  106.         self.assertTrue(self.cache is not new_cache)
  107.         self.assertEqual(self.cache.get(), merged_cache.get())
  108.  
  109.         # Assume
  110.         self.cache.destroy()
  111.         self.cache.set('abc/test1', 123)
  112.         new_cache = Cache({'abc': 100})
  113.  
  114.         merged_cache = Cache({'abc': 100})
  115.  
  116.         # Action
  117.         self.cache.merge(new_cache)
  118.  
  119.         # Asert
  120.         self.assertTrue(self.cache is not new_cache)
  121.         self.assertEqual(self.cache.get(), merged_cache.get())
  122.  
  123.     def test_remove(self):
  124.         # Action
  125.         self.assertEqual(self.cache.get('node1/test1'), 123)
  126.         self.cache.remove('node1/test1')
  127.         self.cache.remove('node2/options/background')
  128.  
  129.         # Asert
  130.         self.assertIsNone(self.cache.get('node1/test1'))
  131.         self.assertIsNone(self.cache.get('node2/options/background'))
  132.  
  133.     def test_exists(self):
  134.         # Action
  135.         self.assertEqual(self.cache.get('node1/test1'), 123)
  136.  
  137.         # Asert
  138.         self.assertTrue(self.cache.exists('node1/test1'))
  139.  
  140.     def test_not_exists(self):
  141.         # Asert
  142.         key = ''.join(random.choice(string.ascii_lowercase) for i in range(10))
  143.  
  144.         self.assertFalse(self.cache.exists(key))
  145.  
  146.     def test_has_nodes(self):
  147.         # Asert
  148.         self.assertTrue(self.cache.has_nodes())
  149.         self.cache.destroy()
  150.         self.assertFalse(self.cache.has_nodes())
  151.  
  152.     def test_equality(self):
  153.         # Action
  154.         new_cache = Cache(**deepcopy(self.cache.get()))
  155.  
  156.         # Asert
  157.         a, b = self.cache, new_cache
  158.         self.assertEqual(a, b)
  159.         self.assertEqual(b, a)
  160.         self.assertTrue(a == b)
  161.         self.assertTrue(b == a)
  162.         self.assertFalse(a != b)
  163.         self.assertFalse(b != a)
  164.  
  165.     def test_inequality(self):
  166.         # Action
  167.         new_cache = Cache(**self.default_data)
  168.         new_cache.remove('node1')
  169.  
  170.         # Asert
  171.         a, b = self.cache, new_cache
  172.         self.assertNotEqual(a, b)
  173.         self.assertNotEqual(b, a)
  174.         self.assertFalse(a == b)
  175.         self.assertFalse(b == a)
  176.         self.assertTrue(a != b)
  177.         self.assertTrue(b != a)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement