Skip to content

Commit

Permalink
Merge PR #1374: types/rat: Fix overflowing in printing
Browse files Browse the repository at this point in the history
This now uses the underlying golang big.rat's string function,
instead of casting to num and den which are int64s.

Closes #1258
  • Loading branch information
ValarDragon authored and Adrian Brink committed Jul 2, 2018
1 parent dd2f4f9 commit 503ba31
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ FIXES
* Fixed bug where chain ID wasn't passed properly in x/bank REST handler
* Fixed bug where `democli account` didn't decode the account data correctly
* \#1343 - fixed unnecessary parallelism in CI
* \#1258 - printing big.rat's can no longer overflow int64

## 0.19.0

Expand Down
2 changes: 1 addition & 1 deletion types/rational.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ func (r Rat) Mul(r2 Rat) Rat { return Rat{*new(big.Rat).Mul(&(r.Rat), &(r2.Ra
func (r Rat) Quo(r2 Rat) Rat { return Rat{*new(big.Rat).Quo(&(r.Rat), &(r2.Rat))} } // Quo - quotient
func (r Rat) Add(r2 Rat) Rat { return Rat{*new(big.Rat).Add(&(r.Rat), &(r2.Rat))} } // Add - addition
func (r Rat) Sub(r2 Rat) Rat { return Rat{*new(big.Rat).Sub(&(r.Rat), &(r2.Rat))} } // Sub - subtraction
func (r Rat) String() string { return fmt.Sprintf("%v/%v", r.Num(), r.Denom()) }
func (r Rat) String() string { return r.Rat.String() }

var (
zero = big.NewInt(0)
Expand Down
13 changes: 12 additions & 1 deletion types/rational_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ func TestEqualities(t *testing.T) {

}

func TestArithmatic(t *testing.T) {
func TestArithmetic(t *testing.T) {
tests := []struct {
r1, r2 Rat
resMul, resDiv, resAdd, resSub Rat
Expand Down Expand Up @@ -297,3 +297,14 @@ func TestRatsEqual(t *testing.T) {
}

}

func TestStringOverflow(t *testing.T) {
// two random 64 bit primes
rat1 := NewRat(5164315003622678713, 4389711697696177267)
rat2 := NewRat(-3179849666053572961, 8459429845579852627)
rat3 := rat1.Add(rat2)
assert.Equal(t,
"29728537197630860939575850336935951464/37134458148982045574552091851127630409",
rat3.String(),
)
}

0 comments on commit 503ba31

Please sign in to comment.