|
@@ -173,6 +173,54 @@ class RepositoryTestCase(RepositoryTestCaseBase):
|
|
|
self.assert_equal(self.repository.get(H(0)), max_data)
|
|
|
self.assert_raises(IntegrityError, lambda: self.repository.put(H(1), max_data + b"x"))
|
|
|
|
|
|
+ def test_set_flags(self):
|
|
|
+ id = H(0)
|
|
|
+ self.repository.put(id, b"")
|
|
|
+ self.assert_equal(self.repository.flags(id), 0x00000000) # init == all zero
|
|
|
+ self.repository.flags(id, mask=0x00000001, value=0x00000001)
|
|
|
+ self.assert_equal(self.repository.flags(id), 0x00000001)
|
|
|
+ self.repository.flags(id, mask=0x00000002, value=0x00000002)
|
|
|
+ self.assert_equal(self.repository.flags(id), 0x00000003)
|
|
|
+ self.repository.flags(id, mask=0x00000001, value=0x00000000)
|
|
|
+ self.assert_equal(self.repository.flags(id), 0x00000002)
|
|
|
+ self.repository.flags(id, mask=0x00000002, value=0x00000000)
|
|
|
+ self.assert_equal(self.repository.flags(id), 0x00000000)
|
|
|
+
|
|
|
+ def test_get_flags(self):
|
|
|
+ id = H(0)
|
|
|
+ self.repository.put(id, b"")
|
|
|
+ self.assert_equal(self.repository.flags(id), 0x00000000) # init == all zero
|
|
|
+ self.repository.flags(id, mask=0xC0000003, value=0x80000001)
|
|
|
+ self.assert_equal(self.repository.flags(id, mask=0x00000001), 0x00000001)
|
|
|
+ self.assert_equal(self.repository.flags(id, mask=0x00000002), 0x00000000)
|
|
|
+ self.assert_equal(self.repository.flags(id, mask=0x40000008), 0x00000000)
|
|
|
+ self.assert_equal(self.repository.flags(id, mask=0x80000000), 0x80000000)
|
|
|
+
|
|
|
+ def test_flags_many(self):
|
|
|
+ ids_flagged = [H(0), H(1)]
|
|
|
+ ids_default_flags = [H(2), H(3)]
|
|
|
+ [self.repository.put(id, b"") for id in ids_flagged + ids_default_flags]
|
|
|
+ self.repository.flags_many(ids_flagged, mask=0xFFFFFFFF, value=0xDEADBEEF)
|
|
|
+ self.assert_equal(list(self.repository.flags_many(ids_default_flags)), [0x00000000, 0x00000000])
|
|
|
+ self.assert_equal(list(self.repository.flags_many(ids_flagged)), [0xDEADBEEF, 0xDEADBEEF])
|
|
|
+ self.assert_equal(list(self.repository.flags_many(ids_flagged, mask=0xFFFF0000)), [0xDEAD0000, 0xDEAD0000])
|
|
|
+ self.assert_equal(list(self.repository.flags_many(ids_flagged, mask=0x0000FFFF)), [0x0000BEEF, 0x0000BEEF])
|
|
|
+
|
|
|
+ def test_flags_persistence(self):
|
|
|
+ self.repository.put(H(0), b"default")
|
|
|
+ self.repository.put(H(1), b"one one zero")
|
|
|
+ # we do not set flags for H(0), so we can later check their default state.
|
|
|
+ self.repository.flags(H(1), mask=0x00000007, value=0x00000006)
|
|
|
+ self.repository.commit(compact=False)
|
|
|
+ self.repository.close()
|
|
|
+
|
|
|
+ self.repository = self.open()
|
|
|
+ with self.repository:
|
|
|
+ # we query all flags to check if the initial flags were all zero and
|
|
|
+ # only the ones we explicitly set to one are as expected.
|
|
|
+ self.assert_equal(self.repository.flags(H(0), mask=0xFFFFFFFF), 0x00000000)
|
|
|
+ self.assert_equal(self.repository.flags(H(1), mask=0xFFFFFFFF), 0x00000006)
|
|
|
+
|
|
|
|
|
|
class LocalRepositoryTestCase(RepositoryTestCaseBase):
|
|
|
# test case that doesn't work with remote repositories
|