|
|
@@ -1,3 +1,5 @@ |
|
|
|
import unittest |
|
|
|
|
|
|
|
class BitFieldMetaClass: |
|
|
|
def __init__(self, name, bases, dct): |
|
|
|
for base in bases: |
|
|
@@ -53,10 +55,28 @@ class BitFieldInstance(object): |
|
|
|
BitField = BitFieldMetaClass("BitField", (), {}) |
|
|
|
__all__ = [ 'BitField' ] |
|
|
|
|
|
|
|
def bftest(): |
|
|
|
class foo(BitField): |
|
|
|
bar = 3 |
|
|
|
foo = 4 |
|
|
|
bleh = 16 |
|
|
|
class _BFTest(unittest.TestCase): |
|
|
|
def test_bftest(self): |
|
|
|
class foo(BitField): |
|
|
|
bar = 3 |
|
|
|
foo = 4 |
|
|
|
bleh = 16 |
|
|
|
|
|
|
|
i = foo(16) |
|
|
|
|
|
|
|
self.assertEqual(int(i), 16) |
|
|
|
self.assertFalse(i.bar) |
|
|
|
self.assertTrue(i.foo) |
|
|
|
self.assertFalse(i.bleh) |
|
|
|
|
|
|
|
with self.assertRaises(AttributeError): |
|
|
|
i.asldfkj |
|
|
|
|
|
|
|
i.bar = True |
|
|
|
|
|
|
|
self.assertTrue(i.bar) |
|
|
|
|
|
|
|
self.assertEqual(int(i), 2**4 | 2**3) |
|
|
|
|
|
|
|
return foo(16) |
|
|
|
self.assertEqual(repr(i), "BitFieldInstance('foo', {'bar': 3, 'foo': 4, 'bleh': 16}, 24)") |
|
|
|
self.assertEqual(str(i), '<bar,foo>') |