From 3441bc35983f9407bee5db2a5f5e8d69e2f8bb2f Mon Sep 17 00:00:00 2001 From: rigelrozanski Date: Fri, 30 Mar 2018 21:46:33 +0200 Subject: [PATCH] visual cleanup --- x/stake/pool_test.go | 52 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/x/stake/pool_test.go b/x/stake/pool_test.go index b60dd9db5..5bde2f044 100644 --- a/x/stake/pool_test.go +++ b/x/stake/pool_test.go @@ -19,6 +19,7 @@ func TestBondedToUnbondedPool(t *testing.T) { assert.Equal(t, poolA.unbondedShareExRate(), sdk.OneRat) candA := candidate1 poolB, candB := poolA.bondedToUnbondedPool(candA) + // status unbonded assert.Equal(t, candB.Status, Unbonded) // same exchange rate, assets unchanged @@ -39,6 +40,7 @@ func TestUnbonbedtoBondedPool(t *testing.T) { candA := candidate1 candA.Status = Unbonded poolB, candB := poolA.unbondedToBondedPool(candA) + // status bonded assert.Equal(t, candB.Status, Bonded) // same exchange rate, assets unchanged @@ -57,9 +59,11 @@ func TestAddTokensBonded(t *testing.T) { assert.Equal(t, poolA.bondedShareExRate(), sdk.OneRat) poolB, sharesB := poolA.addTokensBonded(10) assert.Equal(t, poolB.bondedShareExRate(), sdk.OneRat) + // correct changes to bonded shares and bonded pool assert.Equal(t, poolB.BondedShares, poolA.BondedShares.Add(sharesB)) assert.Equal(t, poolB.BondedPool, poolA.BondedPool+10) + // same number of bonded shares / tokens when exchange rate is one assert.Equal(t, poolB.BondedShares, sdk.NewRat(poolB.BondedPool)) } @@ -70,9 +74,11 @@ func TestRemoveSharesBonded(t *testing.T) { assert.Equal(t, poolA.bondedShareExRate(), sdk.OneRat) poolB, tokensB := poolA.removeSharesBonded(sdk.NewRat(10)) assert.Equal(t, poolB.bondedShareExRate(), sdk.OneRat) + // correct changes to bonded shares and bonded pool assert.Equal(t, poolB.BondedShares, poolA.BondedShares.Sub(sdk.NewRat(10))) assert.Equal(t, poolB.BondedPool, poolA.BondedPool-tokensB) + // same number of bonded shares / tokens when exchange rate is one assert.Equal(t, poolB.BondedShares, sdk.NewRat(poolB.BondedPool)) } @@ -83,9 +89,11 @@ func TestAddTokensUnbonded(t *testing.T) { assert.Equal(t, poolA.unbondedShareExRate(), sdk.OneRat) poolB, sharesB := poolA.addTokensUnbonded(10) assert.Equal(t, poolB.unbondedShareExRate(), sdk.OneRat) + // correct changes to unbonded shares and unbonded pool assert.Equal(t, poolB.UnbondedShares, poolA.UnbondedShares.Add(sharesB)) assert.Equal(t, poolB.UnbondedPool, poolA.UnbondedPool+10) + // same number of unbonded shares / tokens when exchange rate is one assert.Equal(t, poolB.UnbondedShares, sdk.NewRat(poolB.UnbondedPool)) } @@ -96,9 +104,11 @@ func TestRemoveSharesUnbonded(t *testing.T) { assert.Equal(t, poolA.unbondedShareExRate(), sdk.OneRat) poolB, tokensB := poolA.removeSharesUnbonded(sdk.NewRat(10)) assert.Equal(t, poolB.unbondedShareExRate(), sdk.OneRat) + // correct changes to unbonded shares and bonded pool assert.Equal(t, poolB.UnbondedShares, poolA.UnbondedShares.Sub(sdk.NewRat(10))) assert.Equal(t, poolB.UnbondedPool, poolA.UnbondedPool-tokensB) + // same number of unbonded shares / tokens when exchange rate is one assert.Equal(t, poolB.UnbondedShares, sdk.NewRat(poolB.UnbondedPool)) } @@ -119,6 +129,7 @@ func TestCandidateAddTokens(t *testing.T) { assert.Equal(t, poolA.bondedShareExRate(), sdk.OneRat) assert.Equal(t, poolA.unbondedShareExRate(), sdk.OneRat) poolB, candB, sharesB := poolA.candidateAddTokens(candA, 10) + // shares were issued assert.Equal(t, sharesB, sdk.NewRat(10).Mul(candA.delegatorShareExRate())) // pool shares were added @@ -143,6 +154,7 @@ func TestCandidateRemoveShares(t *testing.T) { assert.Equal(t, poolA.bondedShareExRate(), sdk.OneRat) assert.Equal(t, poolA.unbondedShareExRate(), sdk.OneRat) poolB, candB, coinsB := poolA.candidateRemoveShares(candA, sdk.NewRat(10)) + // coins were created assert.Equal(t, coinsB, int64(10)) // pool shares were removed @@ -211,11 +223,13 @@ func randomOperation(r *rand.Rand) Operation { cand := c[index] var msg string if cand.Status == Bonded { - msg = fmt.Sprintf("Unbonded previously bonded candidate %s (assets: %d, liabilities: %d, delegatorShareExRate: %d)", cand.PubKey, cand.Assets.Evaluate(), cand.Liabilities.Evaluate(), cand.delegatorShareExRate().Evaluate()) + msg = fmt.Sprintf("Unbonded previously bonded candidate %s (assets: %d, liabilities: %d, delegatorShareExRate: %d)", + cand.PubKey, cand.Assets.Evaluate(), cand.Liabilities.Evaluate(), cand.delegatorShareExRate().Evaluate()) p, cand = p.bondedToUnbondedPool(cand) cand.Status = Unbonded } else { - msg = fmt.Sprintf("Bonded previously unbonded candidate %s (assets: %d, liabilities: %d, delegatorShareExRate: %d)", cand.PubKey, cand.Assets.Evaluate(), cand.Liabilities.Evaluate(), cand.delegatorShareExRate().Evaluate()) + msg = fmt.Sprintf("Bonded previously unbonded candidate %s (assets: %d, liabilities: %d, delegatorShareExRate: %d)", + cand.PubKey, cand.Assets.Evaluate(), cand.Liabilities.Evaluate(), cand.delegatorShareExRate().Evaluate()) p, cand = p.unbondedToBondedPool(cand) cand.Status = Bonded } @@ -227,7 +241,8 @@ func randomOperation(r *rand.Rand) Operation { tokens := int64(r.Int31n(1000)) index := int(r.Int31n(int32(len(c)))) cand := c[index] - msg := fmt.Sprintf("candidate with pubkey %s, %d assets, %d liabilities, and %d delegatorShareExRate", cand.PubKey, cand.Assets.Evaluate(), cand.Liabilities.Evaluate(), cand.delegatorShareExRate().Evaluate()) + msg := fmt.Sprintf("candidate with pubkey %s, %d assets, %d liabilities, and %d delegatorShareExRate", + cand.PubKey, cand.Assets.Evaluate(), cand.Liabilities.Evaluate(), cand.delegatorShareExRate().Evaluate()) p, cand, _ = p.candidateAddTokens(cand, tokens) c[index] = cand t -= tokens @@ -242,7 +257,8 @@ func randomOperation(r *rand.Rand) Operation { if shares.GT(cand.Liabilities) { shares = cand.Liabilities.Quo(sdk.NewRat(2)) } - msg := fmt.Sprintf("candidate with pubkey %s, %d assets, %d liabilities, and %d delegatorShareExRate", cand.PubKey, cand.Assets.Evaluate(), cand.Liabilities.Evaluate(), cand.delegatorShareExRate().Evaluate()) + msg := fmt.Sprintf("candidate with pubkey %s, %d assets, %d liabilities, and %d delegatorShareExRate", + cand.PubKey, cand.Assets.Evaluate(), cand.Liabilities.Evaluate(), cand.delegatorShareExRate().Evaluate()) p, cand, tokens := p.candidateRemoveShares(cand, shares) c[index] = cand t += tokens @@ -258,22 +274,40 @@ func randomOperation(r *rand.Rand) Operation { // ensure invariants that should always be true are true func assertInvariants(t *testing.T, pA Pool, cA Candidates, tA int64, pB Pool, cB Candidates, tB int64, msg string) { + // total tokens conserved require.Equal(t, pA.UnbondedPool+pA.BondedPool+tA, pB.UnbondedPool+pB.BondedPool+tB) + // nonnegative shares require.Equal(t, pB.BondedShares.LT(sdk.ZeroRat), false) require.Equal(t, pB.UnbondedShares.LT(sdk.ZeroRat), false) + // nonnegative ex rates - require.Equal(t, pB.bondedShareExRate().LT(sdk.ZeroRat), false, "Applying operation \"%s\" resulted in negative bondedShareExRate: %d", msg, pB.bondedShareExRate().Evaluate()) - require.Equal(t, pB.unbondedShareExRate().LT(sdk.ZeroRat), false, "Applying operation \"%s\" resulted in negative unbondedShareExRate: %d", msg, pB.unbondedShareExRate().Evaluate()) + require.Equal(t, pB.bondedShareExRate().LT(sdk.ZeroRat), false, + "Applying operation \"%s\" resulted in negative bondedShareExRate: %d", + msg, pB.bondedShareExRate().Evaluate()) + require.Equal(t, pB.unbondedShareExRate().LT(sdk.ZeroRat), false, + "Applying operation \"%s\" resulted in negative unbondedShareExRate: %d", + msg, pB.unbondedShareExRate().Evaluate()) bondedSharesHeld := sdk.ZeroRat unbondedSharesHeld := sdk.ZeroRat + for _, candidate := range cA { + // nonnegative ex rate - require.Equal(t, false, candidate.delegatorShareExRate().LT(sdk.ZeroRat), "Applying operation \"%s\" resulted in negative candidate.delegatorShareExRate(): %s (candidate.PubKey: %s)", msg, candidate.delegatorShareExRate(), candidate.PubKey) + require.Equal(t, false, candidate.delegatorShareExRate().LT(sdk.ZeroRat), + "Applying operation \"%s\" resulted in negative candidate.delegatorShareExRate(): %s (candidate.PubKey: %s)", + msg, candidate.delegatorShareExRate(), candidate.PubKey) + // nonnegative assets / liabilities - require.Equal(t, false, candidate.Assets.LT(sdk.ZeroRat), "Applying operation \"%s\" resulted in negative candidate.Assets: %d (candidate.Liabilities: %d, candidate.PubKey: %s)", msg, candidate.Assets.Evaluate(), candidate.Liabilities.Evaluate(), candidate.PubKey) - require.Equal(t, false, candidate.Liabilities.LT(sdk.ZeroRat), "Applying operation \"%s\" resulted in negative candidate.Liabilities: %d (candidate.Assets: %d, candidate.PubKey: %s)", msg, candidate.Liabilities.Evaluate(), candidate.Assets.Evaluate(), candidate.PubKey) + require.Equal(t, false, candidate.Assets.LT(sdk.ZeroRat), + "Applying operation \"%s\" resulted in negative candidate.Assets: %d (candidate.Liabilities: %d, candidate.PubKey: %s)", + msg, candidate.Assets.Evaluate(), candidate.Liabilities.Evaluate(), candidate.PubKey) + + require.Equal(t, false, candidate.Liabilities.LT(sdk.ZeroRat), + "Applying operation \"%s\" resulted in negative candidate.Liabilities: %d (candidate.Assets: %d, candidate.PubKey: %s)", + msg, candidate.Liabilities.Evaluate(), candidate.Assets.Evaluate(), candidate.PubKey) + if candidate.Status == Bonded { bondedSharesHeld = bondedSharesHeld.Add(candidate.Assets) } else {