Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'test/no_gui/test_text_util.py')
-rw-r--r--test/no_gui/test_text_util.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/test/no_gui/test_text_util.py b/test/no_gui/test_text_util.py
new file mode 100644
index 000000000..26df53b08
--- /dev/null
+++ b/test/no_gui/test_text_util.py
@@ -0,0 +1,77 @@
+import unittest
+
+from gajim.common.util.text import escape_iri_path_segment
+from gajim.common.util.text import jid_to_iri
+from gajim.common.util.text import format_duration
+from gajim.common.util.text import remove_invalid_xml_chars
+
+
+class Test(unittest.TestCase):
+
+ def test_remove_invalid_xml_chars(self) -> None:
+ invalid_chars = [
+ '\x0b',
+ '\udfff',
+ '\x08'
+ ]
+ for char in invalid_chars:
+ self.assertEqual(remove_invalid_xml_chars(char), '')
+
+ self.assertEqual(remove_invalid_xml_chars(''), '')
+ self.assertEqual(remove_invalid_xml_chars('ä'), 'ä')
+
+ def test_escape_iri_path_segment(self) -> None:
+ self.assertEqual(escape_iri_path_segment(''), '', '<empty string>')
+
+ über = 'u\u0308ber'
+ self.assertEqual(escape_iri_path_segment(über), über)
+
+ segment = ''.join(chr(c) for c in range(0x20, 0x7F))
+ self.assertEqual(
+ escape_iri_path_segment(segment),
+ "%20!%22%23$%25&'()*+,-.%2F0123456789:;%3C=%3E%3F@ABCDEFGHIJKLMN"
+ 'OPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~',
+ 'ASCII printable')
+
+ self.assertEqual(escape_iri_path_segment(
+ ''.join(chr(c) for c in range(0x01, 0x20)) + chr(0x7F)),
+ ''.join('%%%02X' % c for c in range(0x01, 0x20)) + '%7F',
+ 'ASCII control (no null)')
+
+ def test_jid_to_iri(self) -> None:
+ jid = r'foo@bar'
+ self.assertEqual(jid_to_iri(jid), fr'xmpp:{jid}', jid)
+ jid = r'my\20self@[::1]/home'
+ self.assertEqual(
+ jid_to_iri(jid),
+ r'xmpp:my%5C20self@%5B::1%5D/home', jid)
+
+ def test_format_duration_width(self) -> None:
+ def do(total_seconds: float, expected: str) -> None:
+ self.assertEqual(format_duration(0.0, total_seconds*1e9), expected)
+
+ do(0, '0:00')
+ do(60, '0:00')
+ do(10 * 60, '00:00')
+ do(60 * 60, '0:00:00')
+ do(10 * 60 * 60, '00:00:00')
+ do(100 * 60 * 60, '000:00:00')
+
+ def test_format_duration(self) -> None:
+ def do(duration: float, expected: str) -> None:
+ self.assertEqual(
+ format_duration(duration, 100 * 60 * 60 * 1e9),
+ expected)
+
+ do(1.0, '000:00:00')
+ do(999999999.0, '000:00:00')
+ do(1000000000.0, '000:00:01')
+ do(59999999999.0, '000:00:59')
+ do(60000000000.0, '000:01:00')
+ do(3599999999999.0, '000:59:59')
+ do(3600000000000.0, '001:00:00')
+ do(3599999999999999.0, '999:59:59')
+
+
+if __name__ == '__main__':
+ unittest.main()