1############################################################################## 2# 3# Copyright (c) 2010 Zope Foundation and Contributors. 4# All Rights Reserved. 5# 6# This software is subject to the provisions of the Zope Public License, 7# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. 8# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED 9# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 10# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS 11# FOR A PARTICULAR PURPOSE. 12# 13############################################################################## 14import unittest 15 16from BTrees import fsBTree 17from ._test_builder import update_module 18 19class fsBucketTests(unittest.TestCase): 20 21 def _getTargetClass(self): 22 return fsBTree.fsBucket 23 24 def _makeOne(self, *args, **kw): 25 return self._getTargetClass()(*args, **kw) 26 27 def _makeBytesItems(self): 28 from .._compat import _ascii 29 return[(_ascii(c*2), _ascii(c*6)) for c in 'abcdef'] 30 31 def test_toString(self): 32 bucket = self._makeOne(self._makeBytesItems()) 33 self.assertEqual(bucket.toString(), 34 b'aabbccddeeffaaaaaabbbbbbccccccddddddeeeeeeffffff') 35 36 def test_fromString(self): 37 before = self._makeOne(self._makeBytesItems()) 38 after = before.fromString(before.toString()) 39 self.assertEqual(before.__getstate__(), after.__getstate__()) 40 41 def test_fromString_empty(self): 42 before = self._makeOne(self._makeBytesItems()) 43 after = before.fromString(b'') 44 self.assertEqual(after.__getstate__(), ((),)) 45 46 def test_fromString_invalid_length(self): 47 bucket = self._makeOne(self._makeBytesItems()) 48 self.assertRaises(ValueError, bucket.fromString, b'xxx') 49 50 51 52class fsBucketPyTests(fsBucketTests): 53 54 def _getTargetClass(self): 55 return fsBTree.fsBucketPy 56 57class fsTreeTests(unittest.TestCase): 58 59 def _check_sizes(self, cls): 60 self.assertEqual(cls.max_leaf_size, 500) 61 self.assertEqual(cls.max_internal_size, 500) 62 63 def test_BTree_sizes(self): 64 self._check_sizes(fsBTree.BTree) 65 self._check_sizes(fsBTree.BTreePy) 66 67 def test_TreeSet_sizes(self): 68 self._check_sizes(fsBTree.TreeSet) 69 self._check_sizes(fsBTree.TreeSetPy) 70 71update_module(globals(), fsBTree) 72