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