|
15 | 15 | """ |
16 | 16 | import unittest |
17 | 17 | from deepdiff import DeepSearch, grep |
| 18 | +from datetime import datetime |
18 | 19 | import logging |
19 | 20 | logging.disable(logging.CRITICAL) |
20 | 21 |
|
@@ -286,6 +287,32 @@ def test_case_insensitive_of_str_in_one_liner(self): |
286 | 287 | result = {'matched_values': {'root'}} |
287 | 288 | self.assertEqual(DeepSearch(obj, item, verbose_level=1, case_sensitive=False), result) |
288 | 289 |
|
| 290 | + def test_none(self): |
| 291 | + obj = item = None |
| 292 | + result = {'matched_values': {'root'}} |
| 293 | + self.assertEqual(DeepSearch(obj, item, verbose_level=1), result) |
| 294 | + |
| 295 | + def test_complex_obj(self): |
| 296 | + obj = datetime(2017, 5, 4, 1, 1, 1) |
| 297 | + item = datetime(2017, 5, 4, 1, 1, 1) |
| 298 | + result = {'matched_values': {'root'}} |
| 299 | + self.assertEqual(DeepSearch(obj, item, verbose_level=1), result) |
| 300 | + |
| 301 | + def test_keep_searching_after_obj_match(self): |
| 302 | + |
| 303 | + class AlwaysEqual: |
| 304 | + |
| 305 | + def __init__(self, recurse=True): |
| 306 | + if recurse: |
| 307 | + self.some_attr = AlwaysEqual(recurse=False) |
| 308 | + |
| 309 | + def __eq__(self, other): |
| 310 | + return True |
| 311 | + |
| 312 | + obj = AlwaysEqual() |
| 313 | + item = AlwaysEqual() |
| 314 | + result = {'matched_values': {'root', 'root.some_attr'}} |
| 315 | + |
289 | 316 | def test_search_inherited_attributes(self): |
290 | 317 | class Parent(object): |
291 | 318 | a = 1 |
|
0 commit comments