17db96d56Sopenharmony_ci"Test rpc, coverage 20%."
27db96d56Sopenharmony_ci
37db96d56Sopenharmony_cifrom idlelib import rpc
47db96d56Sopenharmony_ciimport unittest
57db96d56Sopenharmony_ci
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_ciclass CodePicklerTest(unittest.TestCase):
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ci    def test_pickle_unpickle(self):
117db96d56Sopenharmony_ci        def f(): return a + b + c
127db96d56Sopenharmony_ci        func, (cbytes,) = rpc.pickle_code(f.__code__)
137db96d56Sopenharmony_ci        self.assertIs(func, rpc.unpickle_code)
147db96d56Sopenharmony_ci        self.assertIn(b'test_rpc.py', cbytes)
157db96d56Sopenharmony_ci        code = rpc.unpickle_code(cbytes)
167db96d56Sopenharmony_ci        self.assertEqual(code.co_names, ('a', 'b', 'c'))
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_ci    def test_code_pickler(self):
197db96d56Sopenharmony_ci        self.assertIn(type((lambda:None).__code__),
207db96d56Sopenharmony_ci                      rpc.CodePickler.dispatch_table)
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_ci    def test_dumps(self):
237db96d56Sopenharmony_ci        def f(): pass
247db96d56Sopenharmony_ci        # The main test here is that pickling code does not raise.
257db96d56Sopenharmony_ci        self.assertIn(b'test_rpc.py', rpc.dumps(f.__code__))
267db96d56Sopenharmony_ci
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ciif __name__ == '__main__':
297db96d56Sopenharmony_ci    unittest.main(verbosity=2)
30