Beispiel #1
0
 def test_call(self):
     #Test normal behavior
     tll = Structs.LockableList(values=None)
     tll.extend([3, 4, 5])
     actual = []
     expected = [3, 4, 5]
     for value in tll:
         actual.append(value)
     self.assertListEqual(actual, expected)
     
     #Test locked behavior with pending addition
     tll = Structs.LockableList(values=None)
     tll.extend([3, 4, 5])
     tll.lock()
     tll.append(100)
     actual = []
     expected = [3, 4, 5]
     for value in tll:
         actual.append(value)
     self.assertListEqual(actual, expected)
     
     #Make sure the call is applying pending updates
     tll = Structs.LockableList(values=None)
     tll.extend([3, 4, 5])
     tll.lock(force_update=False)
     tll.append(100)
     tll.lock(force_update=False)
     actual = []
     expected = [3, 4, 5, 100]
     for value in tll:
         actual.append(value)
     self.assertListEqual(actual, expected)
Beispiel #2
0
 def test_lock(self):
     #Test locking an item
     tll = Structs.LockableList(values=None)
     tll.lock(set_lock=True, force_update=False)
     self.assertTrue(tll.is_locked)
     
     #Test unlocking an item with update
     tll = Structs.LockableList(values=None)
     tll.extend([3, 4, 5])
     tll.lock(set_lock=True, force_update=False)
     tll.remove(4)
     actual = len(tll)
     expected = 3
     self.assertTrue(actual == expected)
     tll.lock(set_lock=False, force_update=True)
     actual = len(tll)
     expected = 2
     self.assertTrue(actual == expected)
     
     #Test toggle lock
     tll = Structs.LockableList(values=None)
     self.assertTrue(not tll.is_locked)
     tll.lock()
     self.assertTrue(tll.is_locked)
     tll.lock()
     self.assertTrue(not tll.is_locked)
Beispiel #3
0
 def test_init(self):
     #Test empty constructor
     empty_tll = Structs.LockableList(values=None)
     actual = len(empty_tll)
     expected = 0
     self.assertTrue(actual == expected)
     
     #Test constructor with values
     values = [1, 2, 3, 'bob']
     tll = Structs.LockableList(values=values)
     actual = len(tll)
     expected = 4
     self.assertTrue(actual == expected)
Beispiel #4
0
 def test_clear(self):
     #Test normal clear, no lcoks
     tll = Structs.LockableList(values=None)
     tll.extend([3, 4, 5])
     tll.clear()
     self.assertFalse(tll)
     self.assertFalse(tll.pending_additions)
     self.assertFalse(tll.pending_removals)
     
     #Test with lock and pending updates
     tll = Structs.LockableList(values=None)
     tll.extend([3, 4, 5])
     tll.lock()
     tll.extend([100, 200])
     tll.clear()
     self.assertFalse(tll)
     self.assertFalse(tll.pending_additions)
     self.assertFalse(tll.pending_removals)
Beispiel #5
0
 def test_extend(self):
     #Test extend on unlocked
     tll = Structs.LockableList(values=None)
     tll.extend(["Yellow", "Blue"])
     actual = len(tll)
     expected = 2
     self.assertTrue(actual == expected)
                 
     #Test extend on locked- check _to_add and len()
     tll = Structs.LockableList(values=None)
     tll.lock(set_lock=True, force_update=False)
     tll.extend(["Yellow", "Red"])
     
     actual = len(tll.pending_additions)
     expected = 2
     self.assertTrue(actual == expected)
     
     actual = len(tll)
     expected = 0
     self.assertTrue(actual == expected)
Beispiel #6
0
 def test_sort(self):
     #Test sort for normal behavior
     tll = Structs.LockableList(values=None)
     tll.extend([5, 3, 4])
     tll.sort()
     actual = tll[:]
     expected = [3, 4, 5]
     self.assertListEqual(actual, expected)
     
     #Test sort with pending updates
     tll = Structs.LockableList(values=None)
     tll.extend([5, 3, 4])
     tll.lock(force_update=False)
     tll.extend([0, 1, 2])
     tll.sort()
     actual = tll[:]
     expected = [3, 4, 5]
     self.assertListEqual(actual, expected)
         #Then unlock and test again
     tll.lock(force_update=False)
     tll.sort()
     actual = tll[:]
     expected = [0, 1, 2, 3, 4, 5]
     self.assertListEqual(actual, expected)
Beispiel #7
0
 def test_remove(self):
     #Test remove on unlocked with value in set
     tll = Structs.LockableList(values=None)
     tll.extend([3, 4, 5])
     tll.remove(4)
     actual = len(tll)
     expected = 2
     self.assertTrue(actual == expected)
     
     #Test remove on unlocked with value NOT in set
     tll = Structs.LockableList(values=None)
     tll.extend([3, 4, 5])
     with self.assertRaises(ValueError):
         tll.remove(100)
     
     
     #Test remove of existing value on locked- check _to_add and len()
     tll = Structs.LockableList(values=None)
     tll.extend([3, 4, 5])
     tll.lock(set_lock=True, force_update=False)
     tll.remove(4)
     actual = len(tll)
     expected = 3
     self.assertTrue(actual == expected)
Beispiel #8
0
 def test_properties(self):
     #Check HasPendingUpdates, is_locked, ChangedSinceLastCall
     tll = Structs.LockableList(values=None)
     
     tll.lock(set_lock=True, force_update=False)
     self.assertFalse(tll.is_dirty)
     self.assertTrue(tll.is_locked)
     
     tll.lock(set_lock=False, force_update=False)
     tll.extend([5, 3, 4])
         #Extending while unlocked shouldn't queue updates
     self.assertFalse(tll.is_dirty)
     self.assertFalse(tll.is_locked)
     
     tll.lock(set_lock=True, force_update=False)
     tll.extend([0, 1, 2])
         #Now they should be queued
     self.assertTrue(tll.is_dirty)
     self.assertTrue(tll.is_locked)