Browse Source

add tests for BitField...

just a warning, I've completely forgotten how this metaclass stuff
works...  But it still behaves as it should.
main
John-Mark Gurney 1 year ago
parent
commit
8d15e035fe
2 changed files with 27 additions and 6 deletions
  1. +26
    -6
      ui/medashare/metadata/BitField.py
  2. +1
    -0
      ui/medashare/tests.py

+ 26
- 6
ui/medashare/metadata/BitField.py View File

@@ -1,3 +1,5 @@
import unittest

class BitFieldMetaClass: class BitFieldMetaClass:
def __init__(self, name, bases, dct): def __init__(self, name, bases, dct):
for base in bases: for base in bases:
@@ -53,10 +55,28 @@ class BitFieldInstance(object):
BitField = BitFieldMetaClass("BitField", (), {}) BitField = BitFieldMetaClass("BitField", (), {})
__all__ = [ '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>')

+ 1
- 0
ui/medashare/tests.py View File

@@ -10,3 +10,4 @@ from .magic import _TestMagic
from .metadata.crw import _TestCRW from .metadata.crw import _TestCRW
from .metadata.crw import _TestFileMock from .metadata.crw import _TestFileMock
from .metadata.crw import _TestSparseCover from .metadata.crw import _TestSparseCover
from .metadata.BitField import _BFTest

Loading…
Cancel
Save