aboutsummaryrefslogtreecommitdiffstats
path: root/ui/test/unit/util_test.js
blob: 52635eb899abf37bc962c44695e79a1fcbe1e136 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
var assert = require('assert')
var sinon = require('sinon')
const ethUtil = require('ethereumjs-util')

var path = require('path')
var util = require(path.join(__dirname, '..', '..', 'app', 'util.js'))

describe('util', function() {
  var ethInWei = '1'
  for (var i = 0; i < 18; i++ ) { ethInWei += '0' }

  beforeEach(function() {
    this.sinon = sinon.sandbox.create()
  })

  afterEach(function() {
    this.sinon.restore()
  })

  describe('numericBalance', function() {

    it('should return a BN 0 if given nothing', function() {
      var result = util.numericBalance()
      assert.equal(result.toString(10), 0)
    })

    it('should work with hex prefix', function() {
      var result = util.numericBalance('0x012')
      assert.equal(result.toString(10), '18')
    })

    it('should work with no hex prefix', function() {
      var result = util.numericBalance('012')
      assert.equal(result.toString(10), '18')
    })

  })

  describe('#ethToWei', function() {

    it('should take an eth BN, returns wei BN', function() {
      var input = new ethUtil.BN(1, 10)
      var result = util.ethToWei(input)
      assert.equal(result, ethInWei, '18 zeroes')
    })

  })

  describe('#weiToEth', function() {

    it('should take a wei BN and return an eth BN', function() {
    var result = util.weiToEth(new ethUtil.BN(ethInWei))
    assert.equal(result, '1', 'equals 1 eth')
    })

  })

  describe('#formatBalance', function() {

    it('when given nothing', function() {
      var result = util.formatBalance()
      assert.equal(result, 'None', 'should return "None"')
    })

    it('should return eth as string followed by ETH', function() {
      var input = new ethUtil.BN(ethInWei).toJSON()
      var result = util.formatBalance(input)
      assert.equal(result, '1 ETH')
    })

  })

  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}`)

      }
    })
  })

})