diff options
author | Amir Bandeali <abandeali1@gmail.com> | 2018-08-29 04:00:49 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-29 04:00:49 +0800 |
commit | 14fdb71a716cb95bc1f6933db9057d23f3c41909 (patch) | |
tree | 9690b583d128f419f292ef78f0a70be260e8babe /packages/contracts/src/2.0.0/test | |
parent | 2eab0e30b753fb33729db53d141c8e22017cadec (diff) | |
download | dexon-sol-tools-14fdb71a716cb95bc1f6933db9057d23f3c41909.tar dexon-sol-tools-14fdb71a716cb95bc1f6933db9057d23f3c41909.tar.gz dexon-sol-tools-14fdb71a716cb95bc1f6933db9057d23f3c41909.tar.bz2 dexon-sol-tools-14fdb71a716cb95bc1f6933db9057d23f3c41909.tar.lz dexon-sol-tools-14fdb71a716cb95bc1f6933db9057d23f3c41909.tar.xz dexon-sol-tools-14fdb71a716cb95bc1f6933db9057d23f3c41909.tar.zst dexon-sol-tools-14fdb71a716cb95bc1f6933db9057d23f3c41909.zip |
safeGetPartialAmount (#1035)
* Added Test "Should transfer correct amounts when left order is fully filled and values pass isRoundingErrorCeil but fail isRoundingErrorFloor"
* Added RoundingError exception to reference function for getPartialAmount
* Added RoundingError exception to reference function for getPartialAmount
* Added isRoundingErrorCeil to getPartialAmountCeil reference funtion
* Computed new values for "Should give right maker a better buy price when correct price is not integral" that does not have a rounding error
* Almost all tests for match orders are passing after adding isRoundingErrorCeil check
* WIP commit: Added rounding error checks to getPartialAmount
* WIP commit: Added rounding error checks to getPartialAmount
* Use safe versions of getPartialAmount
* Update Exchange internals tests
* Run linter
* Found new values for "Should transfer correct amounts when right order fill amount deviates from amount derived by `Exchange.fillOrder`"
* Fixed merge conflicts
* Run all tests
* Cleaned up some comments on match Orders tests
* Fix tests for geth
Diffstat (limited to 'packages/contracts/src/2.0.0/test')
-rw-r--r-- | packages/contracts/src/2.0.0/test/ReentrantERC20Token/ReentrantERC20Token.sol | 1 | ||||
-rw-r--r-- | packages/contracts/src/2.0.0/test/TestExchangeInternals/TestExchangeInternals.sol | 36 |
2 files changed, 37 insertions, 0 deletions
diff --git a/packages/contracts/src/2.0.0/test/ReentrantERC20Token/ReentrantERC20Token.sol b/packages/contracts/src/2.0.0/test/ReentrantERC20Token/ReentrantERC20Token.sol index 8bfdd2e66..4f4e28302 100644 --- a/packages/contracts/src/2.0.0/test/ReentrantERC20Token/ReentrantERC20Token.sol +++ b/packages/contracts/src/2.0.0/test/ReentrantERC20Token/ReentrantERC20Token.sol @@ -25,6 +25,7 @@ import "../../protocol/Exchange/interfaces/IExchange.sol"; import "../../protocol/Exchange/libs/LibOrder.sol"; +// solhint-disable no-unused-vars contract ReentrantERC20Token is ERC20Token { diff --git a/packages/contracts/src/2.0.0/test/TestExchangeInternals/TestExchangeInternals.sol b/packages/contracts/src/2.0.0/test/TestExchangeInternals/TestExchangeInternals.sol index da9313e02..27187f8f8 100644 --- a/packages/contracts/src/2.0.0/test/TestExchangeInternals/TestExchangeInternals.sol +++ b/packages/contracts/src/2.0.0/test/TestExchangeInternals/TestExchangeInternals.sol @@ -63,6 +63,42 @@ contract TestExchangeInternals is } /// @dev Calculates partial value given a numerator and denominator. + /// Reverts if rounding error is >= 0.1% + /// @param numerator Numerator. + /// @param denominator Denominator. + /// @param target Value to calculate partial of. + /// @return Partial value of target. + function publicSafeGetPartialAmountFloor( + uint256 numerator, + uint256 denominator, + uint256 target + ) + public + pure + returns (uint256 partialAmount) + { + return safeGetPartialAmountFloor(numerator, denominator, target); + } + + /// @dev Calculates partial value given a numerator and denominator. + /// Reverts if rounding error is >= 0.1% + /// @param numerator Numerator. + /// @param denominator Denominator. + /// @param target Value to calculate partial of. + /// @return Partial value of target. + function publicSafeGetPartialAmountCeil( + uint256 numerator, + uint256 denominator, + uint256 target + ) + public + pure + returns (uint256 partialAmount) + { + return safeGetPartialAmountCeil(numerator, denominator, target); + } + + /// @dev Calculates partial value given a numerator and denominator. /// @param numerator Numerator. /// @param denominator Denominator. /// @param target Value to calculate partial of. |