From d84c27d7ceac1eccc8af9671bfc5ea5d9ecb2a36 Mon Sep 17 00:00:00 2001 From: rmgaray Date: Thu, 10 Oct 2024 13:34:35 -0300 Subject: [PATCH] manage staging and regression tests separately This commit refactors the serialization tests to handle staging and regression tests separately. TXs in the staging folder that are also available in the regression folder are automatically filtered out, since they will be tested anyway when the regression suite is run. In practice, this means that one should run the tests twice after adding new TXs to staging to get a stable output report. This commit also improves the report to include failure messages. --- package.json | 2 +- ...95f842560ca0cf7fcfeed1e5fbad33e01aaa7.cbor | 1 + ...22269a845249599c3bfc3e34155d372ec45aa.cbor | 1 + ...04028622e6ee3a8ef97a694180538399f6433.cbor | 1 + ...60bf4dd36b8ee53d3ea7751d315e57c483f5d.cbor | 1 + ...fb0939673e3dbe6915602233549fdab732f6e.cbor | 1 + ...926f5a52873300efe6976d1cdad618184fd35.cbor | 1 + ...3e29ce1b39af66a3defd8927b9f3252e3e7fb.cbor | 1 + ...466fbdc066a0659b6fa5734535967a9413f65.cbor | 1 + ...a748a3be3e44407663c507f551ec3d5850bd1.cbor | 1 + ...5a0d9ecc980f5b65c2b37f61792856e391446.cbor | 1 + tests/serialization/serialization.test.ts | 231 ++++++++++++------ 12 files changed, 171 insertions(+), 72 deletions(-) create mode 100644 tests/serialization/regression/000-e55867a7c96fb03546ffb79b2d295f842560ca0cf7fcfeed1e5fbad33e01aaa7.cbor create mode 100644 tests/serialization/regression/001-a0a55dbfbb11b0340cb51d9e97122269a845249599c3bfc3e34155d372ec45aa.cbor create mode 100644 tests/serialization/regression/002-2365888c8d40300fdc1f60246c204028622e6ee3a8ef97a694180538399f6433.cbor create mode 100644 tests/serialization/regression/003-ec0637c401f75a46edaca98e88960bf4dd36b8ee53d3ea7751d315e57c483f5d.cbor create mode 100644 tests/serialization/regression/004-dfaa4019642757476888548d421fb0939673e3dbe6915602233549fdab732f6e.cbor create mode 100644 tests/serialization/regression/005-3b745d76ca8d92833cd1ebeec10926f5a52873300efe6976d1cdad618184fd35.cbor create mode 100644 tests/serialization/regression/006-173e1c4436e08079f94a162f7373e29ce1b39af66a3defd8927b9f3252e3e7fb.cbor create mode 100644 tests/serialization/regression/007-e40c1085f774e735e0e941a600f466fbdc066a0659b6fa5734535967a9413f65.cbor create mode 100644 tests/serialization/regression/008-a95de95610c63948b16fa2431f9a748a3be3e44407663c507f551ec3d5850bd1.cbor create mode 100644 tests/serialization/regression/009-fc5fe06f4bff2de1556854d019a5a0d9ecc980f5b65c2b37f61792856e391446.cbor diff --git a/package.json b/package.json index 7914ab7..f8f91c9 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "index.js", "scripts": { "test": "npm run test-serialization ; npm run test-api", - "test-serialization": "rm -f transaction_fifo; mkfifo transaction_fifo; npx tsx tests/serialization/get_transactions.ts & NODE_OPTIONS=--experimental-vm-modules jest serialization", + "test-serialization": "NODE_OPTIONS=--experimental-vm-modules jest serialization", "test-api": "npm run generate-cdl-definitions ; NODE_OPTIONS=--experimental-vm-modules jest api", "codegen": "tsx conway-cddl/codegen/main.ts", "generate-grammar-bundle": "npx ohm generateBundles -e -t tests/api/grammar.ohm", diff --git a/tests/serialization/regression/000-e55867a7c96fb03546ffb79b2d295f842560ca0cf7fcfeed1e5fbad33e01aaa7.cbor b/tests/serialization/regression/000-e55867a7c96fb03546ffb79b2d295f842560ca0cf7fcfeed1e5fbad33e01aaa7.cbor new file mode 100644 index 0000000..9a5b547 --- /dev/null +++ b/tests/serialization/regression/000-e55867a7c96fb03546ffb79b2d295f842560ca0cf7fcfeed1e5fbad33e01aaa7.cbor @@ -0,0 +1 @@ +84a500818258201eb67f34b11204c6de6ece492c11ce31dc63c27b0687647d7dbe87460cfca330010184a300583911c3e28c36c3447315ba5a56f33da6a6ddc1770a876a8d9f0cb3a97c4ccc587a8e23a94337fb5542a3cd32042a1ab59045c1838bc940ec686501821a003cf722a1581cee0633e757fdd1423220f43688c74678abde1cead7ce265ba8a24fcda14443424c501b0000000c2470038a028201d818590134d8799fd8799f581c08437e849147227e56453ad784df6051ac76e81c48904079d4b767c9ffd8799fd8799f581c08437e849147227e56453ad784df6051ac76e81c48904079d4b767c9ffd8799fd8799fd8799f581ccc587a8e23a94337fb5542a3cd32042a1ab59045c1838bc940ec6865ffffffffd87980d8799fd8799f581c08437e849147227e56453ad784df6051ac76e81c48904079d4b767c9ffd8799fd8799fd8799f581ccc587a8e23a94337fb5542a3cd32042a1ab59045c1838bc940ec6865ffffffffd87980d8799f581cf5808c2c990d86da54bfc97d89cee6efa20cd8461616359478d96b4c58209d291acad03fb0c83b9297cd9c566a8599ac31b38f7578443ef16c4982e84670ffd8799fd87980d8799f1b0000000c2470038aff1a4206bdced87980ff1a001e72a2d87a80ff8258390108437e849147227e56453ad784df6051ac76e81c48904079d4b767c9cc587a8e23a94337fb5542a3cd32042a1ab59045c1838bc940ec6865821a001bb8dea1581c29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6a1434d494e1a1b43997b8258390108437e849147227e56453ad784df6051ac76e81c48904079d4b767c9cc587a8e23a94337fb5542a3cd32042a1ab59045c1838bc940ec68651a0f28e2c08258390108437e849147227e56453ad784df6051ac76e81c48904079d4b767c9cc587a8e23a94337fb5542a3cd32042a1ab59045c1838bc940ec6865821a0025d0aaa8581c214e05363758e0356c6fd758f6d354caf5cf21a965538e49a2855c9ea147374e5643516a4102581c63fa81ec17419f0bf12d1b7056f1036f1a9323c852e013f60849da7ba149542d4d494e5357415001581c8062a1cbccff73c8a10c6f82846c81ab05af0e431166607c584ad95fa1476b6662336c544102581c8483844875ce4d61c2aa459240f277d32081ee08fe0ad16899a0f581a1490014df10544954414e1aa42ebd65581c95a427e384527065f2f8946f5e86320d0117839a5e98ea2c0b55fb00a14448554e541a62590080581c9a9693a9a37912a5097918f97918d15240c92ab729a0b7c4aa144d77a14653554e4441451a3520fb57581ca3931691f5c4e65d01c429e473d0dd24c51afdb6daf88e632a6c1e51a14b6f7263666178746f6b656e1a00fcbb15581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa14f000de140646566692d696e636f6d6501021a00033549031a082ac6f50758201feb00f18fbe772cc375aa495da0b08d837a719671e68da62f8ed658915d8fd1a1008182582044f0b778bb8fbb749251ec190ceb07577dc34aaaf9190bfe887f86dace4160015840b292b4351991de6332bc87b37db7dfad74a0cb74d72d7b6a79a5ecaf88b6c58417f3f9776cc4fe345aa71007b618fe6f8bb0c670536a741babbbf68102dcb402f5a11902a2a1636d736781754d696e737761703a204d61726b6574204f72646572 \ No newline at end of file diff --git a/tests/serialization/regression/001-a0a55dbfbb11b0340cb51d9e97122269a845249599c3bfc3e34155d372ec45aa.cbor b/tests/serialization/regression/001-a0a55dbfbb11b0340cb51d9e97122269a845249599c3bfc3e34155d372ec45aa.cbor new file mode 100644 index 0000000..5612d46 --- /dev/null +++ b/tests/serialization/regression/001-a0a55dbfbb11b0340cb51d9e97122269a845249599c3bfc3e34155d372ec45aa.cbor @@ -0,0 +1 @@ +84ad00838258203ba2056127b0bdf8feb726f3849b465eb0307f979514c85a4df057ff51646519008258204891c0beee567b97f9435eec5178263abe6fe53e8c6804b820032ece574e5854018258204891c0beee567b97f9435eec5178263abe6fe53e8c6804b820032ece574e585402018382583901fc772f84650b79c9466a096bcd2ea140f2486bd1472c532e8a0db0bc27f64df7a505d2e0c5011e8105cd6073c540e6daa7d49ea21177adef821a001e8480a1581c38ad9dc3aec6a2f38e220142b9aa6ade63ebe71f65e7cc2b7d8a8535a144434c41591a261fea94a300583911ea07b733d932129c378af627436e7cbc2ef0bf96e0036bb51b3bde6b52563c5410bff6a0d43ccebb7c37e1f69f5eb260552521adff33b9c201821b0000001d73d62627a2581c38ad9dc3aec6a2f38e220142b9aa6ade63ebe71f65e7cc2b7d8a8535a144434c41591b0000001d42c907da581cf5808c2c990d86da54bfc97d89cee6efa20cd8461616359478d96b4ca2434d5350015820c1a41738f0077a4a4cfc0f157c2cae3eccf75a9238125bdc06a2ef6eae99c3f11b7fffffe2cd024df9028201d8185880d8799fd8799fd87a9f581c1eae96baf29e27682ea3f815aba361a0c6059d45e4bfbe95bbd2f44affffd8799f4040ffd8799f581c38ad9dc3aec6a2f38e220142b9aa6ade63ebe71f65e7cc2b7d8a853544434c4159ff1b0000001d32fdb2101b0000001d708b91e71b0000001d4016589518461846d8799f190682ffd87980ff825839015b7e23228dba75595645fc357d0f97ba258cfccfff5d588d4bb9165b533b9586f0fb9aafd578e0d0154e9478d23614e736eb39d1a30d8a991a19f08fb7021a000a10ab031a082a9d7905a1581df11eae96baf29e27682ea3f815aba361a0c6059d45e4bfbe95bbd2f44a000758205160f88b929bf8a6c57c285b889488f9137c0ef3cfd0bcf408a10020e69146d5081a082a9cc50b5820b63d82ce92854b1bf4367b843d884d2a869b8d8db8cdd1ec9fea7d65c8bec4880d818258204891c0beee567b97f9435eec5178263abe6fe53e8c6804b820032ece574e5854020e81581c5b7e23228dba75595645fc357d0f97ba258cfccfff5d588d4bb9165b10825839015b7e23228dba75595645fc357d0f97ba258cfccfff5d588d4bb9165b533b9586f0fb9aafd578e0d0154e9478d23614e736eb39d1a30d8a991a198fd0a2111a004c4b4012848258200dc17712e37a4e741767db2f90d4ffbf69faf88b9bed4c47864f7bd912924bea00825820cf4ecddde0d81f9ce8fcc881a85eb1f8ccdaf6807f03fea4cd02da896a621776008258202536194d2a976370a932174c10975493ab58fd7c16395d50e62b7c0e1949baea00825820d46bd227bd2cf93dedd22ae9b6d92d30140cf0d68b756f6608e38d680c61ad1700a20081825820c5d63d7dc066df52592135b6d3cb4f3470d06f7bdd4b2d2e32eb59ca3782662f584093769a6179e4646a4f2832991bf9d3cdcc1019f006a49e49fece6ebac1134703f52126d49c6de3f499a059c6d3301eba41034c81930662e621cfcb8fec6f1f020583840000d87980821962d91a007cc793840001d87980821a00012dfc1a0166fa60840300d8799f009f1a001e8480ff4100d87a809fd87a80ffff821a00143bbd1a19764b2af5a11902a2a1636d736781774d696e737761703a204f72646572204578656375746564 \ No newline at end of file diff --git a/tests/serialization/regression/002-2365888c8d40300fdc1f60246c204028622e6ee3a8ef97a694180538399f6433.cbor b/tests/serialization/regression/002-2365888c8d40300fdc1f60246c204028622e6ee3a8ef97a694180538399f6433.cbor new file mode 100644 index 0000000..effedb4 --- /dev/null +++ b/tests/serialization/regression/002-2365888c8d40300fdc1f60246c204028622e6ee3a8ef97a694180538399f6433.cbor @@ -0,0 +1 @@ +84ad00838258205bb2f2ee2f50e2f960be45d09ae1eaba6505b1f18cfa84b5710978ca025f141f0082582081a7d1d391c6f4e583bf158f28da33dbb1931d4dfdff68c035482d08e8e8161c01825820a635ab596c78493782971e9b5f46dd68f326603922f2968c75cc768f6bcd537b02018382583901abcac506c162ea53ff315c88b673e7b97f00e0d5c8087cc2060795feeeb2d6c1b94b7effa316afbeea629975ea9c049ec38187643baf1c271a06491f49a300583911ea07b733d932129c378af627436e7cbc2ef0bf96e0036bb51b3bde6b52563c5410bff6a0d43ccebb7c37e1f69f5eb260552521adff33b9c201821b000000012d5ea042a2581c4342a3d3c15545a592bf38294dc75c7a1dd3550388303e3a06f4416da14543455252411b00000042082169ea581cf5808c2c990d86da54bfc97d89cee6efa20cd8461616359478d96b4ca2434d5350015820a1db2a02b72ea2d645ce9be4620f4be8ded8949f3b939058cbcf8bf3fc5c08a51b7ffffff7477c0f82028201d8185881d8799fd8799fd87a9f581c1eae96baf29e27682ea3f815aba361a0c6059d45e4bfbe95bbd2f44affffd8799f4040ffd8799f581c4342a3d3c15545a592bf38294dc75c7a1dd3550388303e3a06f4416d454345525241ff1b00000008b883f0871b000000012c976e7c1b00000041e513f412181e181ed8799f190682ffd87980ff825839015b7e23228dba75595645fc357d0f97ba258cfccfff5d588d4bb9165b533b9586f0fb9aafd578e0d0154e9478d23614e736eb39d1a30d8a991a4677500f021a000a0cd3031a082a9d7905a1581df11eae96baf29e27682ea3f815aba361a0c6059d45e4bfbe95bbd2f44a000758205160f88b929bf8a6c57c285b889488f9137c0ef3cfd0bcf408a10020e69146d5081a082a9cc50b58208f6fc6392e4e477caaad1667bc5d51c4ab94b99ca19a827e0f082b53e785eb9a0d81825820a635ab596c78493782971e9b5f46dd68f326603922f2968c75cc768f6bcd537b020e81581c5b7e23228dba75595645fc357d0f97ba258cfccfff5d588d4bb9165b10825839015b7e23228dba75595645fc357d0f97ba258cfccfff5d588d4bb9165b533b9586f0fb9aafd578e0d0154e9478d23614e736eb39d1a30d8a991a46168d22111a004c4b4012848258200dc17712e37a4e741767db2f90d4ffbf69faf88b9bed4c47864f7bd912924bea00825820cf4ecddde0d81f9ce8fcc881a85eb1f8ccdaf6807f03fea4cd02da896a621776008258202536194d2a976370a932174c10975493ab58fd7c16395d50e62b7c0e1949baea00825820d46bd227bd2cf93dedd22ae9b6d92d30140cf0d68b756f6608e38d680c61ad1700a20081825820c5d63d7dc066df52592135b6d3cb4f3470d06f7bdd4b2d2e32eb59ca3782662f5840251e872d65dd29a2392a33f21fd7beb5b91348e343682a42bcc076b550162f4d88d6d62d07245d803081917ea08daff3993508b15c2297a3fdc7ed169ef74b0f0583840000d87980821962d91a007cc793840001d87980821a00012dfc1a0166fa60840300d8799f009f1a001e8480ff4100d87a809fd87a80ffff821a001465aa1a19a0dcc6f5a11902a2a1636d736781774d696e737761703a204f72646572204578656375746564 \ No newline at end of file diff --git a/tests/serialization/regression/003-ec0637c401f75a46edaca98e88960bf4dd36b8ee53d3ea7751d315e57c483f5d.cbor b/tests/serialization/regression/003-ec0637c401f75a46edaca98e88960bf4dd36b8ee53d3ea7751d315e57c483f5d.cbor new file mode 100644 index 0000000..aed6bbd --- /dev/null +++ b/tests/serialization/regression/003-ec0637c401f75a46edaca98e88960bf4dd36b8ee53d3ea7751d315e57c483f5d.cbor @@ -0,0 +1 @@ +84ac00838258206e00e236845f771ab57c37e991b53fc201364c4ac67234fd8b60e109572031bf0182582090f8ad0275310ab7d89f6408a80d73a76f715694d5bb5ac0ddc8642c28ffb6e71182582092e2a11747f3fe6700847f7f388dc38d913123d182fe7d373035e1cf2e59e8fd000194a300581d719392bfc154f465f6788192c0176feca44c4b43318585b246712629db01821a002dc6c0a1581cc0e5564cf5786031d9053f567ec78b8383a0f2bc01318e690e0503f4a14001028201d818479f0000000000ffa300581d716a836e8bb408ef5110a7477039a9f5fc41e55be9fc7eb5464def826b01821a002dc6c0a1581c416109f322b43051b80e83075b4baa8c5af14c88acaca47d5c251820a14001028201d818587f9f1b000000958fda9db91b00000001395c96f31b000058df4657aaea1b0000014acb18f4681b000000111a9838c71b004551bc6dac5fb79fc24a0361f5692102d069f041c24c04710cad3d80000000000000ff1b000001927726d6981b00000192773703389f1b000001ee09d3bf8d1b000058df4657aaeaff1a002dc6c0ffa300581d7114386d24c827f3ce74bdf6c875e548d928e12036c145ebec14f04df501821a002dc6c0a2581c1cc1aceaf5c7df55e270864a60600b9f52383fe418164574ffdeeed0a14001581cf66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b69880a144695553441b00000012d926e695028201d8184e9f9f0000000000ff1a272b92deffa300581d7114386d24c827f3ce74bdf6c875e548d928e12036c145ebec14f04df501821a002dc6c0a2581c1cc1aceaf5c7df55e270864a60600b9f52383fe418164574ffdeeed0a14001581cf66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b69880a144695553441b00000012d926e695028201d8184e9f9f0000000000ff1a272b92deffa300581d7114386d24c827f3ce74bdf6c875e548d928e12036c145ebec14f04df501821a002dc6c0a2581c1cc1aceaf5c7df55e270864a60600b9f52383fe418164574ffdeeed0a14001581cf66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b69880a144695553441b00000012d926e695028201d8184e9f9f0000000000ff1a272b92deffa300581d7114386d24c827f3ce74bdf6c875e548d928e12036c145ebec14f04df501821a002dc6c0a2581c1cc1aceaf5c7df55e270864a60600b9f52383fe418164574ffdeeed0a14001581cf66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b69880a144695553441b00000012d926e695028201d8184e9f9f0000000000ff1a272b92deffa300581d7114386d24c827f3ce74bdf6c875e548d928e12036c145ebec14f04df501821a002dc6c0a2581c1cc1aceaf5c7df55e270864a60600b9f52383fe418164574ffdeeed0a14001581cf66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b69880a144695553441b00000012d926e695028201d8184e9f9f0000000000ff1a272b92deffa300581d7114386d24c827f3ce74bdf6c875e548d928e12036c145ebec14f04df501821a002dc6c0a2581c1cc1aceaf5c7df55e270864a60600b9f52383fe418164574ffdeeed0a14001581cf66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b69880a144695553441b00000012d926e695028201d8184e9f9f0000000000ff1a272b92deffa300581d7114386d24c827f3ce74bdf6c875e548d928e12036c145ebec14f04df501821a002dc6c0a2581c1cc1aceaf5c7df55e270864a60600b9f52383fe418164574ffdeeed0a14001581cf66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b69880a144695553441b00000012d926e695028201d8184e9f9f0000000000ff1a272b92deffa300581d7114386d24c827f3ce74bdf6c875e548d928e12036c145ebec14f04df501821a002dc6c0a2581c1cc1aceaf5c7df55e270864a60600b9f52383fe418164574ffdeeed0a14001581cf66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b69880a144695553441b00000012d926e699028201d8184e9f9f0000000000ff1a272b92e1ff82583901da299558c70a8970781806dca93d1801ba2f3b3894227a7b284786e49baba19195b7cb8b1c6febb192cc487b5e8b96d737baddb8bb09866f1a0013a9ef82583901da299558c70a8970781806dca93d1801ba2f3b3894227a7b284786e49baba19195b7cb8b1c6febb192cc487b5e8b96d737baddb8bb09866f1a0013a9ef82583901da299558c70a8970781806dca93d1801ba2f3b3894227a7b284786e49baba19195b7cb8b1c6febb192cc487b5e8b96d737baddb8bb09866f1a0013a9ef82583901da299558c70a8970781806dca93d1801ba2f3b3894227a7b284786e49baba19195b7cb8b1c6febb192cc487b5e8b96d737baddb8bb09866f1a0013a9ef82583901da299558c70a8970781806dca93d1801ba2f3b3894227a7b284786e49baba19195b7cb8b1c6febb192cc487b5e8b96d737baddb8bb09866f1a0013a9ef82583901da299558c70a8970781806dca93d1801ba2f3b3894227a7b284786e49baba19195b7cb8b1c6febb192cc487b5e8b96d737baddb8bb09866f1a0013a9ef82583901da299558c70a8970781806dca93d1801ba2f3b3894227a7b284786e49baba19195b7cb8b1c6febb192cc487b5e8b96d737baddb8bb09866f1a0013a9ee82583901da299558c70a8970781806dca93d1801ba2f3b3894227a7b284786e49baba19195b7cb8b1c6febb192cc487b5e8b96d737baddb8bb09866f1a0013a9ee82583901da299558c70a8970781806dca93d1801ba2f3b3894227a7b284786e49baba19195b7cb8b1c6febb192cc487b5e8b96d737baddb8bb09866f1a0013a9ee82583901da299558c70a8970781806dca93d1801ba2f3b3894227a7b284786e49baba19195b7cb8b1c6febb192cc487b5e8b96d737baddb8bb09866f1a0013a9ee021a0008ff48031a082a9de0075820d36a2619a672494604e11bb447cbcf5231e9f2ba25c2169177edc941bd50ad6c081a082a9cb40b582040ca2b03a86cee3a8d2c5b0c394b14e4b501de4c3be865fc6494681c7922b6160d8182582090f8ad0275310ab7d89f6408a80d73a76f715694d5bb5ac0ddc8642c28ffb6e7110f011082583901da299558c70a8970781806dca93d1801ba2f3b3894227a7b284786e49baba19195b7cb8b1c6febb192cc487b5e8b96d737baddb8bb09866f1a0081575a111a004c4b401283825820da70eb2e8e5e66eaded8935283983e5496b35b2d19dde8668b8ec4b25307d96f00825820dd69370c5046e4a6fd880681cd81e4e3871544e54f5593dd5d4af625727b1b6403825820fdd3f93aa9639e9a30cefc77ddc3f52c8a5671a3692e059dba6009991d0d8cfc00a20082825820f44ce6186d190f8776fd871d753df7ae503972e4793a2360a423d2f96021e6015840d4b199f04e3fd37d8e7fc628a5db986317e79aec995062c27d724ffd683a54316e3ce80baeb34258cf04026d7d99ef87e5cda243c6f6da25cfe78814fc13bb0982582063179f731829d60aade12a1398c07b7a905cc38e7d9901850c9b186946f5ca3e5840ecdd9700bf7d4a4f9855ba2d527a7cbb5c2c72bede4d27c33eafd971003113eba477345334f41cef9661f703abe5d61e4a9999bca17f16a0e138f09cd4517e0405828400021a002dc6c0821a002248711a2ba17fbb840000d8798082199ea41a00e756daf5a0 \ No newline at end of file diff --git a/tests/serialization/regression/004-dfaa4019642757476888548d421fb0939673e3dbe6915602233549fdab732f6e.cbor b/tests/serialization/regression/004-dfaa4019642757476888548d421fb0939673e3dbe6915602233549fdab732f6e.cbor new file mode 100644 index 0000000..28366f2 --- /dev/null +++ b/tests/serialization/regression/004-dfaa4019642757476888548d421fb0939673e3dbe6915602233549fdab732f6e.cbor @@ -0,0 +1 @@ +84a7008382582007b4112a0c54e07960bd1daa34537b70d9aad15df3f18ec8989125900cc54209008258202ddc957912c1e8e882888d4016439803dbe6fad7aa90a613b5fe59232f3a76da048258204d33aef4557fee404b1bbca477ecee49109fc13225e94000cf464acacb0fc6b501018382583901b51f6ea43b78d435052b95cacbae953463958ecfbcb32f16e0167efca6de6b291665205bd680c1ad9dc4e32822eabfa7b24dc869cc005722821a0011a008a1581c9b426921a21f54600711da0be1a12b026703a9bd8eb9848d08c9d921a146434154534b591935e982583901adb1bf6a51b20ff1b8450726ef3891bb0e153d5bf47783375e2134afbd6a096cbba5e259946798e948403e2d2b3d9ea88a12ee8e7ae944971b0000001eb27eccc382583901adb1bf6a51b20ff1b8450726ef3891bb0e153d5bf47783375e2134afbd6a096cbba5e259946798e948403e2d2b3d9ea88a12ee8e7ae94497821a004a6172b4581c017af5d958fffdf65f3e5b8b3ff5abefd210a03464a9fc48ea0f4a39a1470014df10574c4b1a22ac98ed581c0c002b51df1a54194819c0990f52d14682bbb3e93a58052e7c81f71ca14642554b454c451a1ba7275f581c160a880d9fc45380737cb7e57ff859763230aab28b3ef6a84007bfcca1444d4952411a1588b61f581c1cd92100fc05fce7416b3857a079780164eeaf8f5613f4b814f24e09a148426f6f6e436f696e1a3a45a49b581c25f0fc240e91bd95dcdaebd2ba7713fc5168ac77234a3d79449fc20ca147534f43494554591b0000003671119588581c37a2b93b4aa2b286b92b7099faff0bb87e0c629a5079c0584da2d577a1434f534d1a75aec599581c3a89cf5f2f18887fcaec3d2e9bd4fee52caeaebc50f338ff23861ceca14442414e411b00000007e13c879f581c4fde92c2f6dbcfa2879b44f7453872b31394cfb2f70f1d4c411169aca146427562626c651b00002d531403c01a581c501dd5d2fbab6af0a26b1421076ff3afc4d5a34d6b3f9694571116eaa1454b4f4e44411a35444309581c515bc3f68b15ab31025cd9a8a8c327ad0a5d9ff4eaf2e931c06c3330a14442554c4c1a0009c315581c51a5e236c4de3af2b8020442e2a26f454fda3b04cb621c1294a0ef34a144424f4f4b1b0000023c4b25e677581c5612bee388219c1b76fd527ed0fa5aa1d28652838bcab4ee4ee63197a147446973636f696e1b00056ea2f6a8deb1581c5dac8536653edc12f6f5e1045d8164b9f59998d3bdc300fc92843489a1444e4d4b521b00000415782a63b3581c75fcc276057db5fc48eae0e11453c773c8a54604c3086bf9d95ac1b7a144434852591b0000001527be106f581c805dba5284db75636dabc96c02f62c9d382e246ee22aa937a7a12aeca1470014df10464e581b00000008f35f3f77581c8654e8b350e298c80d2451beb5ed80fc9eee9f38ce6b039fb8706bc3a1474c4f42535445521b0000001b30e8946d581c89267e9a35153a419e1b8ffa23e511ac39ea4e3b00452e9d500f2982a153436176616c6965724b696e67436861726c65731b00000002fa365cd2581c9b426921a21f54600711da0be1a12b026703a9bd8eb9848d08c9d921a146434154534b591a5b254b68581ccf4515aa9b095447527d7a0630470491126f0ce58502977c32fc0ff3a1454344464c591a0001548e581cedfd7a1d77bcb8b884c474bdc92a16002d1fb720e454fa6e99344479a1434e54581b0000002a9ed9bca7021a00037c45031a082ac701075820dceb615df4c37cb35edc022e11faba4f98e042261a24cb1e2bca0cc3e4dcc45709a1581cd195ca7db29f0f13a00cac7fca70426ff60bad4e1e87d3757fae8484a1486876434154534b593935e80e81581c4f641455f17911fe2f55ad3ad67fc2e0b2946b59af3352574322e67ea200828258200621257bb5bd1477c0960b2e391c70baa8a642ad258420daa10bab85d1c24bef5840c88868024733588b15b37302ffdf4d0e1b672d9cb666bd0b02a1c537dab66cbe7187f482449504e1900d7c3a62941bad5b5854adfa196c6f1ae3d214096d71008258205424fa10ba83c95c33714c420479c19183a7274e7c1d4161d173842c245b340c58403edda063f703e94af9d2c28a3579f52de182896dec3faa1cf3ef830bd371668f087ac84ae41527709107044668329c9b34832938a0b7cfa5b004c16ab5f0f90101818200581c4f641455f17911fe2f55ad3ad67fc2e0b2946b59af3352574322e67ef5a11902a2a1636d736781734d696e737761703a204d617374657243686566 \ No newline at end of file diff --git a/tests/serialization/regression/005-3b745d76ca8d92833cd1ebeec10926f5a52873300efe6976d1cdad618184fd35.cbor b/tests/serialization/regression/005-3b745d76ca8d92833cd1ebeec10926f5a52873300efe6976d1cdad618184fd35.cbor new file mode 100644 index 0000000..995c2bb --- /dev/null +++ b/tests/serialization/regression/005-3b745d76ca8d92833cd1ebeec10926f5a52873300efe6976d1cdad618184fd35.cbor @@ -0,0 +1 @@ +84a50081825820e5d5bd407b5b5801ee4adca76e73f663bd16b34ea8abfa8064854fcebcfdc602000182a300583911c3e28c36c3447315ba5a56f33da6a6ddc1770a876a8d9f0cb3a97c4c51f9de2bc6e1364f281875ac0c8567b4696e1911cb07087da3f3cb37011a3bd7d300028201d818590130d8799fd8799f581ceb7299061bccd93952e35e7b58ab105ac073d5c7dca3cc397e201896ffd8799fd8799f581ceb7299061bccd93952e35e7b58ab105ac073d5c7dca3cc397e201896ffd8799fd8799fd8799f581c51f9de2bc6e1364f281875ac0c8567b4696e1911cb07087da3f3cb37ffffffffd87980d8799fd8799f581ceb7299061bccd93952e35e7b58ab105ac073d5c7dca3cc397e201896ffd8799fd8799fd8799f581c51f9de2bc6e1364f281875ac0c8567b4696e1911cb07087da3f3cb37ffffffffd87980d8799f581cf5808c2c990d86da54bfc97d89cee6efa20cd8461616359478d96b4c58207b12f25ce8d6f424e1edbc8b61f0742fb13252605f31dc40373d6a245e8ec1d1ffd8799fd87a80d8799f1a3b9aca00ff1ad4dfacdbd87980ff1a001e8480d87a80ff82583901eb7299061bccd93952e35e7b58ab105ac073d5c7dca3cc397e20189651f9de2bc6e1364f281875ac0c8567b4696e1911cb07087da3f3cb371a11e6b5d3021a0002d535031a082ac7000758206f3389496b64a0feca65e09dc933159cc86c1c465a733431130ca8ada55c8360a1008182582080c2cc9e12706fd4be12827f09432a9ff0b6cce12e1790d75535925776a26cf95840049ab6a4152fcf2d2bd587f8bda5ba573182ac3012a23c67561c72cbfeb1233a0f438b01645afad826e4ab7f99e7fc10d3f2683741eac697b3ad5c015d81ba01f5a11902a2a26b6c696d69744f7264657273816130636d736781744d696e737761703a204c696d6974204f72646572 \ No newline at end of file diff --git a/tests/serialization/regression/006-173e1c4436e08079f94a162f7373e29ce1b39af66a3defd8927b9f3252e3e7fb.cbor b/tests/serialization/regression/006-173e1c4436e08079f94a162f7373e29ce1b39af66a3defd8927b9f3252e3e7fb.cbor new file mode 100644 index 0000000..b1c426d --- /dev/null +++ b/tests/serialization/regression/006-173e1c4436e08079f94a162f7373e29ce1b39af66a3defd8927b9f3252e3e7fb.cbor @@ -0,0 +1 @@ +84ac00d90102848258200eac9f718084543ef0ae1651cf48f68e86c9cdf52b7a2cac7298c978cf36f7a90082582016d91fc242d00ce9a928d0f3d89406bd3516836b0519f685fab6491ace01b64503825820342302bdccc88600f56196adfb775f6d754e1387781026d30f9f38ab445520cd038258208d981a780bbcf5732b9660d7dcc4cf588fe20198195445258754a49337c4e461000dd901028182582016d91fc242d00ce9a928d0f3d89406bd3516836b0519f685fab6491ace01b6450312d90102838258207d2e796244075c002db3ef68f15b090482f62cf15288603302f569ad5140d8ec0282582093e5edca3ea8f7417f8c298e155d6ad865d38eed546b35aa8038e8f0360e707b0182582093e5edca3ea8f7417f8c298e155d6ad865d38eed546b35aa8038e8f0360e707b03018482583901d547466c853d9d3ace3db9c1aeb3512fdd9e54cd7415cc41f4fbbc8bb862e5b3e67d75c9295b09d659982b0e157072156cbcb820b37ca8dd821a00fea9d2a1581cb686e45c9181618e20e26cf0e2fc1e9f336bb0df914e645b5adad5bda14601941f297c0001835839117045237d1eb0199c84dffe58fe6df7dc5d255eb4d418e4146d5721f870bcc6fa87f9d4a49c3f0cc6f01c1b70bd3da67a4adcac75b8e57b33821b000000156d53ffcba3581c1d7f33bd23d85e1a25d87d86fac4f199c3197a2f7afeb662a0f34e1ea150776f726c646d6f62696c65746f6b656e1b00000020289fcce7581c909133088303c49f3a30f1cc8ed553a73857a29779f6c6561cd8093fa15820f6602f7b01ba8ca752f4859092d403d753ea425061eb78bc13bb9d328e22160801581cde9b756719341e79785aa13c164e7fe68c189ed04d61c9876b2fe53fa14e4d7565736c69537761705f414d4d0158206a84f6248204febf0e3fbc71b89f10904e094103c3ee88115a78111d51c7b8e782583901e442eb7030ef6b2f37126b7300c598c6b1fb396f9cd6066c8c3d7f3495f131eaa62847a93e5b2359a782c1b84fc6c344bb32fde71e7f4c8e821a31095f2aa1581c1d7f33bd23d85e1a25d87d86fac4f199c3197a2f7afeb662a0f34e1ea150776f726c646d6f62696c65746f6b656e1a496adb2682583901d547466c853d9d3ace3db9c1aeb3512fdd9e54cd7415cc41f4fbbc8bb862e5b3e67d75c9295b09d659982b0e157072156cbcb820b37ca8dd1a33c3e5351082583901d547466c853d9d3ace3db9c1aeb3512fdd9e54cd7415cc41f4fbbc8bb862e5b3e67d75c9295b09d659982b0e157072156cbcb820b37ca8dd1a339d83e5111a0017966f021a000fb99f031a082ac2240ed9010281581cd547466c853d9d3ace3db9c1aeb3512fdd9e54cd7415cc41f4fbbc8b09a1581caf3d70acf4bd5b3abb319a7d75c89fb3e56eafcdd46b2e9b57a2557fa15820f6602f7b01ba8ca752f4859092d403d753ea425061eb78bc13bb9d328e2216083a37bc76b50b5820f2a30924408d4de033b33c7ba0ee939a24edc21ec3e1494667982c1c1a78e84c07582036efd61ebb02725790fafc24bf60ddf168b0b8b0bd736dc3b51915a5f8631a95a300d901028182582044041a68ade77c6c31ab90785f6282d4945ee48b7ef45fbbf5a348474d49fab358404caa3a15d0dcc191abe34973555cdf5248b97eae317873ed1b5492b13a3c08c31ba73ce5d6bd255f2ce3a3195134b8fed7ca78fe6127f2a209e9d5f984acc20104d9010283d8799fd8799fd8799f581ce442eb7030ef6b2f37126b7300c598c6b1fb396f9cd6066c8c3d7f34ffd8799fd8799fd8799f581c95f131eaa62847a93e5b2359a782c1b84fc6c344bb32fde71e7f4c8effffffffd8799fd8799f581ce442eb7030ef6b2f37126b7300c598c6b1fb396f9cd6066c8c3d7f34ffd8799fd8799fd8799f581c95f131eaa62847a93e5b2359a782c1b84fc6c344bb32fde71e7f4c8effffffffd87a80d87a9f1a2f732b241a473702a7ff1a001e84801a001e84805820f6602f7b01ba8ca752f4859092d403d753ea425061eb78bc13bb9d328e2216084e4d7565736c69537761705f414d4dffd8799fd8799f4040ffd8799f581c1d7f33bd23d85e1a25d87d86fac4f199c3197a2f7afeb662a0f34e1e50776f726c646d6f62696c65746f6b656eff1b0000001869f30e29181effd8799fd8799f4040ffd8799f581c1d7f33bd23d85e1a25d87d86fac4f199c3197a2f7afeb662a0f34e1e50776f726c646d6f62696c65746f6b656eff1b00000018a1af84df181eff05a382000082d87980821a001c69bc1a1bb71d6c82000282d8799fd8799fd8799f581cd547466c853d9d3ace3db9c1aeb3512fdd9e54cd7415cc41f4fbbc8bffd8799fd8799fd8799f581cb862e5b3e67d75c9295b09d659982b0e157072156cbcb820b37ca8ddffffffff03ff821a003bdf681a32fedbc78201008240821a001acc421a19d375b4f5d90103a100a11902a2a1636d73678178274d7565736c6953776170204465706f736974202f205769746864726177204c6971756964697479 \ No newline at end of file diff --git a/tests/serialization/regression/007-e40c1085f774e735e0e941a600f466fbdc066a0659b6fa5734535967a9413f65.cbor b/tests/serialization/regression/007-e40c1085f774e735e0e941a600f466fbdc066a0659b6fa5734535967a9413f65.cbor new file mode 100644 index 0000000..0e44435 --- /dev/null +++ b/tests/serialization/regression/007-e40c1085f774e735e0e941a600f466fbdc066a0659b6fa5734535967a9413f65.cbor @@ -0,0 +1 @@ +84a40083825820b852f004b1e5aa389dd23bbfec3e16c2682d28a808fc9b475c09bda977adb4d200825820b852f004b1e5aa389dd23bbfec3e16c2682d28a808fc9b475c09bda977adb4d202825820b852f004b1e5aa389dd23bbfec3e16c2682d28a808fc9b475c09bda977adb4d203019818825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a0039bdf4af581c10a49b996e2402269af553a8a96fb8eb90d79e9eca79e2b4223057b6a1444745524f1a07b1e158581c16fdd33c86af604e837ae57d79d5f0f1156406086db5f16afb3fcf51a14544474f4c441b00000002ff68e8c0581c1d7f33bd23d85e1a25d87d86fac4f199c3197a2f7afeb662a0f34e1ea150776f726c646d6f62696c65746f6b656e1b000000012c8b3f04581c279c909f348e533da5808898f87f9a14bb2c3dfbbacccd631d927a3fa144534e454b1a00307e7c581c29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6a1434d494e1a03121593581c38ad9dc3aec6a2f38e220142b9aa6ade63ebe71f65e7cc2b7d8a8535a144434c41591a000cd140581c4de3c5d6b555c99c7f56a1f917567288f025f337cdf233d99e462a13a144537373731a001e40e7581c577f0b1342f8f8f4aed3388b80a8535812950c7a892495c0ecdf0f1ea1480014df10464c44541a0337f980581c59515c449f1ec1d21a4b2d93013337d13b29d74c3a665a11d5b7fc66a14544534c56521b00000043d11a9af0581c5ac3d4bdca238105a040a565e5d7e734b7c9e1630aec7650e809e34aa1465351554952541a0566e76d581c5d16cc1a177b5d9ba9cfa9793b07e60f1fb70fea1f8aef064415d114a1434941471a08cf4472581c5d2c21938d698a21d86c0c0ca3c94fbc7610ec85d98eff0fc497dbefa145464c5549441a001364d1581c681b5d0383ac3b457e1bcc453223c90ccef26b234328f45fa10fd276a1434a50471a27f0ad6e581c68d321288fcbf4870b12af5984a3c91338b9db622f2320b5f7ff7ff6a1444e4f53451a00ecf23e581c715d89545d6ce3cfca7680b216a3f327ee61d377732431049ed0b240a1465368726f6f6d1b00000002d03ca86c825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a0039ad1eaf581c718c383a22b0239d034a95e750fd09a5930bddcffc24bf5c566b1cf1a14653554d4d4f4e1a1858f98e581c804f5544c1962a40546827cab750a88404dc7108c0f588b72964754fa144565946491a005b8e30581c8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd61a14c5368656e4d6963726f5553441a00872617581c95a427e384527065f2f8946f5e86320d0117839a5e98ea2c0b55fb00a14448554e541a034742b8581c96ad5ab136d2193dda2afb662285b93e48d265e14df59ee0f33925aea1444447454d1a065d4989581c9b426921a21f54600711da0be1a12b026703a9bd8eb9848d08c9d921a146434154534b591a02ccaaa7581c9f452e23804df3040b352b478039357b506ad3b50d2ce0d7cbd5f806a1434354561a0001935c581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591b00000005aa21236e581ca1b284d7218dd63772c67ca26ab73721a196b404929cddef595f9967a149574f4a414b424c55451a03406d7c581ca8a1dccea2e378081f2d500d98d022dd3c0bd77afd9dbc7b55a9d21ba14563544f53491907d0581cad1c1ed3a0bb6f83630ef052a31b71ba3287bf4bafa8370758f14d31a1445349434b1a00231f19581caf2e27f580f7f08e93190a81f72462f153026d06450924726645891ba144445249501b0000000556bdec14581cafbe91c0b44b3040e360057bf8354ead8c49c4979ae6ab7c4fbdc9eba1464d494c4b76321a02bde780581cafc910d7a306d20c12903979d4935ae4307241d03245743548e76783a14541534849421b00000011ff706500581cb3ad8b975d24235a43cb2a54d58c717ed9dd11560b4deba2273ffb1da1480014df104b5749431a3cb38cff825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a002eb184a9581cb6a7467ea1deb012808ef4e87b5ff371e85f7142d7b356a40d9b42a0a1581e436f726e75636f70696173205b76696120436861696e506f72742e696f5d1a007270e0581ccdbbe391853676285131fe2de250e274dbeb5f9d98344e86c7b383d9a147474c44534e454b1a00a201d9581ce6f464202e7c89befd79fdd3905ca96c896772721485dff66fd6b2d2a1464144414c4f541a001ebf73581ce9c28a71273f825b13f38244ccf1fea97c4025813610d01a7c5d681fa14c436861726c7a20546f6b656e1a571beb56581cea02c99c0668891d6b7cdc49e075cbddf9cd5b89404e5a8a8e5d7016a149534c4f5020436f696e1a00021683581cececc92aeaaac1f5b665f567b01baec8bc2771804b4c21716a87a4e3a14653504c4153481a25bdeda1581cf4d97191f857096b441a410c036f63d6697dde0c71d2755dd664e302a1434d4b411ae8c8260a581cf5808c2c990d86da54bfc97d89cee6efa20cd8461616359478d96b4ca25820154da2f5ce7fe018180ebdd810556d4cd9e6c4bb8a6acbb2f934e613cfd9017f1a0052f06c5820bd130d7be7f517c47bbece0823c7adae9c5569f6dbc4048bdddb2b0e07348c611a0024d922581cfc11a9ef431f81b837736be5f53e4da29b9469c983d07f321262ce61a1444652454e1a001d7387825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a002ea0aea9581c014c116da46293d0841cc90ec26d06287f2b72f6c697bfba7881fb5ea64c446575734578414932313538014c446575734578414932313731014c446575734578414932343633014c446575734578414932343732014c446575734578414932343930014c44657573457841493333373601581c0914006240e7e2f838767fcfac418356eab51bcdcad61a451e4ef92ca1476e616d6533353401581c0bb4a6784ab7c12f66e8595f6e3475e03651c7c3ffb4435afe01e7b6a14d506172726f745665727365313301581c0d5d8c8958cba3fc43441090fc73c34f9b45cb14d2217e167c893358a1484b4f4a4b4f4a313201581c0dbd2187542e895b5e778ae62ac9088e5c6c77a1a0c98447c5dbb569a1443435323901581c0effd65ddc02e318e7845e0c6c64e6b6295cb87fb13a73ef922bcee9a1524d65726b616261434e465453316e756d373901581c11ebbfbfd62985cbae7330b95488b9dcf17ecb5e728442031362ad81a24e48756e677279436f772338313832014e48756e677279436f77233936313901581c14745701d66956de8482981497704bda25f40f72d11959958b700ec1a150486f6c6465722043617264202334303001581c16091bf22ba871192c15a31198b658dd9ffe2b2c4a4d3c20fc327e27a1476e616d6532333701825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a00334c08a6581c17ac801d2ce81747e038d69bc0ccc861dcaad0d10750df4a3897b66da1544368616e6748617264666f726b4e46543634373201581c1bfa770347996450bddb09dc32290c282b803d7102ed47185895bbd3a14d43616e6479436174735f32353301581c1c9cc348fcb844ba233b1d9582d177a99c25b0117cbb4ca14b9bcebbaa58194354565f5661756c745365656b65725f476f6c645f303230320158194354565f5661756c745365656b65725f476f6c645f3038363001581a4354565f5661756c745365656b65725f4675747572655f32373401581b4354565f5661756c745365656b65725f436f6d6d6f6e5f3134323701581b4354565f5661756c745365656b65725f436f6d6d6f6e5f3139343601581b4354565f5661756c745365656b65725f436f6d6d6f6e5f3332313001581b4354565f5661756c745365656b65725f436f6d6d6f6e5f3334363701581b4354565f5661756c745365656b65725f436f6d6d6f6e5f3432333301581b4354565f5661756c745365656b65725f4a6577656c735f3032343401581d4354565f5661756c745365656b65725f556e636f6d6d6f6e5f3130373001581c20b6630b045014e4ee2c410329d36e192bf102155692308df69f4effa1475a696c6136363501581c27c296fb0bef62fd2c5a0b18cfc582bc886a030bf01afd42b98ad582a148436865727279333301581c2a8af0f19ba8bfe934649a789565274b42bab9cc14ea8427c9d2e94aa14c43727970746965303036383601825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a0031c8ceaa581c28e0e399d9dc03dbb7b97ad45461cda8e7c4f24c85f91b863b8b6374a2465a613135373501485a75756c3231333601581c2af4e8789778b79ddf25f2062377709e49181265d87beb2f99c902a4a44e45617274685661756c7431363736014e45617274685661756c7431363737014e45617274685661756c7431373730014e45617274685661756c743137373101581c2c1f512e2a3dd5f8c5b749a58e180aa8c552fcb02464f3356b823618a14b424f54303937663235356101581c2e18377bb0fc8961934e5274e3c7c2161b7d5fd81c28589fe8e62a3aa148576869746531373401581c4a1dfc25153ed01ce2bf4b9737cb46d90ec33511456bc94ca46396d4a1581b48524443686970546f756368646f776e506172747932303233313701581c4affa91527845c130e6c9e8d7989306833387a560b9292ac04a25360a14f4f6c644d63436861726c7a3035373701581c4f575298fb0e223f2d3bea08c0afd75acc94d8ed72c75732e042d75da15550726f746f73656564416e6365737472616c30393301581c5656644669b40ab22b5b61d40df22f7d7719420f34fc46277e1197c7a148484f53484937373901581c5c1abfb2c2b2a4ce2fa731cdb2f793fcd4ab2c2c05b8ee39b142a4a6a1464d694c4b313101581c5cab191ab23ebf4c37964acdd686b33c1567eb658ca7d431d9709a28a24b4a41524f44495254363937014c4a41524f444952543132343801825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a0034053aaa581c5cfe32d74d4cdbd67774a97728280cf1416ab16d1f9ee31019d89498a15452656e656761646520437970686572202330343601581c5d97832469fea291a4d433db22781b08c594be28c2c23e2f7c183a57a14a465544424f443032363401581c5deb1f0edc03aa73bc4ca7a46d08183d9b373c00433e0c89c23b67c7a155536572696573314d5050697261746553313039303701581c6573b91b6e015ce6c92fa16d6313448c71c74536b3054ea406db2b01a14f4d616b657220546f776e202331373901581c65ab799f268884ac04f29760e72e07f5a01cba857af5410262744204a34b636861726c7a3035343332014b636861726c7a3035353435014b636861726c7a313637323401581c669aae3b96be1f691a213ebb29d078719d93e9804eef7e9751d838a0a451000de1404b57494352656c6963323639340151000de1404b57494352656c6963323736310151000de1404b57494352656c6963333238330151000de1404b57494352656c69633332383701581c66ffb6f177f1ed667fc5483615d86f2e11270e80473ee0a00e4c9931a1554d7973746572696f7573204d6f616920233232393501581c6be85a612035df47b2ce78ef190f0fb256b9dcc198cb154975d82b19a150536b756c6c205375726665723138383401581c6cada6e8e84508b8c555de35470c06964a0689f739177e7fce45dd81a1486e616d653236313101581c6cf0d8bdc90918463ba3a02d2fd8aaa322981ec9397a6c554307e65ea14c52756e65724d6f6e6b65393201825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a00371c84ac581c6f5d880ec1746a32afc1f4fb53ad7ec1e214f49f53f1175c424b1200a14b4f47436174736b7931313901581c6fbec3e60cd446de760d8a74adf275aead111954d1d3a97fa1c53187a34d50726f706167616e6468697374014e41726d7920506f73746572203438014e41726d7920506f7374657220353001581c70316e2045e209b4dd9519c1064b39d579973057fa9da66590fc0f00a14c41334354524f50485931313101581c74428b1442547159a05c9bb3d7ff77ea6a6b0f55fddc8ec56cb6ca80a150526f6775655072696d6174653234373201581c74946c67d2a6afbdfd9450eb9818f202ba26143f821990d7a45b515ca151447269707079323330353031303433373201581c7667ea5e0c35d5d52500d5f37eb021d7b3d13dc9a8a1a9c778769b2aa14e4172637573466c6565743030363201581c793aca910dc6a400ced6c94698c6f01d6479d701227fc9a7287ae2a5a24a416461476f6432393031014a416461476f643436363801581c7d8eb0064a10515dffa169f4232daa4d9707eb16db87c39992e31b3aa15344454341504f43484d6567615061737330363201581c82c250193256779c4751a3f4021df46c3734d11be7b513f872145fc2a1514c616e645768616c65333330416c69636501581c83732ff37818e7e520592fcd3e5257e429307d40a9f5437240e926dea15053696e646572536b756c6c7a3034353001581c848838af0c3ab2e3027d420e320c90eb217f25b8b097efb4378e90f5a14d426f6d6265727320233131323401581c8591c24c06d66105e9f4349be707a3a980c67bbcf8df94213fa965c9a14d6872645f68656c6c6f5f30303401825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a0036527caa581c8675620080f07757cb1e946acddb88f69c7adb6d0d742c48d92183a1a1581836343931663662623066353362633563663162353465316201581c877d5bf25b540049475dfd254a300d187ba6672ba672d8b61a759ec6a14b41334354726f706879313701581c8d5c45dbf5b7ddbae2e4936032ef7c24ed6f82eddd02d752fa041505a24e426c6f636b426f6e657331353833014e426c6f636b426f6e65733634313601581c93bb6f5ab82890515db334c637c9bd84e2dd1ab79832b41d9008cdd1a2536872645f666f72657665725f3030303030343701536872645f666f72657665725f3030303032313801581c93e06be903136659581e6aaa5e54a3500c56f03c434e7d9f84a18239a14a546f797a69653131373901581c94b65ed37af66787c9aeb99710225861adc1fca485d9c75c09e0dd9da35352445553657269616c31343932343930303338015352445553657269616c31363332303232313135015352445553657269616c3139393232373936383001581c95000d80833f00b689619f0ecdcf587c79b31455b9e6698ea9496328a15773656564736f66636f6e7363696f75736e65737330303101581c97305ec3684b4e5ac2977d44ee05fd453b038ae882e665fd6499484ca15818456e70696d6f6e7943616e61646154656d706c617230393301581c98e841a6abb5fc069db2ac1ef08d4d7d40286b1e2cd27fbc6bcc76cfa24e4e6f736520506173732023313434014e4e6f73652050617373202334373301581c9f09db2726e06d42ba5c7fa11c93d0570ffdba2dba48f562cb72abdfa14e437962657250686f746f6e30373601825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a00349cc0a8581ca05568aefc3df6beffa7c45d2ecfa15953528195bcfaf3dde951ffe0a757546865576f6a616b73504650436f6c6c656374696f6e36015819546865576f6a616b73504650436f6c6c656374696f6e33373201581a546865576f6a616b73504650436f6c6c656374696f6e3131393901581a546865576f6a616b73504650436f6c6c656374696f6e3133313301581a546865576f6a616b73504650436f6c6c656374696f6e3330393001581a546865576f6a616b73504650436f6c6c656374696f6e3333393901581a546865576f6a616b73504650436f6c6c656374696f6e3437323301581ca2a24a3bb00bb632c585f66add5c2f36d759ec4a1e0017abc2ef23bba14c4a5047484950504f3137373601581ca4acdb40f495b61bc98f10c4df10ca7204f2efcaddc9e0a2af9c8e04a153436861726c7a20466f756e646572202334363801581ca4ef0e4d8bfe5b7bda637c2e0334428418499587454963add1dc6f1fa14f313031736b756c6c7a4c304c30333201581ca890e508e5fb46eb1ad098043d3961d7ad5fc1662391b23a8a59e5e3a1514d6f64657261746f7257697a6172642d3801581caebfa00666c2da40771107a524b40d722f78341b6bd5d1351ccdc96aa14b446567656e534e454b323601581cb209ca1b3da0addd96fa7f4be792b6a2d1e8503a87295615193a984da24d43796265724e65787573303730014d43796265724e6578757336363001581cb5fe4b252a54d6c39689c740e9f5b18355b9b983da2295cee6906420a14b476e6f6d6965733230333401825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a00406262a1581ca5bb0e5bb275a573d744a021f9b3bff73595468e002755b447e01559b81e56484f534b5943617368477261623030303030383435300156484f534b5943617368477261623030303030383535390156484f534b5943617368477261623030303031343538360156484f534b5943617368477261623030303032343934340156484f534b5943617368477261623030303032353938300156484f534b5943617368477261623030303032383230380156484f534b5943617368477261623030303032393836340156484f534b5943617368477261623030303033313338330156484f534b5943617368477261623030303033313737390156484f534b5943617368477261623030303034383834320156484f534b5943617368477261623030303131333439320156484f534b5943617368477261623030303131333439350156484f534b5943617368477261623030303137323038370156484f534b5943617368477261623030303137363232330156484f534b5943617368477261623030303139373334390156484f534b5943617368477261623030303230313036340156484f534b5943617368477261623030303230313339360156484f534b5943617368477261623030303230323232390156484f534b5943617368477261623030303230323634380156484f534b5943617368477261623030303230383430380156484f534b5943617368477261623030303231343838350156484f534b5943617368477261623030303231373535350156484f534b5943617368477261623030303231383138350156484f534b5943617368477261623030303231383832370156484f534b5943617368477261623030303231383839350156484f534b5943617368477261623030303232303231380156484f534b5943617368477261623030303234363636320156484f534b5943617368477261623030303234373931320156484f534b5943617368477261623030303234393535350156484f534b59436173684772616230303032353039333001825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a002eb184a4581ca5bb0e5bb275a573d744a021f9b3bff73595468e002755b447e01559ac56484f534b5943617368477261623030303236393533350156484f534b5943617368477261623030303330323238330156484f534b5943617368477261623030303331303235360156484f534b5943617368477261623030303331333538300156484f534b5943617368477261623030303331353036370156484f534b5943617368477261623030303332333739370156484f534b5943617368477261623030303337383632320156484f534b5943617368477261623030303338333637380156484f534b5943617368477261623030303338343835360156484f534b5943617368477261623030303339333236340156484f534b5943617368477261623030303339353437310156484f534b59436173684772616230303033393534373201581cb678eb73b816de5e754e58cc7bb2508a3b2da25b89c871809d0f2769a1554d65726b616261536572696573324e756d3130333601581cb713fb97485eea13eb523feb7e0ad632130c129168e5eec1fa864c32a15550726f746f73656564416e6365737472616c30393301581cb98ae818ee0693e61a8e51db1358240eaa441dba60a8c3766e3f5115a157000de1404b57494320506c617961626c6520233534333701825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a002d71a2a6581ca930325bc5a39bfb4782de2c55976af3b71584fe6260187b43ddccfda5524153484942456c69746573426c756530323201524153484942456c69746573526f736530313501544153484942456c69746573496e6469676f30333501544153484942456c69746573507572706c6530303701544153484942456c69746573507572706c6530343301581cb76de2ba611586d06efdbdfb58a31954f2b61dbcfa87e4335feb5e28a24d4d6f6f6e20436174202332313201534f72646572206f66204f72646572732023383601581cbd3bfe93205b56c98559af381234f4df3e38c4ceb113256042ae5a4ea15150756467794361745f575757433035373101581cbe0216833db935ebf03a31509a0e6c14267d68d6cd790a89d7686c75a24d43543739334576656e743634340158204354373933496e7669746174696f6e4354373933496e7669746174696f6e353301581cc001c001f524dccec5d2d48341837305f1f161d95fa1c6d999a205c2a1581843617264616e6f4c6f756e67655469636b6574303037373101581cc72d0438330ed1346f4437fcc1c263ea38e933c1124c8d0f2abc6312a4484b5749433331393401484b5749433430333201484b5749433533353301484b5749433534373101825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a00256ba6a4581cb558ea5ecfa2a6e9701dab150248e94104402f789c090426eb60eb60ac4b536e656b6b696530323533014b536e656b6b696530393731014b536e656b6b696531303935014b536e656b6b696531313732014b536e656b6b696531343936014b536e656b6b696532373033014b536e656b6b696533313336014b536e656b6b696535353532014b536e656b6b696535353931014b536e656b6b696535373034014b536e656b6b696536353130014b536e656b6b69653636383601581cce273eee23fe118b1c8b0cfe96cd53213a10500be4bfcffd50c415b1a1484164614c6f74583201581cec77283fe87b1ccd7e5e8eb963de4c90abc8488e1e090b16b7f70a50a1581c476e6f6d65736b69657336395368616465734f66527567303436383701581ced3fdebb8dd5970e3dea7195a784fc403583ced5060da3d1a6dc9b88a153666c64746973706f726577617264433234323201825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a003fba06a1581cc4ce5d88666a0504d32e03c680b37e7c10017dc991e06f7448b10058b81e5564656361706f63685f706173735f30315f30303638015564656361706f63685f706173735f30315f30313432015564656361706f63685f706173735f30325f30303330015564656361706f63685f706173735f30325f30313131015564656361706f63685f706173735f30325f30313738015564656361706f63685f706173735f30335f30303335015564656361706f63685f706173735f30335f30303636015564656361706f63685f706173735f30335f30313132015564656361706f63685f706173735f30345f30303135015564656361706f63685f706173735f30345f30313630015564656361706f63685f706173735f30355f30303132015564656361706f63685f706173735f30355f30303234015564656361706f63685f706173735f30355f30313530015564656361706f63685f706173735f30355f30313638015564656361706f63685f706173735f30365f30303135015564656361706f63685f706173735f30365f30313834015564656361706f63685f706173735f30375f30303133015564656361706f63685f706173735f30375f30303239015564656361706f63685f706173735f30375f30303539015564656361706f63685f706173735f30375f30303638015564656361706f63685f706173735f30375f30303936015564656361706f63685f706173735f30375f30303938015564656361706f63685f706173735f30375f30313139015564656361706f63685f706173735f30385f30303433015564656361706f63685f706173735f30385f30303935015564656361706f63685f706173735f30385f30313433015564656361706f63685f706173735f30395f30303331015564656361706f63685f706173735f30395f3030353601581e64656361706f63685f706173735f30315f7369676e61747572655f30303701581e64656361706f63685f706173735f30355f7369676e61747572655f30303701825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a002c96c4a5581cc4ce5d88666a0504d32e03c680b37e7c10017dc991e06f7448b10058a85564656361706f63685f706173735f30395f30303638015564656361706f63685f706173735f30395f30303639015564656361706f63685f706173735f30395f30313538015564656361706f63685f706173735f31305f30303433015564656361706f63685f706173735f31305f30303933015564656361706f63685f706173735f31305f3031313701581e64656361706f63685f706173735f30395f7369676e61747572655f30303601581e64656361706f63685f706173735f31305f7369676e61747572655f30303701581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa34c000de140636f72636f72616e014e000de140736e656b6d696e6572730151000de140626e6c6973682e63727970746f01581cf4ceba3132fe3d2244e3192a8235261c63a858d0644c81076887ccf4a14b000de1404e46543138383901581cf9d1bdf6dd7d641db6fc60e47547734de1003721d66390ab9737e9aaa14f41534849424865616473303038363501581cff0daff052f6036a6ab2938f7dcb5e320837b998de3fcdd94bc7e63ea14b4d694c4b5275677a30343701825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e821a0022ca36a2581cfbb0555c19f72491d4fda83bd7f4ff45b43826d1c37f8af1a3a473aaa64d4167656e743434393739333033014d4167656e743533303139353136014d4167656e743533333237393136014d4167656e743632383036323632014d4167656e743734323234393732014d4167656e74373630393931393101581cffb98888f999a8aa2e982b605fdb0281cb18dc3953a46cc343f5dc3da5581b64656361706f63685f72656d69785f627374725f30315f3034323401581b64656361706f63685f72656d69785f627374725f30325f3031343201581b64656361706f63685f72656d69785f627374725f30335f3032373301581b64656361706f63685f72656d69785f627374725f30355f3031373601581b64656361706f63685f72656d69785f627374725f30395f3030363801825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e1a3154fc3d825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e1a0eccb212825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e1a09ddcc0c825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e1a09ddcc0c825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e1a04eee608825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e1a04eee606825839017fe4f03121e2798d49b043eb24143b41b3704b8ba4d75714166baa37c12230e9a7256b9ad357531763afa8fa7f1ddc6837b0dadec0fc224e1a04eee606021a000a4a870758202ac5782b128f38ae318a23500c4d358bd8c4232a7568b3f15db96c1bf192d55aa10081825820290a3233cbaa17f664cfcf517531d8483e1f5fe605e26521b33db431626e9d6b584094bd5ebb2d7b7b3a0efe0c29be1de71131b13776a06e3911b57b348e404e8aba784dd91c2dcce16e823c9d50f9080da7fd2c549632263c9530933f637400b008f5a11902a2a1636d7367817268747470733a2f2f756e667261636b2e6974 \ No newline at end of file diff --git a/tests/serialization/regression/008-a95de95610c63948b16fa2431f9a748a3be3e44407663c507f551ec3d5850bd1.cbor b/tests/serialization/regression/008-a95de95610c63948b16fa2431f9a748a3be3e44407663c507f551ec3d5850bd1.cbor new file mode 100644 index 0000000..1ca0798 --- /dev/null +++ b/tests/serialization/regression/008-a95de95610c63948b16fa2431f9a748a3be3e44407663c507f551ec3d5850bd1.cbor @@ -0,0 +1 @@ +84a50081825820738e8c8b6f37d659490996c9247b86b5d47d7399cea098f50a42fb446ecc09cc0201828258390114ddd6125cbf0b4c047edbb5a532197857f3e473d04261adb4643053636bf1fe22e1a7707ff7fd27236be5885907625a420c8f89d818701f821a00154ed8a2581c3b31e746a68c5bef72c0fb9f2185e6b1fad0ea2faaccfeeb275afe91a14552454143481a89c6d3cf581cf5f8e854af532d828d00381df799ba6db22d825c9b140e1d5795cf85a14e0014df10447261676f6e476f6c641b00000003931bf72782583901ae1f4fa3a6bc787ab64beb92f409c70aabbdafbb7cbf9c1199c6170a2ab2b79bca40f90994008c125f24bc923f4777fe6ee463cd21294dca821a0223dd85b841581c000ffeb007da43324aefe044555fbe5bc469c38aa5063f95dc2ff72aa24b574d542052657761726473014c536e656b205265776172647301581c001c28836c03e4b33b91ba0c905a58adcca85f26dc5228eff56308d9a146574c454e464901581c001e1f9c15e26da517e15b079ec89fe38001aea28c873f22c8331c3da14c41474958205265776172647301581c04b95368393c821f180deee8229fbd941baaf9bd748ebcdbf7adbb14a14572734552471a0018d87d581c0c78f619e54a5d00e143f66181a2c500d0c394b38a10e86cd1a23c5fa144414441581902f4581c1d7f33bd23d85e1a25d87d86fac4f199c3197a2f7afeb662a0f34e1ea150776f726c646d6f62696c65746f6b656e19615f581c1ddcb9c9de95361565392c5bdff64767492d61a96166cb16094e54bea1434f505413581c25f0fc240e91bd95dcdaebd2ba7713fc5168ac77234a3d79449fc20ca147534f43494554591902aa581c279c909f348e533da5808898f87f9a14bb2c3dfbbacccd631d927a3fa144534e454b1a00072afc581c29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6a1434d494e1901ac581c41142faeb5e3c644625966715c0a844bb4d6aeef2bcdbf535b14e5a5a1477448414e444c4501581c46a8b6aa191ca29b450ff6094ebd2f8e7739f5cb7f6a86e9a6b988a0a1457247454e53192ee0581c51a5e236c4de3af2b8020442e2a26f454fda3b04cb621c1294a0ef34a144424f4f4b1a00013dad581c533bb94a8850ee3ccbe483106489399112b74c905342cb1792a797a0a144494e4459190537581c57068f53ec47af5f73a380bf68531597ca290cb93076ab361140c2e3a14654634e45544101581c577f0b1342f8f8f4aed3388b80a8535812950c7a892495c0ecdf0f1ea1480014df10464c44541a04d4406d581c5ad8deb64bfec21ad2d96e1270b5873d0c4d0f231b928b4c39eb2435a14661646f7369611b0000000fc0340ebf581c5d16cc1a177b5d9ba9cfa9793b07e60f1fb70fea1f8aef064415d114a1434941471b0000000eb618f4ce581c5dac8536653edc12f6f5e1045d8164b9f59998d3bdc300fc92843489a1444e4d4b521a00024ffc581c5fa72fbeecbe80a3e15de1cacab54ba5e310e2c36ae85351132ed4ada14e4c6567616379506173733135353101581c682fe60c9918842b3323c43b5144bc3d52a23bd2fb81345560d73f63a1444e45574d1ac29d4a05581c6ac8ef33b510ec004fe11585f7c5a9f0c07f0c23428ab4f29c1d7d10a1444d454c441ab95ed580581c6cf6b5cf0fefbe9e69d640d8be84912bb2c9e132671954548790bcfba14f6d65736d6572697a6572303536383701581c6ed54bd43c9db4edc35c2d818092dfdbc40988ae9551c34ab38f73aca15453756e6461655265776172645469636b6574333201581c7914fae20eb2903ed6fd5021a415c1bd2626b64a2d86a304cb40ff5ea1444c49464906581c804f5544c1962a40546827cab750a88404dc7108c0f588b72964754fa144565946491869581c82dab8953c24c35ad5cda2c72272cadfdd79812197ba498b46492667a1476d797447454e5304581c8654e8b350e298c80d2451beb5ed80fc9eee9f38ce6b039fb8706bc3a1474c4f42535445521a006acfc0581c867d31740e1fa4ff05a7de492d30db97baeb2fb7c11421083fd9e9fea148524c4f425354455202581c86f8493472e9048432de4197e576af6f6caa4144c83ec63a67b79a3fa1465247454e535801581c8a1cfae21368b8bebbbed9800fec304e95cce39a2a57dc35e2e3ebaaa1444d494c4b1821581c8cfd6893f5f6c1cc954cec1a0a1460841b74da6e7803820dde62bb78a143524a561911c8581c8daefa391220bd0d8d007f3748d870f7f3c106040314c8515ccc35a5a144464c41430c581c8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd61a24c446a65644d6963726f555344197cf94c5368656e4d6963726f555344191610581c8fef2d34078659493ce161a6c7fba4b56afefa8535296a5743f69587a144414144411a596845ac581c95a427e384527065f2f8946f5e86320d0117839a5e98ea2c0b55fb00a14448554e54195c2b581c982914594559e2c66d071af25e5273ca443e966b29790aba820db4d4a14553534e454b01581c9a9693a9a37912a5097918f97918d15240c92ab729a0b7c4aa144d77a14653554e4441451b0000000261b34d62581c9abf0afd2f236a19f2842d502d0450cbcd9c79f123a9708f96fd9b96a144454e4353190365581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591b000000020d8e7571581ca2944573e99d2ed3055b808eaa264f0bf119e01fc6b18863067c63e4a1444d454c44194173581ca3931691f5c4e65d01c429e473d0dd24c51afdb6daf88e632a6c1e51a14b6f7263666178746f6b656e1a00011623581cabfb0b66866ba28c9b59f1b7e95688f55c954cd7bc2ca74283d21b5da1457374494147190dac581caee0a0bc7f5063cec94e9e11d94e386e081aecf324be8250b613c51ca145724147495801581caf2e27f580f7f08e93190a81f72462f153026d06450924726645891ba144445249501b0000000a76a85244581cb34b3ea80060ace9427bda98690a73d33840e27aaa8d6edb7f0c757aa145634e4554411864581cb6a7467ea1deb012808ef4e87b5ff371e85f7142d7b356a40d9b42a0a1581e436f726e75636f70696173205b76696120436861696e506f72742e696f5d1a01eea999581cbf5aebb0481d3b0031eac8b495808235f7d5f252421504e64f3729dda1474d494e544b455901581cc48cbb3d5e57ed56e276bc45f99ab39abe94e6cd7ac39fb402da47ada1480014df105553444d19836b581cc881c20e49dbaca3ff6cef365969354150983230c39520b917f5cf7ca1444e696b65194715581cca0005b60e1f30a1c0eec0a8a649e70125822abb8a0bcef351722d4ea1445449414701581cda8c30857834c6ae7203935b89278c532b3995245295456f993e1d24a1424c511904cb581cdda5fdb1002f7389b33e036b6afee82a8189becb6cba852e8b79b4fba1480014df1047454e531a1065d98f581cdefca4b95934aec82b818cbafd4bd0ab45511c1d690b58759f07d9b1a144567946691864581ceb0908a7a3a419c6ccb0f92f7d8d895441b7b3aa09c348dededba9dfa14348594e1a0b4a5e42581cedfd7a1d77bcb8b884c474bdc92a16002d1fb720e454fa6e99344479a1434e54581a00038d93581cee0633e757fdd1423220f43688c74678abde1cead7ce265ba8a24fcda14443424c5019ec9b581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa1486c6163656d65757001581cf43669eba3576793e5f258be069a3da1f495a911a90baf94b3d05998a147544d494c4b763201581cf43a62fdc3965df486de8a0d32fe800963589c41b38946602a0dc535a144414749581b00000002541a2546581cf66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b69880a1446955534419143c581cfbae99b8679369079a7f6f0da14a2cf1c2d6bfd3afdf3a96a64ab67aa1490014df1047454e53581b000000129bcbdb8f581cfc11a9ef431f81b837736be5f53e4da29b9469c983d07f321262ce61a1444652454e1904c5581cfd5a192b76cb73f004edde3993c31f8846845d858fa29a19b8a19869a14348594e1a03dd77eb581cffbe813449ec642880ec645af88a4df2f586b0b677c44ecf4a1ef834a145414d494c4b01021a00049365031a082ab8d405a1581de12ab2b79bca40f90994008c125f24bc923f4777fe6ee463cd21294dca1a0031ba2da100828258207431760839b5f319e73cbad81d27f71458fbdab47535491fd9b5aa3008af93105840d7352c17de002fe5cd8fe17d692c3db33b0b2ed82753858b242ea2911de996b30b3044a0205d4b67711724784db6a8884df804dc055a449ea6301b9cb0f92406825820b543169b2a79f8a06165b58520ce589634ef1ec7729957c2c392a9ceece379e55840fa5311cc9e69f985eceafff52908453b874999def5916e13cc8d01f863cd47c1544eb2446cf0a673f34698de0e57d5e218f8e23fe8d2be3442f880afc6db5a0cf5f6 \ No newline at end of file diff --git a/tests/serialization/regression/009-fc5fe06f4bff2de1556854d019a5a0d9ecc980f5b65c2b37f61792856e391446.cbor b/tests/serialization/regression/009-fc5fe06f4bff2de1556854d019a5a0d9ecc980f5b65c2b37f61792856e391446.cbor new file mode 100644 index 0000000..4aad08a --- /dev/null +++ b/tests/serialization/regression/009-fc5fe06f4bff2de1556854d019a5a0d9ecc980f5b65c2b37f61792856e391446.cbor @@ -0,0 +1 @@ +84a700818258202e6a0334dde1e6c94bdfd41593aed1cec497604072cefe3330d2e6bbaf20ec9b000184a300583911c3e28c36c3447315ba5a56f33da6a6ddc1770a876a8d9f0cb3a97c4ca642b055186e8364f0e9e99c059b504a95ca641466af102197aafa25011a64e92140028201d818590134d8799fd8799f581c04e5d80bce72eedaa5ba8098ebe427c32569378334e69e36f95c7656ffd8799fd8799f581c04e5d80bce72eedaa5ba8098ebe427c32569378334e69e36f95c7656ffd8799fd8799fd8799f581ca642b055186e8364f0e9e99c059b504a95ca641466af102197aafa25ffffffffd87980d8799fd8799f581c04e5d80bce72eedaa5ba8098ebe427c32569378334e69e36f95c7656ffd8799fd8799fd8799f581ca642b055186e8364f0e9e99c059b504a95ca641466af102197aafa25ffffffffd87980d8799f581cf5808c2c990d86da54bfc97d89cee6efa20cd8461616359478d96b4c5820331e2f026a280fd156f48e0a9806ea22642f40da74a39b9d7ae6123fbdd55992ffd8799fd87a80d8799f1a64ac1840ff1b00000001f8df16a0d87980ff1a001e8480d87a80ff82583901ffebcc9e31749eb5803e396202d84e3b436ec362463b2fd70fb4c8819086fc9117b2dadb43da1f922c46039a47d51bff09433dcdd18f1cce1a001dc1308258390104e5d80bce72eedaa5ba8098ebe427c32569378334e69e36f95c7656a642b055186e8364f0e9e99c059b504a95ca641466af102197aafa251a001e84808258390104e5d80bce72eedaa5ba8098ebe427c32569378334e69e36f95c7656a642b055186e8364f0e9e99c059b504a95ca641466af102197aafa251b0000000103edf2db021a000372b1031a082aaad50758202dc628086810b33c5d41765f60916e10dd75a406a4f57db79f2f4c038cb9a95f081a082a9cc50e82581c04e5d80bce72eedaa5ba8098ebe427c32569378334e69e36f95c7656581ca642b055186e8364f0e9e99c059b504a95ca641466af102197aafa25a10082825820611d8196f4d435151a8ef0dc100c7e97c0e9de83884122b117a462cec6b6ad765840261e558c1d3d67e0fcead9b9dea226e811f4a5a0525e8b2279a4fe1482583620958a13aa45a33697146cdfe52a615c168d66ddc44a397956446b546419530b0b825820344754688387215085ba6a90c50a4ac2f1b8e0286bd68c058393b452bf5bb9245840fdec2f8a6a56119074162f56af2aa96e93440d1a3a71049e6372c5f0ca5c31205c0d81be761f22ec5949d0b8d27f8fb002db3cc0971c08bc5f41e376d60d5b0ff5a11902a2a1636d7367826f44657868756e74657220547261646570506172746e657220544150544f4f4c53 \ No newline at end of file diff --git a/tests/serialization/serialization.test.ts b/tests/serialization/serialization.test.ts index efc47f2..04700c0 100644 --- a/tests/serialization/serialization.test.ts +++ b/tests/serialization/serialization.test.ts @@ -8,6 +8,7 @@ import { Schema } from "../../conway-cddl/codegen/types"; import { TransactionInfo } from "../test_types"; import { test } from "@jest/globals"; import * as Out from "../../src/generated.ts" +import { exit } from "node:process"; // Each component of a transaction is identified by its type and its location // in the transaction ('path'). @@ -17,12 +18,21 @@ type TestParameters = { txCount: number, txHash: string, componentIndex: number, // Result type for retrieving fields/elements/entries inside the different components type AccessSubComponent = { sub: any | undefined, subPath: string } +// Locations for retrieved transactions +const stagingPath = "tests/serialization/staging"; +const regressionPath = "tests/serialization/regression"; + // The transaction information obtained from get_transactions -let transactionInfos: Array = []; +let stagingTransactionInfos: Array = []; +let regressionTransactionInfos: Array = []; +// This set may grow during testing when transactions are moved from staging +// to regression. +let regressionTransactionHashes: Set = new Set(); // The CSL transactions let transactionsCsl: Array = []; -// array of parameters for the test function -let testsTable: Array = []; +// Arrays of parameters for the test function +let stagingTestsTable: Array = []; +let regressionTestsTable: Array = []; // Types we are not interested in (or that are not supported) const typeBlacklist = new Set([ @@ -42,39 +52,43 @@ const fieldsBlacklist = new Set([ // Whether to log extraction messages or not const traceExtraction = false; -// Whether to succeed when a $$CANT_READ error is found -const succeedWithUnimplementedFunctions = false; const extractLog = traceExtraction ? (...args : any) => console.log(...args) : () => { ; }; -// Retrieve TXs from FIFO... -extractLog("(serialization.test.ts) Reading transactions from get_transactions...") -const transactionInfoText = fs.readFileSync("transaction_fifo", { "encoding": "utf8" }); -for (const chunk of transactionInfoText.trimEnd().split('\n')) { - let transactionInfo: TransactionInfo = JSON.parse(chunk); - transactionInfos.push(transactionInfo); -} -extractLog("(serialization.test.ts) All transactions read.") - -// Build tests table -extractLog("(serialization.test.ts) Building tests table...") -let componentIndex = 0; -for (const [index, txInfo] of transactionInfos.entries()) { - extractLog(`(serialization.test.ts) Decomposing TX ${txInfo.hash}`) - let tx = csl.Transaction.from_hex(txInfo.cbor); - transactionsCsl.push(tx); - const components = explodeTx(tx) - for (const component of components) { - testsTable.push({ - txCount: index - , txHash: txInfo.hash - , component: component - , componentIndex: componentIndex - }); - componentIndex++; - } +// Retrieve TXs from staging and regression +console.log("(serialization.test.ts) Reading transactions from regression..."); + +regressionTransactionInfos = retrieveTxsFromDir(regressionPath); +// We add all the regression transaction hashes to a set +regressionTransactionInfos.forEach((info) => regressionTransactionHashes.add(info.hash)); + +console.log("(serialization.test.ts) Reading transactions from staging...") + +if (!fs.existsSync(stagingPath)) { + console.log("(serialization.test.ts) Staging path does not exist! Run get_transactions.ts to create it"); + exit(-1); } -extractLog("(serialization.test.ts) Tests table prepared.") + +stagingTransactionInfos = retrieveTxsFromDir(stagingPath); +// We filter out all transactions that are already covered in the regression suite +stagingTransactionInfos = stagingTransactionInfos.filter((info) => !regressionTransactionHashes.has(info.hash)) + +console.log("(serialization.test.ts) All transactions read.") + +// Build test tables +console.log("(serialization.test.ts) Building staging test table...") + +stagingTestsTable = buildTestTable(stagingTransactionInfos); + +console.log(`(serialization.test.ts) Staging tests: ${stagingTestsTable.length}`) + +console.log("(serialization.test.ts) Building regression test table...") + +regressionTestsTable = buildTestTable(regressionTransactionInfos); + +// console.log(`(serialization.test.ts) Regression tests: ${regressionTestsTable.length}`) + +console.log("(serialization.test.ts) Tests tables prepared.") // Decompose a csl transaction into its constituent parts function explodeTx(tx: csl.Transaction): Array { @@ -119,6 +133,7 @@ function explodeValue(key: string, value: any, schema: Schema, schemata: any, co break; } case "newtype": { + extractLog("Found a newtype while extracting. Ignoring...") // newtypes don't have sub-components break; } @@ -184,9 +199,10 @@ function explodeValue(key: string, value: any, schema: Schema, schemata: any, co } break; case "enum": + extractLog("Found an enum while extracting. Ignoring...") break; // enums don't have subcomponents case "enum_simple": - extractLog("Found and enum_simple while extracting. Ignoring...") + extractLog("Found an enum_simple while extracting. Ignoring...") break; } } @@ -241,56 +257,129 @@ function getTagged(value: any, variantName: string, variantType: string, path: s } return {sub: value[accessor](), subPath: subPath }; } -// We export the missing classes and methods to CSV files, so we -// create the dir in case it doesn't exist +// We export the failing components to a CSV file, so we create the reports +// directory if it doesn't exit. try { fs.mkdirSync("tests/reports") } catch(_err) { - console.log("Failed to create reports directory"); - console.log("Skipping dir creation...") + console.log("(serialization.test.ts) Failed to create reports directory"); + console.log("(serialization.test.ts) Skipping dir creation...") }; const reportFile: number = fs.openSync("tests/reports/serialization_failed_classes.csv", "w"); -fs.writeSync(reportFile, "Test number,Class,Failure reason"); +fs.writeSync(reportFile, "Test N.,TX hash,Class,Failure reason,Expected,Obtained\n"); describe("Serialization/deserialization roundtrip tests", () => { // Used for debugging - let testN = 0; - test.skip(`Test N. ${testN}`, () => { - console.log(Buffer.from(testsTable[testN].component.cbor).toString('hex')); - let class_key = testsTable[testN].component.type as keyof (typeof Out); - let deserialized = (Out[class_key] as any).from_bytes(testsTable[testN].component.cbor); - let serialized = deserialized.to_bytes(); - expect(serialized).toStrictEqual(testsTable[testN].component.cbor); + // let testN = 0; + // test.skip(`Test N. ${testN}`, () => { + // console.log(Buffer.from(testsTable[testN].component.cbor).toString('hex')); + // let class_key = testsTable[testN].component.type as keyof (typeof Out); + // let deserialized = (Out[class_key] as any).from_bytes(testsTable[testN].component.cbor); + // let serialized = deserialized.to_bytes(); + // expect(serialized).toStrictEqual(testsTable[testN].component.cbor); + // }) + + describe("Staging transactions", () => { + test.each(stagingTestsTable)("($componentIndex) TX $txCount ($txHash)\n\tComponent $component.path ($component.type) ", (params) => { + let class_key = params.component.type as keyof (typeof Out); + // We manually test things first to generate the reports. + try { + const result: Uint8Array = roundtrip(Out[class_key], params.component.cbor); + // if it doesn't match the expected CBOR, we record it in the report file + if (!(Buffer.compare(result, params.component.cbor) == 0)) { + writeRoundtripErrorReport(reportFile, class_key, params, result); + addToRegressionSuite(params); + } + } catch(err) { + // if it throws, we record it in the report file + writeExceptionReport(reportFile, class_key, params, err); + addToRegressionSuite(params); + } + // Now we run the actual jest tests + expect(roundtrip(Out[class_key], params.component.cbor)).toEqual(params.component.cbor); + }); + }) + + describe("Regression transactions", () => { + test.each(regressionTestsTable)("($componentIndex) TX $txCount ($txHash)\n\tComponent $component.path ($component.type) ", (params) => { + let class_key = params.component.type as keyof (typeof Out); + try { + const result: Uint8Array = roundtrip(Out[class_key], params.component.cbor); + if (!(Buffer.compare(result, params.component.cbor) == 0)) { + writeRoundtripErrorReport(reportFile, class_key, params, result); + } + } catch(err) { + writeExceptionReport(reportFile, class_key, params, err); + } + expect(roundtrip(Out[class_key], params.component.cbor)).toEqual(params.component.cbor); + }); }) - test.each(testsTable)("($componentIndex) TX $txCount ($txHash)\n\tComponent $component.path ($component.type) ", (params) => { - let class_key = params.component.type as keyof (typeof Out); - let result: boolean = false; - try { - result = roundtrip_eq(Out[class_key], params.component.cbor); - } catch(err) { - // if it will fail, we record it in the report file - fs.writeSync(reportFile, `${params.componentIndex},${class_key},throws exception\n`, null, "utf-8"); - } - if (!result) { - fs.writeSync(reportFile, `${params.componentIndex},${class_key},deserialization/serialization fails\n`, null, "utf-8"); - } - expect(result).toBeTruthy(); - }); }); -function roundtrip_eq(someClass: any, cbor: Uint8Array): boolean { - let deserialized: any; - try { - deserialized = someClass.from_bytes(cbor); - } catch(err) { - if(err instanceof TypeError && err.message === "$$CANT_READ is not a function" && succeedWithUnimplementedFunctions) { - return true; - } else { - throw(err); - } +// might throw exceptions! +function roundtrip(someClass: any, cbor: Uint8Array): Uint8Array { + let deserialized = someClass.from_bytes(cbor); + return deserialized.to_bytes(); +} + +function retrieveTxsFromDir(path: string): Array { + let files: Array = fs.readdirSync(path); + // filter out hidden files + const matchHidden = /^\.\w+/ + files = files.filter((path) => !path.match(matchHidden)); + + let tinfos: Array = []; + for (const file of files) { + const fileRegex = /(?[0-9]{3})-(?[0123456789abcdef]+)\.cbor/; + const match = file.match(fileRegex); + if (!match || !match.groups || !match.groups["hash"]) { + console.log(`(serialization.test.ts) Failed to parse filename: ${file}`); + exit(-1); + } else { + const cbor = fs.readFileSync(`${path}/${file}`, { encoding: "utf-8"}); + tinfos.push({"hash": match.groups["hash"], "cbor": cbor}) } - let serialized: Uint8Array = deserialized.to_bytes(); - return (Buffer.compare(serialized, cbor) == 0) + } + return tinfos; +} + +function buildTestTable(infos: Array): Array { + let componentIndex = 0; + let testTable: Array = []; + for (const [index, info] of infos.entries()) { + extractLog(`(serialization.test.ts) Decomposing TX ${info.hash}`) + let tx = csl.Transaction.from_hex(info.cbor); + transactionsCsl.push(tx); + const components = explodeTx(tx) + for (const component of components) { + testTable.push({ + txCount: index + , txHash: info.hash + , component: component + , componentIndex: componentIndex + }); + componentIndex++; + } + } + return testTable; +} + +function writeExceptionReport(reportFile: number, cls: string, params: TestParameters, err: any): void { + fs.writeSync(reportFile, `${params.componentIndex},${params.txHash},${cls},Throws exception: '${err}',,\n`); +} + +function writeRoundtripErrorReport(reportFile: number, cls: string, params: TestParameters, result: Uint8Array): void { + fs.writeSync(reportFile, `${params.componentIndex},${params.txHash},${cls},Roundtrip fails,${params.component.cbor},${result}\n`); +} + +function addToRegressionSuite(params: TestParameters): void { + if (!regressionTransactionHashes.has(params.txHash)) { + fs.writeFileSync( + `${regressionPath}/${regressionTransactionHashes.size.toString().padStart(3, "0")}-${params.txHash}.cbor` + , stagingTransactionInfos[params.txCount].cbor + ); + regressionTransactionHashes.add(params.txHash); + } }