"""Test script for the dumbdbm module
Original by Roger E. Masse
from test
import test_support
_fname
= test_support
.TESTFN
for ext
in [".dir", ".dat", ".bak"]:
class DumbDBMTestCase(unittest
.TestCase
):
def __init__(self
, *args
):
unittest
.TestCase
.__init
__(self
, *args
)
def test_dumbdbm_creation(self
):
f
= dumbdbm
.open(_fname
, 'c')
self
.assertEqual(f
.keys(), [])
def test_close_twice(self
):
self
.assertEqual(f
['a'], 'b')
def test_dumbdbm_modification(self
):
f
= dumbdbm
.open(_fname
, 'w')
self
._dict
['g'] = f
['g'] = "indented"
def test_dumbdbm_read(self
):
f
= dumbdbm
.open(_fname
, 'r')
def test_dumbdbm_keys(self
):
keys
= self
.keys_helper(f
)
def test_write_write_read(self
):
self
.assertEqual(f
['1'], 'hello2')
def test_line_endings(self
):
# test for bug #1172763: dumbdbm would die if the line endings
# weren't what was expected.
# Mangle the file by adding \r before each newline
data
= open(_fname
+ '.dir').read()
data
= data
.replace('\n', '\r\n')
open(_fname
+ '.dir', 'wb').write(data
)
self
.assertEqual(f
['1'], 'hello')
self
.assertEqual(f
['2'], 'hello2')
def read_helper(self
, f
):
keys
= self
.keys_helper(f
)
self
.assertEqual(self
._dict
[key
], f
[key
])
f
= dumbdbm
.open(_fname
, 'w')
def keys_helper(self
, f
):
dkeys
= self
._dict
.keys()
self
.assertEqual(keys
, dkeys
)
# Perform randomized operations. This doesn't make assumptions about
d
= {} # mirror the database
k
= random
.choice('abcdefghijklm')
if random
.random() < 0.2:
v
= random
.choice('abc') * random
.randrange(10000)
self
.assertEqual(f
[k
], v
)
self
.assertEqual(expected
, got
)
test_support
.run_unittest(DumbDBMTestCase
)
if __name__
== "__main__":