|
| 1 | +/* eslint-disable max-len */ |
1 | 2 | import { Cardano, Serialization } from '../../src'; |
2 | 3 | import { HexBlob } from '@cardano-sdk/util'; |
3 | 4 |
|
@@ -66,6 +67,18 @@ describe('PlutusData', () => { |
66 | 67 | const data = Serialization.PlutusData.fromCbor(HexBlob('3bffffffffffffffff')); |
67 | 68 | expect(data.asInteger()).toEqual(-18_446_744_073_709_551_616n); |
68 | 69 | }); |
| 70 | + |
| 71 | + it('can decode a positive tagged indefinite length unbounded int', () => { |
| 72 | + const data = Serialization.PlutusData.fromCbor( |
| 73 | + HexBlob( |
| 74 | + 'c25f584037d34fac60a7dd2edba0c76fa58862c91c45ff4298e9134ba8e76be9a7513d88865bfdb9315073dc2690b0f2b59a232fbfa0a8a504df6ee9bb78e3f33fbdfef95529c9e74ff30ffe1bd1cc5795c37535899dba800000ff' |
| 75 | + ) |
| 76 | + ); |
| 77 | + expect(data.asInteger()).toEqual( |
| 78 | + // eslint-disable-next-line max-len |
| 79 | + 1_093_929_156_918_367_016_766_069_563_027_239_416_446_778_893_307_251_997_971_794_948_729_105_062_347_369_330_146_869_223_033_199_554_831_433_128_491_376_164_494_134_119_896_793_625_745_623_928_731_109_781_036_903_510_617_119_765_359_815_723_399_113_165_600_284_443_934_720n |
| 80 | + ); |
| 81 | + }); |
69 | 82 | }); |
70 | 83 |
|
71 | 84 | describe('Bytes', () => { |
@@ -130,6 +143,35 @@ describe('PlutusData', () => { |
130 | 143 | ); |
131 | 144 | expect([...data.asBoundedBytes()!]).toEqual(payload); |
132 | 145 | }); |
| 146 | + |
| 147 | + it('can decode/encode a list of big integers', () => { |
| 148 | + // Arrange |
| 149 | + |
| 150 | + const expectedPlutusData: Cardano.PlutusList = { |
| 151 | + items: [ |
| 152 | + 1_093_929_156_918_367_016_766_069_563_027_239_416_446_778_893_307_251_997_971_794_948_729_105_062_347_369_330_146_869_223_033_199_554_831_433_128_491_376_164_494_134_119_896_793_625_745_623_928_731_109_781_036_903_510_617_119_765_359_815_723_399_113_165_600_284_443_934_720n, |
| 153 | + 2_768_491_094_397_106_413_284_351_268_798_781_278_061_973_163_918_667_373_508_176_781_108_678_876_832_888_565_950_388_553_255_499_815_619_207_549_146_245_084_281_150_783_450_096_035_638_439_655_721_496_227_482_399_093_555_200_000_000_000_000_000_000_000_000_000_000_000_000n, |
| 154 | + 2_768_491_094_397_106_413_284_351_268_798_781_278_061_973_163_918_667_373_508_176_781_108_678_876_832_888_565_950_388_553_255_499_815_619_207_549_146_245_084_281_150_783_450_096_035_638_439_655_721_496_227_482_399_093_555_200_000_000_000_000_000_000_000_000_000_000_000_000n, |
| 155 | + 1_127_320_948_699_467_529_606_464_548_687_160_198_167_487_105_208_190_997_153_720_362_564_942_186_550_892_230_582_242_980_573_812_448_057_150_419_530_802_096_156_402_677_128_058_112_319_272_573_039_196_273_296_535_693_983_366_369_964_092_325_725_072_645_646_768_416_006_720n, |
| 156 | + 678_966_618_629_088_994_577_385_052_394_593_905_048_788_216_453_653_741_455_475_012_343_328_029_630_393_478_083_358_655_655_534_689_789_017_294_468_365_725_065_895_808_744_013_442_165_812_351_180_871_208_842_081_615_673_249_725_577_503_335_455_257_844_242_272_891_195_840n, |
| 157 | + 1_337_829_155_615_373_710_780_861_189_358_723_839_738_261_900_670_472_008_493_768_766_460_943_065_914_931_970_040_774_692_071_540_815_257_661_221_428_415_268_570_880_739_215_388_841_910_028_989_315_213_224_986_535_176_632_464_067_341_466_233_795_236_134_699_058_357_952_960n, |
| 158 | + 45_981_213_582_240_091_300_385_870_382_262_347_274_104_141_060_516_509_284_758_089_043_905_194_449_918_733_499_912_740_694_341_485_053_723_341_097_850_038_365_519_925_374_324_306_213_051_881_991_025_304_309_829_953_615_052_414_155_047_559_800_693_983_587_151_987_253_760n, |
| 159 | + 2_413_605_787_847_473_064_058_493_109_882_761_763_812_632_923_885_676_112_901_376_523_745_345_875_592_342_323_079_462_001_682_936_368_998_782_686_824_629_943_810_471_167_748_859_099_323_567_551_094_056_876_663_897_197_968_204_837_564_889_906_128_763_937_156_053n |
| 160 | + ] |
| 161 | + }; |
| 162 | + |
| 163 | + const expectedCbor = HexBlob( |
| 164 | + '9fc25f584037d34fac60a7dd2edba0c76fa58862c91c45ff4298e9134ba8e76be9a7513d88865bfdb9315073dc2690b0f2b59a232fbfa0a8a504df6ee9bb78e3f33fbdfef95529c9e74ff30ffe1bd1cc5795c37535899dba800000ffc25f58408d4820519e9bba2d6556c87b100709082f4c8958769899eb5d288b6f9ea9e0723df7211959860edea5829c9732422d25962e3945c68a6089f50a18b0114248b7555feea4851e9f099180600000000000000000000000ffc25f58408d4820519e9bba2d6556c87b100709082f4c8958769899eb5d288b6f9ea9e0723df7211959860edea5829c9732422d25962e3945c68a6089f50a18b0114248b7555feea4851e9f099180600000000000000000000000ffc25f584039878c5f4d4063e9a2ee75a3fbdd1492c3cad46f4ecbae977ac94b709a730e367edf9dae05acd59638d1dec25e2351c2eecb871694afae979de7085b522efe1355634138bbd920200d574cdf400324cdd1aafe10a240ffc25f584022a6282a7d960570c4c729decd677ec617061f0e501249c41f8724c89dc97dc0d24917bdb7a7ebd7c079c1c56fa21af0f119168966356ea384fb711cb766015e55bfc5bc86583f6a82ae605a93e7bf974ae74cd051c0ffc25f58404445ab8649611ee8f74a3c31e504a2f25f2f7631ef6ef828a405542904d84c997304b1b332d528ee54873b03cfb73cd3c5b35b91184f6846afccec7271bda8a05563ba46aed8c82611da47fd608d027447f8391161c0ffc25f58400258b535c4d4a22a483b22b2f5c5c65bed9e7de59266f6bbaa8997edf5bec6bb5d203641bb58d8ade1a3a5b4e5f923df502cf1e47691865fe1984eacef3be96a551ed585e070265db203a8866726bed053cb6c8aa200ffc25f5840021104310667ec434e9e2cd9fa71853593c42e1b55865ac49f80b2ea22beeec9b4a55e9545055a2bcde3a78d36836df11df0f91c1dae9a8aee58419b8650bc6c529361f9601a4005051b045d05f39a5f00ebd5ffff' |
| 165 | + ); |
| 166 | + |
| 167 | + // Act |
| 168 | + const actualPlutusData = Serialization.PlutusData.fromCbor(expectedCbor); |
| 169 | + const actualCbor = Serialization.PlutusData.fromCore(expectedPlutusData).toCbor(); |
| 170 | + |
| 171 | + // Assert |
| 172 | + expect((actualPlutusData.toCore() as Cardano.PlutusList).items).toEqual(expectedPlutusData.items); |
| 173 | + expect(actualCbor).toEqual(expectedCbor); |
| 174 | + }); |
133 | 175 | }); |
134 | 176 |
|
135 | 177 | describe('List', () => { |
|
0 commit comments