|
3 | 3 | """ |
4 | 4 |
|
5 | 5 | import codecs |
6 | | -import unittest |
| 6 | + |
| 7 | +import pytest |
7 | 8 |
|
8 | 9 | import ebcdic |
9 | 10 |
|
10 | 11 |
|
11 | | -class EbcdicTest(unittest.TestCase): |
12 | | - """ |
13 | | - Test case of `ebcdic` package. |
14 | | - """ |
| 12 | +def test_has_codecs(): |
| 13 | + assert len(ebcdic.codec_names) > 0 |
| 14 | + assert "cp1141" in ebcdic.codec_names |
| 15 | + |
| 16 | + |
| 17 | +def test_can_recode_hello_world(): |
| 18 | + _test_can_recode("hello world", ebcdic.codec_names) |
| 19 | + |
| 20 | + |
| 21 | +def _test_can_recode(text, codec_names): |
| 22 | + for codec_name in codec_names: |
| 23 | + encoded_text = text.encode(codec_name) |
| 24 | + recoded_text = encoded_text.decode(codec_name) |
| 25 | + assert text == recoded_text, f"{codec_name}: {text!r} != {recoded_text!r}" |
15 | 26 |
|
16 | | - def test_has_codecs(self): |
17 | | - self.assertTrue(len(ebcdic.codec_names) > 0) |
18 | | - self.assertTrue("cp1141" in ebcdic.codec_names) |
19 | 27 |
|
20 | | - def test_can_recode_hello_world(self): |
21 | | - self._test_can_recode("hello world", ebcdic.codec_names) |
| 28 | +def test_can_recode_euro_sign(): |
| 29 | + _test_can_recode("\N{EURO SIGN}", ["cp1141", "cp1148", "cp1148ms"]) |
22 | 30 |
|
23 | | - def _test_can_recode(self, text, codec_names): |
24 | | - for codec_name in codec_names: |
25 | | - encoded_text = text.encode(codec_name) |
26 | | - recoded_text = encoded_text.decode(codec_name) |
27 | | - self.assertEqual(text, recoded_text, f"{codec_name}: {text!r} != {recoded_text!r}") |
28 | 31 |
|
29 | | - def test_can_recode_euro_sign(self): |
30 | | - self._test_can_recode("\N{EURO SIGN}", ["cp1141", "cp1148", "cp1148ms"]) |
| 32 | +def test_has_ignored_codec_names(): |
| 33 | + assert "cp500" in ebcdic.ignored_codec_names() |
31 | 34 |
|
32 | | - def test_has_ignored_codec_names(self): |
33 | | - self.assertTrue("cp500" in ebcdic.ignored_codec_names()) |
34 | 35 |
|
35 | | - def test_can_lookup_ebcdic_codec(self): |
36 | | - ebcdic_cp500 = ebcdic.lookup("cp500") |
37 | | - standard_cp500 = codecs.lookup("cp500") |
38 | | - self.assertNotEqual(ebcdic_cp500, standard_cp500) |
| 36 | +def test_can_lookup_ebcdic_codec(): |
| 37 | + ebcdic_cp500 = ebcdic.lookup("cp500") |
| 38 | + standard_cp500 = codecs.lookup("cp500") |
| 39 | + assert ebcdic_cp500 != standard_cp500 |
39 | 40 |
|
40 | | - def test_fails_on_lookup_of_unknown_ebcdic_codec(self): |
41 | | - self.assertRaises(LookupError, ebcdic.lookup, "cpNone") |
42 | 41 |
|
43 | | - def test_ignored_codecs_are_identical_to_standard_library(self): |
44 | | - def encoded(code, codec): |
45 | | - return chr(code).encode(codec.name, errors="replace") |
| 42 | +def test_fails_on_lookup_of_unknown_ebcdic_codec(): |
| 43 | + with pytest.raises(LookupError): |
| 44 | + ebcdic.lookup("cpNone") |
46 | 45 |
|
47 | | - for codec_name in ebcdic.ignored_codec_names(): |
48 | | - ebcdic_codec = ebcdic.lookup(codec_name) |
49 | | - self.assertNotEqual(ebcdic_codec, None, codec_name) |
50 | | - standard_codec = codecs.lookup(codec_name) |
51 | | - self.assertNotEqual(standard_codec, None, codec_name) |
52 | | - for code in range(256): |
53 | | - ebcdic_char = encoded(code, ebcdic_codec) |
54 | | - standard_char = encoded(code, standard_codec) |
55 | | - self.assertEqual( |
56 | | - ebcdic_char, |
57 | | - standard_char, |
58 | | - f"{codec_name} at {code}: {ebcdic_char!r} != {standard_char!r}", |
59 | | - ) |
60 | 46 |
|
| 47 | +def test_ignored_codecs_are_identical_to_standard_library(): |
| 48 | + def encoded(code, codec): |
| 49 | + return chr(code).encode(codec.name, errors="replace") |
61 | 50 |
|
62 | | -if __name__ == "__main__": |
63 | | - unittest.main() |
| 51 | + for codec_name in ebcdic.ignored_codec_names(): |
| 52 | + ebcdic_codec = ebcdic.lookup(codec_name) |
| 53 | + assert ebcdic_codec is not None, codec_name |
| 54 | + standard_codec = codecs.lookup(codec_name) |
| 55 | + assert standard_codec is not None, codec_name |
| 56 | + for code in range(256): |
| 57 | + ebcdic_char = encoded(code, ebcdic_codec) |
| 58 | + standard_char = encoded(code, standard_codec) |
| 59 | + assert ebcdic_char == standard_char, f"{codec_name} at {code}: {ebcdic_char!r} != {standard_char!r}" |
0 commit comments