diff --git a/contracts/CMakeLists.txt b/contracts/CMakeLists.txt index 777ac2f1063211340a4fec5693b197066f704e81..43c76819790f58a3e48bbbd13b3c27bd63fe7bab 100644 --- a/contracts/CMakeLists.txt +++ b/contracts/CMakeLists.txt @@ -17,8 +17,8 @@ add_subdirectory(infinite) add_subdirectory(proxy) add_subdirectory(test_api) add_subdirectory(test_api_mem) +add_subdirectory(test_api_db) #add_subdirectory(simpledb) -#add_subdirectory(test_api_db) #add_subdirectory(storage) #add_subdirectory(social) add_subdirectory(test.system) diff --git a/contracts/test.system/test.system.cpp b/contracts/test.system/test.system.cpp index e03b83cfeb112c93544183fa61b38ba4f6abd104..19d1219bd7a0ad8dccc97983075e2859d34ab16a 100644 --- a/contracts/test.system/test.system.cpp +++ b/contracts/test.system/test.system.cpp @@ -92,7 +92,6 @@ namespace testsystem { using dispatcher = dispatcher_impl; }; - extern "C" { /// The apply method implements the dispatch of events to this contract diff --git a/contracts/test_api/test_chain.cpp b/contracts/test_api/test_chain.cpp index 08e351ee12d6a9875f28ad6b44933329fc53347e..1c19abe3ca548d6cad052156c4c602c99c2748e2 100644 --- a/contracts/test_api/test_chain.cpp +++ b/contracts/test_api/test_chain.cpp @@ -17,7 +17,7 @@ struct producers { void test_chain::test_activeprods() { producers act_prods; read_action(&act_prods, sizeof(producers)); - + eosio_assert(act_prods.len == 21, "producers.len != 21"); producers api_prods; diff --git a/contracts/test_api/test_checktime.cpp b/contracts/test_api/test_checktime.cpp index a06639b3c7e25324e9c637bb050f6e4c555318bb..7c2a4403955bde180d35607d76ce786b3f80524d 100644 --- a/contracts/test_api/test_checktime.cpp +++ b/contracts/test_api/test_checktime.cpp @@ -16,7 +16,10 @@ void test_checktime::checktime_pass() { void test_checktime::checktime_failure() { int p = 0; - checktime_failure(); - p++; + for ( unsigned long long i = 0; i < 10000000000000000000ULL; i++ ) + for ( unsigned long long j = 0; i < 10000000000000000000ULL; i++ ) + p += i+j; + + eosio::print(p); } diff --git a/contracts/test_api_db/CMakeLists.txt b/contracts/test_api_db/CMakeLists.txt index 086cf59b02aa726f6e2fe00cace778cb48c206a9..0121439dbf15429d80daaf5bbc4584ee1efe4d0f 100644 --- a/contracts/test_api_db/CMakeLists.txt +++ b/contracts/test_api_db/CMakeLists.txt @@ -1 +1,5 @@ -add_wast_target(test_api_db "${CMAKE_SOURCE_DIR}/contracts" ${CMAKE_CURRENT_BINARY_DIR}) +add_wast_executable(TARGET test_api_db + INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" + LIBRARIES libc++ libc eosiolib + DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} +) diff --git a/contracts/test_api_db/test_api_db.cpp b/contracts/test_api_db/test_api_db.cpp index b61523bea25d89e6e2c4dd76e6fac42ee132804b..c92e173ec2cad52a7715a11a0246752af9e73f26 100644 --- a/contracts/test_api_db/test_api_db.cpp +++ b/contracts/test_api_db/test_api_db.cpp @@ -15,6 +15,8 @@ extern "C" { void apply( unsigned long long code, unsigned long long action ) { + WASM_TEST_HANDLER(test_db, key_str_general); +#if 0 //test db WASM_TEST_HANDLER(test_db, key_i64_general); WASM_TEST_HANDLER(test_db, key_i64_remove_all); @@ -25,7 +27,6 @@ extern "C" { WASM_TEST_HANDLER(test_db, key_i64_not_found); WASM_TEST_HANDLER(test_db, key_i64_front_back); WASM_TEST_HANDLER(test_db, key_i128i128_general); -#if 0 WASM_TEST_HANDLER(test_db, key_str_general); WASM_TEST_HANDLER(test_db, key_str_table); WASM_TEST_HANDLER(test_db, key_str_setup_limit); @@ -52,7 +53,7 @@ extern "C" { #endif //unhandled test call - assert(false, "Unknown Test"); + eosio_assert(false, "Unknown Test"); } } diff --git a/contracts/test_api_db/test_db.cpp b/contracts/test_api_db/test_db.cpp index cd8ff9cad2fe94d4b1a394be08643e09c1949129..b05d322287f6654f81d2107c1af6133d14e798a5 100644 --- a/contracts/test_api_db/test_db.cpp +++ b/contracts/test_api_db/test_db.cpp @@ -81,6 +81,7 @@ extern "C" { } } +#if 0 void test_db::key_str_table() { const char* keys[] = { "alice", "bob", "carol", "dave" }; @@ -98,84 +99,85 @@ void test_db::key_str_table() { // fill some data in contiguous tables for( int ii = 0; ii < 4; ++ii ) { res = StringTableAtr.store( (char*)keys[ii], STRLEN(keys[ii]), (char*)atr[ii], STRLEN(atr[ii]) ); - assert( res != 0, "atr" ); + eosio_assert( res != 0, "atr" ); res = StringTableZtr.store( (char*)keys[ii], STRLEN(keys[ii]), (char*)ztr[ii], STRLEN(ztr[ii]) ); - assert(res != 0, "ztr" ); + eosio_assert(res != 0, "ztr" ); } char tmp[64]; res = StringTableStr.store ((char *)keys[0], STRLEN(keys[0]), (char *)vals[0], STRLEN(vals[0])); - assert(res != 0, "store alice" ); + eosio_assert(res != 0, "store alice" ); res = StringTableStr.store((char *)keys[1], STRLEN(keys[1]), (char *)vals[1], STRLEN(vals[1]) ); - assert(res != 0, "store bob" ); + eosio_assert(res != 0, "store bob" ); res = StringTableStr.store((char *)keys[2], STRLEN(keys[2]), (char *)vals[2], STRLEN(vals[2]) ); - assert(res != 0, "store carol" ); + eosio_assert(res != 0, "store carol" ); res = StringTableStr.store((char *)keys[3], STRLEN(keys[3]), (char *)vals[3], STRLEN(vals[3]) ); - assert(res != 0, "store dave" ); + eosio_assert(res != 0, "store dave" ); res = StringTableStr.load((char *)keys[0], STRLEN(keys[0]), tmp, 64); - assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "load alice"); + eosio_assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "load alice"); res = StringTableStr.load((char *)keys[1], STRLEN(keys[1]), tmp, 64); - assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "load bob"); + eosio_assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "load bob"); res = StringTableStr.load((char *)keys[2], STRLEN(keys[2]), tmp, 64); - assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "load carol"); + eosio_assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "load carol"); res = StringTableStr.load((char *)keys[3], STRLEN(keys[3]), tmp, 64); - assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "load dave"); + eosio_assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "load dave"); res = StringTableStr.previous((char *)keys[3], STRLEN(keys[3]), tmp, 64); - assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "back carol"); + eosio_assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "back carol"); res = StringTableStr.previous((char *)keys[2], STRLEN(keys[2]), tmp, 64); - assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "back dave"); + eosio_assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "back dave"); res = StringTableStr.previous((char *)keys[1], STRLEN(keys[1]), tmp, 64); - assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "back alice"); + eosio_assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "back alice"); res = StringTableStr.previous((char *)keys[0], STRLEN(keys[0]), tmp, 64); - assert(res == -1, "no prev"); + eosio_assert(res == -1, "no prev"); res = StringTableStr.next((char *)keys[0], STRLEN(keys[0]), tmp, 64); - assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "next bob"); + eosio_assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "next bob"); res = StringTableStr.next((char *)keys[1], STRLEN(keys[1]), tmp, 64); - assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "next carol"); + eosio_assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "next carol"); res = StringTableStr.next((char *)keys[2], STRLEN(keys[2]), tmp, 64); - assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "next dave"); + eosio_assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "next dave"); res = StringTableStr.next((char *)keys[3], STRLEN(keys[3]), tmp, 64); - assert(res == -1, "no next"); + eosio_assert(res == -1, "no next"); res = StringTableStr.next((char *)keys[0], STRLEN(keys[0]), tmp, 0); - assert(res == 0, "next 0"); + eosio_assert(res == 0, "next 0"); res = StringTableStr.front((char*)keys[0], STRLEN(keys[0]), tmp, 64); - assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "front alice"); + eosio_assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "front alice"); res = StringTableStr.back((char*)keys[0], STRLEN(keys[0]), tmp, 64); - assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "back dave"); + eosio_assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "back dave"); res = StringTableStr.lower_bound((char *)keys[0], STRLEN(keys[0]), tmp, 64); - assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "lowerbound alice"); + eosio_assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "lowerbound alice"); res = StringTableStr.upper_bound((char *)keys[0], STRLEN(keys[0]), tmp, 64); - assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "upperbound bob"); + eosio_assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "upperbound bob"); res = StringTableStr.lower_bound((char *)keys[3], STRLEN(keys[3]), tmp, 64); - assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "upperbound dave"); + eosio_assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "upperbound dave"); res = StringTableStr.upper_bound((char *)keys[3], STRLEN(keys[3]), tmp, 64); - assert(res == -1, "no upper_bound"); + eosio_assert(res == -1, "no upper_bound"); } +#endif void test_db::key_str_general() { @@ -189,87 +191,81 @@ void test_db::key_str_general() { //fill some data in contiguous tables for(int i=0; i < 4; ++i) { - res = store_str(current_receiver(), N(atr), (char *)keys[i], STRLEN(keys[i]), (char *)atr[i], STRLEN(atr[i]) ); - assert(res != 0, "atr" ); + res = store_str(current_receiver(), N(atr), N(testapi), (char *)keys[i], STRLEN(keys[i]), (char *)atr[i], STRLEN(atr[i]) ); + eosio_assert(res != 0, "atr" ); - res = store_str(current_receiver(), N(ztr), (char *)keys[i], STRLEN(keys[i]), (char *)ztr[i], STRLEN(ztr[i]) ); - assert(res != 0, "ztr" ); + res = store_str(current_receiver(), N(ztr), N(testapi), (char *)keys[i], STRLEN(keys[i]), (char *)ztr[i], STRLEN(ztr[i]) ); + eosio_assert(res != 0, "ztr" ); } char tmp[64]; - res = store_str(current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), (char *)vals[0], STRLEN(vals[0]) ); - assert(res != 0, "store alice" ); + res = store_str(current_receiver(), N(str), N(testapi), (char *)keys[0], STRLEN(keys[0]), (char *)vals[0], STRLEN(vals[0]) ); + eosio_assert(res != 0, "store alice" ); + + res = store_str(current_receiver(), N(str), N(testapi), (char *)keys[1], STRLEN(keys[1]), (char *)vals[1], STRLEN(vals[1]) ); + eosio_assert(res != 0, "store bob" ); - res = store_str(current_receiver(), N(str), (char *)keys[1], STRLEN(keys[1]), (char *)vals[1], STRLEN(vals[1]) ); - assert(res != 0, "store bob" ); + res = store_str(current_receiver(), N(str), N(testapi), (char *)keys[2], STRLEN(keys[2]), (char *)vals[2], STRLEN(vals[2]) ); + eosio_assert(res != 0, "store carol" ); - res = store_str(current_receiver(), N(str), (char *)keys[2], STRLEN(keys[2]), (char *)vals[2], STRLEN(vals[2]) ); - assert(res != 0, "store carol" ); + res = store_str(current_receiver(), N(str), N(testapi), (char *)keys[3], STRLEN(keys[3]), (char *)vals[3], STRLEN(vals[3]) ); + eosio_assert(res != 0, "store dave" ); - res = store_str(current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), (char *)vals[3], STRLEN(vals[3]) ); - assert(res != 0, "store dave" ); - res = load_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64); - assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "load alice"); + res = load_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64); + eosio_assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "load alice"); - res = load_str(current_receiver(), current_receiver(), N(str), (char *)keys[1], STRLEN(keys[1]), tmp, 64); - assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "load bob"); + res = load_str(current_receiver(), current_receiver(), N(str), (char *)keys[1], STRLEN(keys[1]), tmp, 64); + eosio_assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "load bob"); - res = load_str(current_receiver(), current_receiver(), N(str), (char *)keys[2], STRLEN(keys[2]), tmp, 64); - assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "load carol"); + res = load_str(current_receiver(), current_receiver(), N(str), (char *)keys[2], STRLEN(keys[2]), tmp, 64); + eosio_assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "load carol"); - res = load_str(current_receiver(), current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), tmp, 64); - assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "load dave"); + res = load_str(current_receiver(), current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), tmp, 64); + eosio_assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "load dave"); res = previous_str(current_receiver(), current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), tmp, 64); - assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "back carol"); + eosio_assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "back carol"); res = previous_str(current_receiver(), current_receiver(), N(str), (char *)keys[2], STRLEN(keys[2]), tmp, 64); - assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "back dave"); + eosio_assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "back dave"); res = previous_str(current_receiver(), current_receiver(), N(str), (char *)keys[1], STRLEN(keys[1]), tmp, 64); - assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "back alice"); + eosio_assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "back alice"); res = previous_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64); - assert(res == -1, "no prev"); - - res = next_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64); - assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "next bob"); - - res = next_str(current_receiver(), current_receiver(), N(str), (char *)keys[1], STRLEN(keys[1]), tmp, 64); - assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "next carol"); + eosio_assert(res == 0, "no prev"); - res = next_str(current_receiver(), current_receiver(), N(str), (char *)keys[2], STRLEN(keys[2]), tmp, 64); - assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "next dave"); + res = next_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64); + eosio_assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "next bob"); - res = next_str(current_receiver(), current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), tmp, 64); - assert(res == -1, "no next"); + res = next_str(current_receiver(), current_receiver(), N(str), (char *)keys[1], STRLEN(keys[1]), tmp, 64); + eosio_assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "next carol"); - res = next_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 0); - assert(res == 0, "next 0"); + res = next_str(current_receiver(), current_receiver(), N(str), (char *)keys[2], STRLEN(keys[2]), tmp, 64); + eosio_assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "next dave"); -/* - res = front_str(current_receiver(), current_receiver(), N(str), tmp, 64); - assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "front alice"); - - res = back_str(current_receiver(), current_receiver(), N(str), tmp, 64); - assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "back dave"); -*/ res = lower_bound_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64); - assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "lowerbound alice"); + eosio_assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "lowerbound alice"); + + res = upper_bound_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64); + eosio_assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "upperbound bob"); - res = upper_bound_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64); - assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "upperbound bob"); + res = lower_bound_str(current_receiver(), current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), tmp, 64); + eosio_assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "upperbound dave"); - res = lower_bound_str(current_receiver(), current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), tmp, 64); - assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "upperbound dave"); + res = upper_bound_str(current_receiver(), current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), tmp, 64); + eosio_assert(res == 0, "no upper_bound"); - res = upper_bound_str(current_receiver(), current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), tmp, 64); - assert(res == -1, "no upper_bound"); + res = update_str(current_receiver(), N(str), N(testapi), (char *)keys[3], STRLEN(keys[3]), (char *)vals[2], STRLEN(vals[2]) ); + eosio_assert(res != 0, "store dave" ); + res = load_str(current_receiver(), current_receiver(), N(str), (char*)keys[3], STRLEN(keys[3]), tmp, 64 ); + eosio_assert(res == STRLEN(vals[2]) && my_memcmp((void*)vals[2], (void*)tmp, res), "load updated carol" ); } +#if 0 void test_db::key_i64_general() { uint32_t res = 0; @@ -279,16 +275,16 @@ void test_db::key_i64_general() { test_model dave { N(dave), 46, 6535354}; res = store_i64(current_receiver(), N(test_table), &dave, sizeof(test_model)); - assert(res != 0, "store dave" ); + eosio_assert(res != 0, "store dave" ); res = store_i64(current_receiver(), N(test_table), &carol, sizeof(test_model)); - assert(res != 0, "store carol" ); + eosio_assert(res != 0, "store carol" ); res = store_i64(current_receiver(), N(test_table), &bob, sizeof(test_model)); - assert(res != 0, "store bob" ); + eosio_assert(res != 0, "store bob" ); res = store_i64(current_receiver(), N(test_table), &alice, sizeof(test_model)); - assert(res != 0, "store alice" ); + eosio_assert(res != 0, "store alice" ); //fill with different ages in adjacent tables dave.age=123; store_i64(current_receiver(), N(test_tabld), &dave, sizeof(test_model)); @@ -303,56 +299,56 @@ void test_db::key_i64_general() { test_model tmp; res = front_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "front_i64 1"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "front_i64 1"); my_memset(&tmp, 0, sizeof(test_model)); res = back_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "front_i64 2"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "front_i64 2"); res = previous_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(carol) && tmp.age == 30 && tmp.phone == 545342453, "carol previous"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(carol) && tmp.age == 30 && tmp.phone == 545342453, "carol previous"); res = previous_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(bob) && tmp.age == 15 && tmp.phone == 11932435, "bob previous"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(bob) && tmp.age == 15 && tmp.phone == 11932435, "bob previous"); res = previous_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "alice previous"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "alice previous"); res = previous_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == 0, "previous null"); + eosio_assert(res == 0, "previous null"); res = next_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(bob) && tmp.age == 15 && tmp.phone == 11932435, "bob next"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(bob) && tmp.age == 15 && tmp.phone == 11932435, "bob next"); res = next_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(carol) && tmp.age == 30 && tmp.phone == 545342453, "carol next"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(carol) && tmp.age == 30 && tmp.phone == 545342453, "carol next"); res = next_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "dave next"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "dave next"); res = next_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == 0, "next null"); + eosio_assert(res == 0, "next null"); my_memset(&alice, 0, sizeof(test_model)); - assert(alice.name == 0 && alice.age == 0 && alice.phone == 0, "my_memset"); + eosio_assert(alice.name == 0 && alice.age == 0 && alice.phone == 0, "my_memset"); alice.name = N(alice); res = load_i64(current_receiver(), current_receiver(), N(test_table), &alice, sizeof(test_model)); - assert(res == sizeof(test_model) && alice.age == 20 && alice.phone == 4234622, "alice error 1"); + eosio_assert(res == sizeof(test_model) && alice.age == 20 && alice.phone == 4234622, "alice error 1"); alice.age = 21; alice.phone = 1234; res = store_i64(current_receiver(), N(test_table), &alice, sizeof(test_model)); - assert(res == 0, "store alice 2" ); + eosio_assert(res == 0, "store alice 2" ); my_memset(&alice, 0, sizeof(test_model)); alice.name = N(alice); res = load_i64(current_receiver(), current_receiver(), N(test_table), &alice, sizeof(test_model)); - assert(res == sizeof(test_model) && alice.age == 21 && alice.phone == 1234, "alice error 2"); + eosio_assert(res == sizeof(test_model) && alice.age == 21 && alice.phone == 1234, "alice error 2"); my_memset(&bob, 0, sizeof(test_model)); bob.name = N(bob); @@ -364,72 +360,72 @@ void test_db::key_i64_general() { dave.name = N(dave); res = load_i64(current_receiver(), current_receiver(), N(test_table), &bob, sizeof(test_model)); - assert(res == sizeof(test_model) && bob.age == 15 && bob.phone == 11932435, "bob error 1"); + eosio_assert(res == sizeof(test_model) && bob.age == 15 && bob.phone == 11932435, "bob error 1"); res = load_i64(current_receiver(), current_receiver(), N(test_table), &carol, sizeof(test_model)); - assert(res == sizeof(test_model) && carol.age == 30 && carol.phone == 545342453, "carol error 1"); + eosio_assert(res == sizeof(test_model) && carol.age == 30 && carol.phone == 545342453, "carol error 1"); res = load_i64(current_receiver(), current_receiver(), N(test_table), &dave, sizeof(test_model)); - assert(res == sizeof(test_model) && dave.age == 46 && dave.phone == 6535354, "dave error 1"); + eosio_assert(res == sizeof(test_model) && dave.age == 46 && dave.phone == 6535354, "dave error 1"); res = load_i64(current_receiver(), N(other_code), N(test_table), &alice, sizeof(test_model)); - assert(res == sizeof(test_model), "other_code"); + eosio_assert(res == sizeof(test_model), "other_code"); res = load_i64(current_receiver(), current_receiver(), N(other_table), &alice, sizeof(test_model)); - assert(res == 0, "other_table"); + eosio_assert(res == 0, "other_table"); test_model_v2 alicev2; alicev2.name = N(alice); res = load_i64(current_receiver(), current_receiver(), N(test_table), &alicev2, sizeof(test_model_v2)); - assert(res == sizeof(test_model) && alicev2.age == 21 && alicev2.phone == 1234, "alicev2 load"); + eosio_assert(res == sizeof(test_model) && alicev2.age == 21 && alicev2.phone == 1234, "alicev2 load"); alicev2.new_field = 66655444; res = store_i64(current_receiver(), N(test_table), &alicev2, sizeof(test_model_v2)); - assert(res == 0, "store alice 3" ); + eosio_assert(res == 0, "store alice 3" ); my_memset(&alicev2, 0, sizeof(test_model_v2)); alicev2.name = N(alice); res = load_i64(current_receiver(), current_receiver(), N(test_table), &alicev2, sizeof(test_model_v2)); - assert(res == sizeof(test_model_v2) && alicev2.age == 21 && alicev2.phone == 1234 && alicev2.new_field == 66655444, "alice model v2"); + eosio_assert(res == sizeof(test_model_v2) && alicev2.age == 21 && alicev2.phone == 1234 && alicev2.new_field == 66655444, "alice model v2"); my_memset(&tmp, 0, sizeof(test_model)); tmp.name = N(bob); res = lower_bound_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(bob), "lower_bound_i64 bob" ); + eosio_assert(res == sizeof(test_model) && tmp.name == N(bob), "lower_bound_i64 bob" ); my_memset(&tmp, 0, sizeof(test_model)); tmp.name = N(boc); res = lower_bound_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(carol), "lower_bound_i64 carol" ); + eosio_assert(res == sizeof(test_model) && tmp.name == N(carol), "lower_bound_i64 carol" ); my_memset(&tmp, 0, sizeof(test_model)); tmp.name = N(dave); // data packet only big enough for name res = lower_bound_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(uint64_t) ); - assert(res == sizeof(test_model) && tmp.name == N(dave), "lower_bound_i64 dave" ); + eosio_assert(res == sizeof(test_model) && tmp.name == N(dave), "lower_bound_i64 dave" ); my_memset(&tmp, 0, sizeof(test_model)); tmp.name = N(davf); res = lower_bound_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(uint64_t) ); - assert(res == 0, "lower_bound_i64 fail" ); + eosio_assert(res == 0, "lower_bound_i64 fail" ); my_memset(&tmp, 0, sizeof(test_model)); tmp.name = N(alice); res = upper_bound_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.age == 15 && tmp.name == N(bob), "upper_bound_i64 bob" ); + eosio_assert(res == sizeof(test_model) && tmp.age == 15 && tmp.name == N(bob), "upper_bound_i64 bob" ); my_memset(&tmp, 0, sizeof(test_model)); tmp.name = N(dave); res = upper_bound_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == 0, "upper_bound_i64 dave" ); + eosio_assert(res == 0, "upper_bound_i64 dave" ); test_model_v3 tmp2; tmp2.name = N(alice); res = load_i64(current_receiver(), current_receiver(), N(test_table), &tmp2, sizeof(test_model_v3)); - assert(res == sizeof(test_model_v2) && + eosio_assert(res == sizeof(test_model_v2) && tmp2.age == 21 && tmp2.phone == 1234 && tmp2.new_field == 66655444, @@ -437,10 +433,10 @@ void test_db::key_i64_general() { tmp2.another_field = 221122; res = update_i64(current_receiver(), N(test_table), &tmp2, sizeof(test_model_v3)); - assert(res == 1, "update_i64"); + eosio_assert(res == 1, "update_i64"); res = load_i64(current_receiver(), current_receiver(), N(test_table), &tmp2, sizeof(test_model_v3)); - assert(res == sizeof(test_model_v3) && + eosio_assert(res == sizeof(test_model_v3) && tmp2.age == 21 && tmp2.phone == 1234 && tmp2.new_field == 66655444 && @@ -449,10 +445,10 @@ void test_db::key_i64_general() { tmp2.age = 11; res = update_i64(current_receiver(), N(test_table), &tmp2, sizeof(uint64_t)+1 ); - assert(res == 1, "update_i64 small"); + eosio_assert(res == 1, "update_i64 small"); res = load_i64(current_receiver(), current_receiver(), N(test_table), &tmp2, sizeof(test_model_v3)); - assert(res == sizeof(test_model_v3) && + eosio_assert(res == sizeof(test_model_v3) && tmp2.age == 11 && tmp2.phone == 1234 && tmp2.new_field == 66655444 && @@ -476,42 +472,42 @@ void test_db::key_i64_remove_all() { key = N(alice); res = remove_i64(current_receiver(), N(test_table), &key); - assert(res == 1, "remove alice"); + eosio_assert(res == 1, "remove alice"); key = N(bob); res = remove_i64(current_receiver(), N(test_table), &key); - assert(res == 1, "remove bob"); + eosio_assert(res == 1, "remove bob"); key = N(carol); res = remove_i64(current_receiver(), N(test_table), &key); - assert(res == 1, "remove carol"); + eosio_assert(res == 1, "remove carol"); key = N(dave); res = remove_i64(current_receiver(), N(test_table), &key); - assert(res == 1, "remove dave"); + eosio_assert(res == 1, "remove dave"); test_model tmp; res = front_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == 0, "front_i64 remove"); + eosio_assert(res == 0, "front_i64 remove"); res = back_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - assert(res == 0, "back_i64_i64 remove"); + eosio_assert(res == 0, "back_i64_i64 remove"); key = N(alice); res = remove_i64(current_receiver(), N(test_table), &key); - assert(res == 0, "remove alice 1"); + eosio_assert(res == 0, "remove alice 1"); key = N(bob); res = remove_i64(current_receiver(), N(test_table), &key); - assert(res == 0, "remove bob 1"); + eosio_assert(res == 0, "remove bob 1"); key = N(carol); res = remove_i64(current_receiver(), N(test_table), &key); - assert(res == 0, "remove carol 1"); + eosio_assert(res == 0, "remove carol 1"); key = N(dave); res = remove_i64(current_receiver(), N(test_table), &key); - assert(res == 0, "remove dave 1"); + eosio_assert(res == 0, "remove dave 1"); } void test_db::key_i64_small_load() { @@ -519,7 +515,7 @@ void test_db::key_i64_small_load() { test_model alice{ N(alice), 20, 4234622}; // shouldn't throw an error, short circuits out because no table id is found auto res = load_i64(current_receiver(), current_receiver(), N(just_uint64), &dummy, sizeof(uint64_t)-1); - assert(res == 0, "should have returned 0 on failure"); + eosio_assert(res == 0, "should have returned 0 on failure"); store_i64(current_receiver(), N(test_table), &alice, sizeof(test_model)); load_i64(current_receiver(), current_receiver(), N(test_table), &alice, sizeof(uint64_t)-1); } @@ -543,10 +539,10 @@ void test_db::key_i64_not_found() { uint64_t dummy = 1000; auto res = load_i64(current_receiver(), current_receiver(), N(just_uint64), &dummy, sizeof(uint64_t)); - assert(res == 0, "i64_not_found load"); + eosio_assert(res == 0, "i64_not_found load"); res = remove_i64(current_receiver(), N(just_uint64), &dummy); - assert(res == 0, "i64_not_found remove"); + eosio_assert(res == 0, "i64_not_found remove"); } void test_db::key_i64_front_back() { @@ -567,65 +563,65 @@ void test_db::key_i64_front_back() { my_memset(&tmp, 0, sizeof(test_model)); res = front_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "key_i64_front 1"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "key_i64_front 1"); my_memset(&tmp, 0, sizeof(test_model)); res = back_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(bob) && tmp.age == 15 && tmp.phone == 11932435, "key_i64_front 2"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(bob) && tmp.age == 15 && tmp.phone == 11932435, "key_i64_front 2"); my_memset(&tmp, 0, sizeof(test_model)); res = front_i64( current_receiver(), current_receiver(), N(b), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(carol) && tmp.age == 30 && tmp.phone == 545342453, "key_i64_front 3"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(carol) && tmp.age == 30 && tmp.phone == 545342453, "key_i64_front 3"); my_memset(&tmp, 0, sizeof(test_model)); res = back_i64( current_receiver(), current_receiver(), N(b), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "key_i64_front 4"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "key_i64_front 4"); uint64_t key = N(carol); remove_i64(current_receiver(), N(b), &key); my_memset(&tmp, 0, sizeof(test_model)); res = front_i64( current_receiver(), current_receiver(), N(b), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "key_i64_front 5"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "key_i64_front 5"); my_memset(&tmp, 0, sizeof(test_model)); res = back_i64( current_receiver(), current_receiver(), N(b), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "key_i64_front 6"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "key_i64_front 6"); my_memset(&tmp, 0, sizeof(test_model)); res = front_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "key_i64_front 7"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "key_i64_front 7"); my_memset(&tmp, 0, sizeof(test_model)); res = back_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(bob) && tmp.age == 15 && tmp.phone == 11932435, "key_i64_front 8"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(bob) && tmp.age == 15 && tmp.phone == 11932435, "key_i64_front 8"); key = N(dave); remove_i64(current_receiver(), N(b), &key); res = front_i64( current_receiver(), current_receiver(), N(b), &tmp, sizeof(test_model) ); - assert(res == 0, "key_i64_front 9"); + eosio_assert(res == 0, "key_i64_front 9"); res = back_i64( current_receiver(), current_receiver(), N(b), &tmp, sizeof(test_model) ); - assert(res == 0, "key_i64_front 10"); + eosio_assert(res == 0, "key_i64_front 10"); key = N(bob); remove_i64(current_receiver(), N(a), &key); my_memset(&tmp, 0, sizeof(test_model)); res = front_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "key_i64_front 11"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "key_i64_front 11"); my_memset(&tmp, 0, sizeof(test_model)); res = back_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "key_i64_front 12"); + eosio_assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "key_i64_front 12"); key = N(alice); remove_i64(current_receiver(), N(a), &key); res = front_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - assert(res == 0, "key_i64_front 13"); + eosio_assert(res == 0, "key_i64_front 13"); res = back_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - assert(res == 0, "key_i64_front 14"); + eosio_assert(res == 0, "key_i64_front 14"); } uint32_t store_set_in_table(uint64_t table_name) @@ -639,16 +635,16 @@ uint32_t store_set_in_table(uint64_t table_name) TestModel128x2 alice22{2, 200, N(alice33), table_name}; res = store_i128i128(current_receiver(), table_name, &alice0, sizeof(TestModel128x2)); - assert(res == 1, "store alice0" ); + eosio_assert(res == 1, "store alice0" ); res = store_i128i128(current_receiver(), table_name, &alice1, sizeof(TestModel128x2)); - assert(res == 1, "store alice1" ); + eosio_assert(res == 1, "store alice1" ); res = store_i128i128(current_receiver(), table_name, &alice2, sizeof(TestModel128x2)); - assert(res == 1, "store alice2" ); + eosio_assert(res == 1, "store alice2" ); res = store_i128i128(current_receiver(), table_name, &alice22, sizeof(TestModel128x2)); - assert(res == 1, "store alice22" ); + eosio_assert(res == 1, "store alice22" ); return res; TestModel128x2 bob0{10, 1, N(bob0), table_name}; @@ -657,16 +653,16 @@ uint32_t store_set_in_table(uint64_t table_name) TestModel128x2 bob3{13, 4, N(bob3), table_name}; res = store_i128i128(current_receiver(), table_name, &bob0, sizeof(TestModel128x2)); - assert(res == 1, "store bob0" ); + eosio_assert(res == 1, "store bob0" ); res = store_i128i128(current_receiver(), table_name, &bob1, sizeof(TestModel128x2)); - assert(res == 1, "store bob1" ); + eosio_assert(res == 1, "store bob1" ); res = store_i128i128(current_receiver(), table_name, &bob2, sizeof(TestModel128x2)); - assert(res == 1, "store bob2" ); + eosio_assert(res == 1, "store bob2" ); res = store_i128i128(current_receiver(), table_name, &bob3, sizeof(TestModel128x2)); - assert(res == 1, "store bob3" ); + eosio_assert(res == 1, "store bob3" ); TestModel128x2 carol0{20, 900, N(carol0), table_name}; TestModel128x2 carol1{21, 800, N(carol1), table_name}; @@ -674,16 +670,16 @@ uint32_t store_set_in_table(uint64_t table_name) TestModel128x2 carol3{23, 600, N(carol3), table_name}; res = store_i128i128(current_receiver(), table_name, &carol0, sizeof(TestModel128x2)); - assert(res == 1, "store carol0" ); + eosio_assert(res == 1, "store carol0" ); res = store_i128i128(current_receiver(), table_name, &carol1, sizeof(TestModel128x2)); - assert(res == 1, "store carol1" ); + eosio_assert(res == 1, "store carol1" ); res = store_i128i128(current_receiver(), table_name, &carol2, sizeof(TestModel128x2)); - assert(res == 1, "store carol2" ); + eosio_assert(res == 1, "store carol2" ); res = store_i128i128(current_receiver(), table_name, &carol3, sizeof(TestModel128x2)); - assert(res == 1, "store carol3" ); + eosio_assert(res == 1, "store carol3" ); TestModel128x2 dave0{30, 8, N(dave0), table_name}; TestModel128x2 dave1{31, 7, N(dave1), table_name}; @@ -691,16 +687,16 @@ uint32_t store_set_in_table(uint64_t table_name) TestModel128x2 dave3{33, 4, N(dave3), table_name}; res = store_i128i128(current_receiver(), table_name, &dave0, sizeof(TestModel128x2)); - assert(res == 1, "store dave0" ); + eosio_assert(res == 1, "store dave0" ); res = store_i128i128(current_receiver(), table_name, &dave1, sizeof(TestModel128x2)); - assert(res == 1, "store dave1" ); + eosio_assert(res == 1, "store dave1" ); res = store_i128i128(current_receiver(), table_name, &dave2, sizeof(TestModel128x2)); - assert(res == 1, "store dave2" ); + eosio_assert(res == 1, "store dave2" ); res = store_i128i128(current_receiver(), table_name, &dave3, sizeof(TestModel128x2)); - assert(res == 1, "store dave3" ); + eosio_assert(res == 1, "store dave3" ); return res; } @@ -710,7 +706,7 @@ void store_set_in_table(TestModel3xi64* records, int len, uint64_t table_name) { TestModel3xi64 *tmp = records+i; tmp->table = table_name; res = store_i64i64i64(current_receiver(), table_name, tmp, sizeof(TestModel3xi64)); - assert(res == 1, "store_set_in_table" ); + eosio_assert(res == 1, "store_set_in_table" ); } } @@ -756,7 +752,7 @@ void test_db::key_i64i64i64_general() { eosio::print(msg, " : ", res, " a:", V.a, " b:", V.b, " c:", V.c, " t:", V.table, "inx:", uint64_t(I), " ("); \ eosio::print(BS(res == sizeof(V)), " ", BS(records[I].a == V.a), " ", BS(records[I].b == V.b), " ", BS(records[I].c == V.c), " => ", N(table2), ")\n"); \ } \ - assert( res == sizeof(V) && records[I].a == V.a && records[I].b == V.b && \ + eosio_assert( res == sizeof(V) && records[I].a == V.a && records[I].b == V.b && \ records[I].c == V.c /*&& records[I].table == uint64_t(N(table2))*/, msg); #define LOAD_OK(I, O, T, INX, MSG) \ @@ -767,7 +763,7 @@ void test_db::key_i64i64i64_general() { #define LOAD_ER(I, O, T, MSG) \ {eosio::remove_reference::type tmp; my_memset(&tmp, 0, sizeof(tmp));tmp = V; \ res = LOAD(I, O, T, tmp); \ - assert(res == -1, MSG)} + eosio_assert(res == -1, MSG)} #define FRONT_OK(I, O, T, INX, MSG) \ {eosio::remove_reference::type tmp; my_memset(&tmp, 0, sizeof(tmp));tmp = V; \ @@ -818,7 +814,7 @@ void test_db::key_i64i64i64_general() { eosio::remove_reference::type tmp = records[I[j]]; \ res = NEXT(I, i64i64i64, N(table2), tmp);\ if(j+1::type tmp = records[I[j]]; \ res = PREV(I, i64i64i64, N(table2), tmp);\ if(j>0){ TABLE1_ASSERT(I[j-1], tmp, "i64x3 PREV " #I " ok "); } \ - else { assert(res == -1, "i64x3 PREV " #I " fail "); }\ + else { eosio_assert(res == -1, "i64x3 PREV " #I " fail "); }\ } while(--j>0); \ } @@ -872,7 +868,7 @@ void test_db::key_i64i64i64_general() { do { \ eosio::remove_reference::type tmp = records[j]; \ res = UPPER(I, i64i64i64, N(table2), tmp);\ - if(res == -1) { assert(I##_ub[j]==-1,"i64x3 UPPER " #I " fail ") } \ + if(res == -1) { eosio_assert(I##_ub[j]==-1,"i64x3 UPPER " #I " fail ") } \ else { TABLE1_ASSERT(I##_ub[j], tmp, "i64x3 UPPER " #I " ok "); } \ } while(++j; if( itr == idx.end() || itr->t_id != t_id.id || - !impl::record_scope_compare::compare(*itr, keys)) return 0; + !impl::record_scope_compare::compare(*itr, keys)) return -1; impl::key_helper::get(keys, *itr); if (valuelen) { @@ -723,7 +723,7 @@ using apply_handler = std::function; auto itr = idx.lower_bound( tuple ); if( itr == idx.end() || - itr->t_id != t_id.id ) return 0; + itr->t_id != t_id.id ) return -1; impl::key_helper::get(keys, *itr); diff --git a/libraries/chain/wasm_interface.cpp b/libraries/chain/wasm_interface.cpp index df18a868828421dc9676915b4cbc19d169b2090d..e19c74c61e647b22abb88e20b8075480299e62fd 100644 --- a/libraries/chain/wasm_interface.cpp +++ b/libraries/chain/wasm_interface.cpp @@ -875,7 +875,7 @@ class db_api : public context_aware_api { return context.remove_record(t_id, keys); } }; -/* + template<> class db_api : public context_aware_api { using KeyType = std::string; @@ -883,31 +883,40 @@ class db_api : public context_aware_api { using KeyArrayType = KeyType[KeyCount]; using ContextMethodType = int(apply_context::*)(const table_id_object&, const KeyType*, const char*, size_t); +/* TODO something weird is going on here, will maybe fix before DB changes or this might get + * totally changed anyway private: - int call(ContextMethodType method, const scope_name& scope, const name& table, - array_ptr key, size_t key_len, array_ptr data, size_t data_len) { - const auto& t_id = context.find_or_create_table(scope, context.receiver, table); - //FC_ASSERT(data_len >= KeyCount * sizeof(KeyType), "Data is not long enough to contain keys"); - const KeyType keys((const char*)key, key_len); // = std::string(reinterpret_cast((const char *)data); + int call(ContextMethodType method, const scope_name& scope, const name& table, account_name bta, + null_terminated_ptr key, size_t key_len, array_ptr data, size_t data_len) { + const auto& t_id = context.find_or_create_table(context.receiver, scope, table); + const KeyType keys((const char*)key.value, key_len); - const char* record_data = ((const char*)data); // + sizeof(KeyArrayType); - size_t record_len = data_len; // - sizeof(KeyArrayType); - return (context.*(method))(t_id, &keys, record_data, record_len); + const char* record_data = ((const char*)data); + size_t record_len = data_len; + return (context.*(method))(t_id, bta, &keys, record_data, record_len); } - +*/ public: using context_aware_api::context_aware_api; - int store_str(const scope_name& scope, const name& table, - array_ptr &key, uint32_t key_len, array_ptr data, size_t data_len) { - auto res = call(&apply_context::store_record, scope, table, key, key_len, data, data_len); - return res; - + int store_str(const scope_name& scope, const name& table, const account_name& bta, + null_terminated_ptr key, uint32_t key_len, array_ptr data, size_t data_len) { + const auto& t_id = context.find_or_create_table(context.receiver, scope, table); + const KeyType keys(key.value, key_len); + const char* record_data = ((const char*)data); + size_t record_len = data_len; + return context.store_record(t_id, bta, &keys, record_data, record_len); + //return call(&apply_context::store_record, scope, table, bta, key, key_len, data, data_len); } - int update_str(const scope_name& scope, const name& table, - array_ptr &key, uint32_t key_len, array_ptr data, size_t data_len) { - return call(&apply_context::update_record, scope, table, key, key_len, data, data_len); + int update_str(const scope_name& scope, const name& table, const account_name& bta, + null_terminated_ptr key, uint32_t key_len, array_ptr data, size_t data_len) { + const auto& t_id = context.find_or_create_table(context.receiver, scope, table); + const KeyType keys((const char*)key, key_len); + const char* record_data = ((const char*)data); + size_t record_len = data_len; + return context.update_record(t_id, bta, &keys, record_data, record_len); + //return call(&apply_context::update_record, scope, table, bta, key, key_len, data, data_len); } int remove_str(const scope_name& scope, const name& table, array_ptr &key, uint32_t key_len) { @@ -916,7 +925,7 @@ class db_api : public context_aware_api { return context.remove_record(t_id, k); } }; -*/ + template class db_index_api : public context_aware_api { using KeyType = typename IndexType::value_type::key_type; @@ -1538,14 +1547,12 @@ REGISTER_INTRINSICS(db_api_key_value_object, DB_METHOD_SEQ(i64)); REGISTER_INTRINSICS(db_api_key128x128_value_object, DB_METHOD_SEQ(i128i128)); REGISTER_INTRINSICS(db_api_key64x64_value_object, DB_METHOD_SEQ(i64i64)); REGISTER_INTRINSICS(db_api_key64x64x64_value_object, DB_METHOD_SEQ(i64i64i64)); -/* REGISTER_INTRINSICS(db_api_keystr_value_object, - (store_str, int32_t(int64_t, int64_t, int, int, int, int) ) - (update_str, int32_t(int64_t, int64_t, int, int, int, int) ) + (store_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) + (update_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) (remove_str, int32_t(int64_t, int64_t, int, int) )); -*/ + REGISTER_INTRINSICS(db_index_api_key_value_index_by_scope_primary, DB_INDEX_METHOD_SEQ(i64)); -/* REGISTER_INTRINSICS(db_index_api_keystr_value_index_by_scope_primary, (load_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) (front_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) @@ -1554,7 +1561,7 @@ REGISTER_INTRINSICS(db_index_api_keystr_value_index_by_scope_primary, (previous_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) (lower_bound_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) (upper_bound_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) )); -*/ + REGISTER_INTRINSICS(db_index_api_key128x128_value_index_by_scope_primary, DB_INDEX_METHOD_SEQ(primary_i128i128)); REGISTER_INTRINSICS(db_index_api_key128x128_value_index_by_scope_secondary, DB_INDEX_METHOD_SEQ(secondary_i128i128)); REGISTER_INTRINSICS(db_index_api_key64x64_value_index_by_scope_primary, DB_INDEX_METHOD_SEQ(primary_i64i64)); diff --git a/libraries/testing/tester.cpp b/libraries/testing/tester.cpp index 3bfc00c4c215947eee9be2da97c96c01d53caaee..6a87dbce6ca061634dc641f8e89be54ed25b980b 100644 --- a/libraries/testing/tester.cpp +++ b/libraries/testing/tester.cpp @@ -29,8 +29,6 @@ namespace eosio { namespace testing { open(); if (process_genesis) push_genesis_block(); - - return; } void tester::push_genesis_block() { diff --git a/tests/api_tests/api_tests.cpp b/tests/api_tests/api_tests.cpp index 65cca0fa3bfa448e1a027c3b236e3053f308ed56..2053ab4342c58f2b088f7611f21234ea2f997dec 100644 --- a/tests/api_tests/api_tests.cpp +++ b/tests/api_tests/api_tests.cpp @@ -37,6 +37,7 @@ #include #include +#include #include FC_REFLECT( dummy_action, (a)(b)(c) ); @@ -63,6 +64,20 @@ struct test_api_action { FC_REFLECT_TEMPLATE((uint64_t T), test_api_action, BOOST_PP_SEQ_NIL); +template +struct test_chain_action { + static account_name get_account() { + return account_name(config::system_account_name); + } + + static action_name get_name() { + return action_name(NAME); + } +}; + +FC_REFLECT_TEMPLATE((uint64_t T), test_chain_action, BOOST_PP_SEQ_NIL); + + bool expect_assert_message(const fc::exception& ex, string expected) { BOOST_TEST_MESSAGE("LOG : " << ex.get_log().at(0).get_message()); @@ -388,7 +403,7 @@ BOOST_FIXTURE_TEST_CASE(action_tests, tester) { try { /************************************************************************************* * checktime_tests test case *************************************************************************************/ -BOOST_FIXTURE_TEST_CASE(checktime_tests, tester) { try { +BOOST_FIXTURE_TEST_CASE(checktime_pass_tests, tester) { try { produce_blocks(2); create_account( N(testapi) ); produce_blocks(1000); @@ -398,11 +413,35 @@ BOOST_FIXTURE_TEST_CASE(checktime_tests, tester) { try { // test checktime_pass CALL_TEST_FUNCTION( *this, "test_checktime", "checktime_pass", {}); - // test checktime_fail - BOOST_CHECK_EXCEPTION(CALL_TEST_FUNCTION( *this, "test_checktime", "checktime_failure", {}), checktime_exceeded, is_checktime_exceeded); - } FC_LOG_AND_RETHROW() } +BOOST_AUTO_TEST_CASE(checktime_fail_tests) { + try { + tester t( {fc::milliseconds(1), fc::milliseconds(1)} ); + t.produce_blocks(2); + + t.create_account( N(testapi) ); + t.set_code( N(testapi), test_api_wast ); + + auto call_test = [](tester& test, auto ac) { + signed_transaction trx; + + auto pl = vector{{N(testapi), config::active_name}}; + action act(pl, ac); + + trx.actions.push_back(act); + test.set_tapos(trx); + auto sigs = trx.sign(test.get_private_key(N(testapi), "active"), chain_id_type()); + trx.get_signature_keys(chain_id_type() ); + auto res = test.push_transaction(trx); + BOOST_CHECK_EQUAL(res.status, transaction_receipt::executed); + test.produce_block(); + }; + + BOOST_CHECK_EXCEPTION(call_test( t, test_api_action{}), checktime_exceeded, is_checktime_exceeded); + + } FC_LOG_AND_RETHROW(); +} /************************************************************************************* * compiler_builtins_tests test case *************************************************************************************/ @@ -476,7 +515,6 @@ BOOST_FIXTURE_TEST_CASE(transaction_tests, tester) { try { // test send_action_empty CALL_TEST_FUNCTION(*this, "test_transaction", "send_action_empty", {}); -/* checktime exceeds before this can cause an overflow BOOST_CHECK_EXCEPTION(CALL_TEST_FUNCTION(*this, "test_transaction", "send_action_large", {}), fc::assert_exception, [](const fc::assert_exception& e) { return expect_assert_message(e, "inline action too big"); @@ -488,7 +526,6 @@ BOOST_FIXTURE_TEST_CASE(transaction_tests, tester) { try { return expect_assert_message(e, "stack overflow"); } ); -*/ // test send_action_inline_fail BOOST_CHECK_EXCEPTION(CALL_TEST_FUNCTION(*this, "test_transaction", "send_action_inline_fail", {}), fc::assert_exception, @@ -529,12 +566,27 @@ BOOST_FIXTURE_TEST_CASE(transaction_tests, tester) { try { CALL_TEST_FUNCTION(*this, "test_transaction", "test_tapos_block_prefix", fc::raw::pack(control->head_block_id()._hash[1]) ); } FC_LOG_AND_RETHROW() } +template +struct setprod_act { + static account_name get_account() { + return N(config::system_account_name); + } + + static action_name get_name() { + return action_name(NAME); + } +}; +// Fixing this to create active producers +#if 0 /************************************************************************************* * chain_tests test case *************************************************************************************/ BOOST_FIXTURE_TEST_CASE(chain_tests, tester) { try { produce_blocks(2); + create_account( N(inita) ); + create_account( N(initb) ); + create_account( N(initc) ); create_account( N(testapi) ); //, asset::from_string("100000.0000 EOS") ); create_account( N(acc1) ); //, asset::from_string("0.0000 EOS") ); produce_blocks(1000); @@ -546,27 +598,27 @@ BOOST_FIXTURE_TEST_CASE(chain_tests, tester) { try { auto& gpo = control->get_global_properties(); std::vector prods(gpo.active_producers.producers.size()); - for ( int i=0; i < gpo.active_producers.producers.size(); i++ ) + for ( int i=0; i < gpo.active_producers.producers.size(); i++ ) { prods[i] = gpo.active_producers.producers[i].producer_name; + std::cout << "prods " << prods[i] << "\n"; + } CALL_TEST_FUNCTION( *this, "test_chain", "test_activeprods", fc::raw::pack(prods)); } FC_LOG_AND_RETHROW() } +#endif - -// (Bucky) TODO got to fix macros in test_db.cpp -#if 0 /************************************************************************************* * db_tests test case *************************************************************************************/ BOOST_FIXTURE_TEST_CASE(db_tests, tester) { try { produce_blocks(2); - create_account( N(testapi), asset::from_string("100000.0000 EOS") ); - produce_blocks(1000); - transfer( N(inita), N(testapi), "100.0000 EOS", "memo" ); + create_account( N(testapi) ); produce_blocks(1000); set_code( N(testapi), test_api_db_wast ); produce_blocks(1); + CALL_TEST_FUNCTION( *this, "test_db", "key_str_general", {}); + /* CALL_TEST_FUNCTION( *this, "test_db", "key_i64_general", {}); CALL_TEST_FUNCTION( *this, "test_db", "key_i64_remove_all", {}); BOOST_CHECK_EXCEPTION(CALL_TEST_FUNCTION( *this, "test_db", "key_i64_small_load", {}), fc::assert_exception, @@ -587,11 +639,8 @@ BOOST_FIXTURE_TEST_CASE(db_tests, tester) { try { CALL_TEST_FUNCTION( *this, "test_db", "key_i64_front_back", {}); //CALL_TEST_FUNCTION( *this, "test_db", "key_i64i64i64_general", {}); CALL_TEST_FUNCTION( *this, "test_db", "key_i128i128_general", {}); - return; -return; + */ } FC_LOG_AND_RETHROW() } -#endif - /************************************************************************************* * fixedpoint_tests test case