File: test_withsqlite.py

package info (click to toggle)
withsqlite 0.0.0~git.20130929-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 124 kB
  • ctags: 60
  • sloc: python: 265; makefile: 6
file content (128 lines) | stat: -rw-r--r-- 3,901 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
from __future__ import print_function, unicode_literals
import unittest
import tempfile
from withsqlite import sqlite_db


class WithSQLiteTest(unittest.TestCase):
    def setUp(self):
        self.db = sqlite_db('test')
        self.db.begin()

    def tearDown(self):
        self.db.clear()
        self.db.save()

    def test_empty(self):
        self.assertEqual(self.db.items(), [])

    def test_add_one_string(self):
        self.db['a'] = 'test'
        items = self.db.items()
        self.assertEqual(len(items), 1)
        k, v = items[0]
        self.assertEqual(k, 'a')
        self.assertEqual(v, 'test')

    def test_add_two_strings(self):
        self.db['a'] = 'test_a'
        self.db['b'] = 'test_b'
        items = self.db.items()
        self.assertEqual(len(items), 2)
        k, v = items[0]
        self.assertEqual(k, 'a')
        self.assertEqual(v, 'test_a')
        k, v = items[1]
        self.assertEqual(k, 'b')
        self.assertEqual(v, 'test_b')

    def test_add_a_list(self):
        self.db['list'] = [1, 2, 3, 4, 5]
        items = self.db.items()
        self.assertEqual(len(items), 1)
        k, v = items[0]
        self.assertEqual(k, 'list')
        self.assertEqual(v, [1, 2, 3, 4, 5])

    def test_del_value(self):
        self.db['a'] = 'value_a'
        self.db['some'] = 'to be deleted'
        self.assertEqual(len(self.db.items()), 2)
        del self.db['some']
        self.assertEqual(len(self.db.items()), 1)
        self.assertIsNone(self.db.get('some'))
        try:
            self.db['some']
            self.assertEqual(1, 0, "__getitem__")
        except KeyError:
            pass

    def test_keys(self):
        values = ['a', 'b', 'c']
        for val in values:
            self.db[val] = val.upper()
        self.assertEqual(set(self.db.keys()), set(values))

    def test_values(self):
        values = ['A', 'B', 'C']
        for val in values:
            self.db[val.lower()] = val
        self.assertEqual(set(self.db.values()), set(values))

    def test_get(self):
        self.assertEqual(self.db.get('some', 5), 5)

    def test_repr(self):
        adict = {'a': 'A'}
        self.db['a'] = 'A'
        self.assertEqual(repr(adict), repr(self.db))

    def test_contains(self):
        self.db['key'] = 'value'
        self.assertTrue('key' in self.db)
        self.assertFalse('value' in self.db)

    def test_update(self):
        self.db['key'] = 'value'
        self.assertEqual(self.db['key'], 'value')
        self.db['key'] = 'foobar'
        self.assertEqual(self.db['key'], 'foobar')

    def test_dir(self):
        workdir = tempfile.mkdtemp()
        with sqlite_db("test", dir=workdir) as db:
            db['testing'] = 'dir'
        with sqlite_db("test", dir=workdir) as db:
            self.assertEqual(db['testing'], 'dir')

    def test_transaction(self):
        a = sqlite_db("test")
        with a.transaction():
            a['key'] = 'value'
            self.assertEqual(len(a.items()), 1)
            self.assertEqual(len(self.db.items()), 0)
        items = self.db.items()
        self.assertEqual(len(items), 1)
        k, v = items[0]
        self.assertEqual('key', k)
        self.assertEqual('value', v)

    def test_with(self):
        with sqlite_db("test") as db:
            db['a'] = 'test_a'
            db['b'] = 'test_b'
            items = db.items()
            self.assertEqual(len(items), 2)
            k, v = items[0]
            self.assertEqual(k, 'a')
            self.assertEqual(v, 'test_a')
            k, v = items[1]
            self.assertEqual(k, 'b')
            self.assertEqual(v, 'test_b')

    def test_multitable(self):
        store_file = "test"
        with sqlite_db(store_file, table="firstboot", autocommit=True) as db:
            db['state']=1
        with sqlite_db(store_file, table="thisbox", autocommit=True) as db:
            db['state']=1