diff options
author | Simon Sawicki <37424085+Grub4K@users.noreply.github.com> | 2022-10-09 03:31:37 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-09 07:01:37 +0530 |
commit | 7b0127e1e11186bcbb80a18b1b530d864a5dbada (patch) | |
tree | 6fe4dad7c3a043249291c428fdc8cf47567d8280 /test/test_utils.py | |
parent | f99bbfc9838d98d81027dddb18ace0af66acdf6d (diff) | |
download | hypervideo-pre-7b0127e1e11186bcbb80a18b1b530d864a5dbada.tar.lz hypervideo-pre-7b0127e1e11186bcbb80a18b1b530d864a5dbada.tar.xz hypervideo-pre-7b0127e1e11186bcbb80a18b1b530d864a5dbada.zip |
[utils] `traverse_obj`: Allow `re.Match` objects (#5174)
Authored by: Grub4K
Diffstat (limited to 'test/test_utils.py')
-rw-r--r-- | test/test_utils.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/test_utils.py b/test/test_utils.py index 6f3f6cb91..90085a9c0 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -2,6 +2,7 @@ # Allow direct execution import os +import re import sys import unittest @@ -2080,6 +2081,25 @@ Line 1 with self.assertRaises(TypeError, msg='too many params should result in error'): traverse_obj(_IS_USER_INPUT_DATA, ('range8', ':::'), is_user_input=True) + # Test re.Match as input obj + mobj = re.fullmatch(r'0(12)(?P<group>3)(4)?', '0123') + self.assertEqual(traverse_obj(mobj, ...), [x for x in mobj.groups() if x is not None], + msg='`...` on a `re.Match` should give its `groups()`') + self.assertEqual(traverse_obj(mobj, lambda k, _: k in (0, 2)), ['0123', '3'], + msg='function on a `re.Match` should give groupno, value starting at 0') + self.assertEqual(traverse_obj(mobj, 'group'), '3', + msg='str key on a `re.Match` should give group with that name') + self.assertEqual(traverse_obj(mobj, 2), '3', + msg='int key on a `re.Match` should give group with that name') + self.assertEqual(traverse_obj(mobj, 'gRoUp', casesense=False), '3', + msg='str key on a `re.Match` should respect casesense') + self.assertEqual(traverse_obj(mobj, 'fail'), None, + msg='failing str key on a `re.Match` should return `default`') + self.assertEqual(traverse_obj(mobj, 'gRoUpS', casesense=False), None, + msg='failing str key on a `re.Match` should return `default`') + self.assertEqual(traverse_obj(mobj, 8), None, + msg='failing int key on a `re.Match` should return `default`') + if __name__ == '__main__': unittest.main() |