Exemplo n.º 1
0
    def test_user_class_serialization(self):
        path = self.get_contract_path('SerializationUserClass.py')
        engine = TestEngine()

        expected_class = [2, 4]
        serialized = self.run_smart_contract(engine,
                                             path,
                                             'serialize_user_class',
                                             expected_result_type=bytes)
        expected_result = serialize(expected_class)
        self.assertEqual(expected_result, serialized)

        result = self.run_smart_contract(engine,
                                         path,
                                         'deserialize_user_class',
                                         serialized,
                                         expected_result_type=list)
        self.assertEqual(expected_class, result)

        result = self.run_smart_contract(engine, path,
                                         'get_variable_from_deserialized',
                                         serialized)
        self.assertEqual(2, result)

        result = self.run_smart_contract(engine, path,
                                         'call_method_from_deserialized',
                                         serialized)
        self.assertEqual(42, result)
Exemplo n.º 2
0
    def test_serialize_dict(self):
        path = self.get_contract_path('SerializeDict.py')
        self.compile_and_save(path)

        engine = TestEngine()
        result = self.run_smart_contract(engine, path, 'serialize_dict',
                                         expected_result_type=bytes)
        expected_result = serialize({1: 1, 2: 1, 3: 2})
        self.assertEqual(expected_result, result)
Exemplo n.º 3
0
    def test_serialize_sequence(self):
        path = self.get_contract_path('SerializeSequence.py')
        self.compile_and_save(path)

        engine = TestEngine()
        result = self.run_smart_contract(engine, path, 'serialize_sequence',
                                         expected_result_type=bytes)
        expected_result = serialize([2, 3, 5, 7])
        self.assertEqual(expected_result, result)
Exemplo n.º 4
0
    def test_serialize_bool(self):
        path = self.get_contract_path('SerializeBool.py')
        self.compile_and_save(path)

        engine = TestEngine()
        result = self.run_smart_contract(engine, path, 'serialize_bool',
                                         expected_result_type=bytes)
        expected_result = serialize(True)
        self.assertEqual(expected_result, result)
Exemplo n.º 5
0
 def test_serialize_str(self):
     path = self.get_contract_path('SerializeStr.py')
     engine = TestEngine()
     result = self.run_smart_contract(engine,
                                      path,
                                      'serialize_str',
                                      expected_result_type=bytes)
     expected_result = serialize('42')
     self.assertEqual(expected_result, result)
Exemplo n.º 6
0
 def test_boa2_serialization_test2(self):
     path = self.get_contract_path('SerializationBoa2Test.py')
     engine = TestEngine()
     result = self.run_smart_contract(engine,
                                      path,
                                      'main',
                                      2,
                                      expected_result_type=bytes)
     expected_result = serialize(['a', 3, ['j', 3, 5], 'jk', 'lmnopqr'])
     self.assertEqual(expected_result, result)
Exemplo n.º 7
0
    def test_deserialize(self):
        path = self.get_contract_path('Deserialize.py')
        engine = TestEngine()

        expected_result = 42
        value = serialize(expected_result)
        result = self.run_smart_contract(engine,
                                         path,
                                         'deserialize_arg',
                                         value,
                                         expected_result_type=bytes)
        self.assertEqual(expected_result, result)

        expected_result = True
        value = serialize(expected_result)
        result = self.run_smart_contract(engine, path, 'deserialize_arg',
                                         value)
        self.assertEqual(expected_result, result)

        value = StackItemType.Boolean + value[1:]
        result = self.run_smart_contract(engine, path, 'deserialize_arg',
                                         value)
        self.assertEqual(expected_result, result)

        expected_result = '42'
        value = serialize(expected_result)
        result = self.run_smart_contract(engine, path, 'deserialize_arg',
                                         value)
        self.assertEqual(expected_result, result)

        expected_result = b'42'
        value = serialize(expected_result)
        result = self.run_smart_contract(engine,
                                         path,
                                         'deserialize_arg',
                                         value,
                                         expected_result_type=bytes)
        self.assertEqual(expected_result, result)

        expected_result = [1, '2', b'3']
        value = serialize(expected_result)
        result = self.run_smart_contract(engine, path, 'deserialize_arg',
                                         value)
        expected_result[2] = String.from_bytes(expected_result[2])
        self.assertEqual(expected_result, result)

        expected_result = {'int': 1, 'str': '2', 'bytes': b'3'}
        value = serialize(expected_result)
        result = self.run_smart_contract(engine, path, 'deserialize_arg',
                                         value)
        expected_result['bytes'] = String.from_bytes(expected_result['bytes'])
        self.assertEqual(expected_result, result)
Exemplo n.º 8
0
    def test_deserialize(self):
        path = self.get_contract_path('Deserialize.py')
        self.compile_and_save(path)

        engine = TestEngine()

        expected_result = 42
        value = serialize(expected_result)
        result = self.run_smart_contract(engine, path, 'deserialize_arg', value,
                                         expected_result_type=bytes)
        self.assertEqual(expected_result, result)

        expected_result = True
        value = serialize(expected_result)
        result = self.run_smart_contract(engine, path, 'deserialize_arg', value)

        # it shouldn't be equal to the convertion, because it converts as an int instead of a boolean
        self.assertEqual(expected_result, result)
        self.assertNotEqual(type(expected_result), type(result))

        value = StackItemType.Boolean + value[1:]
        result = self.run_smart_contract(engine, path, 'deserialize_arg', value,
                                         expected_result_type=bool)
        self.assertEqual(expected_result, result)
        self.assertEqual(type(expected_result), type(result))

        expected_result = '42'
        value = serialize(expected_result)
        result = self.run_smart_contract(engine, path, 'deserialize_arg', value)
        self.assertEqual(expected_result, result)

        expected_result = b'42'
        value = serialize(expected_result)
        result = self.run_smart_contract(engine, path, 'deserialize_arg', value,
                                         expected_result_type=bytes)
        self.assertEqual(expected_result, result)

        expected_result = [1, '2', b'3']
        value = serialize(expected_result)
        result = self.run_smart_contract(engine, path, 'deserialize_arg', value)
        expected_result[2] = String.from_bytes(expected_result[2])
        self.assertEqual(expected_result, result)

        expected_result = {'int': 1, 'str': '2', 'bytes': b'3'}
        value = serialize(expected_result)
        result = self.run_smart_contract(engine, path, 'deserialize_arg', value)
        expected_result['bytes'] = String.from_bytes(expected_result['bytes'])
        self.assertEqual(expected_result, result)