@@ -1762,6 +1762,76 @@ def test_file_closes_if_lookup_error_raised(self):
1762
1762
1763
1763
file ().close .assert_called ()
1764
1764
1765
+ def test_copy (self ):
1766
+ orig = codecs .lookup ('utf-8' )
1767
+ dup = copy .copy (orig )
1768
+ self .assertIsNot (dup , orig )
1769
+ self .assertEqual (dup , orig )
1770
+ self .assertTrue (orig ._is_text_encoding )
1771
+ self .assertEqual (dup .encode , orig .encode )
1772
+ self .assertEqual (dup .name , orig .name )
1773
+ self .assertEqual (dup .incrementalencoder , orig .incrementalencoder )
1774
+
1775
+ # Test a CodecInfo with _is_text_encoding equal to false.
1776
+ orig = codecs .lookup ("base64" )
1777
+ dup = copy .copy (orig )
1778
+ self .assertIsNot (dup , orig )
1779
+ self .assertEqual (dup , orig )
1780
+ self .assertFalse (orig ._is_text_encoding )
1781
+ self .assertEqual (dup .encode , orig .encode )
1782
+ self .assertEqual (dup .name , orig .name )
1783
+ self .assertEqual (dup .incrementalencoder , orig .incrementalencoder )
1784
+
1785
+ def test_deepcopy (self ):
1786
+ orig = codecs .lookup ('utf-8' )
1787
+ dup = copy .deepcopy (orig )
1788
+ self .assertIsNot (dup , orig )
1789
+ self .assertEqual (dup , orig )
1790
+ self .assertTrue (orig ._is_text_encoding )
1791
+ self .assertEqual (dup .encode , orig .encode )
1792
+ self .assertEqual (dup .name , orig .name )
1793
+ self .assertEqual (dup .incrementalencoder , orig .incrementalencoder )
1794
+
1795
+ # Test a CodecInfo with _is_text_encoding equal to false.
1796
+ orig = codecs .lookup ("base64" )
1797
+ dup = copy .deepcopy (orig )
1798
+ self .assertIsNot (dup , orig )
1799
+ self .assertEqual (dup , orig )
1800
+ self .assertFalse (orig ._is_text_encoding )
1801
+ self .assertEqual (dup .encode , orig .encode )
1802
+ self .assertEqual (dup .name , orig .name )
1803
+ self .assertEqual (dup .incrementalencoder , orig .incrementalencoder )
1804
+
1805
+ def test_pickle (self ):
1806
+ codec_info = codecs .lookup ('utf-8' )
1807
+ for proto in range (pickle .HIGHEST_PROTOCOL + 1 ):
1808
+ with self .subTest (protocol = proto ):
1809
+ pickled_codec_info = pickle .dumps (codec_info )
1810
+ unpickled_codec_info = pickle .loads (pickled_codec_info )
1811
+ self .assertIsNot (codec_info , unpickled_codec_info )
1812
+ self .assertEqual (codec_info , unpickled_codec_info )
1813
+ self .assertEqual (codec_info .name , unpickled_codec_info .name )
1814
+ self .assertEqual (
1815
+ codec_info .incrementalencoder ,
1816
+ unpickled_codec_info .incrementalencoder
1817
+ )
1818
+ self .assertTrue (unpickled_codec_info ._is_text_encoding )
1819
+
1820
+ # Test a CodecInfo with _is_text_encoding equal to false.
1821
+ codec_info = codecs .lookup ('base64' )
1822
+ for proto in range (pickle .HIGHEST_PROTOCOL + 1 ):
1823
+ with self .subTest (protocol = proto ):
1824
+ pickled_codec_info = pickle .dumps (codec_info )
1825
+ unpickled_codec_info = pickle .loads (pickled_codec_info )
1826
+ self .assertIsNot (codec_info , unpickled_codec_info )
1827
+ self .assertEqual (codec_info , unpickled_codec_info )
1828
+ self .assertEqual (codec_info .name , unpickled_codec_info .name )
1829
+ self .assertEqual (
1830
+ codec_info .incrementalencoder ,
1831
+ unpickled_codec_info .incrementalencoder
1832
+ )
1833
+ self .assertFalse (unpickled_codec_info ._is_text_encoding )
1834
+
1765
1835
1766
1836
class StreamReaderTest (unittest .TestCase ):
1767
1837
0 commit comments