blob: 5f09cecc6a39c6982954977b3c2c82e5b5418e55 [file] [log] [blame]
Martin v. Löwis1c6b1a22002-11-19 17:47:07 +00001"""
2TestCases for checking set_get_returns_none.
3"""
4
5import sys, os, string
6import tempfile
7from pprint import pprint
8import unittest
9
Barry Warsawf71de3e2003-01-28 17:20:44 +000010try:
Gregory P. Smith41631e82003-09-21 00:08:14 +000011 # For Pythons w/distutils pybsddb
12 from bsddb3 import db
13except ImportError:
Barry Warsawf71de3e2003-01-28 17:20:44 +000014 # For Python 2.3
15 from bsddb import db
Martin v. Löwis1c6b1a22002-11-19 17:47:07 +000016
Barry Warsaw9a0d7792002-12-30 20:53:52 +000017from test_all import verbose
Martin v. Löwis1c6b1a22002-11-19 17:47:07 +000018
19
20#----------------------------------------------------------------------
21
22class 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
Barry Warsaw9a0d7792002-12-30 20:53:52 +000096def test_suite():
Martin v. Löwis1c6b1a22002-11-19 17:47:07 +000097 return unittest.makeSuite(GetReturnsNoneTestCase)
98
99
100if __name__ == '__main__':
Barry Warsaw9a0d7792002-12-30 20:53:52 +0000101 unittest.main(defaultTest='test_suite')