def test_resumable_hashing(self):
        """Resuming hash has the same result as hashlib."""
        results = []
        hexresults = []
        data = "Freedom is slavery" * 1000

        sha = hashlib.sha1()
        sha.update(data)
        results.append(sha.digest())
        hexresults.append(sha.hexdigest())

        sha = rhashlib.sha1()
        sha.update(data[:500])

        sha2 = rhashlib.sha1()
        sha2.set_context(sha.get_context())
        sha2.update(data[500:])

        results.append(sha2.digest())
        hexresults.append(sha2.hexdigest())

        self.assertEqual(*results)
        self.assertEqual(*hexresults)
    def test_context(self):
        """get/set context work."""
        ctx = rhashlib.sha1()
        h0 = ctx.h0

        # get content works
        old = ctx.get_context()

        # change it
        ctx.h0 = 1
        self.assertEqual(ctx.h0, 1)

        # set works
        ctx.set_context(old)
        self.assertEqual(old, ctx.get_context())
        self.assertEqual(ctx.h0, h0)
 def test_copy(self):
     """copied hashes have the same context."""
     s = rhashlib.sha1("Thoughtcrime does not entail death: "
                       "thoughtcrime is death.")
     self.assertEqual(s.get_context(), s.copy().get_context())