visual cleanup
This commit is contained in:
parent
3023f3008f
commit
3441bc3598
|
@ -19,6 +19,7 @@ func TestBondedToUnbondedPool(t *testing.T) {
|
||||||
assert.Equal(t, poolA.unbondedShareExRate(), sdk.OneRat)
|
assert.Equal(t, poolA.unbondedShareExRate(), sdk.OneRat)
|
||||||
candA := candidate1
|
candA := candidate1
|
||||||
poolB, candB := poolA.bondedToUnbondedPool(candA)
|
poolB, candB := poolA.bondedToUnbondedPool(candA)
|
||||||
|
|
||||||
// status unbonded
|
// status unbonded
|
||||||
assert.Equal(t, candB.Status, Unbonded)
|
assert.Equal(t, candB.Status, Unbonded)
|
||||||
// same exchange rate, assets unchanged
|
// same exchange rate, assets unchanged
|
||||||
|
@ -39,6 +40,7 @@ func TestUnbonbedtoBondedPool(t *testing.T) {
|
||||||
candA := candidate1
|
candA := candidate1
|
||||||
candA.Status = Unbonded
|
candA.Status = Unbonded
|
||||||
poolB, candB := poolA.unbondedToBondedPool(candA)
|
poolB, candB := poolA.unbondedToBondedPool(candA)
|
||||||
|
|
||||||
// status bonded
|
// status bonded
|
||||||
assert.Equal(t, candB.Status, Bonded)
|
assert.Equal(t, candB.Status, Bonded)
|
||||||
// same exchange rate, assets unchanged
|
// same exchange rate, assets unchanged
|
||||||
|
@ -57,9 +59,11 @@ func TestAddTokensBonded(t *testing.T) {
|
||||||
assert.Equal(t, poolA.bondedShareExRate(), sdk.OneRat)
|
assert.Equal(t, poolA.bondedShareExRate(), sdk.OneRat)
|
||||||
poolB, sharesB := poolA.addTokensBonded(10)
|
poolB, sharesB := poolA.addTokensBonded(10)
|
||||||
assert.Equal(t, poolB.bondedShareExRate(), sdk.OneRat)
|
assert.Equal(t, poolB.bondedShareExRate(), sdk.OneRat)
|
||||||
|
|
||||||
// correct changes to bonded shares and bonded pool
|
// correct changes to bonded shares and bonded pool
|
||||||
assert.Equal(t, poolB.BondedShares, poolA.BondedShares.Add(sharesB))
|
assert.Equal(t, poolB.BondedShares, poolA.BondedShares.Add(sharesB))
|
||||||
assert.Equal(t, poolB.BondedPool, poolA.BondedPool+10)
|
assert.Equal(t, poolB.BondedPool, poolA.BondedPool+10)
|
||||||
|
|
||||||
// same number of bonded shares / tokens when exchange rate is one
|
// same number of bonded shares / tokens when exchange rate is one
|
||||||
assert.Equal(t, poolB.BondedShares, sdk.NewRat(poolB.BondedPool))
|
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)
|
assert.Equal(t, poolA.bondedShareExRate(), sdk.OneRat)
|
||||||
poolB, tokensB := poolA.removeSharesBonded(sdk.NewRat(10))
|
poolB, tokensB := poolA.removeSharesBonded(sdk.NewRat(10))
|
||||||
assert.Equal(t, poolB.bondedShareExRate(), sdk.OneRat)
|
assert.Equal(t, poolB.bondedShareExRate(), sdk.OneRat)
|
||||||
|
|
||||||
// correct changes to bonded shares and bonded pool
|
// correct changes to bonded shares and bonded pool
|
||||||
assert.Equal(t, poolB.BondedShares, poolA.BondedShares.Sub(sdk.NewRat(10)))
|
assert.Equal(t, poolB.BondedShares, poolA.BondedShares.Sub(sdk.NewRat(10)))
|
||||||
assert.Equal(t, poolB.BondedPool, poolA.BondedPool-tokensB)
|
assert.Equal(t, poolB.BondedPool, poolA.BondedPool-tokensB)
|
||||||
|
|
||||||
// same number of bonded shares / tokens when exchange rate is one
|
// same number of bonded shares / tokens when exchange rate is one
|
||||||
assert.Equal(t, poolB.BondedShares, sdk.NewRat(poolB.BondedPool))
|
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)
|
assert.Equal(t, poolA.unbondedShareExRate(), sdk.OneRat)
|
||||||
poolB, sharesB := poolA.addTokensUnbonded(10)
|
poolB, sharesB := poolA.addTokensUnbonded(10)
|
||||||
assert.Equal(t, poolB.unbondedShareExRate(), sdk.OneRat)
|
assert.Equal(t, poolB.unbondedShareExRate(), sdk.OneRat)
|
||||||
|
|
||||||
// correct changes to unbonded shares and unbonded pool
|
// correct changes to unbonded shares and unbonded pool
|
||||||
assert.Equal(t, poolB.UnbondedShares, poolA.UnbondedShares.Add(sharesB))
|
assert.Equal(t, poolB.UnbondedShares, poolA.UnbondedShares.Add(sharesB))
|
||||||
assert.Equal(t, poolB.UnbondedPool, poolA.UnbondedPool+10)
|
assert.Equal(t, poolB.UnbondedPool, poolA.UnbondedPool+10)
|
||||||
|
|
||||||
// same number of unbonded shares / tokens when exchange rate is one
|
// same number of unbonded shares / tokens when exchange rate is one
|
||||||
assert.Equal(t, poolB.UnbondedShares, sdk.NewRat(poolB.UnbondedPool))
|
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)
|
assert.Equal(t, poolA.unbondedShareExRate(), sdk.OneRat)
|
||||||
poolB, tokensB := poolA.removeSharesUnbonded(sdk.NewRat(10))
|
poolB, tokensB := poolA.removeSharesUnbonded(sdk.NewRat(10))
|
||||||
assert.Equal(t, poolB.unbondedShareExRate(), sdk.OneRat)
|
assert.Equal(t, poolB.unbondedShareExRate(), sdk.OneRat)
|
||||||
|
|
||||||
// correct changes to unbonded shares and bonded pool
|
// correct changes to unbonded shares and bonded pool
|
||||||
assert.Equal(t, poolB.UnbondedShares, poolA.UnbondedShares.Sub(sdk.NewRat(10)))
|
assert.Equal(t, poolB.UnbondedShares, poolA.UnbondedShares.Sub(sdk.NewRat(10)))
|
||||||
assert.Equal(t, poolB.UnbondedPool, poolA.UnbondedPool-tokensB)
|
assert.Equal(t, poolB.UnbondedPool, poolA.UnbondedPool-tokensB)
|
||||||
|
|
||||||
// same number of unbonded shares / tokens when exchange rate is one
|
// same number of unbonded shares / tokens when exchange rate is one
|
||||||
assert.Equal(t, poolB.UnbondedShares, sdk.NewRat(poolB.UnbondedPool))
|
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.bondedShareExRate(), sdk.OneRat)
|
||||||
assert.Equal(t, poolA.unbondedShareExRate(), sdk.OneRat)
|
assert.Equal(t, poolA.unbondedShareExRate(), sdk.OneRat)
|
||||||
poolB, candB, sharesB := poolA.candidateAddTokens(candA, 10)
|
poolB, candB, sharesB := poolA.candidateAddTokens(candA, 10)
|
||||||
|
|
||||||
// shares were issued
|
// shares were issued
|
||||||
assert.Equal(t, sharesB, sdk.NewRat(10).Mul(candA.delegatorShareExRate()))
|
assert.Equal(t, sharesB, sdk.NewRat(10).Mul(candA.delegatorShareExRate()))
|
||||||
// pool shares were added
|
// pool shares were added
|
||||||
|
@ -143,6 +154,7 @@ func TestCandidateRemoveShares(t *testing.T) {
|
||||||
assert.Equal(t, poolA.bondedShareExRate(), sdk.OneRat)
|
assert.Equal(t, poolA.bondedShareExRate(), sdk.OneRat)
|
||||||
assert.Equal(t, poolA.unbondedShareExRate(), sdk.OneRat)
|
assert.Equal(t, poolA.unbondedShareExRate(), sdk.OneRat)
|
||||||
poolB, candB, coinsB := poolA.candidateRemoveShares(candA, sdk.NewRat(10))
|
poolB, candB, coinsB := poolA.candidateRemoveShares(candA, sdk.NewRat(10))
|
||||||
|
|
||||||
// coins were created
|
// coins were created
|
||||||
assert.Equal(t, coinsB, int64(10))
|
assert.Equal(t, coinsB, int64(10))
|
||||||
// pool shares were removed
|
// pool shares were removed
|
||||||
|
@ -211,11 +223,13 @@ func randomOperation(r *rand.Rand) Operation {
|
||||||
cand := c[index]
|
cand := c[index]
|
||||||
var msg string
|
var msg string
|
||||||
if cand.Status == Bonded {
|
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)
|
p, cand = p.bondedToUnbondedPool(cand)
|
||||||
cand.Status = Unbonded
|
cand.Status = Unbonded
|
||||||
} else {
|
} 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)
|
p, cand = p.unbondedToBondedPool(cand)
|
||||||
cand.Status = Bonded
|
cand.Status = Bonded
|
||||||
}
|
}
|
||||||
|
@ -227,7 +241,8 @@ func randomOperation(r *rand.Rand) Operation {
|
||||||
tokens := int64(r.Int31n(1000))
|
tokens := int64(r.Int31n(1000))
|
||||||
index := int(r.Int31n(int32(len(c))))
|
index := int(r.Int31n(int32(len(c))))
|
||||||
cand := c[index]
|
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)
|
p, cand, _ = p.candidateAddTokens(cand, tokens)
|
||||||
c[index] = cand
|
c[index] = cand
|
||||||
t -= tokens
|
t -= tokens
|
||||||
|
@ -242,7 +257,8 @@ func randomOperation(r *rand.Rand) Operation {
|
||||||
if shares.GT(cand.Liabilities) {
|
if shares.GT(cand.Liabilities) {
|
||||||
shares = cand.Liabilities.Quo(sdk.NewRat(2))
|
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)
|
p, cand, tokens := p.candidateRemoveShares(cand, shares)
|
||||||
c[index] = cand
|
c[index] = cand
|
||||||
t += tokens
|
t += tokens
|
||||||
|
@ -258,22 +274,40 @@ func randomOperation(r *rand.Rand) Operation {
|
||||||
|
|
||||||
// ensure invariants that should always be true are true
|
// 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) {
|
func assertInvariants(t *testing.T, pA Pool, cA Candidates, tA int64, pB Pool, cB Candidates, tB int64, msg string) {
|
||||||
|
|
||||||
// total tokens conserved
|
// total tokens conserved
|
||||||
require.Equal(t, pA.UnbondedPool+pA.BondedPool+tA, pB.UnbondedPool+pB.BondedPool+tB)
|
require.Equal(t, pA.UnbondedPool+pA.BondedPool+tA, pB.UnbondedPool+pB.BondedPool+tB)
|
||||||
|
|
||||||
// nonnegative shares
|
// nonnegative shares
|
||||||
require.Equal(t, pB.BondedShares.LT(sdk.ZeroRat), false)
|
require.Equal(t, pB.BondedShares.LT(sdk.ZeroRat), false)
|
||||||
require.Equal(t, pB.UnbondedShares.LT(sdk.ZeroRat), false)
|
require.Equal(t, pB.UnbondedShares.LT(sdk.ZeroRat), false)
|
||||||
|
|
||||||
// nonnegative ex rates
|
// 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.bondedShareExRate().LT(sdk.ZeroRat), false,
|
||||||
require.Equal(t, pB.unbondedShareExRate().LT(sdk.ZeroRat), false, "Applying operation \"%s\" resulted in negative unbondedShareExRate: %d", msg, pB.unbondedShareExRate().Evaluate())
|
"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
|
bondedSharesHeld := sdk.ZeroRat
|
||||||
unbondedSharesHeld := sdk.ZeroRat
|
unbondedSharesHeld := sdk.ZeroRat
|
||||||
|
|
||||||
for _, candidate := range cA {
|
for _, candidate := range cA {
|
||||||
|
|
||||||
// nonnegative ex rate
|
// 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
|
// 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.Assets.LT(sdk.ZeroRat),
|
||||||
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)
|
"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 {
|
if candidate.Status == Bonded {
|
||||||
bondedSharesHeld = bondedSharesHeld.Add(candidate.Assets)
|
bondedSharesHeld = bondedSharesHeld.Add(candidate.Assets)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue