aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Mitton <zacmitton22@gmail.com>2016-06-21 06:46:29 +0800
committerZac Mitton <zacmitton22@gmail.com>2016-06-21 06:46:29 +0800
commit9132f085070a99499a75d6353983bd1683f7a3f0 (patch)
tree906453bc38a443bf7c7a576bcd5bedcd46787859
parentd19c286ee8dbd748ef0e1770545299879dada1da (diff)
downloadtangerine-wallet-browser-9132f085070a99499a75d6353983bd1683f7a3f0.tar.gz
tangerine-wallet-browser-9132f085070a99499a75d6353983bd1683f7a3f0.tar.zst
tangerine-wallet-browser-9132f085070a99499a75d6353983bd1683f7a3f0.zip
added a failing case and fixed it by refactoring everything to strings
-rw-r--r--test/unit/util_test.js16
-rw-r--r--ui/app/util.js18
2 files changed, 23 insertions, 11 deletions
diff --git a/test/unit/util_test.js b/test/unit/util_test.js
index 12a16999e..e2390c8d4 100644
--- a/test/unit/util_test.js
+++ b/test/unit/util_test.js
@@ -25,12 +25,26 @@ describe('util', function() {
})
})
describe('parseBalance', function() {
- it('should render 0.01 eth correctly', function() {
+ it('should render 12.023 eth correctly', function() {
const input = 'A6DA46CCA6858000'
const output = util.parseBalance(input)
assert.deepEqual(output, ['12', '023'])
})
})
+ describe('parseBalance', function() {
+ it('should render 0.0000000342422 eth correctly', function() {
+ const input = '0x7F8FE81C0'
+ const output = util.parseBalance(input)
+ assert.deepEqual(output, ['0', '0000000342422'])
+ })
+ })
+ describe('parseBalance', function() {
+ it('should render 0 eth correctly', function() {
+ const input = '0x0'
+ const output = util.parseBalance(input)
+ assert.deepEqual(output, ['0', '0'])
+ })
+ })
describe('addressSummary', function() {
it('should add case-sensitive checksum', function() {
diff --git a/ui/app/util.js b/ui/app/util.js
index 6ece28a9e..56a16a4cd 100644
--- a/ui/app/util.js
+++ b/ui/app/util.js
@@ -85,22 +85,20 @@ function weiToEth(bn) {
// Takes hex, returns [beforeDecimal, afterDecimal]
function parseBalance(balance) {
- if (!balance || balance === '0x0') return ['0', '0']
- var wei = numericBalance(balance).toString(10)
- var eth = String(wei/valueTable['wei'])
- var beforeDecimal = String(Math.floor(eth))
- var afterDecimal
- if(eth.indexOf('.') > -1){
- afterDecimal = eth.slice(eth.indexOf('.') + 1)
- }else{
- afterDecimal = '0'
- }
+ let beforeDecimal, afterDecimal
+ let wei = numericBalance(balance).toString()
+ let trailingZeros = /0+$/
+
+ beforeDecimal = wei.length > 18 ? wei.slice(0, wei.length - 18) : '0'
+ afterDecimal = ("000000000000000000" + wei).slice(-18).replace(trailingZeros, "")
+ if(afterDecimal == ""){afterDecimal = "0" }
return [beforeDecimal, afterDecimal]
}
// Takes wei hex, returns "None" or "${formattedAmount} ETH"
function formatBalance(balance, decimalsToKeep) {
var parsed = parseBalance(balance)
+ console.log(parsed)
var beforeDecimal = parsed[0]
var afterDecimal = parsed[1]
var formatted = "None"