git.delta.rocks / unique-network / refs/commits / 9d35eaceaefb

difftreelog

Add boundary tests for inflation rate

Greg Zaitsev2021-04-07parent: #b40985b.patch.diff
in: master

2 files changed

modifiedpallets/inflation/src/tests.rsdiffbeforeafterboth
--- a/pallets/inflation/src/tests.rs
+++ b/pallets/inflation/src/tests.rs
@@ -189,4 +189,53 @@
 		});
 	}
 
+    #[test]
+	fn inflation_rate_by_year() {
+		new_test_ext().execute_with(|| {
+            let payouts: u64 = YEAR / InflationBlockInterval::get() as u64;
+
+            // Inflation starts at 10% and does down by 2/3% every year until year 9 (included), 
+            // then it is flat.
+            let payout_by_year: [u64; 11] = [
+                1000,
+                933,
+                867,
+                800,
+                733,
+                667,
+                600,
+                533,
+                467,
+                400,
+                400
+            ];
+
+            // For accuracy total issuance = payout0 * payouts * 10;
+            let initial_issuance: u64 = payout_by_year[0] * payouts * 10;
+            let _ = <Balances as Currency<_>>::deposit_creating(&1234, initial_issuance);
+            assert_eq!(Balances::free_balance(1234), initial_issuance);
+
+            for year in 0..=10 {
+                // Year first block
+                Inflation::on_initialize(year*YEAR);
+                let mut actual_payout = Inflation::block_inflation();
+                assert_eq!(actual_payout, payout_by_year[year as usize]);
+
+                // Year second block
+                Inflation::on_initialize(year*YEAR+1);
+                actual_payout = Inflation::block_inflation();
+                assert_eq!(actual_payout, payout_by_year[year as usize]);
+
+                // Year middle block
+                Inflation::on_initialize(year*YEAR + YEAR/2);
+                actual_payout = Inflation::block_inflation();
+                assert_eq!(actual_payout, payout_by_year[year as usize]);
+
+                // Year last block
+                Inflation::on_initialize((year + 1)*YEAR-1);
+                actual_payout = Inflation::block_inflation();
+                assert_eq!(actual_payout, payout_by_year[year as usize]);
+            }
+		});
+	}
 }
modifiedtests/src/inflation.test.tsdiffbeforeafterboth
55
6import chai from 'chai';6import chai from 'chai';
7import chaiAsPromised from 'chai-as-promised';7import chaiAsPromised from 'chai-as-promised';
8import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from "./substrate/substrate-api";8import { default as usingApi } from "./substrate/substrate-api";
9import { alicesPublicKey, bobsPublicKey } from "./accounts";
10import privateKey from "./substrate/privateKey";9import privateKey from "./substrate/privateKey";
11import { BigNumber } from 'bignumber.js';10import { BigNumber } from 'bignumber.js';
12import { IKeyringPair } from '@polkadot/types/types';11import { IKeyringPair } from '@polkadot/types/types';
13import {
14 getGenericResult,
15} from './util/helpers';
1612
17chai.use(chaiAsPromised);13chai.use(chaiAsPromised);
18const expect = chai.expect;14const expect = chai.expect;