Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
cb9878c6
Y
YTBP
项目概览
YottaChain
/
YTBP
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
YTBP
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
cb9878c6
编写于
2月 13, 2018
作者:
K
Khaled Al-Hassanieh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Unit tests for index API's
上级
27b89b2d
变更
8
显示空白变更内容
内联
并排
Showing
8 changed file
with
650 addition
and
193 deletion
+650
-193
contracts/eosiolib/db.h
contracts/eosiolib/db.h
+40
-0
contracts/eosiolib/multi_index.hpp
contracts/eosiolib/multi_index.hpp
+4
-1
contracts/test_api/test_api.cpp
contracts/test_api/test_api.cpp
+9
-1
contracts/test_api/test_api.hpp
contracts/test_api/test_api.hpp
+7
-0
contracts/test_api/test_db.cpp
contracts/test_api/test_db.cpp
+493
-167
libraries/chain/include/eosio/chain/apply_context.hpp
libraries/chain/include/eosio/chain/apply_context.hpp
+1
-3
libraries/chain/wasm_interface.cpp
libraries/chain/wasm_interface.cpp
+4
-21
tests/wasm_tests/wasm_tests.cpp
tests/wasm_tests/wasm_tests.cpp
+92
-0
未找到文件。
contracts/eosiolib/db.h
浏览文件 @
cb9878c6
...
...
@@ -1028,5 +1028,45 @@ int32_t store_i64i64i64( account_name scope, table_name table, account_name bta,
*/
int32_t
update_i64i64i64
(
account_name
scope
,
table_name
table
,
account_name
bta
,
const
void
*
data
,
uint32_t
len
);
int32_t
db_store_i64
(
account_name
scope
,
table_name
table
,
account_name
payer
,
uint64_t
id
,
const
void
*
data
,
uint32_t
len
);
void
db_update_i64
(
int32_t
iterator
,
account_name
payer
,
const
void
*
data
,
uint32_t
len
);
void
db_remove_i64
(
int32_t
iterator
);
int32_t
db_get_i64
(
int32_t
iterator
,
const
void
*
data
,
uint32_t
len
);
int32_t
db_next_i64
(
int32_t
iterator
,
uint64_t
*
primary
);
int32_t
db_previous_i64
(
int32_t
iterator
,
uint64_t
*
primary
);
int32_t
db_find_i64
(
account_name
code
,
account_name
scope
,
table_name
table
,
uint64_t
id
);
int32_t
db_lowerbound_i64
(
account_name
code
,
account_name
scope
,
table_name
table
,
uint64_t
id
);
int32_t
db_upperbound_i64
(
account_name
code
,
account_name
scope
,
table_name
table
,
uint64_t
id
);
/*
void db_update_i64( int iterator, uint64_t payer, char* buffer, size_t buffer_size );
int db_find_i64( uint64_t code, uint64_t scope, uint64_t table, uint64_t id );
int db_lowerbound_i64( uint64_t code, uint64_t scope, uint64_t table, uint64_t id );
int db_get_i64( int iterator, char* buffer, size_t buffer_size );
void db_remove_i64( int iterator );
int db_next_i64( int iterator, uint64_t* pk );
int db_previous_i64( int iterator, uint64_t* pk );
*/
int32_t
db_idx64_store
(
account_name
scope
,
table_name
table
,
account_name
payer
,
uint64_t
id
,
const
uint64_t
*
secondary
);
void
db_idx64_update
(
int32_t
iterator
,
account_name
payer
,
const
uint64_t
*
secondary
);
void
db_idx64_remove
(
int32_t
iterator
);
int32_t
db_idx64_next
(
int32_t
iterator
,
uint64_t
*
primary
);
int32_t
db_idx64_previous
(
int32_t
iterator
,
uint64_t
*
primary
);
int32_t
db_idx64_find_primary
(
account_name
code
,
account_name
scope
,
table_name
table
,
uint64_t
*
secondary
,
uint64_t
primary
);
int32_t
db_idx64_find_secondary
(
account_name
code
,
account_name
scope
,
table_name
table
,
const
uint64_t
*
secondary
,
uint64_t
*
primary
);
int32_t
db_idx64_lowerbound
(
account_name
code
,
account_name
scope
,
table_name
table
,
uint64_t
*
secondary
,
uint64_t
*
primary
);
int32_t
db_idx64_upperbound
(
account_name
code
,
account_name
scope
,
table_name
table
,
uint64_t
*
secondary
,
uint64_t
*
primary
);
int
db_idx128_next
(
int
iterator
,
uint64_t
*
primary
);
int
db_idx128_prev
(
int
iterator
,
uint64_t
*
primary
);
int
db_idx128_find_primary
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
uint128_t
*
secondary
,
uint64_t
primary
);
int
db_idx128_find_secondary
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
uint128_t
*
secondary
,
uint64_t
*
primary
);
int
db_idx128_lowerbound
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
uint128_t
*
secondary
,
uint64_t
*
primary
);
int
db_idx128_upperbound
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
uint128_t
*
secondary
,
uint64_t
*
primary
);
void
db_idx128_remove
(
int
iterator
);
void
db_idx128_update
(
int
iterator
,
uint64_t
payer
,
const
uint128_t
*
secondary
);
///@} dbi64i64i64
}
contracts/eosiolib/multi_index.hpp
浏览文件 @
cb9878c6
...
...
@@ -11,9 +11,11 @@
#include <eosiolib/types.hpp>
#include <eosiolib/serialize.hpp>
#include <eosiolib/datastream.hpp>
#include <eosiolib/db.h>
extern
"C"
{
/*
int db_store_i64( uint64_t scope, uint64_t table, uint64_t payer, uint64_t id, char* buffer, size_t buffer_size );
void db_update_i64( int iterator, uint64_t payer, char* buffer, size_t buffer_size );
int db_find_i64( uint64_t code, uint64_t scope, uint64_t table, uint64_t id );
...
...
@@ -40,6 +42,7 @@ extern "C" {
int db_idx128_upperbound( uint64_t code, uint64_t scope, uint64_t table, uint128_t* secondary, uint64_t* primary );
void db_idx128_remove( int iterator );
void db_idx128_update( int iterator, uint64_t payer, const uint128_t* secondary );
*/
}
...
...
@@ -54,7 +57,7 @@ struct secondary_iterator;
template
<
>
struct
secondary_iterator
<
uint64_t
>
{
static
int
db_idx_next
(
int
iterator
,
uint64_t
*
primary
)
{
return
db_idx64_next
(
iterator
,
primary
);
}
static
int
db_idx_prev
(
int
iterator
,
uint64_t
*
primary
)
{
return
db_idx64_prev
(
iterator
,
primary
);
}
static
int
db_idx_prev
(
int
iterator
,
uint64_t
*
primary
)
{
return
db_idx64_prev
ious
(
iterator
,
primary
);
}
static
void
db_idx_remove
(
int
iterator
)
{
db_idx64_remove
(
iterator
);
}
};
...
...
contracts/test_api/test_api.cpp
浏览文件 @
cb9878c6
...
...
@@ -17,6 +17,7 @@
//#include "test_real.cpp"
//#include "test_transaction.cpp"
//#include "test_types.cpp"
#include "test_db.cpp"
extern
"C"
{
...
...
@@ -91,7 +92,14 @@ extern "C" {
// WASM_TEST_HANDLER(test_db, key_i64i64i64_under_limit);
// WASM_TEST_HANDLER(test_db, key_i64i64i64_available_space_exceed_limit);
// WASM_TEST_HANDLER(test_db, key_i64i64i64_another_under_limit);
//
WASM_TEST_HANDLER
(
test_db
,
primary_i64_general
);
WASM_TEST_HANDLER
(
test_db
,
primary_i64_lowerbound
);
WASM_TEST_HANDLER
(
test_db
,
primary_i64_upperbound
);
WASM_TEST_HANDLER
(
test_db
,
idx64_general
);
WASM_TEST_HANDLER
(
test_db
,
idx64_lowerbound
);
WASM_TEST_HANDLER
(
test_db
,
idx64_upperbound
);
// //test crypto
// WASM_TEST_HANDLER(test_crypto, test_sha256);
// WASM_TEST_HANDLER(test_crypto, sha256_no_data);
...
...
contracts/test_api/test_api.hpp
浏览文件 @
cb9878c6
...
...
@@ -117,6 +117,13 @@ struct test_db {
static
unsigned
int
key_i64i64i64_under_limit
();
static
unsigned
int
key_i64i64i64_available_space_exceed_limit
();
static
unsigned
int
key_i64i64i64_another_under_limit
();
static
void
primary_i64_general
();
static
void
primary_i64_lowerbound
();
static
void
primary_i64_upperbound
();
static
void
idx64_general
();
static
void
idx64_lowerbound
();
static
void
idx64_upperbound
();
};
struct
test_crypto
{
...
...
contracts/test_api/test_db.cpp
浏览文件 @
cb9878c6
...
...
@@ -3,6 +3,7 @@
#include <eosiolib/db.h>
#include <eosiolib/db.hpp>
#include <eosiolib/memory.hpp>
#include <eosiolib/eosio.hpp>
#include "test_api.hpp"
int
primary
[
11
]
=
{
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
};
...
...
@@ -68,6 +69,8 @@ extern "C" {
bool
my_memcmp
(
void
*
s1
,
void
*
s2
,
uint32_t
n
);
}
#if 0
unsigned int test_db::key_str_table() {
const char* keys[] = { "alice", "bob", "carol", "dave" };
...
...
@@ -76,95 +79,99 @@ unsigned int test_db::key_str_table() {
const char* atr[] = { "atr", "atr", "atr", "atr" };
const char* ztr[] = { "ztr", "ztr", "ztr", "ztr" };
eosio
::
var_table
<
N
(
tester
),
N
(
tester
),
N
(
atr
),
char
*>
StringTableAtr
;
eosio
::
var_table
<
N
(
tester
),
N
(
tester
),
N
(
ztr
),
char
*>
StringTableZtr
;
eosio
::
var_table
<
N
(
tester
),
N
(
tester
),
N
(
str
),
char
*>
StringTableStr
;
eosio::var_table<N(tester), N(tester), N(atr),
N(tester),
char*> StringTableAtr;
eosio::var_table<N(tester), N(tester), N(ztr),
N(tester),
char*> StringTableZtr;
eosio::var_table<N(tester), N(tester), N(str),
N(tester),
char*> StringTableStr;
uint32_t res = 0;
// 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]) );
WASM_ASSERT
(
res
!=
0
,
"atr"
);
eos_assert
( res != 0, "atr" );
res = StringTableZtr.store( (char*)keys[ii], STRLEN(keys[ii]), (char*)ztr[ii], STRLEN(ztr[ii]) );
WASM_ASSERT
(
res
!=
0
,
"ztr"
);
eos_assert
(res != 0, "ztr" );
}
char tmp[64];
res = StringTableStr.store ((char *)keys[0], STRLEN(keys[0]), (char *)vals[0], STRLEN(vals[0]));
WASM_ASSERT
(
res
!=
0
,
"store alice"
);
eos_assert
(res != 0, "store alice" );
res = StringTableStr.store((char *)keys[1], STRLEN(keys[1]), (char *)vals[1], STRLEN(vals[1]) );
WASM_ASSERT
(
res
!=
0
,
"store bob"
);
eos_assert
(res != 0, "store bob" );
res = StringTableStr.store((char *)keys[2], STRLEN(keys[2]), (char *)vals[2], STRLEN(vals[2]) );
WASM_ASSERT
(
res
!=
0
,
"store carol"
);
eos_assert
(res != 0, "store carol" );
res = StringTableStr.store((char *)keys[3], STRLEN(keys[3]), (char *)vals[3], STRLEN(vals[3]) );
WASM_ASSERT
(
res
!=
0
,
"store dave"
);
eos_assert
(res != 0, "store dave" );
res = StringTableStr.load((char *)keys[0], STRLEN(keys[0]), tmp, 64);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
0
])
&&
my_memcmp
((
void
*
)
vals
[
0
],
(
void
*
)
tmp
,
res
),
"load alice"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
1
])
&&
my_memcmp
((
void
*
)
vals
[
1
],
(
void
*
)
tmp
,
res
),
"load bob"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
2
])
&&
my_memcmp
((
void
*
)
vals
[
2
],
(
void
*
)
tmp
,
res
),
"load carol"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
3
])
&&
my_memcmp
((
void
*
)
vals
[
3
],
(
void
*
)
tmp
,
res
),
"load dave"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
2
])
&&
my_memcmp
((
void
*
)
vals
[
2
],
(
void
*
)
tmp
,
res
),
"back carol"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
1
])
&&
my_memcmp
((
void
*
)
vals
[
1
],
(
void
*
)
tmp
,
res
),
"back dave"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
0
])
&&
my_memcmp
((
void
*
)
vals
[
0
],
(
void
*
)
tmp
,
res
),
"back alice"
);
eos_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);
WASM_ASSERT
(
res
==
-
1
,
"no prev"
);
eos_assert
(res == -1, "no prev");
res = StringTableStr.next((char *)keys[0], STRLEN(keys[0]), tmp, 64);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
1
])
&&
my_memcmp
((
void
*
)
vals
[
1
],
(
void
*
)
tmp
,
res
),
"next bob"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
2
])
&&
my_memcmp
((
void
*
)
vals
[
2
],
(
void
*
)
tmp
,
res
),
"next carol"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
3
])
&&
my_memcmp
((
void
*
)
vals
[
3
],
(
void
*
)
tmp
,
res
),
"next dave"
);
eos_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);
WASM_ASSERT
(
res
==
-
1
,
"no next"
);
eos_assert
(res == -1, "no next");
res = StringTableStr.next((char *)keys[0], STRLEN(keys[0]), tmp, 0);
WASM_ASSERT
(
res
==
0
,
"next 0"
);
eos_assert
(res == 0, "next 0");
res = StringTableStr.front(tmp, 64);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
0
])
&&
my_memcmp
((
void
*
)
vals
[
0
],
(
void
*
)
tmp
,
res
),
"front alice"
);
eos_assert
(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "front alice");
res = StringTableStr.back(tmp, 64);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
3
])
&&
my_memcmp
((
void
*
)
vals
[
3
],
(
void
*
)
tmp
,
res
),
"back dave"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
0
])
&&
my_memcmp
((
void
*
)
vals
[
0
],
(
void
*
)
tmp
,
res
),
"lowerbound alice"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
1
])
&&
my_memcmp
((
void
*
)
vals
[
1
],
(
void
*
)
tmp
,
res
),
"upperbound bob"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
3
])
&&
my_memcmp
((
void
*
)
vals
[
3
],
(
void
*
)
tmp
,
res
),
"upperbound dave"
);
eos_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);
WASM_ASSERT
(
res
==
-
1
,
"no upper_bound"
);
eos_assert
(res == -1, "no upper_bound");
return
WASM_TEST_PASS
;
return
1; //
WASM_TEST_PASS;
}
#endif
#if 0
unsigned int test_db::key_str_general() {
const char* keys[] = { "alice", "bob", "carol", "dave" };
...
...
@@ -178,86 +185,90 @@ unsigned int 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]) );
WASM_ASSERT
(
res
!=
0
,
"atr"
);
eos_assert
(res != 0, "atr" );
res = store_str(current_receiver(), N(ztr), (char *)keys[i], STRLEN(keys[i]), (char *)ztr[i], STRLEN(ztr[i]) );
WASM_ASSERT
(
res
!=
0
,
"ztr"
);
eos_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]) );
WASM_ASSERT
(
res
!=
0
,
"store alice"
);
eos_assert
(res != 0, "store alice" );
res = store_str(current_receiver(), N(str), (char *)keys[1], STRLEN(keys[1]), (char *)vals[1], STRLEN(vals[1]) );
WASM_ASSERT
(
res
!=
0
,
"store bob"
);
eos_assert
(res != 0, "store bob" );
res = store_str(current_receiver(), N(str), (char *)keys[2], STRLEN(keys[2]), (char *)vals[2], STRLEN(vals[2]) );
WASM_ASSERT
(
res
!=
0
,
"store carol"
);
eos_assert
(res != 0, "store carol" );
res = store_str(current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), (char *)vals[3], STRLEN(vals[3]) );
WASM_ASSERT
(
res
!=
0
,
"store dave"
);
eos_assert
(res != 0, "store dave" );
res = load_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
0
])
&&
my_memcmp
((
void
*
)
vals
[
0
],
(
void
*
)
tmp
,
res
),
"load alice"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
1
])
&&
my_memcmp
((
void
*
)
vals
[
1
],
(
void
*
)
tmp
,
res
),
"load bob"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
2
])
&&
my_memcmp
((
void
*
)
vals
[
2
],
(
void
*
)
tmp
,
res
),
"load carol"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
3
])
&&
my_memcmp
((
void
*
)
vals
[
3
],
(
void
*
)
tmp
,
res
),
"load dave"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
2
])
&&
my_memcmp
((
void
*
)
vals
[
2
],
(
void
*
)
tmp
,
res
),
"back carol"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
1
])
&&
my_memcmp
((
void
*
)
vals
[
1
],
(
void
*
)
tmp
,
res
),
"back dave"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
0
])
&&
my_memcmp
((
void
*
)
vals
[
0
],
(
void
*
)
tmp
,
res
),
"back alice"
);
eos_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);
WASM_ASSERT
(
res
==
-
1
,
"no prev"
);
eos_assert
(res == -1, "no prev");
res = next_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
1
])
&&
my_memcmp
((
void
*
)
vals
[
1
],
(
void
*
)
tmp
,
res
),
"next bob"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
2
])
&&
my_memcmp
((
void
*
)
vals
[
2
],
(
void
*
)
tmp
,
res
),
"next carol"
);
eos_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[2], STRLEN(keys[2]), tmp, 64);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
3
])
&&
my_memcmp
((
void
*
)
vals
[
3
],
(
void
*
)
tmp
,
res
),
"next dave"
);
eos_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[3], STRLEN(keys[3]), tmp, 64);
WASM_ASSERT
(
res
==
-
1
,
"no next"
);
eos_assert
(res == -1, "no next");
res = next_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 0);
WASM_ASSERT
(
res
==
0
,
"next 0"
);
eos_assert
(res == 0, "next 0");
res = front_str(current_receiver(), current_receiver(), N(str), tmp, 64);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
0
])
&&
my_memcmp
((
void
*
)
vals
[
0
],
(
void
*
)
tmp
,
res
),
"front alice"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
3
])
&&
my_memcmp
((
void
*
)
vals
[
3
],
(
void
*
)
tmp
,
res
),
"back dave"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
0
])
&&
my_memcmp
((
void
*
)
vals
[
0
],
(
void
*
)
tmp
,
res
),
"lowerbound alice"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
1
])
&&
my_memcmp
((
void
*
)
vals
[
1
],
(
void
*
)
tmp
,
res
),
"upperbound bob"
);
eos_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);
WASM_ASSERT
(
res
==
STRLEN
(
vals
[
3
])
&&
my_memcmp
((
void
*
)
vals
[
3
],
(
void
*
)
tmp
,
res
),
"upperbound dave"
);
eos_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);
WASM_ASSERT
(
res
==
-
1
,
"no upper_bound"
);
eos_assert
(res == -1, "no upper_bound");
return
WASM_TEST_PASS
;
return
1;//
WASM_TEST_PASS;
}
#endif
#if 0
unsigned int test_db::key_i64_general() {
uint32_t res = 0;
...
...
@@ -268,16 +279,16 @@ unsigned int test_db::key_i64_general() {
test_model dave { N(dave), 46, 6535354};
res = store_i64(current_receiver(), N(test_table), &dave, sizeof(test_model));
WASM_ASSERT
(
res
!=
0
,
"store dave"
);
eos_assert
(res != 0, "store dave" );
res = store_i64(current_receiver(), N(test_table), &carol, sizeof(test_model));
WASM_ASSERT
(
res
!=
0
,
"store carol"
);
eos_assert
(res != 0, "store carol" );
res = store_i64(current_receiver(), N(test_table), &bob, sizeof(test_model));
WASM_ASSERT
(
res
!=
0
,
"store bob"
);
eos_assert
(res != 0, "store bob" );
res = store_i64(current_receiver(), N(test_table), &alice, sizeof(test_model));
WASM_ASSERT
(
res
!=
0
,
"store alice"
);
eos_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));
...
...
@@ -292,56 +303,56 @@ unsigned int test_db::key_i64_general() {
test_model tmp;
res = front_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
alice
)
&&
tmp
.
age
==
20
&&
tmp
.
phone
==
4234622
,
"front_i64 1"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
dave
)
&&
tmp
.
age
==
46
&&
tmp
.
phone
==
6535354
,
"front_i64 2"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
carol
)
&&
tmp
.
age
==
30
&&
tmp
.
phone
==
545342453
,
"carol previous"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
bob
)
&&
tmp
.
age
==
15
&&
tmp
.
phone
==
11932435
,
"bob previous"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
alice
)
&&
tmp
.
age
==
20
&&
tmp
.
phone
==
4234622
,
"alice previous"
);
eos_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) );
WASM_ASSERT
(
res
==
-
1
,
"previous null"
);
eos_assert
(res == -1, "previous null");
res = next_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
bob
)
&&
tmp
.
age
==
15
&&
tmp
.
phone
==
11932435
,
"bob next"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
carol
)
&&
tmp
.
age
==
30
&&
tmp
.
phone
==
545342453
,
"carol next"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
dave
)
&&
tmp
.
age
==
46
&&
tmp
.
phone
==
6535354
,
"dave next"
);
eos_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) );
WASM_ASSERT
(
res
==
-
1
,
"next null"
);
eos_assert
(res == -1, "next null");
my_memset(&alice, 0, sizeof(test_model));
WASM_ASSERT
(
alice
.
name
==
0
&&
alice
.
age
==
0
&&
alice
.
phone
==
0
,
"my_memset"
);
eos_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));
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
alice
.
age
==
20
&&
alice
.
phone
==
4234622
,
"alice error 1"
);
eos_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));
WASM_ASSERT
(
res
==
0
,
"store alice 2"
);
eos_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));
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
alice
.
age
==
21
&&
alice
.
phone
==
1234
,
"alice error 2"
);
eos_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);
...
...
@@ -353,72 +364,72 @@ unsigned int test_db::key_i64_general() {
dave.name = N(dave);
res = load_i64(current_receiver(), current_receiver(), N(test_table), &bob, sizeof(test_model));
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
bob
.
age
==
15
&&
bob
.
phone
==
11932435
,
"bob error 1"
);
eos_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));
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
carol
.
age
==
30
&&
carol
.
phone
==
545342453
,
"carol error 1"
);
eos_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));
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
dave
.
age
==
46
&&
dave
.
phone
==
6535354
,
"dave error 1"
);
eos_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));
WASM_ASSERT
(
res
==
-
1
,
"other_code"
);
eos_assert
(res == -1, "other_code");
res = load_i64(current_receiver(), current_receiver(), N(other_table), &alice, sizeof(test_model));
WASM_ASSERT
(
res
==
-
1
,
"other_table"
);
eos_assert
(res == -1, "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));
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
alicev2
.
age
==
21
&&
alicev2
.
phone
==
1234
,
"alicev2 load"
);
eos_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));
WASM_ASSERT
(
res
==
0
,
"store alice 3"
);
eos_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));
WASM_ASSERT
(
res
==
sizeof
(
test_model_v2
)
&&
alicev2
.
age
==
21
&&
alicev2
.
phone
==
1234
&&
alicev2
.
new_field
==
66655444
,
"alice model v2"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
bob
),
"lower_bound_i64 bob"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
carol
),
"lower_bound_i64 carol"
);
eos_assert
(res == sizeof(test_model) && tmp.name == N(carol), "lower_bound_i64 carol" );
my_memset(&tmp, 0, sizeof(test_model));
tmp.name = N(dave);
res = lower_bound_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(uint64_t) );
WASM_ASSERT
(
res
==
sizeof
(
uint64_t
)
&&
tmp
.
name
==
N
(
dave
),
"lower_bound_i64 dave"
);
eos_assert
(res == sizeof(uint64_t) && 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) );
WASM_ASSERT
(
res
==
-
1
,
"lower_bound_i64 fail"
);
eos_assert
(res == -1, "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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
age
==
15
&&
tmp
.
name
==
N
(
bob
),
"upper_bound_i64 bob"
);
eos_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) );
WASM_ASSERT
(
res
==
-
1
,
"upper_bound_i64 dave"
);
eos_assert
(res == -1, "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));
WASM_ASSERT
(
res
==
sizeof
(
test_model_v2
)
&&
eos_assert
(res == sizeof(test_model_v2) &&
tmp2.age == 21 &&
tmp2.phone == 1234 &&
tmp2.new_field == 66655444,
...
...
@@ -426,10 +437,10 @@ unsigned int test_db::key_i64_general() {
tmp2.another_field = 221122;
res = update_i64(current_receiver(), N(test_table), &tmp2, sizeof(test_model_v3));
WASM_ASSERT
(
res
==
1
,
"update_i64"
);
eos_assert
(res == 1, "update_i64");
res = load_i64(current_receiver(), current_receiver(), N(test_table), &tmp2, sizeof(test_model_v3));
WASM_ASSERT
(
res
==
sizeof
(
test_model_v3
)
&&
eos_assert
(res == sizeof(test_model_v3) &&
tmp2.age == 21 &&
tmp2.phone == 1234 &&
tmp2.new_field == 66655444 &&
...
...
@@ -438,10 +449,10 @@ unsigned int test_db::key_i64_general() {
tmp2.age = 11;
res = update_i64(current_receiver(), N(test_table), &tmp2, sizeof(uint64_t)+1 );
WASM_ASSERT
(
res
==
1
,
"update_i64 small"
);
eos_assert
(res == 1, "update_i64 small");
res = load_i64(current_receiver(), current_receiver(), N(test_table), &tmp2, sizeof(test_model_v3));
WASM_ASSERT
(
res
==
sizeof
(
test_model_v3
)
&&
eos_assert
(res == sizeof(test_model_v3) &&
tmp2.age == 11 &&
tmp2.phone == 1234 &&
tmp2.new_field == 66655444 &&
...
...
@@ -460,6 +471,10 @@ unsigned int test_db::key_i64_general() {
return WASM_TEST_PASS;
}
#endif
#if 0
unsigned int test_db::key_i64_remove_all() {
uint32_t res = 0;
...
...
@@ -467,47 +482,51 @@ unsigned int test_db::key_i64_remove_all() {
key = N(alice);
res = remove_i64(current_receiver(), N(test_table), &key);
WASM_ASSERT
(
res
==
1
,
"remove alice"
);
eos_assert
(res == 1, "remove alice");
key = N(bob);
res = remove_i64(current_receiver(), N(test_table), &key);
WASM_ASSERT
(
res
==
1
,
"remove bob"
);
eos_assert
(res == 1, "remove bob");
key = N(carol);
res = remove_i64(current_receiver(), N(test_table), &key);
WASM_ASSERT
(
res
==
1
,
"remove carol"
);
eos_assert
(res == 1, "remove carol");
key = N(dave);
res = remove_i64(current_receiver(), N(test_table), &key);
WASM_ASSERT
(
res
==
1
,
"remove dave"
);
eos_assert
(res == 1, "remove dave");
test_model tmp;
res = front_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) );
WASM_ASSERT
(
res
==
-
1
,
"front_i64 remove"
);
eos_assert
(res == -1, "front_i64 remove");
res = back_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) );
WASM_ASSERT
(
res
==
-
1
,
"back_i64_i64 remove"
);
eos_assert
(res == -1, "back_i64_i64 remove");
key = N(alice);
res = remove_i64(current_receiver(), N(test_table), &key);
WASM_ASSERT
(
res
==
0
,
"remove alice 1"
);
eos_assert
(res == 0, "remove alice 1");
key = N(bob);
res = remove_i64(current_receiver(), N(test_table), &key);
WASM_ASSERT
(
res
==
0
,
"remove bob 1"
);
eos_assert
(res == 0, "remove bob 1");
key = N(carol);
res = remove_i64(current_receiver(), N(test_table), &key);
WASM_ASSERT
(
res
==
0
,
"remove carol 1"
);
eos_assert
(res == 0, "remove carol 1");
key = N(dave);
res = remove_i64(current_receiver(), N(test_table), &key);
WASM_ASSERT
(
res
==
0
,
"remove dave 1"
);
eos_assert
(res == 0, "remove dave 1");
return WASM_TEST_PASS;
}
#endif
#if 0
unsigned int test_db::key_i64_small_load() {
uint64_t dummy = 0;
load_i64(current_receiver(), current_receiver(), N(just_uint64), &dummy, sizeof(uint64_t)-1);
...
...
@@ -536,10 +555,10 @@ unsigned int 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));
WASM_ASSERT
(
res
==
-
1
,
"i64_not_found load"
);
eos_assert
(res == -1, "i64_not_found load");
res = remove_i64(current_receiver(), N(just_uint64), &dummy);
WASM_ASSERT
(
res
==
0
,
"i64_not_found remove"
);
eos_assert
(res == 0, "i64_not_found remove");
return WASM_TEST_PASS;
}
...
...
@@ -561,65 +580,65 @@ unsigned int 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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
alice
)
&&
tmp
.
age
==
20
&&
tmp
.
phone
==
4234622
,
"key_i64_front 1"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
bob
)
&&
tmp
.
age
==
15
&&
tmp
.
phone
==
11932435
,
"key_i64_front 2"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
carol
)
&&
tmp
.
age
==
30
&&
tmp
.
phone
==
545342453
,
"key_i64_front 3"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
dave
)
&&
tmp
.
age
==
46
&&
tmp
.
phone
==
6535354
,
"key_i64_front 4"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
dave
)
&&
tmp
.
age
==
46
&&
tmp
.
phone
==
6535354
,
"key_i64_front 5"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
dave
)
&&
tmp
.
age
==
46
&&
tmp
.
phone
==
6535354
,
"key_i64_front 6"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
alice
)
&&
tmp
.
age
==
20
&&
tmp
.
phone
==
4234622
,
"key_i64_front 7"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
bob
)
&&
tmp
.
age
==
15
&&
tmp
.
phone
==
11932435
,
"key_i64_front 8"
);
eos_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) );
WASM_ASSERT
(
res
==
-
1
,
"key_i64_front 9"
);
eos_assert
(res == -1, "key_i64_front 9");
res = back_i64( current_receiver(), current_receiver(), N(b), &tmp, sizeof(test_model) );
WASM_ASSERT
(
res
==
-
1
,
"key_i64_front 10"
);
eos_assert
(res == -1, "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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
alice
)
&&
tmp
.
age
==
20
&&
tmp
.
phone
==
4234622
,
"key_i64_front 11"
);
eos_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) );
WASM_ASSERT
(
res
==
sizeof
(
test_model
)
&&
tmp
.
name
==
N
(
alice
)
&&
tmp
.
age
==
20
&&
tmp
.
phone
==
4234622
,
"key_i64_front 12"
);
eos_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) );
WASM_ASSERT
(
res
==
-
1
,
"key_i64_front 13"
);
eos_assert
(res == -1, "key_i64_front 13");
res = back_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) );
WASM_ASSERT
(
res
==
-
1
,
"key_i64_front 14"
);
eos_assert
(res == -1, "key_i64_front 14");
return WASM_TEST_PASS;
}
...
...
@@ -635,16 +654,16 @@ unsigned int store_set_in_table(uint64_t table_name)
TestModel128x2 alice22{2, 200, N(alice22), table_name};
res = store_i128i128(current_receiver(), table_name, &alice0, sizeof(TestModel128x2));
WASM_ASSERT
(
res
==
1
,
"store alice0"
);
eos_assert
(res == 1, "store alice0" );
res = store_i128i128(current_receiver(), table_name, &alice1, sizeof(TestModel128x2));
WASM_ASSERT
(
res
==
1
,
"store alice1"
);
eos_assert
(res == 1, "store alice1" );
res = store_i128i128(current_receiver(), table_name, &alice2, sizeof(TestModel128x2));
WASM_ASSERT
(
res
==
1
,
"store alice2"
);
eos_assert
(res == 1, "store alice2" );
res = store_i128i128(current_receiver(), table_name, &alice22, sizeof(TestModel128x2));
WASM_ASSERT
(
res
==
1
,
"store alice22"
);
eos_assert
(res == 1, "store alice22" );
TestModel128x2 bob0{10, 1, N(bob0), table_name};
TestModel128x2 bob1{11, 2, N(bob1), table_name};
...
...
@@ -652,16 +671,16 @@ unsigned int 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));
WASM_ASSERT
(
res
==
1
,
"store bob0"
);
eos_assert
(res == 1, "store bob0" );
res = store_i128i128(current_receiver(), table_name, &bob1, sizeof(TestModel128x2));
WASM_ASSERT
(
res
==
1
,
"store bob1"
);
eos_assert
(res == 1, "store bob1" );
res = store_i128i128(current_receiver(), table_name, &bob2, sizeof(TestModel128x2));
WASM_ASSERT
(
res
==
1
,
"store bob2"
);
eos_assert
(res == 1, "store bob2" );
res = store_i128i128(current_receiver(), table_name, &bob3, sizeof(TestModel128x2));
WASM_ASSERT
(
res
==
1
,
"store bob3"
);
eos_assert
(res == 1, "store bob3" );
TestModel128x2 carol0{20, 900, N(carol0), table_name};
TestModel128x2 carol1{21, 800, N(carol1), table_name};
...
...
@@ -669,16 +688,16 @@ unsigned int 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));
WASM_ASSERT
(
res
==
1
,
"store carol0"
);
eos_assert
(res == 1, "store carol0" );
res = store_i128i128(current_receiver(), table_name, &carol1, sizeof(TestModel128x2));
WASM_ASSERT
(
res
==
1
,
"store carol1"
);
eos_assert
(res == 1, "store carol1" );
res = store_i128i128(current_receiver(), table_name, &carol2, sizeof(TestModel128x2));
WASM_ASSERT
(
res
==
1
,
"store carol2"
);
eos_assert
(res == 1, "store carol2" );
res = store_i128i128(current_receiver(), table_name, &carol3, sizeof(TestModel128x2));
WASM_ASSERT
(
res
==
1
,
"store carol3"
);
eos_assert
(res == 1, "store carol3" );
TestModel128x2 dave0{30, 8, N(dave0), table_name};
TestModel128x2 dave1{31, 7, N(dave1), table_name};
...
...
@@ -686,16 +705,16 @@ unsigned int 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));
WASM_ASSERT
(
res
==
1
,
"store dave0"
);
eos_assert
(res == 1, "store dave0" );
res = store_i128i128(current_receiver(), table_name, &dave1, sizeof(TestModel128x2));
WASM_ASSERT
(
res
==
1
,
"store dave1"
);
eos_assert
(res == 1, "store dave1" );
res = store_i128i128(current_receiver(), table_name, &dave2, sizeof(TestModel128x2));
WASM_ASSERT
(
res
==
1
,
"store dave2"
);
eos_assert
(res == 1, "store dave2" );
res = store_i128i128(current_receiver(), table_name, &dave3, sizeof(TestModel128x2));
WASM_ASSERT
(
res
==
1
,
"store dave3"
);
eos_assert
(res == 1, "store dave3" );
return WASM_TEST_PASS;
}
...
...
@@ -706,11 +725,15 @@ unsigned int store_set_in_table(TestModel3xi64* records, int len, uint64_t table
TestModel3xi64 *tmp = records+i;
tmp->table = table_name;
res = store_i64i64i64(current_receiver(), table_name, tmp, sizeof(TestModel3xi64));
WASM_ASSERT
(
res
==
1
,
"store_set_in_table"
);
eos_assert
(res == 1, "store_set_in_table" );
}
return res;
}
#endif
#if 0
unsigned int test_db::key_i64i64i64_general() {
uint32_t res = 0;
...
...
@@ -750,7 +773,7 @@ unsigned int 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"); \
} \
WASM_ASSERT
( res == sizeof(V) && records[I].a == V.a && records[I].b == V.b && \
eos_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) \
...
...
@@ -761,7 +784,7 @@ unsigned int test_db::key_i64i64i64_general() {
#define LOAD_ER(I, O, T, MSG) \
{eosio::remove_reference<decltype(V)>::type tmp; my_memset(&tmp, 0, sizeof(tmp));tmp = V; \
res = LOAD(I, O, T, tmp); \
WASM_ASSERT
(res == -1, MSG)}
eos_assert
(res == -1, MSG)}
#define FRONT_OK(I, O, T, INX, MSG) \
{eosio::remove_reference<decltype(V)>::type tmp; my_memset(&tmp, 0, sizeof(tmp));tmp = V; \
...
...
@@ -812,7 +835,7 @@ unsigned int test_db::key_i64i64i64_general() {
eosio::remove_reference<decltype(records[0])>::type tmp = records[I[j]]; \
res = NEXT(I, i64i64i64, N(table2), tmp);\
if(j+1<n){ TABLE1_ASSERT(I[j+1], tmp, "i64x3 NEXT " #I " ok "); } \
else {
WASM_ASSERT
(res == -1, "i64x3 NEXT " #I " fail "); }\
else {
eos_assert
(res == -1, "i64x3 NEXT " #I " fail "); }\
} while(++j<n); \
}
...
...
@@ -824,7 +847,7 @@ unsigned int test_db::key_i64i64i64_general() {
eosio::remove_reference<decltype(records[0])>::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 {
WASM_ASSERT
(res == -1, "i64x3 PREV " #I " fail "); }\
else {
eos_assert
(res == -1, "i64x3 PREV " #I " fail "); }\
} while(--j>0); \
}
...
...
@@ -866,7 +889,7 @@ unsigned int test_db::key_i64i64i64_general() {
do { \
eosio::remove_reference<decltype(records[0])>::type tmp = records[j]; \
res = UPPER(I, i64i64i64, N(table2), tmp);\
if(res == -1) {
WASM_ASSERT
(I##_ub[j]==-1,"i64x3 UPPER " #I " fail ") } \
if(res == -1) {
eos_assert
(I##_ub[j]==-1,"i64x3 UPPER " #I " fail ") } \
else { TABLE1_ASSERT(I##_ub[j], tmp, "i64x3 UPPER " #I " ok "); } \
} while(++j<n); \
}
...
...
@@ -879,21 +902,21 @@ unsigned int test_db::key_i64i64i64_general() {
v2.a = records[6].a;
res = LOAD(primary, i64i64i64, N(table2), v2);
WASM_ASSERT
(
res
==
sizeof
(
TestModel3xi64
),
"load v2"
);
eos_assert
(res == sizeof(TestModel3xi64), "load v2");
v2.new_field = 555;
res = update_i64i64i64(current_receiver(), N(table2), &v2, sizeof(TestModel3xi64_V2));
WASM_ASSERT
(
res
==
1
,
"store v2"
);
eos_assert
(res == 1, "store v2");
res = LOAD(primary, i64i64i64, N(table2), v2);
WASM_ASSERT
(
res
==
sizeof
(
TestModel3xi64_V2
),
"load v2 updated"
);
eos_assert
(res == sizeof(TestModel3xi64_V2), "load v2 updated");
res = remove_i64i64i64(current_receiver(), N(table2), &v2);
WASM_ASSERT
(
res
==
1
,
"load v2 updated"
);
eos_assert
(res == 1, "load v2 updated");
res = LOAD(primary, i64i64i64, N(table2), v2);
WASM_ASSERT
(
res
==
-
1
,
"load not found"
);
eos_assert
(res == -1, "load not found");
return WASM_TEST_PASS;
}
...
...
@@ -917,7 +940,7 @@ unsigned int test_db::key_i128i128_general() {
res = load_primary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp.price == 800 &&
tmp.extra == N(carol1) &&
tmp.table_name == N(table5),
...
...
@@ -927,7 +950,7 @@ unsigned int test_db::key_i128i128_general() {
tmp.price = 4;
res = load_secondary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp.number == 13 &&
tmp.price == 4 &&
tmp.extra == N(bob3) &&
...
...
@@ -935,7 +958,7 @@ unsigned int test_db::key_i128i128_general() {
"bob3 secondary load");
res = front_primary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp.number == 0 &&
tmp.price == 500 &&
tmp.extra == N(alice0) &&
...
...
@@ -943,10 +966,10 @@ unsigned int test_db::key_i128i128_general() {
"front primary load");
res = previous_primary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
-
1
,
"previous primary fail"
);
eos_assert
(res == -1, "previous primary fail");
res = next_primary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp.number == 1 &&
tmp.price == 400 &&
tmp.extra == N(alice1) &&
...
...
@@ -954,7 +977,7 @@ unsigned int test_db::key_i128i128_general() {
"next primary ok");
res = front_secondary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp.number == 10 &&
tmp.price == 1 &&
tmp.extra == N(bob0) &&
...
...
@@ -962,10 +985,10 @@ unsigned int test_db::key_i128i128_general() {
"front secondary ok");
res = previous_secondary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
-
1
,
"previous secondary fail"
);
eos_assert
(res == -1, "previous secondary fail");
res = next_secondary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp.number == 11 &&
tmp.price == 2 &&
tmp.extra == N(bob1) &&
...
...
@@ -973,7 +996,7 @@ unsigned int test_db::key_i128i128_general() {
"next secondary ok");
res = back_primary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp.number == 33 &&
tmp.price == 4 &&
tmp.extra == N(dave3) &&
...
...
@@ -981,10 +1004,10 @@ unsigned int test_db::key_i128i128_general() {
"back primary ok");
res = next_primary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
-
1
,
"next primary fail"
);
eos_assert
(res == -1, "next primary fail");
res = previous_primary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp.number == 32 &&
tmp.price == 5 &&
tmp.extra == N(dave2) &&
...
...
@@ -992,7 +1015,7 @@ unsigned int test_db::key_i128i128_general() {
"previous primary ok");
res = back_secondary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp.number == 20 &&
tmp.price == 900 &&
tmp.extra == N(carol0) &&
...
...
@@ -1000,11 +1023,11 @@ unsigned int test_db::key_i128i128_general() {
"back secondary ok");
res = next_secondary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
-
1
,
"next secondary fail"
);
eos_assert
(res == -1, "next secondary fail");
res = previous_secondary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp.number == 21 &&
tmp.price == 800 &&
tmp.extra == N(carol1) &&
...
...
@@ -1014,7 +1037,7 @@ unsigned int test_db::key_i128i128_general() {
tmp.number = 1;
res = lower_bound_primary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp.number == 1 &&
tmp.price == 400 &&
tmp.extra == N(alice1) &&
...
...
@@ -1022,7 +1045,7 @@ unsigned int test_db::key_i128i128_general() {
"lb primary ok");
res = upper_bound_primary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp.number == 2 &&
tmp.price == 200 &&
tmp.extra == N(alice22) &&
...
...
@@ -1032,7 +1055,7 @@ unsigned int test_db::key_i128i128_general() {
tmp.price = 800;
res = lower_bound_secondary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp, sizeof(TestModel128x2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp.number == 21 &&
tmp.price == 800 &&
tmp.extra == N(carol1) &&
...
...
@@ -1043,7 +1066,7 @@ unsigned int test_db::key_i128i128_general() {
tmp2.price = 800;
res = upper_bound_secondary_i128i128( current_receiver(), current_receiver(), N(table5), &tmp2, sizeof(TestModel128x2_V2) );
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2
)
&&
eos_assert
( res == sizeof(TestModel128x2) &&
tmp2.number == 20 &&
tmp2.price == 900 &&
tmp2.extra == N(carol0) &&
...
...
@@ -1052,13 +1075,13 @@ unsigned int test_db::key_i128i128_general() {
tmp2.new_field = 123456;
res = update_i128i128(current_receiver(), N(table5), &tmp2, sizeof(TestModel128x2_V2));
WASM_ASSERT
(
res
==
1
,
"update_i128i128 ok"
);
eos_assert
( res == 1, "update_i128i128 ok");
my_memset(&tmp2, 0, sizeof(TestModel128x2_V2));
tmp2.number = 20;
res = load_primary_i128i128(current_receiver(), current_receiver(), N(table5), &tmp2, sizeof(TestModel128x2_V2));
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2_V2
)
&&
eos_assert
( res == sizeof(TestModel128x2_V2) &&
tmp2.number == 20 &&
tmp2.price == 900 &&
tmp2.extra == N(carol0) &&
...
...
@@ -1068,10 +1091,10 @@ unsigned int test_db::key_i128i128_general() {
tmp2.extra = N(xxxxx);
res = update_i128i128(current_receiver(), N(table5), &tmp2, sizeof(uint128_t)*2+sizeof(uint64_t));
WASM_ASSERT
(
res
==
1
,
"update_i128i128 small ok"
);
eos_assert
( res == 1, "update_i128i128 small ok");
res = load_primary_i128i128(current_receiver(), current_receiver(), N(table5), &tmp2, sizeof(TestModel128x2_V2));
WASM_ASSERT
(
res
==
sizeof
(
TestModel128x2_V2
)
&&
eos_assert
( res == sizeof(TestModel128x2_V2) &&
tmp2.number == 20 &&
tmp2.price == 900 &&
tmp2.extra == N(xxxxx) &&
...
...
@@ -1082,6 +1105,10 @@ unsigned int test_db::key_i128i128_general() {
return WASM_TEST_PASS;
}
#endif
#if 0
void set_key_str(int i, char* key_4_digit)
{
const char nums[] = "0123456789";
...
...
@@ -1518,3 +1545,302 @@ unsigned int test_db::key_i64i64i64_another_under_limit()
return WASM_TEST_PASS;
}
#endif
void
test_db
::
primary_i64_general
()
{
auto
table1
=
N
(
table1
);
int
alice_itr
=
db_store_i64
(
current_receiver
(),
table1
,
current_receiver
(),
N
(
alice
),
"alice's info"
,
strlen
(
"alice's info"
));
db_store_i64
(
current_receiver
(),
table1
,
current_receiver
(),
N
(
bob
),
"bob's info"
,
strlen
(
"bob's info"
));
db_store_i64
(
current_receiver
(),
table1
,
current_receiver
(),
N
(
charlie
),
"charlie's info"
,
strlen
(
"charlies's info"
));
db_store_i64
(
current_receiver
(),
table1
,
current_receiver
(),
N
(
allyson
),
"allyson's info"
,
strlen
(
"allyson's info"
));
{
uint64_t
prim
=
0
;
int
itr_next
=
db_next_i64
(
alice_itr
,
&
prim
);
int
itr_next_expected
=
db_find_i64
(
current_receiver
(),
current_receiver
(),
table1
,
N
(
allyson
));
assert
(
itr_next
==
itr_next_expected
);
assert
(
prim
==
N
(
allyson
));
itr_next
=
db_next_i64
(
itr_next
,
&
prim
);
itr_next_expected
=
db_find_i64
(
current_receiver
(),
current_receiver
(),
table1
,
N
(
bob
));
assert
(
itr_next
==
itr_next_expected
);
assert
(
prim
==
N
(
bob
));
}
{
int
charlie_itr
=
db_find_i64
(
current_receiver
(),
current_receiver
(),
table1
,
N
(
charlie
));
// nothing after charlie
uint64_t
prim
=
0
;
int
end_itr
=
db_next_i64
(
charlie_itr
,
&
prim
);
assert
(
end_itr
==
-
1
);
// prim didn't change
assert
(
prim
==
0
);
}
{
int
charlie_itr
=
db_find_i64
(
current_receiver
(),
current_receiver
(),
table1
,
N
(
charlie
));
uint64_t
prim
=
0
;
int
itr_prev
=
db_previous_i64
(
charlie_itr
,
&
prim
);
int
itr_prev_expected
=
db_find_i64
(
current_receiver
(),
current_receiver
(),
table1
,
N
(
bob
));
assert
(
itr_prev
==
itr_prev_expected
);
assert
(
prim
==
N
(
bob
));
itr_prev
=
db_previous_i64
(
itr_prev
,
&
prim
);
itr_prev_expected
=
db_find_i64
(
current_receiver
(),
current_receiver
(),
table1
,
N
(
allyson
));
assert
(
itr_prev
==
itr_prev_expected
);
assert
(
prim
==
N
(
allyson
));
itr_prev
=
db_previous_i64
(
itr_prev
,
&
prim
);
itr_prev_expected
=
db_find_i64
(
current_receiver
(),
current_receiver
(),
table1
,
N
(
alice
));
assert
(
itr_prev
==
itr_prev_expected
);
assert
(
prim
==
N
(
alice
));
itr_prev
=
db_previous_i64
(
itr_prev
,
&
prim
);
itr_prev_expected
=
-
1
;
assert
(
itr_prev
==
itr_prev_expected
);
assert
(
prim
==
N
(
alice
));
}
{
int
itr
=
db_find_i64
(
current_receiver
(),
current_receiver
(),
table1
,
N
(
alice
));
assert
(
itr
!=
-
1
);
db_remove_i64
(
itr
);
itr
=
db_find_i64
(
current_receiver
(),
current_receiver
(),
table1
,
N
(
alice
));
assert
(
itr
==
-
1
);
}
{
int
itr
=
db_find_i64
(
current_receiver
(),
current_receiver
(),
table1
,
N
(
bob
));
assert
(
itr
!=
-
1
);
int
buffer_len
=
5
;
char
value
[
50
];
auto
len
=
db_get_i64
(
itr
,
value
,
buffer_len
);
value
[
buffer_len
]
=
'\0'
;
std
::
string
s
(
value
);
assert
(
len
==
strlen
(
"bob's info"
));
assert
(
s
==
"bob's"
);
buffer_len
=
20
;
db_get_i64
(
itr
,
value
,
buffer_len
);
value
[
buffer_len
]
=
'\0'
;
std
::
string
sfull
(
value
);
assert
(
sfull
==
"bob's info"
);
}
{
int
itr
=
db_find_i64
(
current_receiver
(),
current_receiver
(),
table1
,
N
(
bob
));
assert
(
itr
!=
-
1
);
const
char
*
new_value
=
"bob's new info"
;
int
new_value_len
=
strlen
(
new_value
);
db_update_i64
(
itr
,
current_receiver
(),
new_value
,
new_value_len
);
char
ret_value
[
50
];
auto
len
=
db_get_i64
(
itr
,
ret_value
,
new_value_len
);
ret_value
[
new_value_len
]
=
'\0'
;
std
::
string
sret
(
ret_value
);
assert
(
sret
==
"bob's new info"
);
}
}
void
test_db
::
primary_i64_lowerbound
()
{
auto
table
=
N
(
mytable
);
db_store_i64
(
current_receiver
(),
table
,
current_receiver
(),
N
(
alice
),
"alice's info"
,
strlen
(
"alice's info"
));
db_store_i64
(
current_receiver
(),
table
,
current_receiver
(),
N
(
bob
),
"bob's info"
,
strlen
(
"bob's info"
));
db_store_i64
(
current_receiver
(),
table
,
current_receiver
(),
N
(
charlie
),
"charlie's info"
,
strlen
(
"charlies's info"
));
db_store_i64
(
current_receiver
(),
table
,
current_receiver
(),
N
(
emily
),
"emily's info"
,
strlen
(
"emily's info"
));
db_store_i64
(
current_receiver
(),
table
,
current_receiver
(),
N
(
allyson
),
"allyson's info"
,
strlen
(
"allyson's info"
));
db_store_i64
(
current_receiver
(),
table
,
current_receiver
(),
N
(
joe
),
"nothing here"
,
strlen
(
"nothing here"
));
{
int
lb
=
db_lowerbound_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
alice
));
assert
(
lb
==
db_find_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
alice
)));
}
{
int
lb
=
db_lowerbound_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
billy
));
assert
(
lb
==
db_find_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
bob
)));
}
{
int
lb
=
db_lowerbound_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
frank
));
assert
(
lb
==
db_find_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
joe
)));
}
{
int
lb
=
db_lowerbound_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
joe
));
assert
(
lb
==
db_find_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
joe
)));
}
{
int
lb
=
db_lowerbound_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
kevin
));
assert
(
lb
==
-
1
);
}
}
void
test_db
::
primary_i64_upperbound
()
{
auto
table
=
N
(
mytable
);
{
int
ub
=
db_upperbound_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
alice
));
assert
(
ub
==
db_find_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
allyson
)));
}
{
int
ub
=
db_upperbound_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
billy
));
assert
(
ub
==
db_find_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
bob
)));
}
{
int
ub
=
db_upperbound_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
frank
));
assert
(
ub
==
db_find_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
joe
)));
}
{
int
ub
=
db_upperbound_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
joe
));
assert
(
ub
==
-
1
);
}
{
int
ub
=
db_upperbound_i64
(
current_receiver
(),
current_receiver
(),
table
,
N
(
kevin
));
assert
(
ub
==
-
1
);
}
}
void
test_db
::
idx64_general
()
{
auto
table
=
N
(
myindextable
);
typedef
uint64_t
secondary_type
;
struct
record
{
uint64_t
ssn
;
secondary_type
name
;
record
(
uint64_t
s
,
const
secondary_type
&
n
)
:
ssn
(
s
),
name
(
n
)
{
}
};
record
records
[]
=
{{
265
,
N
(
alice
)},
{
781
,
N
(
bob
)},
{
234
,
N
(
charlie
)},
{
650
,
N
(
allyson
)},
{
540
,
N
(
bob
)},
{
976
,
N
(
emily
)},
{
110
,
N
(
joe
)}
};
for
(
int
i
=
0
;
i
<
sizeof
(
records
)
/
sizeof
(
records
[
0
]);
++
i
)
{
db_idx64_store
(
current_receiver
(),
table
,
current_receiver
(),
records
[
i
].
ssn
,
&
records
[
i
].
name
);
}
// find_primary
{
secondary_type
sec
=
0
;
int
itr
=
db_idx64_find_primary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec
,
999
);
assert
(
itr
==
-
1
);
assert
(
sec
==
0
);
itr
=
db_idx64_find_primary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec
,
110
);
assert
(
itr
!=
-
1
);
assert
(
sec
==
N
(
joe
));
uint64_t
prim_next
=
0
;
int
itr_next
=
db_idx64_next
(
itr
,
&
prim_next
);
assert
(
itr_next
==
-
1
);
assert
(
prim_next
==
0
);
}
// iterate forward starting with charlie
{
secondary_type
sec
=
0
;
int
itr
=
db_idx64_find_primary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec
,
234
);
assert
(
itr
!=
-
1
);
assert
(
sec
==
N
(
charlie
));
uint64_t
prim_next
=
0
;
int
itr_next
=
db_idx64_next
(
itr
,
&
prim_next
);
assert
(
itr_next
!=
-
1
);
assert
(
prim_next
==
976
);
secondary_type
sec_next
=
0
;
int
itr_next_expected
=
db_idx64_find_primary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec_next
,
prim_next
);
assert
(
itr_next
==
itr_next_expected
);
assert
(
sec_next
==
N
(
emily
));
itr_next
=
db_idx64_next
(
itr_next
,
&
prim_next
);
assert
(
itr_next
!=
-
1
);
assert
(
prim_next
==
110
);
itr_next_expected
=
db_idx64_find_primary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec_next
,
prim_next
);
assert
(
itr_next
==
itr_next_expected
);
assert
(
sec_next
==
N
(
joe
));
itr_next
=
db_idx64_next
(
itr_next
,
&
prim_next
);
assert
(
itr_next
==
-
1
);
assert
(
prim_next
==
110
);
}
// iterate backward staring with second bob
{
secondary_type
sec
=
0
;
int
itr
=
db_idx64_find_primary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec
,
781
);
assert
(
itr
!=
-
1
);
assert
(
sec
==
N
(
bob
));
uint64_t
prim_prev
=
0
;
int
itr_prev
=
db_idx64_previous
(
itr
,
&
prim_prev
);
assert
(
itr_prev
!=
-
1
);
assert
(
prim_prev
==
540
);
secondary_type
sec_prev
=
0
;
int
itr_prev_expected
=
db_idx64_find_primary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec_prev
,
prim_prev
);
assert
(
itr_prev
==
itr_prev_expected
);
assert
(
sec_prev
==
N
(
bob
));
itr_prev
=
db_idx64_previous
(
itr_prev
,
&
prim_prev
);
assert
(
itr_prev
!=
-
1
);
assert
(
prim_prev
==
650
);
itr_prev_expected
=
db_idx64_find_primary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec_prev
,
prim_prev
);
assert
(
itr_prev
==
itr_prev_expected
);
assert
(
sec_prev
==
N
(
allyson
));
itr_prev
=
db_idx64_previous
(
itr_prev
,
&
prim_prev
);
assert
(
itr_prev
!=
-
1
);
assert
(
prim_prev
==
265
);
itr_prev_expected
=
db_idx64_find_primary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec_prev
,
prim_prev
);
assert
(
itr_prev
==
itr_prev_expected
);
assert
(
sec_prev
==
N
(
alice
));
itr_prev
=
db_idx64_previous
(
itr_prev
,
&
prim_prev
);
assert
(
itr_prev
==
-
1
);
assert
(
prim_prev
==
265
);
}
// find_secondary
{
uint64_t
prim
=
0
;
auto
sec
=
N
(
bob
);
int
itr
=
db_idx64_find_secondary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec
,
&
prim
);
assert
(
itr
!=
-
1
);
assert
(
prim
==
540
);
sec
=
N
(
emily
);
itr
=
db_idx64_find_secondary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec
,
&
prim
);
assert
(
itr
!=
-
1
);
assert
(
prim
==
976
);
sec
=
N
(
frank
);
itr
=
db_idx64_find_secondary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec
,
&
prim
);
assert
(
itr
==
-
1
);
assert
(
prim
==
976
);
}
// update and remove
{
auto
one_more_bob
=
N
(
bob
);
const
uint64_t
ssn
=
421
;
int
itr
=
db_idx64_store
(
current_receiver
(),
table
,
current_receiver
(),
ssn
,
&
one_more_bob
);
auto
new_name
=
N
(
billy
);
db_idx64_update
(
itr
,
current_receiver
(),
&
new_name
);
secondary_type
sec
=
0
;
int
sec_itr
=
db_idx64_find_primary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec
,
ssn
);
assert
(
sec_itr
==
itr
);
assert
(
sec
==
new_name
);
db_idx64_remove
(
itr
);
int
itrf
=
db_idx64_find_primary
(
current_receiver
(),
current_receiver
(),
table
,
&
sec
,
ssn
);
assert
(
itrf
==
-
1
);
}
}
void
test_db
::
idx64_lowerbound
()
{
}
void
test_db
::
idx64_upperbound
()
{
}
libraries/chain/include/eosio/chain/apply_context.hpp
浏览文件 @
cb9878c6
...
...
@@ -134,7 +134,7 @@ class apply_context {
});
}
int
find_secondary
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
secondary_key_type
&
secondary
,
uint64_t
&
primary
)
{
int
find_secondary
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
const
secondary_key_type
&
secondary
,
uint64_t
&
primary
)
{
auto
tab
=
context
.
find_table
(
context
.
receiver
,
scope
,
table
);
if
(
!
tab
)
return
-
1
;
...
...
@@ -142,7 +142,6 @@ class apply_context {
if
(
!
obj
)
return
-
1
;
primary
=
obj
->
primary_key
;
secondary
=
obj
->
secondary_key
;
itr_cache
.
cache_table
(
*
tab
);
return
itr_cache
.
add
(
*
obj
);
...
...
@@ -211,7 +210,6 @@ class apply_context {
}
int
find_primary
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
secondary_key_type
&
secondary
,
uint64_t
primary
)
{
auto
tab
=
context
.
find_table
(
context
.
receiver
,
scope
,
table
);
if
(
!
tab
)
return
-
1
;
...
...
libraries/chain/wasm_interface.cpp
浏览文件 @
cb9878c6
...
...
@@ -715,7 +715,7 @@ class database_api : public context_aware_api {
return
context
.
db_lowerbound_i64
(
code
,
scope
,
table
,
id
);
}
int
db_upperbound_i64
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
uint64_t
id
)
{
return
context
.
db_
low
erbound_i64
(
code
,
scope
,
table
,
id
);
return
context
.
db_
upp
erbound_i64
(
code
,
scope
,
table
,
id
);
}
int
db_idx64_store
(
uint64_t
scope
,
uint64_t
table
,
uint64_t
payer
,
uint64_t
id
,
const
uint64_t
&
secondary
)
{
...
...
@@ -727,13 +727,12 @@ class database_api : public context_aware_api {
void
db_idx64_remove
(
int
iterator
)
{
return
context
.
idx64
.
remove
(
iterator
);
}
int
db_idx64_find_secondary
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
uint64_t
&
secondary
,
uint64_t
&
primary
)
{
int
db_idx64_find_secondary
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
const
uint64_t
&
secondary
,
uint64_t
&
primary
)
{
return
context
.
idx64
.
find_secondary
(
code
,
scope
,
table
,
secondary
,
primary
);
}
int
db_idx64_find_primary
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
uint64_t
&
secondary
,
uint64_t
primary
)
{
return
context
.
idx64
.
find_
second
ary
(
code
,
scope
,
table
,
secondary
,
primary
);
return
context
.
idx64
.
find_
prim
ary
(
code
,
scope
,
table
,
secondary
,
primary
);
}
int
db_idx64_lowerbound
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
uint64_t
&
secondary
,
uint64_t
&
primary
)
{
return
context
.
idx64
.
lowerbound_secondary
(
code
,
scope
,
table
,
secondary
,
primary
);
}
...
...
@@ -747,22 +746,6 @@ class database_api : public context_aware_api {
return
context
.
idx64
.
previous_secondary
(
iterator
,
primary
);
}
/*
int db_idx64_next( int iterator, uint64_t& primary ) {
}
int db_idx64_prev( int iterator, uint64_t& primary ) {
}
int db_idx64_find_primary( uint64_t code, uint64_t scope, uint64_t table, uint64_t& secondary, uint64_t primary ) {
}
int db_idx64_find_secondary( uint64_t code, uint64_t scope, uint64_t table, uint64_t& secondary, uint64_t& primary ) {
}
int db_idx64_lowerbound( uint64_t code, uint64_t scope, uint64_t table, uint64_t& secondary, uint64_t& primary ) {
}
int db_idx64_upperbound( uint64_t code, uint64_t scope, uint64_t table, uint64_t& secondary, uint64_t& primary ) {
}
*/
int
db_idx128_store
(
uint64_t
scope
,
uint64_t
table
,
uint64_t
payer
,
uint64_t
id
,
const
uint128_t
&
secondary
)
{
return
context
.
idx128
.
store
(
scope
,
table
,
payer
,
id
,
secondary
);
}
...
...
@@ -775,7 +758,7 @@ class database_api : public context_aware_api {
int
db_idx128_find_primary
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
uint128_t
&
secondary
,
uint64_t
primary
)
{
return
context
.
idx128
.
find_primary
(
code
,
scope
,
table
,
secondary
,
primary
);
}
int
db_idx128_find_secondary
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
uint128_t
&
secondary
,
uint64_t
&
primary
)
{
int
db_idx128_find_secondary
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
const
uint128_t
&
secondary
,
uint64_t
&
primary
)
{
return
context
.
idx128
.
find_secondary
(
code
,
scope
,
table
,
secondary
,
primary
);
}
int
db_idx128_lowerbound
(
uint64_t
code
,
uint64_t
scope
,
uint64_t
table
,
uint128_t
&
secondary
,
uint64_t
&
primary
)
{
...
...
tests/wasm_tests/wasm_tests.cpp
浏览文件 @
cb9878c6
...
...
@@ -830,5 +830,97 @@ BOOST_FIXTURE_TEST_CASE( check_table_maximum, tester ) try {
} FC_LOG_AND_RETHROW()
#endif
#if 1
BOOST_FIXTURE_TEST_CASE
(
test_db
,
tester
)
try
{
produce_blocks
(
2
);
create_accounts
(
{
N
(
tester
)}
);
produce_block
();
set_code
(
N
(
tester
),
test_api_wast
);
// set_code(N(tester), test_api_abi);
produce_blocks
(
1
);
{
signed_transaction
trx
;
trx
.
actions
.
emplace_back
(
vector
<
permission_level
>
{{
N
(
tester
),
config
::
active_name
}},
test_api_action
<
TEST_METHOD
(
"test_db"
,
"primary_i64_general"
)
>
{});
set_tapos
(
trx
);
trx
.
sign
(
get_private_key
(
N
(
tester
),
"active"
),
chain_id_type
());
push_transaction
(
trx
);
produce_block
();
BOOST_REQUIRE_EQUAL
(
true
,
chain_has_transaction
(
trx
.
id
()));
}
{
signed_transaction
trx
;
trx
.
actions
.
emplace_back
(
vector
<
permission_level
>
{{
N
(
tester
),
config
::
active_name
}},
test_api_action
<
TEST_METHOD
(
"test_db"
,
"primary_i64_lowerbound"
)
>
{});
set_tapos
(
trx
);
trx
.
sign
(
get_private_key
(
N
(
tester
),
"active"
),
chain_id_type
());
push_transaction
(
trx
);
produce_block
();
BOOST_REQUIRE_EQUAL
(
true
,
chain_has_transaction
(
trx
.
id
()));
}
{
signed_transaction
trx
;
trx
.
actions
.
emplace_back
(
vector
<
permission_level
>
{{
N
(
tester
),
config
::
active_name
}},
test_api_action
<
TEST_METHOD
(
"test_db"
,
"primary_i64_upperbound"
)
>
{});
set_tapos
(
trx
);
trx
.
sign
(
get_private_key
(
N
(
tester
),
"active"
),
chain_id_type
());
push_transaction
(
trx
);
produce_block
();
BOOST_REQUIRE_EQUAL
(
true
,
chain_has_transaction
(
trx
.
id
()));
}
{
signed_transaction
trx
;
trx
.
actions
.
emplace_back
(
vector
<
permission_level
>
{{
N
(
tester
),
config
::
active_name
}},
test_api_action
<
TEST_METHOD
(
"test_db"
,
"idx64_general"
)
>
{});
set_tapos
(
trx
);
trx
.
sign
(
get_private_key
(
N
(
tester
),
"active"
),
chain_id_type
());
push_transaction
(
trx
);
produce_block
();
BOOST_REQUIRE_EQUAL
(
true
,
chain_has_transaction
(
trx
.
id
()));
}
{
signed_transaction
trx
;
trx
.
actions
.
emplace_back
(
vector
<
permission_level
>
{{
N
(
tester
),
config
::
active_name
}},
test_api_action
<
TEST_METHOD
(
"test_db"
,
"idx64_lowerbound"
)
>
{});
set_tapos
(
trx
);
trx
.
sign
(
get_private_key
(
N
(
tester
),
"active"
),
chain_id_type
());
push_transaction
(
trx
);
produce_block
();
BOOST_REQUIRE_EQUAL
(
true
,
chain_has_transaction
(
trx
.
id
()));
}
{
signed_transaction
trx
;
trx
.
actions
.
emplace_back
(
vector
<
permission_level
>
{{
N
(
tester
),
config
::
active_name
}},
test_api_action
<
TEST_METHOD
(
"test_db"
,
"idx64_upperbound"
)
>
{});
set_tapos
(
trx
);
trx
.
sign
(
get_private_key
(
N
(
tester
),
"active"
),
chain_id_type
());
push_transaction
(
trx
);
produce_block
();
BOOST_REQUIRE_EQUAL
(
true
,
chain_has_transaction
(
trx
.
id
()));
}
}
FC_LOG_AND_RETHROW
()
/// test_db
#endif
BOOST_AUTO_TEST_SUITE_END
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录