forked from solana-labs/solana
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathepoch-schedule.test.ts
46 lines (38 loc) · 1.34 KB
/
epoch-schedule.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import {expect} from 'chai';
import {EpochSchedule} from '../src';
describe('EpochSchedule', () => {
it('slot methods work', () => {
const firstNormalEpoch = 14;
const firstNormalSlot = 524_256;
const leaderScheduleSlotOffset = 432_000;
const slotsPerEpoch = 432_000;
const warmup = true;
const epochSchedule = new EpochSchedule(
slotsPerEpoch,
leaderScheduleSlotOffset,
warmup,
firstNormalEpoch,
firstNormalSlot,
);
expect(epochSchedule.getEpoch(35)).to.be.equal(1);
expect(epochSchedule.getEpochAndSlotIndex(35)).to.be.eql([1, 3]);
expect(
epochSchedule.getEpoch(firstNormalSlot + 3 * slotsPerEpoch + 12345),
).to.be.equal(17);
expect(
epochSchedule.getEpochAndSlotIndex(
firstNormalSlot + 3 * slotsPerEpoch + 12345,
),
).to.be.eql([17, 12345]);
expect(epochSchedule.getSlotsInEpoch(4)).to.be.equal(512);
expect(epochSchedule.getSlotsInEpoch(100)).to.be.equal(slotsPerEpoch);
expect(epochSchedule.getFirstSlotInEpoch(2)).to.be.equal(96);
expect(epochSchedule.getLastSlotInEpoch(2)).to.be.equal(223);
expect(epochSchedule.getFirstSlotInEpoch(16)).to.be.equal(
firstNormalSlot + 2 * slotsPerEpoch,
);
expect(epochSchedule.getLastSlotInEpoch(16)).to.be.equal(
firstNormalSlot + 3 * slotsPerEpoch - 1,
);
});
});