Ejemplo n.º 1
0
def test_unordered_hash():
    import random
    import hashlib

    # FIXME: Use randbytes once >=3.9 is OK
    lst = [
        bytes([random.randrange(256) for _ in range(20)]) for _ in range(200)
    ]
    lorig = lst[:]
    random.shuffle(lst)

    from pytools import unordered_hash
    assert (unordered_hash(hashlib.sha256(), lorig).digest() == unordered_hash(
        hashlib.sha256(), lst).digest())
    assert (unordered_hash(hashlib.sha256(), lorig).digest() == unordered_hash(
        hashlib.sha256(), lorig).digest())
    assert (unordered_hash(hashlib.sha256(), lorig).digest() != unordered_hash(
        hashlib.sha256(), lorig[:-1]).digest())
    lst[0] = b"aksdjfla;sdfjafd"
    assert (unordered_hash(hashlib.sha256(), lorig).digest() != unordered_hash(
        hashlib.sha256(), lst).digest())
Ejemplo n.º 2
0
 def update_for_dict(self, key_hash, key):
     from pytools import unordered_hash
     unordered_hash(
         key_hash,
         (self.rec(self.new_hash(), (k, v)).digest()
             for k, v in key.items()))
Ejemplo n.º 3
0
    def update_for_frozenset(self, key_hash, key):
        from pytools import unordered_hash

        unordered_hash(key_hash, (self.rec(self.new_hash(), key_i).digest()
                                  for key_i in key))