5 from ansi import fg, bg, reset
6 import string_utils as su
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"))
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))
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))
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))
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"))
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"))
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"))
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"))
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"))
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)
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'))
124 def test_strip_escape_sequences(self):
125 s = f' {fg("red")} this is a test {bg("white")} this is a test {reset()} '
127 su.strip_escape_sequences(s),
128 ' this is a test this is a test '
130 s = ' this is another test '
131 self.assertEqual(su.strip_escape_sequences(s), s)
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"))
137 self.assertTrue(su.is_url("ftp://127.0.0.1/uri/uri"))
139 if __name__ == '__main__':