def hash_string_to_integer(string, size=32): return deserialize_hash(StringIO(string.decode('hex')[::-1]), size)
def __test__(self, list_, len_, result): file_ = StringIO(result) self.assertEqual(list(deserialize_list(file_, lambda f:deserialize_hash(f, len_))), list_)
class test_serialize(ScenarioTest): scenarios = HASH_LIST def __test__(self, list_, len_, result): self.assertEqual(serialize_list(list_, lambda h:serialize_hash(h, len_)), result) class test_deserialize(ScenarioTest): scenarios = HASH_LIST def __test__(self, list_, len_, result): file_ = StringIO(result) self.assertEqual(list(deserialize_list(file_, lambda f:deserialize_hash(f, len_))), list_) # FIXME: test serialization of a list of inputs, outputs, transactions, # blocks, etc. INVALID_LIST = [ dict(invalid='030102'.decode('hex'), deserializer=deserialize_varint), dict(invalid='040002aabb03ccddee'.decode('hex'), deserializer=deserialize_varchar), dict(invalid='05aabbccdd'.decode('hex'), deserializer=lambda f:deserialize_hash(f,1)), ] class TestInvalidListSerialization(unittest2.TestCase): __metaclass__ = ScenarioMeta class test_invalid_serialization(ScenarioTest): scenarios = INVALID_LIST def __test__(self, invalid, deserializer): file_ = StringIO(invalid) self.assertRaises(BaseException, deserialize_list, (file_, deserializer)) # # End of File #
def __test__(self, hash_, len_, result): file_ = StringIO(result) self.assertEqual(deserialize_hash(file_, len_), hash_)