aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDan Finlay <dan@danfinlay.com>2016-04-20 09:56:22 +0800
committerDan Finlay <dan@danfinlay.com>2016-04-20 09:56:22 +0800
commitd6ab6bb4fa506c5fb9479b6e534ab74632c1b819 (patch)
tree752bba009f4a31636d74621431cda51495741693 /test
parentf79601ee58a07ec6275d4588845578795f550d84 (diff)
downloadtangerine-wallet-browser-d6ab6bb4fa506c5fb9479b6e534ab74632c1b819.tar
tangerine-wallet-browser-d6ab6bb4fa506c5fb9479b6e534ab74632c1b819.tar.gz
tangerine-wallet-browser-d6ab6bb4fa506c5fb9479b6e534ab74632c1b819.tar.bz2
tangerine-wallet-browser-d6ab6bb4fa506c5fb9479b6e534ab74632c1b819.tar.lz
tangerine-wallet-browser-d6ab6bb4fa506c5fb9479b6e534ab74632c1b819.tar.xz
tangerine-wallet-browser-d6ab6bb4fa506c5fb9479b6e534ab74632c1b819.tar.zst
tangerine-wallet-browser-d6ab6bb4fa506c5fb9479b6e534ab74632c1b819.zip
Fix floating point input bug
When sending a transaction, we were converting to BN before handling decimals, which meant we were losing any precision past a decimal point, since BN does not handle decimals! Put this numeric normalization into a utility function with a test around it and got it working.
Diffstat (limited to 'test')
-rw-r--r--test/unit/util_test.js68
1 files changed, 41 insertions, 27 deletions
diff --git a/test/unit/util_test.js b/test/unit/util_test.js
index 7f8103d3b..3f46d4e9b 100644
--- a/test/unit/util_test.js
+++ b/test/unit/util_test.js
@@ -82,33 +82,47 @@ describe('util', function() {
})
- describe('#normalizeToWei', function() {
- it('should convert an eth to the appropriate equivalent values', function() {
- var valueTable = {
- wei: '1000000000000000000',
- kwei: '1000000000000000',
- mwei: '1000000000000',
- gwei: '1000000000',
- szabo: '1000000',
- finney:'1000',
- ether: '1',
- kether:'0.001',
- mether:'0.000001',
- // AUDIT: We're getting BN numbers on these ones.
- // I think they're big enough to ignore for now.
- // gether:'0.000000001',
- // tether:'0.000000000001',
- }
- var oneEthBn = new ethUtil.BN(ethInWei, 10)
-
- for(var currency in valueTable) {
-
- var value = new ethUtil.BN(valueTable[currency], 10)
- var output = util.normalizeToWei(value, currency)
- assert.equal(output.toString(10), valueTable.wei, `value of ${output.toString(10)} ${currency} should convert to ${oneEthBn}`)
-
- }
+ describe('normalizing values', function() {
+
+ describe('#normalizeToWei', function() {
+ it('should convert an eth to the appropriate equivalent values', function() {
+ var valueTable = {
+ wei: '1000000000000000000',
+ kwei: '1000000000000000',
+ mwei: '1000000000000',
+ gwei: '1000000000',
+ szabo: '1000000',
+ finney:'1000',
+ ether: '1',
+ // kether:'0.001',
+ // mether:'0.000001',
+ // AUDIT: We're getting BN numbers on these ones.
+ // I think they're big enough to ignore for now.
+ // gether:'0.000000001',
+ // tether:'0.000000000001',
+ }
+ var oneEthBn = new ethUtil.BN(ethInWei, 10)
+
+ for(var currency in valueTable) {
+
+ var value = new ethUtil.BN(valueTable[currency], 10)
+ var output = util.normalizeToWei(value, currency)
+ assert.equal(output.toString(10), valueTable.wei, `value of ${output.toString(10)} ${currency} should convert to ${oneEthBn}`)
+ }
+ })
})
- })
+ describe('#normalizeNumberToWei', function() {
+
+ it('should convert a kwei number to the appropriate equivalent wei', function() {
+ var result = util.normalizeNumberToWei(1.111, 'kwei')
+ assert.equal(result.toString(10), '1111', 'accepts decimals')
+ })
+
+ it('should convert a ether number to the appropriate equivalent wei', function() {
+ var result = util.normalizeNumberToWei(1.111, 'ether')
+ assert.equal(result.toString(10), '1111000000000000000', 'accepts decimals')
+ })
+ })
+ })
})