17db96d56Sopenharmony_ciimport unittest
27db96d56Sopenharmony_ciimport copy
37db96d56Sopenharmony_ciimport pickle
47db96d56Sopenharmony_cifrom unittest.mock import sentinel, DEFAULT
57db96d56Sopenharmony_ci
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_ciclass SentinelTest(unittest.TestCase):
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ci    def testSentinels(self):
107db96d56Sopenharmony_ci        self.assertEqual(sentinel.whatever, sentinel.whatever,
117db96d56Sopenharmony_ci                         'sentinel not stored')
127db96d56Sopenharmony_ci        self.assertNotEqual(sentinel.whatever, sentinel.whateverelse,
137db96d56Sopenharmony_ci                            'sentinel should be unique')
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ci    def testSentinelName(self):
177db96d56Sopenharmony_ci        self.assertEqual(str(sentinel.whatever), 'sentinel.whatever',
187db96d56Sopenharmony_ci                         'sentinel name incorrect')
197db96d56Sopenharmony_ci
207db96d56Sopenharmony_ci
217db96d56Sopenharmony_ci    def testDEFAULT(self):
227db96d56Sopenharmony_ci        self.assertIs(DEFAULT, sentinel.DEFAULT)
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci    def testBases(self):
257db96d56Sopenharmony_ci        # If this doesn't raise an AttributeError then help(mock) is broken
267db96d56Sopenharmony_ci        self.assertRaises(AttributeError, lambda: sentinel.__bases__)
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci    def testPickle(self):
297db96d56Sopenharmony_ci        for proto in range(pickle.HIGHEST_PROTOCOL+1):
307db96d56Sopenharmony_ci            with self.subTest(protocol=proto):
317db96d56Sopenharmony_ci                pickled = pickle.dumps(sentinel.whatever, proto)
327db96d56Sopenharmony_ci                unpickled = pickle.loads(pickled)
337db96d56Sopenharmony_ci                self.assertIs(unpickled, sentinel.whatever)
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ci    def testCopy(self):
367db96d56Sopenharmony_ci        self.assertIs(copy.copy(sentinel.whatever), sentinel.whatever)
377db96d56Sopenharmony_ci        self.assertIs(copy.deepcopy(sentinel.whatever), sentinel.whatever)
387db96d56Sopenharmony_ci
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_ciif __name__ == '__main__':
417db96d56Sopenharmony_ci    unittest.main()
42