Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
3b8e6d17
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,发现更多精彩内容 >>
提交
3b8e6d17
编写于
5月 03, 2018
作者:
K
Khaled Al-Hassanieh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix for #2322 - issue and transfer quantities are processed the same way
上级
ba92266c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
49 addition
and
0 deletion
+49
-0
contracts/eosio.token/eosio.token.cpp
contracts/eosio.token/eosio.token.cpp
+4
-0
unittests/currency_tests.cpp
unittests/currency_tests.cpp
+45
-0
未找到文件。
contracts/eosio.token/eosio.token.cpp
浏览文件 @
3b8e6d17
...
...
@@ -45,6 +45,10 @@ void token::issue( account_name to, asset quantity, string memo )
require_auth
(
st
.
issuer
);
eosio_assert
(
quantity
.
is_valid
(),
"invalid quantity"
);
eosio_assert
(
quantity
.
amount
>
0
,
"must issue positive quantity"
);
if
(
quantity
.
symbol
.
precision
()
!=
st
.
supply
.
symbol
.
precision
()
)
quantity
.
adjust_precision
(
st
.
supply
.
symbol
);
eosio_assert
(
quantity
<=
st
.
max_supply
-
st
.
supply
,
"quantity exceeds available supply"
);
statstable
.
modify
(
st
,
0
,
[
&
](
auto
&
s
)
{
...
...
unittests/currency_tests.cpp
浏览文件 @
3b8e6d17
...
...
@@ -63,6 +63,16 @@ class currency_tester : public TESTER {
return
trace
;
}
auto
issue
(
const
account_name
&
to
,
const
std
::
string
&
quantity
,
const
std
::
string
&
memo
=
""
)
{
auto
trace
=
push_action
(
N
(
eosio
.
token
),
N
(
issue
),
mutable_variant_object
()
(
"to"
,
to
)
(
"quantity"
,
quantity
)
(
"memo"
,
memo
)
);
produce_block
();
return
trace
;
}
currency_tester
()
:
TESTER
(),
abi_ser
(
json
::
from_string
(
eosio_token_abi
).
as
<
abi_def
>
())
{
...
...
@@ -571,6 +581,41 @@ BOOST_FIXTURE_TEST_CASE( test_input_quantity, currency_tester ) try {
eosio_assert_message_is
(
"asset symbol has higher precision than expected"
)
);
}
// transfer using different symbol name fails
{
BOOST_REQUIRE_THROW
(
transfer
(
N
(
alice
),
N
(
carl
),
"20.50 USD"
),
fc
::
assert_exception
);
}
// issue to alice using right precision
{
auto
trace
=
issue
(
N
(
alice
),
"25.0256 CUR"
);
BOOST_CHECK_EQUAL
(
true
,
chain_has_transaction
(
trace
->
id
));
BOOST_CHECK_EQUAL
(
asset
::
from_string
(
"112.0256 CUR"
),
get_balance
(
N
(
alice
)));
}
// issue to alice again using lower precision
{
auto
trace
=
issue
(
N
(
alice
),
"21.03 CUR"
);
BOOST_CHECK_EQUAL
(
true
,
chain_has_transaction
(
trace
->
id
));
BOOST_CHECK_EQUAL
(
asset
::
from_string
(
"133.0556 CUR"
),
get_balance
(
N
(
alice
)));
}
// no decimal point
{
auto
trace
=
issue
(
N
(
alice
),
"67 CUR"
);
BOOST_CHECK_EQUAL
(
true
,
chain_has_transaction
(
trace
->
id
));
BOOST_CHECK_EQUAL
(
asset
::
from_string
(
"200.0556 CUR"
),
get_balance
(
N
(
alice
)));
}
// issue using higher precision fails
{
BOOST_REQUIRE_EXCEPTION
(
issue
(
N
(
alice
),
"5.340067 CUR"
),
fc
::
assert_exception
,
eosio_assert_message_is
(
"asset symbol has higher precision than expected"
)
);
}
}
FC_LOG_AND_RETHROW
()
/// test_currency
BOOST_AUTO_TEST_SUITE_END
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录