123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- #
- # BitBake Tests for Copy-on-Write (cow.py)
- #
- # SPDX-License-Identifier: GPL-2.0-only
- #
- # Copyright 2006 Holger Freyther <freyther@handhelds.org>
- #
- import unittest
- import os
- class COWTestCase(unittest.TestCase):
- """
- Test case for the COW module from mithro
- """
- def testGetSet(self):
- """
- Test and set
- """
- from bb.COW import COWDictBase
- a = COWDictBase.copy()
- self.assertEqual(False, 'a' in a)
- a['a'] = 'a'
- a['b'] = 'b'
- self.assertEqual(True, 'a' in a)
- self.assertEqual(True, 'b' in a)
- self.assertEqual('a', a['a'] )
- self.assertEqual('b', a['b'] )
- def testCopyCopy(self):
- """
- Test the copy of copies
- """
- from bb.COW import COWDictBase
- # create two COW dict 'instances'
- b = COWDictBase.copy()
- c = COWDictBase.copy()
- # assign some keys to one instance, some keys to another
- b['a'] = 10
- b['c'] = 20
- c['a'] = 30
- # test separation of the two instances
- self.assertEqual(False, 'c' in c)
- self.assertEqual(30, c['a'])
- self.assertEqual(10, b['a'])
- # test copy
- b_2 = b.copy()
- c_2 = c.copy()
- self.assertEqual(False, 'c' in c_2)
- self.assertEqual(10, b_2['a'])
- b_2['d'] = 40
- self.assertEqual(False, 'd' in c_2)
- self.assertEqual(True, 'd' in b_2)
- self.assertEqual(40, b_2['d'])
- self.assertEqual(False, 'd' in b)
- self.assertEqual(False, 'd' in c)
- c_2['d'] = 30
- self.assertEqual(True, 'd' in c_2)
- self.assertEqual(True, 'd' in b_2)
- self.assertEqual(30, c_2['d'])
- self.assertEqual(40, b_2['d'])
- self.assertEqual(False, 'd' in b)
- self.assertEqual(False, 'd' in c)
- # test copy of the copy
- c_3 = c_2.copy()
- b_3 = b_2.copy()
- b_3_2 = b_2.copy()
- c_3['e'] = 4711
- self.assertEqual(4711, c_3['e'])
- self.assertEqual(False, 'e' in c_2)
- self.assertEqual(False, 'e' in b_3)
- self.assertEqual(False, 'e' in b_3_2)
- self.assertEqual(False, 'e' in b_2)
- b_3['e'] = 'viel'
- self.assertEqual('viel', b_3['e'])
- self.assertEqual(4711, c_3['e'])
- self.assertEqual(False, 'e' in c_2)
- self.assertEqual(True, 'e' in b_3)
- self.assertEqual(False, 'e' in b_3_2)
- self.assertEqual(False, 'e' in b_2)
- def testCow(self):
- from bb.COW import COWDictBase
- c = COWDictBase.copy()
- c['123'] = 1027
- c['other'] = 4711
- c['d'] = { 'abc' : 10, 'bcd' : 20 }
- copy = c.copy()
- self.assertEqual(1027, c['123'])
- self.assertEqual(4711, c['other'])
- self.assertEqual({'abc':10, 'bcd':20}, c['d'])
- self.assertEqual(1027, copy['123'])
- self.assertEqual(4711, copy['other'])
- self.assertEqual({'abc':10, 'bcd':20}, copy['d'])
- # cow it now
- copy['123'] = 1028
- copy['other'] = 4712
- copy['d']['abc'] = 20
- self.assertEqual(1027, c['123'])
- self.assertEqual(4711, c['other'])
- self.assertEqual({'abc':10, 'bcd':20}, c['d'])
- self.assertEqual(1028, copy['123'])
- self.assertEqual(4712, copy['other'])
- self.assertEqual({'abc':20, 'bcd':20}, copy['d'])
|