Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | """ |
2 | TestCases for checking set_get_returns_none. | |
3 | """ | |
4 | ||
5 | import sys, os, string | |
6 | import tempfile | |
7 | from pprint import pprint | |
8 | import unittest | |
9 | ||
10 | try: | |
11 | # For Pythons w/distutils pybsddb | |
12 | from bsddb3 import db | |
13 | except ImportError: | |
14 | # For Python 2.3 | |
15 | from bsddb import db | |
16 | ||
17 | from test_all import verbose | |
18 | ||
19 | ||
20 | #---------------------------------------------------------------------- | |
21 | ||
22 | class GetReturnsNoneTestCase(unittest.TestCase): | |
23 | def setUp(self): | |
24 | self.filename = tempfile.mktemp() | |
25 | ||
26 | def tearDown(self): | |
27 | try: | |
28 | os.remove(self.filename) | |
29 | except os.error: | |
30 | pass | |
31 | ||
32 | ||
33 | def test01_get_returns_none(self): | |
34 | d = db.DB() | |
35 | d.open(self.filename, db.DB_BTREE, db.DB_CREATE) | |
36 | d.set_get_returns_none(1) | |
37 | ||
38 | for x in string.letters: | |
39 | d.put(x, x * 40) | |
40 | ||
41 | data = d.get('bad key') | |
42 | assert data == None | |
43 | ||
44 | data = d.get('a') | |
45 | assert data == 'a'*40 | |
46 | ||
47 | count = 0 | |
48 | c = d.cursor() | |
49 | rec = c.first() | |
50 | while rec: | |
51 | count = count + 1 | |
52 | rec = c.next() | |
53 | ||
54 | assert rec == None | |
55 | assert count == 52 | |
56 | ||
57 | c.close() | |
58 | d.close() | |
59 | ||
60 | ||
61 | def test02_get_raises_exception(self): | |
62 | d = db.DB() | |
63 | d.open(self.filename, db.DB_BTREE, db.DB_CREATE) | |
64 | d.set_get_returns_none(0) | |
65 | ||
66 | for x in string.letters: | |
67 | d.put(x, x * 40) | |
68 | ||
69 | self.assertRaises(db.DBNotFoundError, d.get, 'bad key') | |
70 | self.assertRaises(KeyError, d.get, 'bad key') | |
71 | ||
72 | data = d.get('a') | |
73 | assert data == 'a'*40 | |
74 | ||
75 | count = 0 | |
76 | exceptionHappened = 0 | |
77 | c = d.cursor() | |
78 | rec = c.first() | |
79 | while rec: | |
80 | count = count + 1 | |
81 | try: | |
82 | rec = c.next() | |
83 | except db.DBNotFoundError: # end of the records | |
84 | exceptionHappened = 1 | |
85 | break | |
86 | ||
87 | assert rec != None | |
88 | assert exceptionHappened | |
89 | assert count == 52 | |
90 | ||
91 | c.close() | |
92 | d.close() | |
93 | ||
94 | #---------------------------------------------------------------------- | |
95 | ||
96 | def test_suite(): | |
97 | return unittest.makeSuite(GetReturnsNoneTestCase) | |
98 | ||
99 | ||
100 | if __name__ == '__main__': | |
101 | unittest.main(defaultTest='test_suite') |