summaryrefslogtreecommitdiff
path: root/tests/common
diff options
context:
space:
mode:
Diffstat (limited to 'tests/common')
-rw-r--r--tests/common/bitfield.py22
-rw-r--r--tests/common/leb128.py80
-rw-r--r--tests/common/xdg.py71
3 files changed, 112 insertions, 61 deletions
diff --git a/tests/common/bitfield.py b/tests/common/bitfield.py
index 75dfb6e..5d535fd 100644
--- a/tests/common/bitfield.py
+++ b/tests/common/bitfield.py
@@ -93,7 +93,7 @@ class TestBitFields(ChrysalideTestCase):
bf_a = BitField(75, 0)
bf_b = BitField(4, 1)
- bf_b.reset(2, 1)
+ bf_b.reset(2)
bf_a.or_at(bf_b, 63)
@@ -130,14 +130,14 @@ class TestBitFields(ChrysalideTestCase):
bf_t = BitField(75, 0)
for i in range(75):
- bf_t.set(i, 1)
+ bf_t.set(i)
self.assertEqual(bf_t, bf_1)
self.assertEqual(bf_t.popcount, bf_1.popcount)
for i in range(75):
- bf_t.reset(i, 1)
+ bf_t.reset(i)
self.assertEqual(bf_t, bf_0)
@@ -223,8 +223,8 @@ class TestBitFields(ChrysalideTestCase):
"""Check bitfield comparison."""
bf_a = BitField(9, 0)
- bf_a.set(0, 1)
- bf_a.set(5, 1)
+ bf_a.set(0)
+ bf_a.set(5)
bf_b = BitField(9, 1)
@@ -240,7 +240,7 @@ class TestBitFields(ChrysalideTestCase):
bits = [ 0, 1, 50, 63, 64, 65, 111 ]
for b in bits:
- bf.set(b, 1)
+ bf.set(b)
prev = None
found = []
@@ -261,17 +261,17 @@ class TestBitFields(ChrysalideTestCase):
def testRealCase00(self):
- """Test bits in bitfields against other bitfields in a real case (#02)."""
+ """Test bits in bitfields against other bitfields in a real case (#00)."""
bf = BitField(128, 0)
for b in [ 0, 50, 54, 58, 66, 70, 98 ]:
- bf.set(b, 1)
+ bf.set(b)
mask = BitField(128, 0)
for b in [ 0, 51 ]:
- mask.set(b, 1)
+ mask.set(b)
self.assertFalse(bf.test_zeros_with(0, mask))
@@ -284,7 +284,7 @@ class TestBitFields(ChrysalideTestCase):
self.assertTrue(bf.test_zeros_with(0, mask))
for b in [ 0, 8, 9, 10 ]:
- mask.set(b, 1)
+ mask.set(b)
self.assertTrue(bf.test_zeros_with(0, mask))
@@ -305,7 +305,7 @@ class TestBitFields(ChrysalideTestCase):
bits = [ 0, 50, 54, 58, 66, 70, 98 ]
for b in bits:
- mask.set(b, 1)
+ mask.set(b)
bf.or_at(mask, 0)
diff --git a/tests/common/leb128.py b/tests/common/leb128.py
index db3013e..037af4d 100644
--- a/tests/common/leb128.py
+++ b/tests/common/leb128.py
@@ -1,7 +1,6 @@
from chrysacase import ChrysalideTestCase
from pychrysalide.common import pack_uleb128, unpack_uleb128, pack_leb128, unpack_leb128
-from pychrysalide.common import PackedBuffer
class TestLEB128Values(ChrysalideTestCase):
@@ -16,34 +15,30 @@ class TestLEB128Values(ChrysalideTestCase):
128: b'\x80\x01',
}
- for value, encoding in cases.items():
-
- pbuf = PackedBuffer()
+ # Lecture depuis des blocs individuels
- status = pack_uleb128(value, pbuf)
- self.assertTrue(status)
+ for value, encoding in cases.items():
- self.assertEqual(pbuf.payload_length, len(encoding))
+ self.assertEqual(pack_uleb128(value), encoding)
- pbuf.rewind()
+ v, r = unpack_uleb128(encoding)
- got = pbuf.extract(len(encoding))
+ self.assertEqual(value, v)
+ self.assertEqual(b'', r)
- self.assertEqual(got, encoding)
+ # Lecture depuis un bloc commun
- self.assertFalse(pbuf.more_data)
+ data = b''.join(cases.values())
- for value, encoding in cases.items():
+ values = []
- pbuf = PackedBuffer()
- pbuf.extend(encoding, False)
+ while len(data) > 0:
- pbuf.rewind()
+ val, data = unpack_uleb128(data)
- got = unpack_uleb128(pbuf)
- self.assertIsNotNone(got)
+ values.append(val)
- self.assertEqual(got, value)
+ self.assertEqual(values, [ k for k in cases.keys() ])
def testSignedLeb128Encoding(self):
@@ -55,54 +50,39 @@ class TestLEB128Values(ChrysalideTestCase):
-9001: b'\xd7\xb9\x7f',
}
- for value, encoding in cases.items():
+ # Lecture depuis des blocs individuels
- pbuf = PackedBuffer()
+ for value, encoding in cases.items():
- status = pack_leb128(value, pbuf)
- self.assertTrue(status)
+ self.assertEqual(pack_leb128(value), encoding)
- self.assertEqual(pbuf.payload_length, len(encoding))
+ v, r = unpack_leb128(encoding)
- pbuf.rewind()
+ self.assertEqual(value, v)
+ self.assertEqual(b'', r)
- got = pbuf.extract(len(encoding))
+ # Lecture depuis un bloc commun
- self.assertEqual(got, encoding)
+ data = b''.join(cases.values())
- self.assertFalse(pbuf.more_data)
+ values = []
- for value, encoding in cases.items():
+ while len(data) > 0:
- pbuf = PackedBuffer()
- pbuf.extend(encoding, False)
+ val, data = unpack_leb128(data)
- pbuf.rewind()
+ values.append(val)
- got = unpack_leb128(pbuf)
- self.assertIsNotNone(got)
-
- self.assertEqual(got, value)
+ self.assertEqual(values, [ k for k in cases.keys() ])
def testTooBigLeb128Encodings(self):
"""Prevent overflow for LEB128 values."""
- pbuf = PackedBuffer()
- pbuf.extend(b'\x80' * 10 + b'\x7f', False)
-
- pbuf.rewind()
-
- got = unpack_uleb128(pbuf)
-
- self.assertIsNone(got)
-
- pbuf = PackedBuffer()
- pbuf.extend(b'\x80' * 10 + b'\x7f', False)
-
- pbuf.rewind()
+ v = unpack_uleb128(b'\x80' * 10 + b'\x7f')
- got = unpack_leb128(pbuf)
+ self.assertIsNone(v)
- self.assertIsNone(got)
+ v = unpack_leb128(b'\x80' * 10 + b'\x7f')
+ self.assertIsNone(v)
diff --git a/tests/common/xdg.py b/tests/common/xdg.py
new file mode 100644
index 0000000..df03c3c
--- /dev/null
+++ b/tests/common/xdg.py
@@ -0,0 +1,71 @@
+
+import os
+
+from chrysacase import ChrysalideTestCase
+from pychrysalide.common import get_xdg_cache_dir, get_xdg_config_dir, get_xdg_data_dir, \
+ get_xdg_state_dir, get_xdg_runtime_dir
+
+
+class TestXDG(ChrysalideTestCase):
+ """TestCase for XDG directories."""
+
+ def testXDGCachePath(self):
+ """Retrieve the XDG cache directory."""
+
+ filename = get_xdg_cache_dir('test.txt', False)
+
+ self.assertIsNotNone(filename)
+ self.assertTrue(filename.startswith(os.sep))
+ self.assertTrue(filename.endswith('test.txt'))
+
+ # Depends on current configuration
+ self.assertTrue('.cache' in filename)
+
+
+ def testXDGConfigPath(self):
+ """Retrieve the XDG config directory."""
+
+ filename = get_xdg_config_dir('test.txt', False)
+
+ self.assertIsNotNone(filename)
+ self.assertTrue(filename.startswith(os.sep))
+ self.assertTrue(filename.endswith('test.txt'))
+
+ # Depends on current configuration
+ self.assertTrue('.config' in filename)
+
+
+ def testXDGDataPath(self):
+ """Retrieve the XDG data directory."""
+
+ filename = get_xdg_data_dir('test.txt', False)
+
+ self.assertIsNotNone(filename)
+ self.assertTrue(filename.startswith(os.sep))
+ self.assertTrue(filename.endswith('test.txt'))
+
+ # Depends on current configuration
+ self.assertTrue(os.path.join('.local', 'share') in filename)
+
+
+ def testXDGStatePath(self):
+ """Retrieve the XDG state directory."""
+
+ filename = get_xdg_state_dir('test.txt', False)
+
+ self.assertIsNotNone(filename)
+ self.assertTrue(filename.startswith(os.sep))
+ self.assertTrue(filename.endswith('test.txt'))
+
+ # Depends on current configuration
+ self.assertTrue(os.path.join('.local', 'state') in filename)
+
+
+ def testXDGRuntimePath(self):
+ """Retrieve the XDG runtime directory."""
+
+ filename = get_xdg_runtime_dir('test.txt')
+
+ self.assertIsNotNone(filename)
+ self.assertTrue(filename.startswith(os.sep))
+ self.assertTrue(filename.endswith('test.txt'))