#!/usr/bin/env python3 import unittest from ansi import fg, bg, reset import string_utils as su class TestStringUtils(unittest.TestCase): def test_is_none_or_empty(self): self.assertTrue(su.is_none_or_empty(None)) self.assertTrue(su.is_none_or_empty("")) self.assertTrue(su.is_none_or_empty("\n")) self.assertTrue(su.is_none_or_empty(' ')) self.assertTrue(su.is_none_or_empty(' \n \r \t ')) self.assertFalse(su.is_none_or_empty("Covfefe")) self.assertFalse(su.is_none_or_empty("1234")) def test_is_string(self): self.assertTrue(su.is_string("test")) self.assertTrue(su.is_string("")) self.assertFalse(su.is_string(bytes(0x1234))) self.assertFalse(su.is_string(1234)) def test_is_empty_string(self): self.assertTrue(su.is_empty_string('')) self.assertTrue(su.is_empty_string(' \t\t \n \r ')) self.assertFalse(su.is_empty_string(' this is a test ')) self.assertFalse(su.is_empty_string(22)) def test_is_full_string(self): self.assertFalse(su.is_full_string('')) self.assertFalse(su.is_full_string(' \t\t \n \r ')) self.assertTrue(su.is_full_string(' this is a test ')) self.assertFalse(su.is_full_string(22)) def test_is_number(self): self.assertTrue(su.is_number("1234")) self.assertTrue(su.is_number("-1234")) self.assertTrue(su.is_number("1234.55")) self.assertTrue(su.is_number("-1234.55")) self.assertTrue(su.is_number("+1234")) self.assertTrue(su.is_number("+1234.55")) self.assertTrue(su.is_number("-0.8485996602e10")) self.assertTrue(su.is_number("-0.8485996602E10")) self.assertFalse(su.is_number("-0.8485996602t10")) self.assertFalse(su.is_number(" 1234 ")) self.assertFalse(su.is_number(" 1234")) self.assertFalse(su.is_number("1234 ")) self.assertFalse(su.is_number("fifty")) def test_is_integer_number(self): self.assertTrue(su.is_integer_number("1234")) self.assertTrue(su.is_integer_number("-1234")) self.assertFalse(su.is_integer_number("1234.55")) self.assertFalse(su.is_integer_number("-1234.55")) self.assertTrue(su.is_integer_number("+1234")) self.assertTrue(su.is_integer_number("0x1234")) self.assertTrue(su.is_integer_number("0xdeadbeef")) self.assertFalse(su.is_integer_number("+1234.55")) self.assertTrue(su.is_octal_integer_number("+0o777")) self.assertFalse(su.is_integer_number("-0.8485996602e10")) self.assertFalse(su.is_integer_number("-0.8485996602E10")) self.assertFalse(su.is_integer_number("-0.8485996602t10")) self.assertFalse(su.is_integer_number(" 1234 ")) self.assertFalse(su.is_integer_number(" 1234")) self.assertFalse(su.is_integer_number("1234 ")) self.assertFalse(su.is_integer_number("fifty")) def test_is_hexidecimal_integer_number(self): self.assertTrue(su.is_hexidecimal_integer_number("0x1234")) self.assertTrue(su.is_hexidecimal_integer_number("0X1234")) self.assertTrue(su.is_hexidecimal_integer_number("0x1234D")) self.assertTrue(su.is_hexidecimal_integer_number("0xF1234")) self.assertTrue(su.is_hexidecimal_integer_number("0xe1234")) self.assertTrue(su.is_hexidecimal_integer_number("0x1234a")) self.assertTrue(su.is_hexidecimal_integer_number("0xdeadbeef")) self.assertTrue(su.is_hexidecimal_integer_number("-0xdeadbeef")) self.assertTrue(su.is_hexidecimal_integer_number("+0xdeadbeef")) self.assertFalse(su.is_hexidecimal_integer_number("0xH1234")) self.assertFalse(su.is_hexidecimal_integer_number("0x1234H")) self.assertFalse(su.is_hexidecimal_integer_number("nine")) def test_is_octal_integer_number(self): self.assertTrue(su.is_octal_integer_number("0o111")) self.assertTrue(su.is_octal_integer_number("0O111")) self.assertTrue(su.is_octal_integer_number("-0o111")) self.assertTrue(su.is_octal_integer_number("+0o777")) self.assertFalse(su.is_octal_integer_number("-+0o111")) self.assertFalse(su.is_octal_integer_number("0o181")) self.assertFalse(su.is_octal_integer_number("0o1a1")) self.assertFalse(su.is_octal_integer_number("one")) def test_is_binary_integer_number(self): self.assertTrue(su.is_binary_integer_number("0b10100101110")) self.assertTrue(su.is_binary_integer_number("+0b10100101110")) self.assertTrue(su.is_binary_integer_number("-0b10100101110")) self.assertTrue(su.is_binary_integer_number("0B10100101110")) self.assertTrue(su.is_binary_integer_number("+0B10100101110")) self.assertTrue(su.is_binary_integer_number("-0B10100101110")) self.assertFalse(su.is_binary_integer_number("-0B10100101110 ")) self.assertFalse(su.is_binary_integer_number(" -0B10100101110")) self.assertFalse(su.is_binary_integer_number("-0B10100 101110")) self.assertFalse(su.is_binary_integer_number("0b10100201110")) self.assertFalse(su.is_binary_integer_number("0b10100101e110")) self.assertFalse(su.is_binary_integer_number("fred")) def test_to_int(self): self.assertEqual(su.to_int("1234"), 1234) self.assertEqual(su.to_int("0x1234"), 4660) self.assertEqual(su.to_int("0o777"), 511) self.assertEqual(su.to_int("0b111"), 7) def test_is_decimal_number(self): self.assertTrue(su.is_decimal_number('4.3')) self.assertTrue(su.is_decimal_number('.3')) self.assertTrue(su.is_decimal_number('0.3')) self.assertFalse(su.is_decimal_number('3.')) self.assertTrue(su.is_decimal_number('3.0')) self.assertTrue(su.is_decimal_number('3.0492949249e20')) self.assertFalse(su.is_decimal_number('3')) self.assertFalse(su.is_decimal_number('0x11')) def test_strip_escape_sequences(self): s = f' {fg("red")} this is a test {bg("white")} this is a test {reset()} ' self.assertEqual( su.strip_escape_sequences(s), ' this is a test this is a test ' ) s = ' this is another test ' self.assertEqual(su.strip_escape_sequences(s), s) def test_is_url(self): self.assertTrue(su.is_url("http://host.domain/uri/uri#shard?param=value+s")) self.assertTrue(su.is_url("http://127.0.0.1/uri/uri#shard?param=value+s")) self.assertTrue(su.is_url("http://user:pass@127.0.0.1:81/uri/uri#shard?param=value+s")) self.assertTrue(su.is_url("ftp://127.0.0.1/uri/uri")) if __name__ == '__main__': unittest.main()