#!/usr/bin/env python """ Module-level unit tests. """ import unittest import sys sys.path.insert(0, '..') import bitstring import copy class ModuleData(unittest.TestCase): def testVersion(self): self.assertEqual(bitstring.__version__, '3.1.3') def testAll(self): exported = ['ConstBitArray', 'ConstBitStream', 'BitStream', 'BitArray', 'Bits', 'BitString', 'pack', 'Error', 'ReadError', 'InterpretError', 'ByteAlignError', 'CreationError', 'bytealigned'] self.assertEqual(set(bitstring.__all__), set(exported)) def testReverseDict(self): d = bitstring.BYTE_REVERSAL_DICT for i in range(256): a = bitstring.Bits(uint=i, length=8) b = d[i] self.assertEqual(a.bin[::-1], bitstring.Bits(bytes=b).bin) def testAliases(self): self.assertTrue(bitstring.Bits is bitstring.ConstBitArray) self.assertTrue(bitstring.BitStream is bitstring.BitString) class MemoryUsage(unittest.TestCase): def testBaselineMemory(self): try: import pympler.asizeof.asizeof as size except ImportError: return # These values might be platform dependent, so don't fret too much. self.assertEqual(size(bitstring.ConstBitStream([0])), 64) self.assertEqual(size(bitstring.Bits([0])), 64) self.assertEqual(size(bitstring.BitStream([0])), 64) self.assertEqual(size(bitstring.BitArray([0])), 64) from bitstring.bitstore import ByteStore self.assertEqual(size(ByteStore(bytearray())), 100) class Copy(unittest.TestCase): def testConstBitArrayCopy(self): import copy cba = bitstring.Bits(100) cba_copy = copy.copy(cba) self.assertTrue(cba is cba_copy) def testBitArrayCopy(self): ba = bitstring.BitArray(100) ba_copy = copy.copy(ba) self.assertFalse(ba is ba_copy) self.assertFalse(ba._datastore is ba_copy._datastore) self.assertTrue(ba == ba_copy) def testConstBitStreamCopy(self): cbs = bitstring.ConstBitStream(100) cbs.pos = 50 cbs_copy = copy.copy(cbs) self.assertEqual(cbs_copy.pos, 0) self.assertTrue(cbs._datastore is cbs_copy._datastore) self.assertTrue(cbs == cbs_copy) def testBitStreamCopy(self): bs = bitstring.BitStream(100) bs.pos = 50 bs_copy = copy.copy(bs) self.assertEqual(bs_copy.pos, 0) self.assertFalse(bs._datastore is bs_copy._datastore) self.assertTrue(bs == bs_copy) class Interning(unittest.TestCase): def testBits(self): a = bitstring.Bits('0xf') b = bitstring.Bits('0xf') self.assertTrue(a is b) c = bitstring.Bits('0b1111') self.assertFalse(a is c) def testCBS(self): a = bitstring.ConstBitStream('0b11000') b = bitstring.ConstBitStream('0b11000') self.assertFalse(a is b) # self.assertTrue(a._datastore is b._datastore)