Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
19594632
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,发现更多精彩内容 >>
提交
19594632
编写于
3月 15, 2018
作者:
A
Anton Perkov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more tests for system contract
上级
cbff805f
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
115 addition
and
2 deletion
+115
-2
contracts/eosio.system/voting.hpp
contracts/eosio.system/voting.hpp
+1
-1
tests/wasm_tests/eosio.system_tests.cpp
tests/wasm_tests/eosio.system_tests.cpp
+114
-1
未找到文件。
contracts/eosio.system/voting.hpp
浏览文件 @
19594632
...
...
@@ -429,7 +429,7 @@ namespace eosiosystem {
eosio_assert
(
bool
(
voter
)
&&
(
0
<
voter
->
staked
.
quantity
||
(
voter
->
is_proxy
&&
0
<
voter
->
proxied_votes
)
),
"no stake to vote"
);
if
(
voter
->
is_proxy
)
{
eosio_assert
(
vp
.
proxy
==
0
,
"account
s elected to be proxy are not allowed to use another
proxy"
);
eosio_assert
(
vp
.
proxy
==
0
,
"account
registered as a proxy is not allowed to use a
proxy"
);
}
//find old producers, update old proxy if needed
...
...
tests/wasm_tests/eosio.system_tests.cpp
浏览文件 @
19594632
...
...
@@ -369,6 +369,70 @@ BOOST_FIXTURE_TEST_CASE( delegate_to_another_user, eosio_system_tester ) try {
}
FC_LOG_AND_RETHROW
()
BOOST_FIXTURE_TEST_CASE
(
stake_unstake_separate
,
eosio_system_tester
)
try
{
issue
(
"alice"
,
"1000.0000 EOS"
,
config
::
system_account_name
);
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"1000.0000 EOS"
),
get_balance
(
"alice"
)
);
//everything at once
BOOST_REQUIRE_EQUAL
(
success
(),
stake
(
"alice"
,
"10.0000 EOS"
,
"20.0000 EOS"
,
"30.0000 EOS"
)
);
auto
total
=
get_total_stake
(
"alice"
);
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"10.0000 EOS"
).
amount
,
total
[
"net_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"20.0000 EOS"
).
amount
,
total
[
"cpu_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"30.0000 EOS"
).
amount
,
total
[
"storage_stake"
].
as_uint64
());
auto
bytes
=
total
[
"storage_bytes"
].
as_uint64
();
BOOST_REQUIRE_EQUAL
(
true
,
0
<
bytes
);
//cpu
BOOST_REQUIRE_EQUAL
(
success
(),
stake
(
"alice"
,
"100.0000 EOS"
,
"0.0000 EOS"
,
"0.0000 EOS"
)
);
total
=
get_total_stake
(
"alice"
);
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"110.0000 EOS"
).
amount
,
total
[
"net_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"20.0000 EOS"
).
amount
,
total
[
"cpu_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"30.0000 EOS"
).
amount
,
total
[
"storage_stake"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
bytes
,
total
[
"storage_bytes"
].
as_uint64
()
);
//net
BOOST_REQUIRE_EQUAL
(
success
(),
stake
(
"alice"
,
"0.0000 EOS"
,
"200.0000 EOS"
,
"0.0000 EOS"
)
);
total
=
get_total_stake
(
"alice"
);
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"110.0000 EOS"
).
amount
,
total
[
"net_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"220.0000 EOS"
).
amount
,
total
[
"cpu_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"30.0000 EOS"
).
amount
,
total
[
"storage_stake"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
bytes
,
total
[
"storage_bytes"
].
as_uint64
()
);
//storage
BOOST_REQUIRE_EQUAL
(
success
(),
stake
(
"alice"
,
"0.0000 EOS"
,
"200.0000 EOS"
,
"300.0000 EOS"
)
);
total
=
get_total_stake
(
"alice"
);
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"110.0000 EOS"
).
amount
,
total
[
"net_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"220.0000 EOS"
).
amount
,
total
[
"cpu_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"330.0000 EOS"
).
amount
,
total
[
"storage_stake"
].
as_uint64
());
auto
bytes2
=
total
[
"storage_bytes"
].
as_uint64
();
BOOST_REQUIRE_EQUAL
(
true
,
bytes
<
bytes2
);
//unstake cpu
BOOST_REQUIRE_EQUAL
(
success
(),
unstake
(
"alice"
,
"100.0000 EOS"
,
"0.0000 EOS"
,
0
)
);
total
=
get_total_stake
(
"alice"
);
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"10.0000 EOS"
).
amount
,
total
[
"net_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"220.0000 EOS"
).
amount
,
total
[
"cpu_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"3300.0000 EOS"
).
amount
,
total
[
"storage_stake"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
bytes2
,
total
[
"storage_bytes"
].
as_uint64
());
//unstake net
BOOST_REQUIRE_EQUAL
(
success
(),
unstake
(
"alice"
,
"0.0000 EOS"
,
"200.0000 EOS"
,
0
)
);
total
=
get_total_stake
(
"alice"
);
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"10.0000 EOS"
).
amount
,
total
[
"net_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"20.0000 EOS"
).
amount
,
total
[
"cpu_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"3300.0000 EOS"
).
amount
,
total
[
"storage_stake"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
bytes2
,
total
[
"storage_bytes"
].
as_uint64
());
//unstake cpu
BOOST_REQUIRE_EQUAL
(
success
(),
unstake
(
"alice"
,
"0.0000 EOS"
,
"0.0000 EOS"
,
bytes2
/
2
)
);
total
=
get_total_stake
(
"alice"
);
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"10.0000 EOS"
).
amount
,
total
[
"net_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"20.0000 EOS"
).
amount
,
total
[
"cpu_weight"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
asset
::
from_string
(
"1650.0000 EOS"
).
amount
,
total
[
"storage_stake"
].
as_uint64
());
BOOST_REQUIRE_EQUAL
(
bytes2
-
bytes2
/
2
,
total
[
"storage_bytes"
].
as_uint64
());
}
FC_LOG_AND_RETHROW
()
BOOST_FIXTURE_TEST_CASE
(
adding_stake_partial_unstake
,
eosio_system_tester
)
try
{
issue
(
"alice"
,
"1000.0000 EOS"
,
config
::
system_account_name
);
BOOST_REQUIRE_EQUAL
(
success
(),
stake
(
"alice"
,
"bob"
,
"200.0000 EOS"
,
"100.0000 EOS"
,
"80.0000 EOS"
)
);
...
...
@@ -1099,7 +1163,7 @@ BOOST_FIXTURE_TEST_CASE( select_invalid_proxy, eosio_system_tester ) try {
BOOST_FIXTURE_TEST_CASE
(
double_register_unregister_proxy_keeps_votes
,
eosio_system_tester
)
try
{
//alice becomes a pro
ducer
//alice becomes a pro
xy
BOOST_REQUIRE_EQUAL
(
success
(),
push_action
(
N
(
alice
),
N
(
regproxy
),
mvo
()
(
"proxy"
,
"alice"
)
)
...
...
@@ -1145,4 +1209,53 @@ BOOST_FIXTURE_TEST_CASE( double_register_unregister_proxy_keeps_votes, eosio_sys
}
FC_LOG_AND_RETHROW
()
BOOST_FIXTURE_TEST_CASE
(
proxy_cannot_use_another_proxy
,
eosio_system_tester
)
try
{
//alice becomes a proxy
BOOST_REQUIRE_EQUAL
(
success
(),
push_action
(
N
(
alice
),
N
(
regproxy
),
mvo
()
(
"proxy"
,
"alice"
)
)
);
//bob becomes a proxy
BOOST_REQUIRE_EQUAL
(
success
(),
push_action
(
N
(
bob
),
N
(
regproxy
),
mvo
()
(
"proxy"
,
"bob"
)
)
);
//proxy should not be able to use a proxy
issue
(
"bob"
,
"1000.0000 EOS"
,
config
::
system_account_name
);
BOOST_REQUIRE_EQUAL
(
success
(),
stake
(
"bob"
,
"100.0002 EOS"
,
"50.0001 EOS"
,
"50.0000 EOS"
)
);
BOOST_REQUIRE_EQUAL
(
error
(
"condition: assertion failed: account registered as a proxy is not allowed to use a proxy"
),
push_action
(
N
(
bob
),
N
(
voteproducer
),
mvo
()
(
"voter"
,
"bob"
)
(
"proxy"
,
"alice"
)
(
"producers"
,
vector
<
account_name
>
()
)
)
);
//voter that uses a proxy should not be allowed to become a proxy
issue
(
"carol"
,
"1000.0000 EOS"
,
config
::
system_account_name
);
BOOST_REQUIRE_EQUAL
(
success
(),
stake
(
"carol"
,
"100.0002 EOS"
,
"50.0001 EOS"
,
"50.0000 EOS"
)
);
BOOST_REQUIRE_EQUAL
(
success
(),
push_action
(
N
(
carol
),
N
(
voteproducer
),
mvo
()
(
"voter"
,
"carol"
)
(
"proxy"
,
"alice"
)
(
"producers"
,
vector
<
account_name
>
()
)
)
);
BOOST_REQUIRE_EQUAL
(
error
(
"condition: assertion failed: account that uses a proxy is not allowed to become a proxy"
),
push_action
(
N
(
carol
),
N
(
regproxy
),
mvo
()
(
"proxy"
,
"carol"
)
)
);
//proxy should not be able to use itself as a proxy
BOOST_REQUIRE_EQUAL
(
error
(
"condition: assertion failed: account registered as a proxy is not allowed to use a proxy"
),
push_action
(
N
(
bob
),
N
(
voteproducer
),
mvo
()
(
"voter"
,
"bob"
)
(
"proxy"
,
"bob"
)
(
"producers"
,
vector
<
account_name
>
()
)
)
);
}
FC_LOG_AND_RETHROW
()
BOOST_AUTO_TEST_SUITE_END
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录