diff options
Diffstat (limited to 'tests/common')
-rw-r--r-- | tests/common/bitfield.py | 22 | ||||
-rw-r--r-- | tests/common/leb128.py | 80 | ||||
-rw-r--r-- | tests/common/xdg.py | 71 |
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')) |