def test_bytestack_conversion(self): size = 50 vm = VM() stack_int.new(vm) for val in range(size): vm.push(val) vm.swap1() stack_int.push(vm) vm.push(size * 32) vm.tnewn(2) bytestack.set_val("size")(vm) bytestack.set_val("stack")(vm) start_stack = vm.stack[0] sized_byterange.from_bytestack(vm) br = sized_byterange.make() for val in range(size): br = sized_byterange.set_static(br, val * 32, val) self.assertEqual(br, vm.stack[0]) sized_byterange.to_bytestack(vm) self.assertEqual(start_stack, vm.stack[0])
def test_set(self): vm = VM() arr = Array(100) vm.push(Array.from_list(list(range(100)))) for i in range(100): vm.push(i + 100) vm.swap1() arr.set_val(i)(vm) result = Array.from_list([x + 100 for x in range(100)]) self.assertEqual(vm.stack[0], result)
def test_simple(self): vm = VM() stack.new(vm) for val in range(200): vm.push(val) vm.swap1() stack.push(vm) for val in range(199, -1, -1): stack.pop(vm) self.assertEqual(vm.stack[0], val) vm.pop()
def test_getset(self): vm = VM() bs = bigstruct.BigStruct([(i + 1, i + 1, i + 1) for i in range(101)]) bs.initialize(vm) vm.dup0() bs.get(13, vm) self.assertEqual(vm.stack[0], 13) vm.pop() vm.push(666) vm.swap1() bs.set_val(25, vm) vm.pop()
def test_simple(self): vm = VM() queue.new(vm) for val in range(200): vm.push(val) vm.swap1() queue.put(vm) for val in range(200): queue.get(vm) self.assertEqual(vm.stack[0], val) vm.pop()
def test_random_keccak256(self): data = bytearray(random.getrandbits(8) for _ in range(64)) vm = VM() sha3.ctx_new(vm) for v in data: vm.push(v) vm.swap1() sha3.ctx_pushbyte(vm) real_hash = int.from_bytes(eth_utils.crypto.keccak(data), byteorder="big") sha3.keccak_ctx_finish(vm) self.assertEqual(real_hash, vm.stack[0])
def test_vec1(self): vm = VM() sha3.ctx_new(vm) hasher = hashlib.sha3_256() for i in range(200): vm.push(0xa3) vm.swap1() sha3.ctx_pushbyte(vm) hasher.update(bytes([0xa3])) real_hash = int.from_bytes(hasher.digest(), byteorder="big") sha3.ctx_finish(vm) self.assertEqual(vm.stack[0], real_hash)
def test_compress(self): vm = VM() vm.stack.items = list(range(93)) stack_manip.compress(vm) vm2 = VM() stack.new(vm2) for i in range(93): vm2.push(i) vm2.swap1() stack.push(vm2) self.assertEqual(vm.stack[:], vm2.stack[:])
def test_random_sha3(self): data = bytearray(random.getrandbits(8) for _ in range(64)) vm = VM() sha3.ctx_new(vm) hasher = hashlib.sha3_256() hasher.update(data) for v in data: vm.push(v) vm.swap1() sha3.ctx_pushbyte(vm) real_hash = int.from_bytes(hasher.digest(), byteorder="big") sha3.ctx_finish(vm) self.assertEqual(vm.stack[0], real_hash)
def test_set(self): for size in sizes: bs = bigstruct.BigStruct([(i + 1, i + 1, i + 1) for i in range(size)]) vm = VM() bs.initialize(vm) for i in range(size): vm.push(i + 100) vm.swap1() bs.set_val(i + 1, vm) for i in range(size): vm.dup0() bs.get(i + 1, vm) self.assertEqual(vm.stack[0], i + 100) vm.pop()
def test_set(self): bs = bigstruct.BigStruct([(i + 1, str(i + 1), i + 1) for i in range(101)]) vm = VM() bs.initialize(vm) for i in range(101): vm.push(i + 100) vm.swap1() bs.set_val(str(i + 1), vm) for i in range(101): vm.dup0() bs.get(str(i + 1), vm) self.assertEqual(vm.stack[0], i + 100) vm.pop()
def test_pushblock(self): data = bytearray(random.getrandbits(8) for _ in range(200)) vm1 = VM() sha3.ctx_new(vm1) for v in range(136): vm1.push(data[v]) vm1.swap1() sha3.ctx_pushbyte(vm1) vm2 = VM() vm2.push(0) vm2.push(byterange.frombytes(data)) sha3.byterange_get136(vm2) sha3.ctx_new(vm2) sha3.ctx_pushblock(vm2) self.assertEqual(vm1.stack[0], vm2.stack[0])