1
# Copyright (C) 2009, 2010 Canonical Ltd
1
# Copyright (C) 2009, 2010, 2011 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
17
17
"""Tests for _chk_map_*."""
23
from bzrlib.static_tuple import StaticTuple
23
from ..static_tuple import StaticTuple
24
24
stuple = StaticTuple
27
def load_tests(standard_tests, module, loader):
27
def load_tests(loader, standard_tests, pattern):
28
28
suite, _ = tests.permute_tests_for_extension(standard_tests, loader,
29
'bzrlib._chk_map_py', 'bzrlib._chk_map_pyx')
29
'breezy._chk_map_py', 'breezy._chk_map_pyx')
62
62
for char_in in range(256):
63
63
search_key = self.module._search_key_255(stuple(chr(char_in),))
64
64
chars_used.update(search_key)
65
all_chars = set([chr(x) for x in range(256)])
65
all_chars = {chr(x) for x in range(256)}
66
66
unused_chars = all_chars.symmetric_difference(chars_used)
67
67
self.assertEqual(set('\n'), unused_chars)
236
236
self.assertEqual(("sha1:1234",), node.key())
237
237
self.assertEqual('pref\x00fo', node._search_prefix)
238
238
self.assertEqual({'pref\x00fo\x00': ('sha1:abcd',)}, node._items)
241
class Test_BytesToTextKey(tests.TestCase):
243
def assertBytesToTextKey(self, key, bytes):
244
self.assertEqual(key,
245
self.module._bytes_to_text_key(bytes))
247
def assertBytesToTextKeyRaises(self, bytes):
248
# These are invalid bytes, and we want to make sure the code under test
249
# raises an exception rather than segfaults, etc. We don't particularly
250
# care what exception.
251
self.assertRaises(Exception, self.module._bytes_to_text_key, bytes)
254
self.assertBytesToTextKey(('file-id', 'revision-id'),
255
'file: file-id\nparent-id\nname\nrevision-id\n'
256
'da39a3ee5e6b4b0d3255bfef95601890afd80709\n100\nN')
258
def test_invalid_no_kind(self):
259
self.assertBytesToTextKeyRaises(
260
'file file-id\nparent-id\nname\nrevision-id\n'
261
'da39a3ee5e6b4b0d3255bfef95601890afd80709\n100\nN')
263
def test_invalid_no_space(self):
264
self.assertBytesToTextKeyRaises(
265
'file:file-id\nparent-id\nname\nrevision-id\n'
266
'da39a3ee5e6b4b0d3255bfef95601890afd80709\n100\nN')
268
def test_invalid_too_short_file_id(self):
269
self.assertBytesToTextKeyRaises('file:file-id')
271
def test_invalid_too_short_parent_id(self):
272
self.assertBytesToTextKeyRaises('file:file-id\nparent-id')
274
def test_invalid_too_short_name(self):
275
self.assertBytesToTextKeyRaises('file:file-id\nparent-id\nname')
278
self.assertBytesToTextKey(('dir-id', 'revision-id'),
279
'dir: dir-id\nparent-id\nname\nrevision-id')