Initial revision
[python_utils.git] / tests / string_utils_test.py
1 #!/usr/bin/env python3
2
3 import unittest
4
5 from ansi import fg, bg, reset
6 import string_utils as su
7
8
9 class TestStringUtils(unittest.TestCase):
10     def test_is_none_or_empty(self):
11         self.assertTrue(su.is_none_or_empty(None))
12         self.assertTrue(su.is_none_or_empty(""))
13         self.assertTrue(su.is_none_or_empty("\n"))
14         self.assertTrue(su.is_none_or_empty('       '))
15         self.assertTrue(su.is_none_or_empty('     \n  \r  \t     '))
16         self.assertFalse(su.is_none_or_empty("Covfefe"))
17         self.assertFalse(su.is_none_or_empty("1234"))
18
19     def test_is_string(self):
20         self.assertTrue(su.is_string("test"))
21         self.assertTrue(su.is_string(""))
22         self.assertFalse(su.is_string(bytes(0x1234)))
23         self.assertFalse(su.is_string(1234))
24
25     def test_is_empty_string(self):
26         self.assertTrue(su.is_empty_string(''))
27         self.assertTrue(su.is_empty_string('    \t\t  \n    \r      '))
28         self.assertFalse(su.is_empty_string(' this is a test '))
29         self.assertFalse(su.is_empty_string(22))
30
31     def test_is_full_string(self):
32         self.assertFalse(su.is_full_string(''))
33         self.assertFalse(su.is_full_string('    \t\t  \n    \r      '))
34         self.assertTrue(su.is_full_string(' this is a test '))
35         self.assertFalse(su.is_full_string(22))
36
37     def test_is_number(self):
38         self.assertTrue(su.is_number("1234"))
39         self.assertTrue(su.is_number("-1234"))
40         self.assertTrue(su.is_number("1234.55"))
41         self.assertTrue(su.is_number("-1234.55"))
42         self.assertTrue(su.is_number("+1234"))
43         self.assertTrue(su.is_number("+1234.55"))
44         self.assertTrue(su.is_number("-0.8485996602e10"))
45         self.assertTrue(su.is_number("-0.8485996602E10"))
46         self.assertFalse(su.is_number("-0.8485996602t10"))
47         self.assertFalse(su.is_number("  1234  "))
48         self.assertFalse(su.is_number(" 1234"))
49         self.assertFalse(su.is_number("1234 "))
50         self.assertFalse(su.is_number("fifty"))
51
52     def test_is_integer_number(self):
53         self.assertTrue(su.is_integer_number("1234"))
54         self.assertTrue(su.is_integer_number("-1234"))
55         self.assertFalse(su.is_integer_number("1234.55"))
56         self.assertFalse(su.is_integer_number("-1234.55"))
57         self.assertTrue(su.is_integer_number("+1234"))
58         self.assertTrue(su.is_integer_number("0x1234"))
59         self.assertTrue(su.is_integer_number("0xdeadbeef"))
60         self.assertFalse(su.is_integer_number("+1234.55"))
61         self.assertTrue(su.is_octal_integer_number("+0o777"))
62         self.assertFalse(su.is_integer_number("-0.8485996602e10"))
63         self.assertFalse(su.is_integer_number("-0.8485996602E10"))
64         self.assertFalse(su.is_integer_number("-0.8485996602t10"))
65         self.assertFalse(su.is_integer_number("  1234  "))
66         self.assertFalse(su.is_integer_number(" 1234"))
67         self.assertFalse(su.is_integer_number("1234 "))
68         self.assertFalse(su.is_integer_number("fifty"))
69
70     def test_is_hexidecimal_integer_number(self):
71         self.assertTrue(su.is_hexidecimal_integer_number("0x1234"))
72         self.assertTrue(su.is_hexidecimal_integer_number("0X1234"))
73         self.assertTrue(su.is_hexidecimal_integer_number("0x1234D"))
74         self.assertTrue(su.is_hexidecimal_integer_number("0xF1234"))
75         self.assertTrue(su.is_hexidecimal_integer_number("0xe1234"))
76         self.assertTrue(su.is_hexidecimal_integer_number("0x1234a"))
77         self.assertTrue(su.is_hexidecimal_integer_number("0xdeadbeef"))
78         self.assertTrue(su.is_hexidecimal_integer_number("-0xdeadbeef"))
79         self.assertTrue(su.is_hexidecimal_integer_number("+0xdeadbeef"))
80         self.assertFalse(su.is_hexidecimal_integer_number("0xH1234"))
81         self.assertFalse(su.is_hexidecimal_integer_number("0x1234H"))
82         self.assertFalse(su.is_hexidecimal_integer_number("nine"))
83
84     def test_is_octal_integer_number(self):
85         self.assertTrue(su.is_octal_integer_number("0o111"))
86         self.assertTrue(su.is_octal_integer_number("0O111"))
87         self.assertTrue(su.is_octal_integer_number("-0o111"))
88         self.assertTrue(su.is_octal_integer_number("+0o777"))
89         self.assertFalse(su.is_octal_integer_number("-+0o111"))
90         self.assertFalse(su.is_octal_integer_number("0o181"))
91         self.assertFalse(su.is_octal_integer_number("0o1a1"))
92         self.assertFalse(su.is_octal_integer_number("one"))
93
94     def test_is_binary_integer_number(self):
95         self.assertTrue(su.is_binary_integer_number("0b10100101110"))
96         self.assertTrue(su.is_binary_integer_number("+0b10100101110"))
97         self.assertTrue(su.is_binary_integer_number("-0b10100101110"))
98         self.assertTrue(su.is_binary_integer_number("0B10100101110"))
99         self.assertTrue(su.is_binary_integer_number("+0B10100101110"))
100         self.assertTrue(su.is_binary_integer_number("-0B10100101110"))
101         self.assertFalse(su.is_binary_integer_number("-0B10100101110  "))
102         self.assertFalse(su.is_binary_integer_number("  -0B10100101110"))
103         self.assertFalse(su.is_binary_integer_number("-0B10100 101110"))
104         self.assertFalse(su.is_binary_integer_number("0b10100201110"))
105         self.assertFalse(su.is_binary_integer_number("0b10100101e110"))
106         self.assertFalse(su.is_binary_integer_number("fred"))
107
108     def test_to_int(self):
109         self.assertEqual(su.to_int("1234"), 1234)
110         self.assertEqual(su.to_int("0x1234"), 4660)
111         self.assertEqual(su.to_int("0o777"), 511)
112         self.assertEqual(su.to_int("0b111"), 7)
113
114     def test_is_decimal_number(self):
115         self.assertTrue(su.is_decimal_number('4.3'))
116         self.assertTrue(su.is_decimal_number('.3'))
117         self.assertTrue(su.is_decimal_number('0.3'))
118         self.assertFalse(su.is_decimal_number('3.'))
119         self.assertTrue(su.is_decimal_number('3.0'))
120         self.assertTrue(su.is_decimal_number('3.0492949249e20'))
121         self.assertFalse(su.is_decimal_number('3'))
122         self.assertFalse(su.is_decimal_number('0x11'))
123
124     def test_strip_escape_sequences(self):
125         s = f' {fg("red")}  this is a test  {bg("white")}  this is a test  {reset()}  '
126         self.assertEqual(
127             su.strip_escape_sequences(s),
128             '   this is a test    this is a test    '
129         )
130         s = ' this is another test '
131         self.assertEqual(su.strip_escape_sequences(s), s)
132
133     def test_is_url(self):
134         self.assertTrue(su.is_url("http://host.domain/uri/uri#shard?param=value+s"))
135         self.assertTrue(su.is_url("http://127.0.0.1/uri/uri#shard?param=value+s"))
136         self.assertTrue(su.is_url("http://user:[email protected]:81/uri/uri#shard?param=value+s"))
137         self.assertTrue(su.is_url("ftp://127.0.0.1/uri/uri"))
138
139 if __name__ == '__main__':
140     unittest.main()