コード例 #1
0
    def test_search_string(self):
        d = {
            'a': 'Hello world',
            'b': 'Hello world!',
            'c': {
                'd': True,
                'e': ' hello world ',
                'f': {
                    'g': 'HELLO',
                    'h': 12345,
                    'hello': True,
                },
            },
            'u': 5,
            'v': {
                'x': {
                    'y':5,
                    'z':6,
                },
            },
            'Hello world': 'Hello World',
        }

        results = _search(d, 'Hello', in_keys=False, in_values=False, exact=True, case_sensitive=True)
        self.assertEqual(len(results), 0)
        self.assertEqual(results, [])

        results = _search(d, 'Hello', in_keys=False, in_values=True, exact=True, case_sensitive=True)
        self.assertEqual(len(results), 0)
        self.assertEqual(results, [])

        results = _search(d, 'Hello', in_keys=False, in_values=True, exact=True, case_sensitive=False)
        self.assertEqual(len(results), 1)
        self.assertTrue((d['c']['f'], 'g', d['c']['f']['g'], ) in results)

        results = _search(d, 'hello', in_keys=True, in_values=True, exact=False, case_sensitive=False)
        self.assertEqual(len(results), 6)
        self.assertTrue((d, 'a', d['a'], ) in results)
        self.assertTrue((d, 'b', d['b'], ) in results)
        self.assertTrue((d['c'], 'e', d['c']['e'], ) in results)
        self.assertTrue((d['c']['f'], 'g', d['c']['f']['g'], ) in results)
        self.assertTrue((d['c']['f'], 'hello', d['c']['f']['hello'], ) in results)
        self.assertTrue((d, 'Hello world', d['Hello world'], ) in results)

        results = _search(d, 'hello', in_keys=True, in_values=False, exact=False, case_sensitive=False)
        self.assertEqual(len(results), 2)
        self.assertTrue((d['c']['f'], 'hello', d['c']['f']['hello'], ) in results)
        self.assertTrue((d, 'Hello world', d['Hello world'], ) in results)
コード例 #2
0
ファイル: __init__.py プロジェクト: nihal5630/python-benedict
 def search(self, query,
            in_keys=True, in_values=True,
            exact=False, case_sensitive=False):
     """
     Search and return a list of items (dict, key, value, ) matching the given query.
     """
     return _search(self, query, in_keys, in_values, exact, case_sensitive)
コード例 #3
0
    def test_search_int(self):
        d = {
            'u': 5,
            'v': {
                'x': {
                    'y':5,
                    'z':6,
                },
            },
            'w': '5',
            5: 5,
            '5': '5 str',
        }

        results = _search(d, 5, in_keys=False, in_values=False, exact=True, case_sensitive=True)
        self.assertEqual(len(results), 0)
        self.assertEqual(results, [])

        results = _search(d, 5, in_keys=False, in_values=True, exact=True, case_sensitive=True)
        self.assertEqual(len(results), 3)
        self.assertTrue((d, 'u', 5, ) in results)
        self.assertTrue((d['v']['x'], 'y', 5, ) in results)
        self.assertTrue((d, 5, 5, ) in results)

        results = _search(d, 5, in_keys=False, in_values=True, exact=True, case_sensitive=False)
        self.assertEqual(len(results), 3)
        self.assertTrue((d, 'u', 5, ) in results)
        self.assertTrue((d['v']['x'], 'y', 5, ) in results)
        self.assertTrue((d, 5, 5, ) in results)

        results = _search(d, 5, in_keys=True, in_values=True, exact=False, case_sensitive=False)
        self.assertEqual(len(results), 3)
        self.assertTrue((d, 'u', 5, ) in results)
        self.assertTrue((d['v']['x'], 'y', 5, ) in results)
        self.assertTrue((d, 5, 5, ) in results)

        results = _search(d, 5, in_keys=True, in_values=False, exact=False, case_sensitive=False)
        self.assertEqual(len(results), 1)
        self.assertTrue((d, 5, 5, ) in results)