Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
openzeppelin-contracts-upgradeable
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
俞永鹏
openzeppelin-contracts-upgradeable
Commits
63174848
Commit
63174848
authored
Aug 21, 2017
by
Francisco Giordano
Committed by
GitHub
Aug 21, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #391 from rudygodoy/pr-224-tests
Added tests for PR #224
parents
3d5c759d
289fd87e
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
43 additions
and
0 deletions
+43
-0
StandardToken.sol
contracts/token/StandardToken.sol
+25
-0
StandardToken.js
test/StandardToken.js
+18
-0
No files found.
contracts/token/StandardToken.sol
View file @
63174848
...
@@ -64,4 +64,29 @@ contract StandardToken is ERC20, BasicToken {
...
@@ -64,4 +64,29 @@ contract StandardToken is ERC20, BasicToken {
return allowed[_owner][_spender];
return allowed[_owner][_spender];
}
}
/*
* approve should be called when allowed[_spender] == 0. To increment
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
*/
function increaseApproval (address _spender, uint _addedValue)
returns (bool success) {
allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
function decreaseApproval (address _spender, uint _subtractedValue)
returns (bool success) {
uint oldValue = allowed[msg.sender][_spender];
if (_subtractedValue > oldValue) {
allowed[msg.sender][_spender] = 0;
} else {
allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
}
Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
}
}
test/StandardToken.js
View file @
63174848
...
@@ -70,4 +70,22 @@ contract('StandardToken', function(accounts) {
...
@@ -70,4 +70,22 @@ contract('StandardToken', function(accounts) {
}
}
});
});
describe
(
'validating allowance updates to spender'
,
function
()
{
let
preApproved
;
it
(
'should start with zero'
,
async
function
()
{
preApproved
=
await
token
.
allowance
(
accounts
[
0
],
accounts
[
1
]);
assert
.
equal
(
preApproved
,
0
);
})
it
(
'should increase by 50 then decrease by 10'
,
async
function
()
{
await
token
.
increaseApproval
(
accounts
[
1
],
50
);
let
postIncrease
=
await
token
.
allowance
(
accounts
[
0
],
accounts
[
1
]);
preApproved
.
plus
(
50
).
should
.
be
.
bignumber
.
equal
(
postIncrease
);
await
token
.
decreaseApproval
(
accounts
[
1
],
10
);
let
postDecrease
=
await
token
.
allowance
(
accounts
[
0
],
accounts
[
1
]);
postIncrease
.
minus
(
10
).
should
.
be
.
bignumber
.
equal
(
postDecrease
);
})
});
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment