Skip to content

Commit

Permalink
write unit tests for decimal64.go
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelDao committed Jun 14, 2019
1 parent 0bd4244 commit 8155a9a
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 6 deletions.
6 changes: 3 additions & 3 deletions decimal64.go
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ func (d Decimal64) parts() (fl flavor, sign int, exp int, significand uint64) {

// decParts gets the parts and returns in decParts stuct, doesn't get the magnitude due to performance issues\
// TODO: rename this to parts when parts is depreciated
func (d *Decimal64) getParts() decParts {
func (d Decimal64) getParts() decParts {
var fl flavor
var sign, exp int
var significand uint64
Expand Down Expand Up @@ -306,7 +306,7 @@ func (d *Decimal64) getParts() decParts {
exp = 0
}
}
return decParts{fl, sign, exp, uint128T{significand, 0}, 0, d}
return decParts{fl, sign, exp, uint128T{significand, 0}, 0, &d}
}

func expWholeFrac(exp int, significand uint64) (exp2 int, whole uint64, frac uint64) {
Expand Down Expand Up @@ -438,7 +438,7 @@ func (d Decimal64) IsSubnormal() bool {
}

func (dec *decParts) isZero() bool {
return dec.significand.lo == 0 && dec.significand.hi == 0 && dec.fl == flNormal
return dec.significand.lo == 0 && dec.significand.hi == 0 && dec.fl == flNormal
}

func (dec *decParts) isInf() bool {
Expand Down
31 changes: 28 additions & 3 deletions decimal64_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,12 @@ func TestDecimal64IsInf(t *testing.T) {
require.False(t, SNaN64.IsInf())
require.False(t, NewDecimal64FromInt64(42).IsInf())
require.False(t, NewDecimal64FromInt64(-42).IsInf())

a := Infinity64.getParts()
require.True(t, a.isInf())

b := NegInfinity64.getParts()
require.True(t, b.isInf())
}

func TestDecimal64IsNaN(t *testing.T) {
Expand Down Expand Up @@ -169,7 +175,26 @@ func TestNumDecimalDigits(t *testing.T) {

func TestIsNaN(t *testing.T) {
require := require.New(t)
require.Equal(false, Zero64.getParts().isNaN())
require.Equal(true, SNaN64.getParts().isNaN())
require.Equal(true, QNaN64.getParts().isNaN())
a := Zero64.getParts()
require.Equal(false, a.isNaN())

b := SNaN64.getParts()
require.Equal(true, b.isSNaN())

c := QNaN64.getParts()
require.Equal(true, c.isQNaN())
}

func TestIsSubnormal(t *testing.T) {
require := require.New(t)

require.Equal(true, MustParseDecimal64("0.1E-383").IsSubnormal())
require.Equal(true, MustParseDecimal64("-0.1E-383").IsSubnormal())
require.Equal(false, MustParseDecimal64("NaN10").IsSubnormal())
subnormal64Parts := MustParseDecimal64("0.1E-383").getParts()
require.Equal(true, subnormal64Parts.isSubnormal())

require.Equal(false, NewDecimal64FromInt64(42).IsSubnormal())
fortyTwoParts := NewDecimal64FromInt64(42).getParts()
require.Equal(false, fortyTwoParts.isSubnormal())
}

0 comments on commit 8155a9a

Please sign in to comment.