@@ -6441,6 +6441,150 @@ def test_namespace(self):
64416441 o .y = 1
64426442 self .run_worker (self ._test_namespace , o )
64436443
6444+ @classmethod
6445+ def _test_set_operator_symbols (cls , obj ):
6446+ case = unittest .TestCase ()
6447+ obj .update (['a' , 'b' , 'c' ])
6448+ case .assertEqual (len (obj ), 3 )
6449+ case .assertIn ('a' , obj )
6450+ case .assertNotIn ('d' , obj )
6451+ result = obj | {'d' , 'e' }
6452+ case .assertSetEqual (result , {'a' , 'b' , 'c' , 'd' , 'e' })
6453+ result = {'d' , 'e' } | obj
6454+ case .assertSetEqual (result , {'a' , 'b' , 'c' , 'd' , 'e' })
6455+ obj |= {'d' , 'e' }
6456+ case .assertSetEqual (obj , {'a' , 'b' , 'c' , 'd' , 'e' })
6457+ case .assertIsInstance (obj , multiprocessing .managers .SetProxy )
6458+
6459+ obj .clear ()
6460+ obj .update (['a' , 'b' , 'c' ])
6461+ result = {'a' , 'b' , 'd' } - obj
6462+ case .assertSetEqual (result , {'d' })
6463+ result = obj - {'a' , 'b' }
6464+ case .assertSetEqual (result , {'c' })
6465+ obj -= {'a' , 'b' }
6466+ case .assertSetEqual (obj , {'c' })
6467+ case .assertIsInstance (obj , multiprocessing .managers .SetProxy )
6468+
6469+ obj .clear ()
6470+ obj .update (['a' , 'b' , 'c' ])
6471+ result = {'b' , 'c' , 'd' } ^ obj
6472+ case .assertSetEqual (result , {'a' , 'd' })
6473+ result = obj ^ {'b' , 'c' , 'd' }
6474+ case .assertSetEqual (result , {'a' , 'd' })
6475+ obj ^= {'b' , 'c' , 'd' }
6476+ case .assertSetEqual (obj , {'a' , 'd' })
6477+ case .assertIsInstance (obj , multiprocessing .managers .SetProxy )
6478+
6479+ obj .clear ()
6480+ obj .update (['a' , 'b' , 'c' ])
6481+ result = obj & {'b' , 'c' , 'd' }
6482+ case .assertSetEqual (result , {'b' , 'c' })
6483+ result = {'b' , 'c' , 'd' } & obj
6484+ case .assertSetEqual (result , {'b' , 'c' })
6485+ obj &= {'b' , 'c' , 'd' }
6486+ case .assertSetEqual (obj , {'b' , 'c' })
6487+ case .assertIsInstance (obj , multiprocessing .managers .SetProxy )
6488+
6489+ obj .clear ()
6490+ obj .update (['a' , 'b' , 'c' ])
6491+ case .assertSetEqual (set (obj ), {'a' , 'b' , 'c' })
6492+
6493+ @classmethod
6494+ def _test_set_operator_methods (cls , obj ):
6495+ case = unittest .TestCase ()
6496+ obj .add ('d' )
6497+ case .assertIn ('d' , obj )
6498+
6499+ obj .clear ()
6500+ obj .update (['a' , 'b' , 'c' ])
6501+ copy_obj = obj .copy ()
6502+ case .assertSetEqual (copy_obj , obj )
6503+ obj .remove ('a' )
6504+ case .assertNotIn ('a' , obj )
6505+ case .assertRaises (KeyError , obj .remove , 'a' )
6506+
6507+ obj .clear ()
6508+ obj .update (['a' ])
6509+ obj .discard ('a' )
6510+ case .assertNotIn ('a' , obj )
6511+ obj .discard ('a' )
6512+ case .assertNotIn ('a' , obj )
6513+ obj .update (['a' ])
6514+ popped = obj .pop ()
6515+ case .assertNotIn (popped , obj )
6516+
6517+ obj .clear ()
6518+ obj .update (['a' , 'b' , 'c' ])
6519+ result = obj .intersection ({'b' , 'c' , 'd' })
6520+ case .assertSetEqual (result , {'b' , 'c' })
6521+ obj .intersection_update ({'b' , 'c' , 'd' })
6522+ case .assertSetEqual (obj , {'b' , 'c' })
6523+
6524+ obj .clear ()
6525+ obj .update (['a' , 'b' , 'c' ])
6526+ result = obj .difference ({'a' , 'b' })
6527+ case .assertSetEqual (result , {'c' })
6528+ obj .difference_update ({'a' , 'b' })
6529+ case .assertSetEqual (obj , {'c' })
6530+
6531+ obj .clear ()
6532+ obj .update (['a' , 'b' , 'c' ])
6533+ result = obj .symmetric_difference ({'b' , 'c' , 'd' })
6534+ case .assertSetEqual (result , {'a' , 'd' })
6535+ obj .symmetric_difference_update ({'b' , 'c' , 'd' })
6536+ case .assertSetEqual (obj , {'a' , 'd' })
6537+
6538+ @classmethod
6539+ def _test_set_comparisons (cls , obj ):
6540+ case = unittest .TestCase ()
6541+ obj .update (['a' , 'b' , 'c' ])
6542+ result = obj .union ({'d' , 'e' })
6543+ case .assertSetEqual (result , {'a' , 'b' , 'c' , 'd' , 'e' })
6544+ case .assertTrue (obj .isdisjoint ({'d' , 'e' }))
6545+ case .assertFalse (obj .isdisjoint ({'a' , 'd' }))
6546+
6547+ case .assertTrue (obj .issubset ({'a' , 'b' , 'c' , 'd' }))
6548+ case .assertFalse (obj .issubset ({'a' , 'b' }))
6549+ case .assertLess (obj , {'a' , 'b' , 'c' , 'd' })
6550+ case .assertLessEqual (obj , {'a' , 'b' , 'c' })
6551+
6552+ case .assertTrue (obj .issuperset ({'a' , 'b' }))
6553+ case .assertFalse (obj .issuperset ({'a' , 'b' , 'd' }))
6554+ case .assertGreater (obj , {'a' })
6555+ case .assertGreaterEqual (obj , {'a' , 'b' })
6556+
6557+ def test_set (self ):
6558+ o = self .manager .set ()
6559+ self .run_worker (self ._test_set_operator_symbols , o )
6560+ o = self .manager .set ()
6561+ self .run_worker (self ._test_set_operator_methods , o )
6562+ o = self .manager .set ()
6563+ self .run_worker (self ._test_set_comparisons , o )
6564+
6565+ def test_set_init (self ):
6566+ o = self .manager .set ({'a' , 'b' , 'c' })
6567+ self .assertSetEqual (o , {'a' , 'b' , 'c' })
6568+ o = self .manager .set (["a" , "b" , "c" ])
6569+ self .assertSetEqual (o , {"a" , "b" , "c" })
6570+ o = self .manager .set ({"a" : 1 , "b" : 2 , "c" : 3 })
6571+ self .assertSetEqual (o , {"a" , "b" , "c" })
6572+ self .assertRaises (RemoteError , self .manager .set , 1234 )
6573+
6574+ def test_set_contain_all_method (self ):
6575+ o = self .manager .set ()
6576+ set_methods = {
6577+ '__and__' , '__class_getitem__' , '__contains__' , '__iand__' , '__ior__' ,
6578+ '__isub__' , '__iter__' , '__ixor__' , '__len__' , '__or__' , '__rand__' ,
6579+ '__ror__' , '__rsub__' , '__rxor__' , '__sub__' , '__xor__' ,
6580+ '__ge__' , '__gt__' , '__le__' , '__lt__' ,
6581+ 'add' , 'clear' , 'copy' , 'difference' , 'difference_update' , 'discard' ,
6582+ 'intersection' , 'intersection_update' , 'isdisjoint' , 'issubset' ,
6583+ 'issuperset' , 'pop' , 'remove' , 'symmetric_difference' ,
6584+ 'symmetric_difference_update' , 'union' , 'update' ,
6585+ }
6586+ self .assertLessEqual (set_methods , set (dir (o )))
6587+
64446588
64456589class TestNamedResource (unittest .TestCase ):
64466590 @only_run_in_spawn_testsuite ("spawn specific test." )
0 commit comments