1#!/usr/bin/python 2 3import sys, os 4import Tdb 5 6def fail(msg): 7 print 'FAILED:', msg 8 sys.exit(1) 9 10tdb_file = '/tmp/torture_tdb.tdb' 11 12# Create temporary tdb file 13 14t = Tdb.Tdb(tdb_file, flags = Tdb.CLEAR_IF_FIRST) 15 16# Check non-existent key throws KeyError exception 17 18try: 19 t['__none__'] 20except KeyError: 21 pass 22else: 23 fail('non-existent key did not throw KeyError') 24 25# Check storing key 26 27t['bar'] = '1234' 28if t['bar'] != '1234': 29 fail('store key failed') 30 31# Check key exists 32 33if not t.has_key('bar'): 34 fail('has_key() failed for existing key') 35 36if t.has_key('__none__'): 37 fail('has_key() succeeded for non-existent key') 38 39# Delete key 40 41try: 42 del(t['__none__']) 43except KeyError: 44 pass 45else: 46 fail('delete of non-existent key did not throw KeyError') 47 48del t['bar'] 49if t.has_key('bar'): 50 fail('delete of existing key did not delete key') 51 52# Clear all keys 53 54t.clear() 55if len(t) != 0: 56 fail('clear failed to remove all keys') 57 58# Other dict functions 59 60t['a'] = '1' 61t['ab'] = '12' 62t['abc'] = '123' 63 64if len(t) != 3: 65 fail('len method produced wrong value') 66 67keys = t.keys() 68values = t.values() 69items = t.items() 70 71if set(keys) != set(['a', 'ab', 'abc']): 72 fail('keys method produced wrong values') 73 74if set(values) != set(['1', '12', '123']): 75 fail('values method produced wrong values') 76 77if set(items) != set([('a', '1'), ('ab', '12'), ('abc', '123')]): 78 fail('values method produced wrong values') 79 80t.close() 81 82# Re-open read-only 83 84t = Tdb.Tdb(tdb_file, open_flags = os.O_RDONLY) 85t.keys() 86t.close() 87 88# Clean up 89 90os.unlink(tdb_file) 91