summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_dbm_dumb.py
diff options
context:
space:
mode:
authorBrett Cannon <bcannon@gmail.com>2008-11-21 00:17:53 (GMT)
committerBrett Cannon <bcannon@gmail.com>2008-11-21 00:17:53 (GMT)
commit58425d31036e07bb415e66d37d8bd59516595a9e (patch)
treefb0e7f0fa3d7cc2a31a2887b2bf279433135342a /Lib/test/test_dbm_dumb.py
parent6e0d68e9e25fd6ea692a74a57447e98b87a606ad (diff)
downloadcpython-58425d31036e07bb415e66d37d8bd59516595a9e.zip
cpython-58425d31036e07bb415e66d37d8bd59516595a9e.tar.gz
cpython-58425d31036e07bb415e66d37d8bd59516595a9e.tar.bz2
Make dbm.dumb encode strings as UTF-8. Also fix it so it accepts bytes and
strings. Closes issue #3799.
Diffstat (limited to 'Lib/test/test_dbm_dumb.py')
-rw-r--r--Lib/test/test_dbm_dumb.py46
1 files changed, 31 insertions, 15 deletions
diff --git a/Lib/test/test_dbm_dumb.py b/Lib/test/test_dbm_dumb.py
index 9bdc240..940991d 100644
--- a/Lib/test/test_dbm_dumb.py
+++ b/Lib/test/test_dbm_dumb.py
@@ -19,13 +19,14 @@ def _delete_files():
pass
class DumbDBMTestCase(unittest.TestCase):
- _dict = {'0': b'',
- 'a': b'Python:',
- 'b': b'Programming',
- 'c': b'the',
- 'd': b'way',
- 'f': b'Guido',
- 'g': b'intended',
+ _dict = {b'0': b'',
+ b'a': b'Python:',
+ b'b': b'Programming',
+ b'c': b'the',
+ b'd': b'way',
+ b'f': b'Guido',
+ b'g': b'intended',
+ '\u00fc'.encode('utf-8') : b'!',
}
def __init__(self, *args):
@@ -35,7 +36,7 @@ class DumbDBMTestCase(unittest.TestCase):
f = dumbdbm.open(_fname, 'c')
self.assertEqual(list(f.keys()), [])
for key in self._dict:
- f[key.encode("ascii")] = self._dict[key]
+ f[key] = self._dict[key]
self.read_helper(f)
f.close()
@@ -73,7 +74,7 @@ class DumbDBMTestCase(unittest.TestCase):
def test_dumbdbm_modification(self):
self.init_db()
f = dumbdbm.open(_fname, 'w')
- self._dict['g'] = f[b'g'] = b"indented"
+ self._dict[b'g'] = f[b'g'] = b"indented"
self.read_helper(f)
f.close()
@@ -105,6 +106,21 @@ class DumbDBMTestCase(unittest.TestCase):
self.assertEqual(f[b'1'], b'hello2')
f.close()
+ def test_str_read(self):
+ self.init_db()
+ f = dumbdbm.open(_fname, 'r')
+ self.assertEqual(f['\u00fc'], self._dict['\u00fc'.encode('utf-8')])
+
+ def test_str_write_contains(self):
+ self.init_db()
+ f = dumbdbm.open(_fname)
+ f['\u00fc'] = b'!'
+ f.close()
+ f = dumbdbm.open(_fname, 'r')
+ self.assert_('\u00fc' in f)
+ self.assertEqual(f['\u00fc'.encode('utf-8')],
+ self._dict['\u00fc'.encode('utf-8')])
+
def test_line_endings(self):
# test for bug #1172763: dumbdbm would die if the line endings
# weren't what was expected.
@@ -129,16 +145,16 @@ class DumbDBMTestCase(unittest.TestCase):
def read_helper(self, f):
keys = self.keys_helper(f)
for key in self._dict:
- self.assertEqual(self._dict[key], f[key.encode("ascii")])
+ self.assertEqual(self._dict[key], f[key])
def init_db(self):
f = dumbdbm.open(_fname, 'w')
for k in self._dict:
- f[k.encode("ascii")] = self._dict[k]
+ f[k] = self._dict[k]
f.close()
def keys_helper(self, f):
- keys = sorted(k.decode("ascii") for k in f.keys())
+ keys = sorted(f.keys())
dkeys = sorted(self._dict.keys())
self.assertEqual(keys, dkeys)
return keys
@@ -155,12 +171,12 @@ class DumbDBMTestCase(unittest.TestCase):
if random.random() < 0.2:
if k in d:
del d[k]
- del f[k.encode("ascii")]
+ del f[k]
else:
v = random.choice((b'a', b'b', b'c')) * random.randrange(10000)
d[k] = v
- f[k.encode("ascii")] = v
- self.assertEqual(f[k.encode("ascii")], v)
+ f[k] = v
+ self.assertEqual(f[k], v)
f.close()
f = dumbdbm.open(_fname)