File: test_temp_db.py

package info (click to toggle)
sqlitedict 2.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 200 kB
  • sloc: python: 825; makefile: 31; sh: 7
file content (91 lines) | stat: -rw-r--r-- 2,902 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# This code is distributed under the terms and conditions
# from the Apache License, Version 2.0
import unittest
import sqlitedict

from sys import version_info
major_version = version_info[0]


class TempSqliteDictTest(unittest.TestCase):

    def setUp(self):
        self.d = sqlitedict.SqliteDict()

    def tearDown(self):
        self.d.close()

    def test_create_sqlitedict(self):
        ''' test_create_sqlitedict
        '''
        self.assertIsInstance(self.d, sqlitedict.SqliteDict)
        self.assertEqual(dict(self.d), {})
        self.assertEqual(list(self.d), [])
        self.assertEqual(len(self.d), 0)

    def test_assign_values(self):
        ''' test_assign_values
        '''
        self.d['abc'] = 'edf'
        self.assertEqual(self.d['abc'], 'edf')
        self.assertEqual(len(self.d), 1)

    def test_clear_data(self):
        ''' test_clear_data
        '''
        self.d.update(a=1, b=2, c=3)
        self.assertEqual(len(self.d), 3)
        self.d.clear()
        self.assertEqual(len(self.d), 0)

    def test_manage_one_record(self):
        ''' test_manage_one_record
        '''
        self.d['abc'] = 'rsvp' * 100
        self.assertEqual(self.d['abc'], 'rsvp' * 100)
        self.d['abc'] = 'lmno'
        self.assertEqual(self.d['abc'], 'lmno')
        self.assertEqual(len(self.d), 1)
        del self.d['abc']
        self.assertEqual(len(self.d), 0)
        self.assertTrue(not self.d)

    def test_manage_few_records(self):
        ''' test_manage_few_records
        '''
        self.d['abc'] = 'lmno'
        self.d['xyz'] = 'pdq'
        self.assertEqual(len(self.d), 2)
        if major_version == 2:
            self.assertEqual(list(self.d.iteritems()), [('abc', 'lmno'), ('xyz', 'pdq')])
        self.assertEqual(list(self.d.items()), [('abc', 'lmno'), ('xyz', 'pdq')])
        self.assertEqual(list(self.d.values()), ['lmno', 'pdq'])
        self.assertEqual(list(self.d.keys()), ['abc', 'xyz'])
        self.assertEqual(list(self.d), ['abc', 'xyz'])

    def test_update_records(self):
        ''' test_update_records
        '''
        self.d.update([('v', 'w')], p='x', q='y', r='z')
        self.assertEqual(len(self.d), 4)
        # As far as I know dicts does not need to return
        # the elements in a specified order (sort() is required )
        self.assertEqual(sorted(self.d.items()), sorted([('q', 'y'), ('p', 'x'), ('r', 'z'), ('v', 'w')]))
        self.assertEqual(sorted(list(self.d)), sorted(['q', 'p', 'r', 'v']))

    def test_handling_errors(self):
        ''' test_handling_errors
        '''
        def get_value(d, k):
            return d[k]

        def remove_nonexists(d, k):
            del d[k]

        with self.assertRaises(KeyError):
            remove_nonexists(self.d, 'abc')
        with self.assertRaises(KeyError):
            get_value(self.d, 'abc')