test_api.cpp 7.3 KB
Newer Older
1 2 3 4
/**
 *  @file
 *  @copyright defined in eos/LICENSE.txt
 */
5
#include <eosiolib/eosio.hpp>
6
#include <eosiolib/transaction.hpp>
7

M
Matias Romeo 已提交
8
#include "test_api.hpp"
9 10 11
#include "test_action.cpp"
#include "test_print.cpp"
#include "test_types.cpp"
B
Bucky Kittinger 已提交
12 13 14 15
#include "test_fixedpoint.cpp"
#include "test_compiler_builtins.cpp"
#include "test_crypto.cpp"
#include "test_chain.cpp"
16
#include "test_transaction.cpp"
B
Bucky Kittinger 已提交
17
#include "test_checktime.cpp"
M
Matias Romeo 已提交
18
#include "test_permission.cpp"
19
#include "test_datastream.cpp"
20

21 22
account_name global_receiver;

M
Matias Romeo 已提交
23
extern "C" {
24
   void apply( uint64_t receiver, uint64_t code, uint64_t action ) {
25
      if( code == N(eosio) && action == N(onerror) ) {
26
         auto error = eosio::onerror::from_current_action();
27
         eosio::print("onerror called\n");
28
         auto error_action = error.sent_trx.actions.at(0).name;
29 30 31 32 33 34 35 36 37

         // Error handlers for deferred transactions in these tests currently only support the first action

         WASM_TEST_ERROR_HANDLER("test_action", "assert_false", test_transaction, assert_false_error_handler );


         return;
      }

B
Bucky Kittinger 已提交
38 39 40 41
      if ( action == N(cf_action) ) {
         test_action::test_cf_action();
         return;
      }
B
Bucky Kittinger 已提交
42 43
      WASM_TEST_HANDLER(test_action, assert_true_cf);

K
Kayan 已提交
44 45
      if (action != WASM_TEST_ACTION("test_transaction", "stateful_api") && action != WASM_TEST_ACTION("test_transaction", "context_free_api"))
         require_auth(code);
B
Bucky Kittinger 已提交
46

M
Matias Romeo 已提交
47
      //test_types
48 49 50 51 52
      WASM_TEST_HANDLER(test_types, types_size);
      WASM_TEST_HANDLER(test_types, char_to_symbol);
      WASM_TEST_HANDLER(test_types, string_to_name);
      WASM_TEST_HANDLER(test_types, name_class);

B
Bucky Kittinger 已提交
53 54 55 56
      //test_compiler_builtins
      WASM_TEST_HANDLER(test_compiler_builtins, test_multi3);
      WASM_TEST_HANDLER(test_compiler_builtins, test_divti3);
      WASM_TEST_HANDLER(test_compiler_builtins, test_divti3_by_0);
B
Bucky Kittinger 已提交
57 58 59 60 61 62
      WASM_TEST_HANDLER(test_compiler_builtins, test_udivti3);
      WASM_TEST_HANDLER(test_compiler_builtins, test_udivti3_by_0);
      WASM_TEST_HANDLER(test_compiler_builtins, test_modti3);
      WASM_TEST_HANDLER(test_compiler_builtins, test_modti3_by_0);
      WASM_TEST_HANDLER(test_compiler_builtins, test_umodti3);
      WASM_TEST_HANDLER(test_compiler_builtins, test_umodti3_by_0);
B
Bucky Kittinger 已提交
63
      WASM_TEST_HANDLER(test_compiler_builtins, test_lshlti3);
64 65 66
      WASM_TEST_HANDLER(test_compiler_builtins, test_lshrti3);
      WASM_TEST_HANDLER(test_compiler_builtins, test_ashlti3);
      WASM_TEST_HANDLER(test_compiler_builtins, test_ashrti3);
B
Bucky Kittinger 已提交
67

68
      //test_action
69 70 71
      WASM_TEST_HANDLER(test_action, read_action_normal);
      WASM_TEST_HANDLER(test_action, read_action_to_0);
      WASM_TEST_HANDLER(test_action, read_action_to_64k);
72
      WASM_TEST_HANDLER_EX(test_action, require_notice);
73
      WASM_TEST_HANDLER(test_action, require_auth);
74 75
      WASM_TEST_HANDLER(test_action, assert_false);
      WASM_TEST_HANDLER(test_action, assert_true);
76
      WASM_TEST_HANDLER(test_action, test_current_time);
B
Bucky Kittinger 已提交
77
      WASM_TEST_HANDLER(test_action, test_abort);
78
      WASM_TEST_HANDLER_EX(test_action, test_current_receiver);
B
Bucky Kittinger 已提交
79
      WASM_TEST_HANDLER(test_action, test_publication_time);
M
Matias Romeo 已提交
80

K
Kevin Heifner 已提交
81 82 83 84 85 86
      // test named actions
      // We enforce action name matches action data type name, so name mangling will not work for these tests.
      if ( action == N(dummy_action) ) {
         test_action::test_dummy_action();
         return;
      }
M
Matias Romeo 已提交
87
      //test_print
88
      WASM_TEST_HANDLER(test_print, test_prints);
B
Bucky Kittinger 已提交
89
      WASM_TEST_HANDLER(test_print, test_prints_l);
90
      WASM_TEST_HANDLER(test_print, test_printi);
91
      WASM_TEST_HANDLER(test_print, test_printui);
92
      WASM_TEST_HANDLER(test_print, test_printi128);
93
      WASM_TEST_HANDLER(test_print, test_printui128);
94
      WASM_TEST_HANDLER(test_print, test_printn);
95 96 97
      WASM_TEST_HANDLER(test_print, test_printsf);
      WASM_TEST_HANDLER(test_print, test_printdf);
      WASM_TEST_HANDLER(test_print, test_printqf);
M
Matias Romeo 已提交
98

99
      //test crypto
B
Bucky Kittinger 已提交
100
      WASM_TEST_HANDLER(test_crypto, test_recover_key);
B
Bucky Kittinger 已提交
101 102
      WASM_TEST_HANDLER(test_crypto, test_recover_key_assert_true);
      WASM_TEST_HANDLER(test_crypto, test_recover_key_assert_false);
B
Bucky Kittinger 已提交
103
      WASM_TEST_HANDLER(test_crypto, test_sha1);
104
      WASM_TEST_HANDLER(test_crypto, test_sha256);
B
Bucky Kittinger 已提交
105 106 107
      WASM_TEST_HANDLER(test_crypto, test_sha512);
      WASM_TEST_HANDLER(test_crypto, test_ripemd160);
      WASM_TEST_HANDLER(test_crypto, sha1_no_data);
108
      WASM_TEST_HANDLER(test_crypto, sha256_no_data);
B
Bucky Kittinger 已提交
109 110
      WASM_TEST_HANDLER(test_crypto, sha512_no_data);
      WASM_TEST_HANDLER(test_crypto, ripemd160_no_data);
B
Bucky Kittinger 已提交
111 112 113
      WASM_TEST_HANDLER(test_crypto, sha256_null);
      WASM_TEST_HANDLER(test_crypto, assert_sha256_false);
      WASM_TEST_HANDLER(test_crypto, assert_sha256_true);
B
Bucky Kittinger 已提交
114 115 116 117 118 119
      WASM_TEST_HANDLER(test_crypto, assert_sha1_false);
      WASM_TEST_HANDLER(test_crypto, assert_sha1_true);
      WASM_TEST_HANDLER(test_crypto, assert_sha512_false);
      WASM_TEST_HANDLER(test_crypto, assert_sha512_true);
      WASM_TEST_HANDLER(test_crypto, assert_ripemd160_false);
      WASM_TEST_HANDLER(test_crypto, assert_ripemd160_true);
120 121

      //test transaction
B
Bucky Kittinger 已提交
122 123
      WASM_TEST_HANDLER(test_transaction, test_tapos_block_num);
      WASM_TEST_HANDLER(test_transaction, test_tapos_block_prefix);
B
Bucky Kittinger 已提交
124
      WASM_TEST_HANDLER(test_transaction, send_action);
B
Bucky Kittinger 已提交
125
      WASM_TEST_HANDLER(test_transaction, send_action_inline_fail);
B
Bucky Kittinger 已提交
126 127 128
      WASM_TEST_HANDLER(test_transaction, send_action_empty);
      WASM_TEST_HANDLER(test_transaction, send_action_large);
      WASM_TEST_HANDLER(test_transaction, send_action_recurse);
B
Bucky Kittinger 已提交
129 130
      WASM_TEST_HANDLER(test_transaction, test_read_transaction);
      WASM_TEST_HANDLER(test_transaction, test_transaction_size);
131 132
      WASM_TEST_HANDLER_EX(test_transaction, send_transaction);
      WASM_TEST_HANDLER_EX(test_transaction, send_transaction_empty);
133
      WASM_TEST_HANDLER_EX(test_transaction, send_transaction_trigger_error_handler);
134 135
      WASM_TEST_HANDLER_EX(test_transaction, send_transaction_large);
      WASM_TEST_HANDLER_EX(test_transaction, send_action_sender);
136
      WASM_TEST_HANDLER(test_transaction, deferred_print);
137
      WASM_TEST_HANDLER_EX(test_transaction, send_deferred_transaction);
138
      WASM_TEST_HANDLER(test_transaction, send_deferred_tx_given_payer);
139
      WASM_TEST_HANDLER(test_transaction, cancel_deferred_transaction);
M
Matias Romeo 已提交
140 141
      WASM_TEST_HANDLER(test_transaction, send_cf_action);
      WASM_TEST_HANDLER(test_transaction, send_cf_action_fail);
K
Kayan 已提交
142 143
      WASM_TEST_HANDLER(test_transaction, stateful_api);
      WASM_TEST_HANDLER(test_transaction, context_free_api);
K
Kayan 已提交
144 145
      WASM_TEST_HANDLER(test_transaction, new_feature);
      WASM_TEST_HANDLER(test_transaction, active_new_feature);
146 147 148 149 150 151 152 153 154 155

      //test chain
      WASM_TEST_HANDLER(test_chain, test_activeprods);

      // test fixed_point
      WASM_TEST_HANDLER(test_fixedpoint, create_instances);
      WASM_TEST_HANDLER(test_fixedpoint, test_addition);
      WASM_TEST_HANDLER(test_fixedpoint, test_subtraction);
      WASM_TEST_HANDLER(test_fixedpoint, test_multiplication);
      WASM_TEST_HANDLER(test_fixedpoint, test_division);
B
Bucky Kittinger 已提交
156
      WASM_TEST_HANDLER(test_fixedpoint, test_division_by_0);
157

B
Bucky Kittinger 已提交
158 159 160
      // test checktime
      WASM_TEST_HANDLER(test_checktime, checktime_pass);
      WASM_TEST_HANDLER(test_checktime, checktime_failure);
M
Matias Romeo 已提交
161

162 163 164
      // test datastream
      WASM_TEST_HANDLER(test_datastream, test_basic);

M
Matias Romeo 已提交
165
      // test permission
166
      WASM_TEST_HANDLER_EX(test_permission, check_authorization);
M
Matias Romeo 已提交
167

168
      //unhandled test call
169
      eosio_assert(false, "Unknown Test");
170

M
Matias Romeo 已提交
171 172
   }
}