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
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')