-
Notifications
You must be signed in to change notification settings - Fork 62
/
Copy pathRedeemers.test.ts
63 lines (55 loc) · 2.18 KB
/
Redeemers.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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import { Cardano, setInConwayEra } from '../../../src';
import { HexBlob } from '@cardano-sdk/util';
import { RedeemerPurpose } from '../../../src/Cardano';
import { Redeemers } from '../../../src/Serialization';
const core: Cardano.Redeemer[] = [
{
data: {
cbor: HexBlob('d8799f0102030405ff'),
constructor: 0n,
fields: { cbor: HexBlob('9f0102030405ff'), items: [1n, 2n, 3n, 4n, 5n] }
},
executionUnits: { memory: 33, steps: 44 },
index: 0,
purpose: RedeemerPurpose.spend
},
{
data: {
cbor: HexBlob('d8799f0102030405ff'),
constructor: 0n,
fields: { cbor: HexBlob('9f0102030405ff'), items: [1n, 2n, 3n, 4n, 5n] }
},
executionUnits: { memory: 55, steps: 66 },
index: 0,
purpose: RedeemerPurpose.vote
}
];
const cbor = HexBlob('82840000d8799f0102030405ff821821182c840400d8799f0102030405ff8218371842');
const cborConway = HexBlob('a282000082d8799f0102030405ff821821182c82040082d8799f0102030405ff8218371842');
// Index is an array of 3 elements instead of 2
const cborInvalidMapIndex = HexBlob('a28308000082d8799f0102030405ff821821182c82040082d8799f0102030405ff8218371842');
const cborInvalidMapValue = HexBlob('a28200008300d8799f0102030405ff821821182c82040082d8799f0102030405ff8218371842');
describe('Redeemers', () => {
afterEach(() => setInConwayEra(false));
it('can decode Redeemers from CBOR', () => {
const redeemers = Redeemers.fromCbor(cbor);
expect(redeemers.toCore()).toEqual(core);
});
it('can decode Redeemers from Core', () => {
const redeemers = Redeemers.fromCore(core);
expect(redeemers.toCbor()).toEqual(cbor);
});
it('can decode Redeemers from map encoded CBOR', () => {
const redeemers = Redeemers.fromCbor(cborConway);
expect(redeemers.toCore()).toEqual(core);
});
it('can encode Redeemers as map in CBOR', () => {
const redeemers = Redeemers.fromCore(core);
setInConwayEra(true);
expect(redeemers.toCbor()).toEqual(cborConway);
});
it('detects invalid map', () => {
expect(() => Redeemers.fromCbor(cborInvalidMapIndex)).toThrowError('Redeemers map index');
expect(() => Redeemers.fromCbor(cborInvalidMapValue)).toThrowError('Redeemers map value');
});
});