ยปCore Development>Code coverage>Lib/bsddb/test/test_compat.py

Python code coverage for Lib/bsddb/test/test_compat.py

#countcontent
1n/a"""
2n/aTest cases adapted from the test_bsddb.py module in Python's
3n/aregression test suite.
4n/a"""
5n/a
6n/aimport os, string
7n/aimport unittest
8n/a
9n/afrom test_all import db, hashopen, btopen, rnopen, verbose, \
10n/a get_new_database_path
11n/a
12n/a
13n/aclass CompatibilityTestCase(unittest.TestCase):
14n/a def setUp(self):
15n/a self.filename = get_new_database_path()
16n/a
17n/a def tearDown(self):
18n/a try:
19n/a os.remove(self.filename)
20n/a except os.error:
21n/a pass
22n/a
23n/a
24n/a def test01_btopen(self):
25n/a self.do_bthash_test(btopen, 'btopen')
26n/a
27n/a def test02_hashopen(self):
28n/a self.do_bthash_test(hashopen, 'hashopen')
29n/a
30n/a def test03_rnopen(self):
31n/a data = "The quick brown fox jumped over the lazy dog.".split()
32n/a if verbose:
33n/a print "\nTesting: rnopen"
34n/a
35n/a f = rnopen(self.filename, 'c')
36n/a for x in range(len(data)):
37n/a f[x+1] = data[x]
38n/a
39n/a getTest = (f[1], f[2], f[3])
40n/a if verbose:
41n/a print '%s %s %s' % getTest
42n/a
43n/a self.assertEqual(getTest[1], 'quick', 'data mismatch!')
44n/a
45n/a rv = f.set_location(3)
46n/a if rv != (3, 'brown'):
47n/a self.fail('recno database set_location failed: '+repr(rv))
48n/a
49n/a f[25] = 'twenty-five'
50n/a f.close()
51n/a del f
52n/a
53n/a f = rnopen(self.filename, 'w')
54n/a f[20] = 'twenty'
55n/a
56n/a def noRec(f):
57n/a rec = f[15]
58n/a self.assertRaises(KeyError, noRec, f)
59n/a
60n/a def badKey(f):
61n/a rec = f['a string']
62n/a self.assertRaises(TypeError, badKey, f)
63n/a
64n/a del f[3]
65n/a
66n/a rec = f.first()
67n/a while rec:
68n/a if verbose:
69n/a print rec
70n/a try:
71n/a rec = f.next()
72n/a except KeyError:
73n/a break
74n/a
75n/a f.close()
76n/a
77n/a
78n/a def test04_n_flag(self):
79n/a f = hashopen(self.filename, 'n')
80n/a f.close()
81n/a
82n/a
83n/a def do_bthash_test(self, factory, what):
84n/a if verbose:
85n/a print '\nTesting: ', what
86n/a
87n/a f = factory(self.filename, 'c')
88n/a if verbose:
89n/a print 'creation...'
90n/a
91n/a # truth test
92n/a if f:
93n/a if verbose: print "truth test: true"
94n/a else:
95n/a if verbose: print "truth test: false"
96n/a
97n/a f['0'] = ''
98n/a f['a'] = 'Guido'
99n/a f['b'] = 'van'
100n/a f['c'] = 'Rossum'
101n/a f['d'] = 'invented'
102n/a # 'e' intentionally left out
103n/a f['f'] = 'Python'
104n/a if verbose:
105n/a print '%s %s %s' % (f['a'], f['b'], f['c'])
106n/a
107n/a if verbose:
108n/a print 'key ordering...'
109n/a start = f.set_location(f.first()[0])
110n/a if start != ('0', ''):
111n/a self.fail("incorrect first() result: "+repr(start))
112n/a while 1:
113n/a try:
114n/a rec = f.next()
115n/a except KeyError:
116n/a self.assertEqual(rec, f.last(), 'Error, last <> last!')
117n/a f.previous()
118n/a break
119n/a if verbose:
120n/a print rec
121n/a
122n/a self.assert_(f.has_key('f'), 'Error, missing key!')
123n/a
124n/a # test that set_location() returns the next nearest key, value
125n/a # on btree databases and raises KeyError on others.
126n/a if factory == btopen:
127n/a e = f.set_location('e')
128n/a if e != ('f', 'Python'):
129n/a self.fail('wrong key,value returned: '+repr(e))
130n/a else:
131n/a try:
132n/a e = f.set_location('e')
133n/a except KeyError:
134n/a pass
135n/a else:
136n/a self.fail("set_location on non-existent key did not raise KeyError")
137n/a
138n/a f.sync()
139n/a f.close()
140n/a # truth test
141n/a try:
142n/a if f:
143n/a if verbose: print "truth test: true"
144n/a else:
145n/a if verbose: print "truth test: false"
146n/a except db.DBError:
147n/a pass
148n/a else:
149n/a self.fail("Exception expected")
150n/a
151n/a del f
152n/a
153n/a if verbose:
154n/a print 'modification...'
155n/a f = factory(self.filename, 'w')
156n/a f['d'] = 'discovered'
157n/a
158n/a if verbose:
159n/a print 'access...'
160n/a for key in f.keys():
161n/a word = f[key]
162n/a if verbose:
163n/a print word
164n/a
165n/a def noRec(f):
166n/a rec = f['no such key']
167n/a self.assertRaises(KeyError, noRec, f)
168n/a
169n/a def badKey(f):
170n/a rec = f[15]
171n/a self.assertRaises(TypeError, badKey, f)
172n/a
173n/a f.close()
174n/a
175n/a
176n/a#----------------------------------------------------------------------
177n/a
178n/a
179n/adef test_suite():
180n/a return unittest.makeSuite(CompatibilityTestCase)
181n/a
182n/a
183n/aif __name__ == '__main__':
184n/a unittest.main(defaultTest='test_suite')