forked from cerc-io/plugeth
Move CurrencyToString to size
This commit is contained in:
parent
08b21acff1
commit
82a41a198e
@ -76,63 +76,6 @@ func WindonizePath(path string) string {
|
||||
return path
|
||||
}
|
||||
|
||||
// The different number of units
|
||||
var (
|
||||
Douglas = BigPow(10, 42)
|
||||
Einstein = BigPow(10, 21)
|
||||
Ether = BigPow(10, 18)
|
||||
Finney = BigPow(10, 15)
|
||||
Szabo = BigPow(10, 12)
|
||||
Shannon = BigPow(10, 9)
|
||||
Babbage = BigPow(10, 6)
|
||||
Ada = BigPow(10, 3)
|
||||
Wei = big.NewInt(1)
|
||||
)
|
||||
|
||||
//
|
||||
// Currency to string
|
||||
// Returns a string representing a human readable format
|
||||
func CurrencyToString(num *big.Int) string {
|
||||
var (
|
||||
fin *big.Int = num
|
||||
denom string = "Wei"
|
||||
)
|
||||
|
||||
switch {
|
||||
case num.Cmp(Douglas) >= 0:
|
||||
fin = new(big.Int).Div(num, Douglas)
|
||||
denom = "Douglas"
|
||||
case num.Cmp(Einstein) >= 0:
|
||||
fin = new(big.Int).Div(num, Einstein)
|
||||
denom = "Einstein"
|
||||
case num.Cmp(Ether) >= 0:
|
||||
fin = new(big.Int).Div(num, Ether)
|
||||
denom = "Ether"
|
||||
case num.Cmp(Finney) >= 0:
|
||||
fin = new(big.Int).Div(num, Finney)
|
||||
denom = "Finney"
|
||||
case num.Cmp(Szabo) >= 0:
|
||||
fin = new(big.Int).Div(num, Szabo)
|
||||
denom = "Szabo"
|
||||
case num.Cmp(Shannon) >= 0:
|
||||
fin = new(big.Int).Div(num, Shannon)
|
||||
denom = "Shannon"
|
||||
case num.Cmp(Babbage) >= 0:
|
||||
fin = new(big.Int).Div(num, Babbage)
|
||||
denom = "Babbage"
|
||||
case num.Cmp(Ada) >= 0:
|
||||
fin = new(big.Int).Div(num, Ada)
|
||||
denom = "Ada"
|
||||
}
|
||||
|
||||
// TODO add comment clarifying expected behavior
|
||||
if len(fin.String()) > 5 {
|
||||
return fmt.Sprintf("%sE%d %s", fin.String()[0:5], len(fin.String())-5, denom)
|
||||
}
|
||||
|
||||
return fmt.Sprintf("%v %s", fin, denom)
|
||||
}
|
||||
|
||||
// Common big integers often used
|
||||
var (
|
||||
Big1 = big.NewInt(1)
|
||||
|
@ -1,7 +1,6 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"math/big"
|
||||
"os"
|
||||
|
||||
checker "gopkg.in/check.v1"
|
||||
@ -34,35 +33,3 @@ func (s *CommonSuite) TestWindonziePath(c *checker.C) {
|
||||
c.Assert(ressep, checker.Not(checker.Equals), "/")
|
||||
}
|
||||
}
|
||||
|
||||
func (s *CommonSuite) TestCommon(c *checker.C) {
|
||||
douglas := CurrencyToString(BigPow(10, 43))
|
||||
einstein := CurrencyToString(BigPow(10, 22))
|
||||
ether := CurrencyToString(BigPow(10, 19))
|
||||
finney := CurrencyToString(BigPow(10, 16))
|
||||
szabo := CurrencyToString(BigPow(10, 13))
|
||||
shannon := CurrencyToString(BigPow(10, 10))
|
||||
babbage := CurrencyToString(BigPow(10, 7))
|
||||
ada := CurrencyToString(BigPow(10, 4))
|
||||
wei := CurrencyToString(big.NewInt(10))
|
||||
|
||||
c.Assert(douglas, checker.Equals, "10 Douglas")
|
||||
c.Assert(einstein, checker.Equals, "10 Einstein")
|
||||
c.Assert(ether, checker.Equals, "10 Ether")
|
||||
c.Assert(finney, checker.Equals, "10 Finney")
|
||||
c.Assert(szabo, checker.Equals, "10 Szabo")
|
||||
c.Assert(shannon, checker.Equals, "10 Shannon")
|
||||
c.Assert(babbage, checker.Equals, "10 Babbage")
|
||||
c.Assert(ada, checker.Equals, "10 Ada")
|
||||
c.Assert(wei, checker.Equals, "10 Wei")
|
||||
}
|
||||
|
||||
func (s *CommonSuite) TestLarge(c *checker.C) {
|
||||
douglaslarge := CurrencyToString(BigPow(100000000, 43))
|
||||
adalarge := CurrencyToString(BigPow(100000000, 4))
|
||||
weilarge := CurrencyToString(big.NewInt(100000000))
|
||||
|
||||
c.Assert(douglaslarge, checker.Equals, "10000E298 Douglas")
|
||||
c.Assert(adalarge, checker.Equals, "10000E7 Einstein")
|
||||
c.Assert(weilarge, checker.Equals, "100 Babbage")
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
package common
|
||||
|
||||
import "fmt"
|
||||
import (
|
||||
"fmt"
|
||||
"math/big"
|
||||
)
|
||||
|
||||
type StorageSize float64
|
||||
|
||||
@ -13,3 +16,60 @@ func (self StorageSize) String() string {
|
||||
return fmt.Sprintf("%.2f B", self)
|
||||
}
|
||||
}
|
||||
|
||||
// The different number of units
|
||||
var (
|
||||
Douglas = BigPow(10, 42)
|
||||
Einstein = BigPow(10, 21)
|
||||
Ether = BigPow(10, 18)
|
||||
Finney = BigPow(10, 15)
|
||||
Szabo = BigPow(10, 12)
|
||||
Shannon = BigPow(10, 9)
|
||||
Babbage = BigPow(10, 6)
|
||||
Ada = BigPow(10, 3)
|
||||
Wei = big.NewInt(1)
|
||||
)
|
||||
|
||||
//
|
||||
// Currency to string
|
||||
// Returns a string representing a human readable format
|
||||
func CurrencyToString(num *big.Int) string {
|
||||
var (
|
||||
fin *big.Int = num
|
||||
denom string = "Wei"
|
||||
)
|
||||
|
||||
switch {
|
||||
case num.Cmp(Douglas) >= 0:
|
||||
fin = new(big.Int).Div(num, Douglas)
|
||||
denom = "Douglas"
|
||||
case num.Cmp(Einstein) >= 0:
|
||||
fin = new(big.Int).Div(num, Einstein)
|
||||
denom = "Einstein"
|
||||
case num.Cmp(Ether) >= 0:
|
||||
fin = new(big.Int).Div(num, Ether)
|
||||
denom = "Ether"
|
||||
case num.Cmp(Finney) >= 0:
|
||||
fin = new(big.Int).Div(num, Finney)
|
||||
denom = "Finney"
|
||||
case num.Cmp(Szabo) >= 0:
|
||||
fin = new(big.Int).Div(num, Szabo)
|
||||
denom = "Szabo"
|
||||
case num.Cmp(Shannon) >= 0:
|
||||
fin = new(big.Int).Div(num, Shannon)
|
||||
denom = "Shannon"
|
||||
case num.Cmp(Babbage) >= 0:
|
||||
fin = new(big.Int).Div(num, Babbage)
|
||||
denom = "Babbage"
|
||||
case num.Cmp(Ada) >= 0:
|
||||
fin = new(big.Int).Div(num, Ada)
|
||||
denom = "Ada"
|
||||
}
|
||||
|
||||
// TODO add comment clarifying expected behavior
|
||||
if len(fin.String()) > 5 {
|
||||
return fmt.Sprintf("%sE%d %s", fin.String()[0:5], len(fin.String())-5, denom)
|
||||
}
|
||||
|
||||
return fmt.Sprintf("%v %s", fin, denom)
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"math/big"
|
||||
|
||||
checker "gopkg.in/check.v1"
|
||||
)
|
||||
|
||||
@ -21,3 +23,35 @@ func (s *SizeSuite) TestStorageSizeString(c *checker.C) {
|
||||
c.Assert(StorageSize(data2).String(), checker.Equals, exp2)
|
||||
c.Assert(StorageSize(data3).String(), checker.Equals, exp3)
|
||||
}
|
||||
|
||||
func (s *CommonSuite) TestCommon(c *checker.C) {
|
||||
douglas := CurrencyToString(BigPow(10, 43))
|
||||
einstein := CurrencyToString(BigPow(10, 22))
|
||||
ether := CurrencyToString(BigPow(10, 19))
|
||||
finney := CurrencyToString(BigPow(10, 16))
|
||||
szabo := CurrencyToString(BigPow(10, 13))
|
||||
shannon := CurrencyToString(BigPow(10, 10))
|
||||
babbage := CurrencyToString(BigPow(10, 7))
|
||||
ada := CurrencyToString(BigPow(10, 4))
|
||||
wei := CurrencyToString(big.NewInt(10))
|
||||
|
||||
c.Assert(douglas, checker.Equals, "10 Douglas")
|
||||
c.Assert(einstein, checker.Equals, "10 Einstein")
|
||||
c.Assert(ether, checker.Equals, "10 Ether")
|
||||
c.Assert(finney, checker.Equals, "10 Finney")
|
||||
c.Assert(szabo, checker.Equals, "10 Szabo")
|
||||
c.Assert(shannon, checker.Equals, "10 Shannon")
|
||||
c.Assert(babbage, checker.Equals, "10 Babbage")
|
||||
c.Assert(ada, checker.Equals, "10 Ada")
|
||||
c.Assert(wei, checker.Equals, "10 Wei")
|
||||
}
|
||||
|
||||
func (s *CommonSuite) TestLarge(c *checker.C) {
|
||||
douglaslarge := CurrencyToString(BigPow(100000000, 43))
|
||||
adalarge := CurrencyToString(BigPow(100000000, 4))
|
||||
weilarge := CurrencyToString(big.NewInt(100000000))
|
||||
|
||||
c.Assert(douglaslarge, checker.Equals, "10000E298 Douglas")
|
||||
c.Assert(adalarge, checker.Equals, "10000E7 Einstein")
|
||||
c.Assert(weilarge, checker.Equals, "100 Babbage")
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user