]>
Commit | Line | Data |
---|---|---|
1 | # Copyright (c) 2024 Scott Worley <scottworley@scottworley.com> | |
2 | # | |
3 | # Permission to use, copy, modify, and distribute this software for any | |
4 | # purpose with or without fee is hereby granted, provided that the above | |
5 | # copyright notice and this permission notice appear in all copies. | |
6 | # | |
7 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
8 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
9 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
10 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
11 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
12 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
13 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
14 | ||
15 | ||
16 | import unittest | |
17 | ||
18 | from rfc1751 import encode, decode | |
19 | ||
20 | ||
21 | class TestRFC1751(unittest.TestCase): | |
22 | def check(self, num: int, words: list[str]) -> None: | |
23 | self.assertEqual(encode(num), words) | |
24 | self.assertEqual(decode(words), num) | |
25 | ||
26 | def testRFC1751(self) -> None: | |
27 | self.check(0, ['A']) | |
28 | self.check(1, ['ABE']) | |
29 | self.check(2, ['ACE']) | |
30 | self.check(2047, ['YOKE']) | |
31 | self.check(2048, ['ABE', 'A']) | |
32 | self.check(2049, ['ABE', 'ABE']) | |
33 | self.check(2050, ['ABE', 'ACE']) | |
34 | ||
35 | # Note: These can get NSFW | |
36 | self.check(2112325, ['FIRM', 'COCK']) | |
37 | ||
38 | ||
39 | if __name__ == '__main__': | |
40 | unittest.main() |