Пример #1
0
    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])
Пример #2
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)
Пример #3
0
    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()
Пример #4
0
 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()
Пример #5
0
    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()
Пример #6
0
 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])
Пример #7
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[:])
Пример #9
0
 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)
Пример #10
0
    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()
Пример #11
0
    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()
Пример #12
0
    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])