From 7d113b2cf6685f68bfbcf86cb8fa82e065e88c79 Mon Sep 17 00:00:00 2001 From: kousu Date: Tue, 2 Apr 2019 16:14:39 -0400 Subject: [PATCH 1/8] Test cases for structured-append, the QR Code feature that lets you write "M/N" page numberings. Some of the output.jsons were hand-massaged to be what they should be, rather than what generate-test-data currently would give, because this feature doesn't work yet. amen.mp3 is public domain from https://sampleswap.org//samples-ghost/DRUM%20LOOPS%20and%20BREAKS/161%20to%20180%20bpm/128[kb]161_amenvar3.aif.mp3 --- tests/amen.mp3 | Bin 0 -> 8427 bytes .../end-to-end/structured-append-01/input.png | Bin 0 -> 1806 bytes .../structured-append-01/output.json | 624 +++++++++ .../end-to-end/structured-append-02/input.png | Bin 0 -> 1819 bytes .../structured-append-02/output.json | 624 +++++++++ .../end-to-end/structured-append-03/input.png | Bin 0 -> 1830 bytes .../structured-append-03/output.json | 624 +++++++++ .../end-to-end/structured-append-04/input.png | Bin 0 -> 1833 bytes .../structured-append-04/output.json | 1215 +++++++++++++++++ .../end-to-end/structured-append-05/input.png | Bin 0 -> 1813 bytes .../structured-append-05/output.json | 624 +++++++++ .../end-to-end/structured-append-06/input.png | Bin 0 -> 1822 bytes .../structured-append-06/output.json | 1215 +++++++++++++++++ .../end-to-end/structured-append-07/input.png | Bin 0 -> 1817 bytes .../structured-append-07/output.json | 1215 +++++++++++++++++ .../end-to-end/structured-append-08/input.png | Bin 0 -> 1822 bytes .../structured-append-08/output.json | 629 +++++++++ .../end-to-end/structured-append-09/input.png | Bin 0 -> 1811 bytes .../structured-append-09/output.json | 624 +++++++++ .../end-to-end/structured-append-10/input.png | Bin 0 -> 1827 bytes .../structured-append-10/output.json | 1215 +++++++++++++++++ .../end-to-end/structured-append-11/input.png | Bin 0 -> 1804 bytes .../structured-append-11/output.json | 1215 +++++++++++++++++ .../end-to-end/structured-append-12/input.png | Bin 0 -> 1817 bytes .../structured-append-12/output.json | 1215 +++++++++++++++++ .../end-to-end/structured-append-13/input.png | Bin 0 -> 1834 bytes .../structured-append-13/output.json | 1215 +++++++++++++++++ .../end-to-end/structured-append-14/input.png | Bin 0 -> 1808 bytes .../structured-append-14/output.json | 1215 +++++++++++++++++ .../end-to-end/structured-append-15/input.png | Bin 0 -> 1813 bytes .../structured-append-15/output.json | 549 ++++++++ tests/structured-append-test.ts | 72 + 32 files changed, 14090 insertions(+) create mode 100644 tests/amen.mp3 create mode 100644 tests/end-to-end/structured-append-01/input.png create mode 100644 tests/end-to-end/structured-append-01/output.json create mode 100644 tests/end-to-end/structured-append-02/input.png create mode 100644 tests/end-to-end/structured-append-02/output.json create mode 100644 tests/end-to-end/structured-append-03/input.png create mode 100644 tests/end-to-end/structured-append-03/output.json create mode 100644 tests/end-to-end/structured-append-04/input.png create mode 100644 tests/end-to-end/structured-append-04/output.json create mode 100644 tests/end-to-end/structured-append-05/input.png create mode 100644 tests/end-to-end/structured-append-05/output.json create mode 100644 tests/end-to-end/structured-append-06/input.png create mode 100644 tests/end-to-end/structured-append-06/output.json create mode 100644 tests/end-to-end/structured-append-07/input.png create mode 100644 tests/end-to-end/structured-append-07/output.json create mode 100644 tests/end-to-end/structured-append-08/input.png create mode 100644 tests/end-to-end/structured-append-08/output.json create mode 100644 tests/end-to-end/structured-append-09/input.png create mode 100644 tests/end-to-end/structured-append-09/output.json create mode 100644 tests/end-to-end/structured-append-10/input.png create mode 100644 tests/end-to-end/structured-append-10/output.json create mode 100644 tests/end-to-end/structured-append-11/input.png create mode 100644 tests/end-to-end/structured-append-11/output.json create mode 100644 tests/end-to-end/structured-append-12/input.png create mode 100644 tests/end-to-end/structured-append-12/output.json create mode 100644 tests/end-to-end/structured-append-13/input.png create mode 100644 tests/end-to-end/structured-append-13/output.json create mode 100644 tests/end-to-end/structured-append-14/input.png create mode 100644 tests/end-to-end/structured-append-14/output.json create mode 100644 tests/end-to-end/structured-append-15/input.png create mode 100644 tests/end-to-end/structured-append-15/output.json create mode 100644 tests/structured-append-test.ts diff --git a/tests/amen.mp3 b/tests/amen.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..244afc3b0531bbecfd13231d55cc366b87e2a092 GIT binary patch literal 8427 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 X1Hmx?0CW|!zJG2Oh;a+)|8M;to)rIq literal 0 HcmV?d00001 diff --git a/tests/end-to-end/structured-append-01/input.png b/tests/end-to-end/structured-append-01/input.png new file mode 100644 index 0000000000000000000000000000000000000000..a701f6422b4b356fe64e21865c21d65cb9bb2666 GIT binary patch literal 1806 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 JPDHLkV1nWuYo`DJ literal 0 HcmV?d00001 diff --git a/tests/end-to-end/structured-append-02/output.json b/tests/end-to-end/structured-append-02/output.json new file mode 100644 index 00000000..d1bdb139 --- /dev/null +++ b/tests/end-to-end/structured-append-02/output.json @@ -0,0 +1,624 @@ +{ + "binaryData": [ + 81, + 99, + 106, + 158, + 237, + 78, + 223, + 239, + 46, + 222, + 187, + 246, + 245, + 44, + 199, + 26, + 12, + 172, + 89, + 149, + 103, + 150, + 187, + 94, + 151, + 249, + 98, + 158, + 173, + 91, + 213, + 10, + 238, + 39, + 96, + 146, + 82, + 11, + 8, + 140, + 28, + 234, + 243, + 81, + 52, + 159, + 100, + 104, + 31, + 230, + 202, + 177, + 30, + 153, + 97, + 126, + 255, + 175, + 34, + 9, + 81, + 184, + 96, + 3, + 225, + 10, + 231, + 255, + 243, + 64, + 196, + 36, + 31, + 138, + 122, + 196, + 11, + 207, + 64, + 0, + 136, + 2, + 178, + 160, + 168, + 64, + 22, + 9, + 4, + 194, + 227, + 22, + 222, + 7, + 149, + 34, + 50, + 85, + 77, + 167, + 60, + 30, + 214, + 57, + 34, + 235, + 116, + 138, + 121, + 235, + 78, + 183, + 227, + 186, + 154, + 185, + 154, + 184, + 153, + 236, + 215, + 187, + 187, + 177, + 251, + 213, + 68, + 112, + 253, + 255, + 197, + 255, + 247, + 87, + 235, + 247, + 243, + 67, + 83, + 218, + 146, + 186, + 159, + 30, + 52, + 36, + 28, + 64, + 228, + 104, + 128, + 242, + 163, + 226, + 59, + 72, + 178, + 40, + 176, + 171, + 145, + 90, + 242, + 138, + 185, + 91, + 240, + 10, + 81, + 246, + 170, + 255, + 243, + 96, + 196, + 0, + 31, + 171, + 214, + 192, + 12, + 194, + 68, + 153, + 194, + 13, + 88, + 112, + 164, + 196, + 86, + 42, + 140, + 57, + 169, + 190, + 109, + 54, + 138, + 212, + 24, + 166, + 84, + 57, + 158, + 70, + 193, + 194, + 104, + 198, + 198, + 1, + 39, + 10, + 64, + 209, + 50, + 217, + 25, + 52, + 223, + 44, + 252, + 131, + 238, + 13, + 98, + 177, + 66, + 101, + 104, + 203, + 85, + 69, + 121, + 204, + 26, + 96, + 174, + 37, + 217, + 214, + 136, + 204, + 66, + 207, + 76, + 234, + 201, + 89, + 24, + 234, + 237, + 157, + 212, + 179, + 42, + 206, + 82, + 208, + 168, + 246, + 217, + 200, + 135, + 100, + 51, + 211, + 70, + 118, + 215, + 107, + 65, + 157, + 22, + 221, + 110, + 157, + 251, + 179, + 210, + 169, + 211, + 66, + 77, + 253, + 93, + 117, + 171, + 229, + 74, + 43, + 34, + 94, + 143, + 106, + 43, + 207, + 95, + 99, + 250, + 213, + 54, + 169, + 163, + 52, + 106, + 61, + 186, + 218, + 221, + 2, + 0, + 224, + 106, + 177, + 200, + 47, + 0, + 120, + 112, + 84, + 13, + 244, + 213, + 91, + 121, + 255, + 243, + 80, + 196, + 16, + 29, + 41, + 154, + 189, + 106, + 123, + 6, + 80, + 97, + 4, + 172, + 13, + 206, + 10, + 163, + 42, + 49, + 74, + 44, + 88, + 82, + 90, + 116, + 0, + 33, + 16, + 148, + 144, + 91, + 168, + 80, + 98, + 108, + 110, + 144, + 92, + 129, + 4, + 8, + 10, + 228, + 219, + 26, + 232, + 22, + 155, + 82, + 141, + 157, + 251, + 177, + 122, + 253, + 208, + 33, + 155, + 31, + 150, + 241, + 1, + 5, + 146, + 19, + 121, + 112, + 227, + 38, + 82, + 211, + 166, + 133, + 212, + 124, + 164, + 210, + 84, + 31, + 181, + 75, + 131, + 66, + 210, + 104, + 109, + 122, + 214, + 52, + 130, + 144, + 2, + 22, + 100, + 141, + 64, + 82, + 2, + 231, + 87, + 45, + 91, + 182, + 104, + 178, + 90, + 12, + 161, + 83, + 108, + 74, + 3, + 18, + 25, + 178, + 72, + 154, + 78, + 88, + 170, + 67, + 78, + 166, + 85, + 74, + 24, + 133, + 255, + 243, + 80, + 196, + 16, + 30, + 66, + 74, + 205, + 190, + 121, + 134, + 148, + 194, + 119, + 21, + 173, + 73, + 147, + 136, + 28, + 20, + 145, + 106, + 254, + 164, + 21, + 11, + 6, + 61, + 21, + 60, + 49, + 169, + 67, + 17, + 160, + 180, + 61, + 30, + 85, + 168, + 48, + 181, + 17, + 5, + 20, + 190, + 2, + 134, + 161, + 171, + 28, + 225, + 220, + 149, + 179, + 114, + 169, + 214, + 130, + 171, + 59, + 16, + 38, + 169, + 21, + 152, + 195, + 76, + 219, + 215, + 92, + 47, + 228, + 100, + 159, + 73, + 233, + 195, + 63, + 207, + 36, + 55, + 188, + 62, + 143, + 114, + 93, + 34, + 87, + 76, + 80, + 10, + 125, + 242, + 205, + 138, + 224, + 34, + 52, + 234, + 46, + 5, + 73, + 241, + 70, + 197, + 217, + 205, + 57, + 143, + 90, + 114, + 20, + 7, + 83, + 153, + 133, + 102, + 73, + 55, + 133, + 49, + 95, + 21, + 90 + ], + "data": "", + "chunks": [], + "location": { + "topRightCorner": { + "x": 254.99999999999997, + "y": 12.000000000000002 + }, + "topLeftCorner": { + "x": 12.000000000000002, + "y": 12.000000000000002 + }, + "bottomRightCorner": { + "x": 254.99999999999997, + "y": 254.99999999999997 + }, + "bottomLeftCorner": { + "x": 12.000000000000002, + "y": 254.99999999999997 + }, + "topRightFinderPattern": { + "x": 244.5, + "y": 22.5 + }, + "topLeftFinderPattern": { + "x": 22.5, + "y": 22.5 + }, + "bottomLeftFinderPattern": { + "x": 22.5, + "y": 244.5 + }, + "bottomRightAlignmentPattern": { + "x": 235.5, + "y": 235.5 + } + } +} diff --git a/tests/end-to-end/structured-append-03/input.png b/tests/end-to-end/structured-append-03/input.png new file mode 100644 index 0000000000000000000000000000000000000000..31a4a592b7f68198754b3f51716015467d777f07 GIT binary patch literal 1830 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 XkEaog%8e~E00000NkvXXu0mjfzV~zw literal 0 HcmV?d00001 diff --git a/tests/end-to-end/structured-append-04/output.json b/tests/end-to-end/structured-append-04/output.json new file mode 100644 index 00000000..cda37289 --- /dev/null +++ b/tests/end-to-end/structured-append-04/output.json @@ -0,0 +1,1215 @@ +{ + "binaryData": [ + 218, + 163, + 239, + 71, + 252, + 254, + 200, + 123, + 38, + 144, + 197, + 212, + 43, + 97, + 27, + 15, + 202, + 225, + 86, + 255, + 175, + 140, + 83, + 143, + 5, + 15, + 197, + 207, + 123, + 170, + 0, + 61, + 55, + 255, + 251, + 89, + 72, + 201, + 167, + 100, + 161, + 56, + 88, + 255, + 243, + 80, + 196, + 13, + 27, + 219, + 214, + 218, + 94, + 72, + 202, + 216, + 177, + 53, + 153, + 32, + 88, + 251, + 230, + 229, + 49, + 82, + 200, + 86, + 220, + 4, + 51, + 208, + 93, + 67, + 54, + 52, + 10, + 2, + 29, + 169, + 170, + 200, + 51, + 201, + 202, + 12, + 168, + 171, + 110, + 83, + 138, + 196, + 20, + 24, + 146, + 103, + 19, + 250, + 106, + 93, + 91, + 100, + 139, + 230, + 118, + 170, + 209, + 40, + 94, + 53, + 171, + 170, + 177, + 15, + 238, + 213, + 219, + 126, + 155, + 78, + 30, + 219, + 14, + 186, + 167, + 50, + 83, + 167, + 255, + 163, + 209, + 62, + 155, + 223, + 93, + 115, + 22, + 42, + 46, + 105, + 19, + 115, + 116, + 53, + 231, + 235, + 145, + 210, + 44, + 84, + 254, + 12, + 254, + 157, + 53, + 0, + 41, + 34, + 29, + 223, + 89, + 19, + 74, + 89, + 21, + 6, + 116, + 144, + 93, + 10, + 187, + 244, + 137, + 255, + 243, + 64, + 196, + 18, + 26, + 250, + 94, + 218, + 126, + 73, + 138, + 92, + 99, + 50, + 238, + 16, + 34, + 65, + 137, + 26, + 145, + 233, + 229, + 229, + 231, + 251, + 162, + 146, + 157, + 130, + 241, + 227, + 230, + 21, + 113, + 172, + 32, + 177, + 74, + 177, + 123, + 152, + 205, + 133, + 106, + 116, + 47, + 244, + 61, + 196, + 102, + 83, + 212, + 107, + 38, + 58, + 239, + 116, + 216, + 89, + 109, + 157, + 217, + 26, + 99, + 157, + 42, + 221, + 74, + 140, + 202, + 218, + 169, + 155, + 160, + 198, + 159, + 124, + 124, + 109, + 43, + 241, + 230, + 73, + 93, + 55, + 85, + 7, + 146, + 65, + 231, + 142, + 187, + 90, + 182, + 166, + 24, + 110, + 128, + 205, + 223, + 40, + 4, + 255, + 243, + 80, + 196, + 1, + 26, + 123, + 206, + 206, + 126, + 96, + 196, + 236, + 24, + 218, + 21, + 150, + 166, + 2, + 69, + 198, + 202, + 76, + 173, + 42, + 194, + 99, + 183, + 190, + 176, + 253, + 239, + 244, + 198, + 146, + 230, + 44, + 20, + 60, + 212, + 100, + 84, + 136, + 154, + 152, + 145, + 80, + 202, + 182, + 81, + 48, + 67, + 38, + 78, + 30, + 227, + 126, + 178, + 173, + 12, + 41, + 17, + 135, + 143, + 39, + 79, + 119, + 177, + 184, + 62, + 143, + 77, + 248, + 35, + 55, + 68, + 90, + 221, + 65, + 181, + 147, + 232, + 150, + 46, + 136, + 140, + 215, + 168, + 97, + 145, + 58, + 122, + 160, + 167, + 174, + 255, + 213, + 171, + 86, + 245, + 78, + 202, + 210, + 34, + 174, + 103, + 75, + 161, + 254, + 203, + 238, + 250, + 235, + 145, + 211, + 248, + 119, + 211, + 6, + 247, + 236, + 154, + 2, + 52, + 124, + 39, + 22, + 150, + 180, + 10, + 255, + 243, + 80, + 196, + 12, + 27, + 51, + 22, + 193, + 180, + 98, + 68, + 56, + 29, + 16, + 106, + 200, + 17, + 157, + 149, + 73, + 211, + 89, + 89, + 224, + 124, + 87, + 2, + 88, + 170, + 158, + 83, + 30, + 202, + 40, + 91, + 146, + 81, + 40, + 54, + 207, + 162, + 41, + 39, + 127, + 125, + 170, + 231, + 80, + 29, + 5, + 119, + 246, + 238, + 71, + 33, + 116, + 181, + 142, + 105, + 157, + 27, + 83, + 21, + 45, + 65, + 136, + 231, + 236, + 246, + 53, + 26, + 161, + 206, + 242, + 91, + 50, + 151, + 172, + 69, + 221, + 181, + 250, + 114, + 202, + 84, + 111, + 105, + 236, + 183, + 103, + 118, + 114, + 181, + 72, + 36, + 100, + 48, + 42, + 58, + 135, + 234, + 154, + 196, + 84, + 136, + 115, + 226, + 0, + 105, + 0, + 205, + 246, + 255, + 248, + 209, + 73, + 57, + 187, + 146, + 137, + 206, + 106, + 179, + 177, + 74, + 226, + 173, + 117, + 216, + 255, + 243, + 112, + 196, + 20, + 43, + 171, + 146, + 226, + 94, + 194, + 71, + 101, + 35, + 42, + 121, + 40, + 250, + 115, + 43, + 214, + 28, + 10, + 27, + 175, + 27, + 160, + 170, + 225, + 191, + 114, + 138, + 244, + 171, + 204, + 179, + 107, + 153, + 31, + 37, + 174, + 154, + 97, + 192, + 17, + 201, + 75 + ], + "data": "", + "chunks": [ + { + "type": "byte", + "bytes": [ + 218, + 163, + 239, + 71, + 252, + 254, + 200, + 123, + 38, + 144, + 197, + 212, + 43, + 97, + 27, + 15, + 202, + 225, + 86, + 255, + 175, + 140, + 83, + 143, + 5, + 15, + 197, + 207, + 123, + 170, + 0, + 61, + 55, + 255, + 251, + 89, + 72, + 201, + 167, + 100, + 161, + 56, + 88, + 255, + 243, + 80, + 196, + 13, + 27, + 219, + 214, + 218, + 94, + 72, + 202, + 216, + 177, + 53, + 153, + 32, + 88, + 251, + 230, + 229, + 49, + 82, + 200, + 86, + 220, + 4, + 51, + 208, + 93, + 67, + 54, + 52, + 10, + 2, + 29, + 169, + 170, + 200, + 51, + 201, + 202, + 12, + 168, + 171, + 110, + 83, + 138, + 196, + 20, + 24, + 146, + 103, + 19, + 250, + 106, + 93, + 91, + 100, + 139, + 230, + 118, + 170, + 209, + 40, + 94, + 53, + 171, + 170, + 177, + 15, + 238, + 213, + 219, + 126, + 155, + 78, + 30, + 219, + 14, + 186, + 167, + 50, + 83, + 167, + 255, + 163, + 209, + 62, + 155, + 223, + 93, + 115, + 22, + 42, + 46, + 105, + 19, + 115, + 116, + 53, + 231, + 235, + 145, + 210, + 44, + 84, + 254, + 12, + 254, + 157, + 53, + 0, + 41, + 34, + 29, + 223, + 89, + 19, + 74, + 89, + 21, + 6, + 116, + 144, + 93, + 10, + 187, + 244, + 137, + 255, + 243, + 64, + 196, + 18, + 26, + 250, + 94, + 218, + 126, + 73, + 138, + 92, + 99, + 50, + 238, + 16, + 34, + 65, + 137, + 26, + 145, + 233, + 229, + 229, + 231, + 251, + 162, + 146, + 157, + 130, + 241, + 227, + 230, + 21, + 113, + 172, + 32, + 177, + 74, + 177, + 123, + 152, + 205, + 133, + 106, + 116, + 47, + 244, + 61, + 196, + 102, + 83, + 212, + 107, + 38, + 58, + 239, + 116, + 216, + 89, + 109, + 157, + 217, + 26, + 99, + 157, + 42, + 221, + 74, + 140, + 202, + 218, + 169, + 155, + 160, + 198, + 159, + 124, + 124, + 109, + 43, + 241, + 230, + 73, + 93, + 55, + 85, + 7, + 146, + 65, + 231, + 142, + 187, + 90, + 182, + 166, + 24, + 110, + 128, + 205, + 223, + 40, + 4, + 255, + 243, + 80, + 196, + 1, + 26, + 123, + 206, + 206, + 126, + 96, + 196, + 236, + 24, + 218, + 21, + 150, + 166, + 2, + 69, + 198, + 202, + 76, + 173, + 42, + 194, + 99, + 183, + 190, + 176, + 253, + 239, + 244, + 198, + 146, + 230, + 44, + 20, + 60, + 212, + 100, + 84, + 136, + 154, + 152, + 145, + 80, + 202, + 182, + 81, + 48, + 67, + 38, + 78, + 30, + 227, + 126, + 178, + 173, + 12, + 41, + 17, + 135, + 143, + 39, + 79, + 119, + 177, + 184, + 62, + 143, + 77, + 248, + 35, + 55, + 68, + 90, + 221, + 65, + 181, + 147, + 232, + 150, + 46, + 136, + 140, + 215, + 168, + 97, + 145, + 58, + 122, + 160, + 167, + 174, + 255, + 213, + 171, + 86, + 245, + 78, + 202, + 210, + 34, + 174, + 103, + 75, + 161, + 254, + 203, + 238, + 250, + 235, + 145, + 211, + 248, + 119, + 211, + 6, + 247, + 236, + 154, + 2, + 52, + 124, + 39, + 22, + 150, + 180, + 10, + 255, + 243, + 80, + 196, + 12, + 27, + 51, + 22, + 193, + 180, + 98, + 68, + 56, + 29, + 16, + 106, + 200, + 17, + 157, + 149, + 73, + 211, + 89, + 89, + 224, + 124, + 87, + 2, + 88, + 170, + 158, + 83, + 30, + 202, + 40, + 91, + 146, + 81, + 40, + 54, + 207, + 162, + 41, + 39, + 127, + 125, + 170, + 231, + 80, + 29, + 5, + 119, + 246, + 238, + 71, + 33, + 116, + 181, + 142, + 105, + 157, + 27, + 83, + 21, + 45, + 65, + 136, + 231, + 236, + 246, + 53, + 26, + 161, + 206, + 242, + 91, + 50, + 151, + 172, + 69, + 221, + 181, + 250, + 114, + 202, + 84, + 111, + 105, + 236, + 183, + 103, + 118, + 114, + 181, + 72, + 36, + 100, + 48, + 42, + 58, + 135, + 234, + 154, + 196, + 84, + 136, + 115, + 226, + 0, + 105, + 0, + 205, + 246, + 255, + 248, + 209, + 73, + 57, + 187, + 146, + 137, + 206, + 106, + 179, + 177, + 74, + 226, + 173, + 117, + 216, + 255, + 243, + 112, + 196, + 20, + 43, + 171, + 146, + 226, + 94, + 194, + 71, + 101, + 35, + 42, + 121, + 40, + 250, + 115, + 43, + 214, + 28, + 10, + 27, + 175, + 27, + 160, + 170, + 225, + 191, + 114, + 138, + 244, + 171, + 204, + 179, + 107, + 153, + 31, + 37, + 174, + 154, + 97, + 192, + 17, + 201, + 75 + ], + "text": "" + } + ], + "location": { + "topRightCorner": { + "x": 254.99999999999997, + "y": 12.000000000000002 + }, + "topLeftCorner": { + "x": 12.000000000000002, + "y": 12.000000000000002 + }, + "bottomRightCorner": { + "x": 254.99999999999997, + "y": 254.99999999999997 + }, + "bottomLeftCorner": { + "x": 12.000000000000002, + "y": 254.99999999999997 + }, + "topRightFinderPattern": { + "x": 244.5, + "y": 22.5 + }, + "topLeftFinderPattern": { + "x": 22.5, + "y": 22.5 + }, + "bottomLeftFinderPattern": { + "x": 22.5, + "y": 244.5 + }, + "bottomRightAlignmentPattern": { + "x": 235.5, + "y": 235.5 + } + } +} \ No newline at end of file diff --git a/tests/end-to-end/structured-append-05/input.png b/tests/end-to-end/structured-append-05/input.png new file mode 100644 index 0000000000000000000000000000000000000000..15e7a58a9eef9e38e3865a806b2a1049da4bba4d GIT binary patch literal 1813 zcmV+w2kQ8VP)Q1Va z|F_HKvSa?+hy4%v(~#ZlX;s&zXPf)E_P$M?dbeS&eYPwPa(Eifd^~+`tekyZ>gnX4 z(xbI(;oUgMTy;e~dVb7Sp82#?{lZnNN6RnPheC#hiyA;*?AfgSl23Ee`{5AYZwYh0 z7k)L{%d961bMCPaCxP3zkih)aC?Op^I9(X zC~m@|FvxCPaeKG}kcd-sjRmMTC#$Vz{{wnIL77zc60ujT4+b91h4n=c#+ zZ0hHH3WUIycC~ixPu;lGiTtJ0RRp7qgIq0gn1)$$`?57Vt7k(Rkw!Ynngv2&WkKtJ z{Onn?=FDhy}TPmLAX~PL$*5Ra&)oAb(2cfDC-ws||IFuip$QAFd zA*EFx2yqUg#%ryQ>c$kb%EHXwKl%~^x!RlQ3qaC{3KDPl!qfV>%HklHlt-gyFUp|7 z^{d@>TRF_L*gOtGuEvwX!d#$9JXajk-XySBETlCnY;ZoGu0=krQ@=`GTfZz1gzRXZ zRCePa+!aMcgORRVP9h-}?1LtpLVcq$+!;z-;4IXT10lOUoR*a`$BuC{1OwKjr(*D_ zfFKB_b%rCt?#-H^?xH8v24gG`$HvIKH{G~Y~zK(0^TxNd_4GT9`fcg%k!Qd;qf&mn-r-{=F9St+cxgsGafy}3c3NuaWCmoEQPb9P+7y}_% zqF^iPTmO_mjzhIg5cWF<#6Wf(go%@II-@PDmlH(gZ5!v!10muFLkywK8QjO4DcHb6 zVffMA2#C+MD&RJlT=yaWlHaQc`zf^;$f1P|9iHgYxR~8BV)B^%$*dCzx$u~CPK;qF zjf*2>7zz`l_s;?>2%`2bOG}uIQARUO&i}b%&8&=r_)G;P4K#R)R_zO2EajI8z)u<@ zAlE&$qkNruyLO`J?p|=HdYn@rWWP~QW0>CjyeD|xA&2vJ*{7ysAcs={7?yg};Et1p zHPp2HOD8WA2DvmRanaPz&=Ya09yBgQx6ziRkApyy0Z&mt5cvywRBP%02|Lz;rm6hLiX6H-q(}iK=AaXtqEIx~}ZCF7JFY=H_xV zXX#paKyX8YrodeD6VfQl zT%(8>PZ2f_vfu0K_dUTgKVg=KyN5gx;NmAPA&_S6bp$Fqe=$s-nr`oP(Kap~2)P;+ zE_tJxnWS+R0AIKJW6mxEA(pz9ylJ6g`ico%)DTdf_H3$1NV~o9$Xxx@NIlU>PDGJE zlX&$((n5_rAcd#`h`KG&o5HvCYp^)TZy*0d{xIY(I+~NSt;j@}00000NkvXXu0mjf D6LM*m literal 0 HcmV?d00001 diff --git a/tests/end-to-end/structured-append-05/output.json b/tests/end-to-end/structured-append-05/output.json new file mode 100644 index 00000000..fcad7c6b --- /dev/null +++ b/tests/end-to-end/structured-append-05/output.json @@ -0,0 +1,624 @@ +{ + "binaryData": [ + 151, + 90, + 220, + 57, + 19, + 158, + 116, + 215, + 68, + 204, + 16, + 252, + 188, + 240, + 196, + 161, + 97, + 20, + 236, + 48, + 20, + 49, + 7, + 97, + 133, + 197, + 109, + 206, + 100, + 4, + 144, + 158, + 149, + 0, + 230, + 133, + 99, + 6, + 73, + 200, + 229, + 158, + 167, + 155, + 231, + 152, + 137, + 77, + 69, + 132, + 46, + 26, + 37, + 235, + 105, + 3, + 245, + 209, + 69, + 132, + 23, + 129, + 205, + 63, + 52, + 0, + 14, + 214, + 17, + 216, + 65, + 252, + 246, + 46, + 16, + 113, + 127, + 240, + 143, + 8, + 73, + 160, + 49, + 127, + 211, + 66, + 149, + 233, + 254, + 155, + 197, + 22, + 243, + 174, + 249, + 249, + 125, + 62, + 23, + 210, + 50, + 136, + 153, + 251, + 157, + 130, + 10, + 82, + 14, + 235, + 216, + 30, + 252, + 230, + 109, + 201, + 33, + 252, + 123, + 231, + 218, + 48, + 24, + 205, + 97, + 146, + 32, + 2, + 23, + 242, + 71, + 27, + 69, + 13, + 142, + 255, + 243, + 96, + 196, + 14, + 35, + 131, + 206, + 226, + 124, + 102, + 10, + 180, + 141, + 171, + 86, + 14, + 7, + 136, + 46, + 124, + 73, + 68, + 171, + 246, + 50, + 140, + 59, + 188, + 173, + 168, + 29, + 55, + 68, + 181, + 36, + 92, + 170, + 220, + 163, + 144, + 214, + 229, + 177, + 53, + 83, + 100, + 150, + 110, + 103, + 168, + 42, + 172, + 170, + 207, + 26, + 236, + 86, + 154, + 255, + 185, + 82, + 123, + 51, + 66, + 194, + 34, + 198, + 89, + 193, + 223, + 17, + 42, + 168, + 171, + 167, + 170, + 91, + 165, + 78, + 53, + 103, + 215, + 65, + 46, + 241, + 232, + 101, + 113, + 21, + 75, + 45, + 74, + 203, + 173, + 5, + 212, + 174, + 147, + 93, + 81, + 206, + 90, + 58, + 110, + 61, + 105, + 61, + 150, + 251, + 199, + 122, + 255, + 244, + 255, + 87, + 247, + 180, + 105, + 251, + 6, + 149, + 209, + 78, + 221, + 93, + 11, + 59, + 106, + 168, + 221, + 46, + 186, + 214, + 36, + 66, + 39, + 164, + 210, + 74, + 145, + 152, + 150, + 106, + 104, + 112, + 249, + 25, + 71, + 26, + 182, + 2, + 175, + 142, + 147, + 110, + 255, + 243, + 80, + 196, + 15, + 27, + 226, + 234, + 218, + 74, + 123, + 4, + 60, + 172, + 125, + 51, + 22, + 101, + 208, + 12, + 89, + 80, + 182, + 203, + 190, + 43, + 93, + 17, + 191, + 205, + 163, + 119, + 37, + 106, + 213, + 61, + 66, + 230, + 82, + 136, + 103, + 51, + 16, + 192, + 165, + 14, + 137, + 40, + 149, + 45, + 158, + 149, + 66, + 229, + 43, + 219, + 205, + 154, + 244, + 74, + 45, + 119, + 103, + 125, + 233, + 103, + 114, + 167, + 37, + 180, + 51, + 178, + 148, + 205, + 55, + 173, + 87, + 125, + 58, + 34, + 63, + 162, + 63, + 133, + 162, + 41, + 25, + 245, + 246, + 18, + 228, + 13, + 205, + 173, + 169, + 143, + 138, + 162, + 78, + 47, + 105, + 77, + 245, + 150, + 30, + 76, + 204, + 42, + 238, + 218, + 32, + 6, + 119, + 128, + 104, + 103, + 20, + 163, + 137, + 23, + 37, + 164, + 78, + 139, + 121, + 118, + 209, + 45, + 231, + 89, + 255, + 243, + 80, + 196, + 20, + 28, + 250, + 114, + 197, + 144, + 72, + 135, + 128, + 92, + 140, + 19, + 24, + 106, + 210, + 220, + 106, + 230, + 83, + 199, + 106, + 242, + 179, + 28, + 132, + 66, + 133, + 56, + 174, + 10, + 227, + 77, + 109, + 228, + 254, + 108, + 107, + 9, + 158, + 3, + 100, + 133, + 19, + 79, + 242, + 195, + 40, + 185, + 15, + 15, + 42, + 65, + 122, + 183, + 43, + 11, + 135, + 137, + 132, + 88, + 147, + 213, + 44, + 226, + 198, + 171, + 60, + 171, + 246, + 47, + 212, + 234, + 223, + 1, + 37, + 31, + 96, + 116, + 36, + 185, + 34, + 77, + 124, + 139, + 192, + 207, + 120, + 231, + 199, + 146, + 23, + 54, + 146, + 226, + 78, + 110, + 186, + 16, + 179, + 4, + 78, + 177, + 235, + 37, + 211, + 84, + 165, + 50, + 150, + 218, + 168, + 83, + 203, + 208, + 89, + 67, + 61, + 112, + 107, + 85, + 101, + 142, + 161, + 87, + 232, + 88, + 255, + 243, + 64, + 196, + 21, + 26, + 225, + 134, + 202, + 84, + 97, + 135, + 36, + 187, + 188, + 235, + 181, + 99, + 254, + 173, + 23, + 191, + 24, + 128, + 10, + 35, + 101, + 9, + 252, + 182, + 55, + 79, + 4 + ], + "data": "", + "chunks": [], + "location": { + "topRightCorner": { + "x": 254.99999999999997, + "y": 12.000000000000002 + }, + "topLeftCorner": { + "x": 12.000000000000002, + "y": 12.000000000000002 + }, + "bottomRightCorner": { + "x": 254.99999999999997, + "y": 254.99999999999997 + }, + "bottomLeftCorner": { + "x": 12.000000000000002, + "y": 254.99999999999997 + }, + "topRightFinderPattern": { + "x": 244.5, + "y": 22.5 + }, + "topLeftFinderPattern": { + "x": 22.5, + "y": 22.5 + }, + "bottomLeftFinderPattern": { + "x": 22.5, + "y": 244.5 + }, + "bottomRightAlignmentPattern": { + "x": 235.5, + "y": 235.5 + } + } +} diff --git a/tests/end-to-end/structured-append-06/input.png b/tests/end-to-end/structured-append-06/input.png new file mode 100644 index 0000000000000000000000000000000000000000..28e3f1b8d2e4a0c2dbd63d11a7560e23669b0f6f GIT binary patch literal 1822 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 Hu0mjfCkJa) literal 0 HcmV?d00001 diff --git a/tests/end-to-end/structured-append-07/output.json b/tests/end-to-end/structured-append-07/output.json new file mode 100644 index 00000000..c2000269 --- /dev/null +++ b/tests/end-to-end/structured-append-07/output.json @@ -0,0 +1,1215 @@ +{ + "binaryData": [ + 242, + 123, + 82, + 54, + 226, + 7, + 32, + 176, + 100, + 184, + 33, + 142, + 42, + 242, + 222, + 131, + 88, + 138, + 184, + 103, + 115, + 102, + 153, + 118, + 228, + 164, + 89, + 140, + 32, + 17, + 85, + 197, + 91, + 85, + 202, + 1, + 0, + 41, + 49, + 129, + 178, + 241, + 209, + 44, + 53, + 100, + 188, + 2, + 157, + 157, + 146, + 145, + 237, + 73, + 84, + 140, + 69, + 21, + 109, + 111, + 255, + 243, + 160, + 196, + 33, + 70, + 92, + 10, + 170, + 89, + 152, + 120, + 1, + 147, + 89, + 104, + 129, + 48, + 126, + 8, + 168, + 13, + 7, + 34, + 64, + 130, + 157, + 201, + 50, + 68, + 151, + 106, + 7, + 92, + 67, + 198, + 19, + 182, + 226, + 228, + 175, + 92, + 182, + 188, + 85, + 53, + 196, + 109, + 92, + 19, + 194, + 252, + 57, + 8, + 113, + 235, + 72, + 5, + 176, + 92, + 206, + 6, + 102, + 52, + 208, + 164, + 171, + 15, + 101, + 97, + 250, + 240, + 67, + 81, + 2, + 220, + 105, + 23, + 109, + 34, + 147, + 202, + 215, + 12, + 99, + 189, + 90, + 97, + 100, + 121, + 12, + 199, + 108, + 131, + 1, + 22, + 135, + 71, + 11, + 210, + 5, + 139, + 196, + 123, + 30, + 19, + 145, + 206, + 159, + 204, + 5, + 114, + 181, + 56, + 176, + 192, + 103, + 63, + 19, + 101, + 96, + 155, + 22, + 35, + 169, + 93, + 137, + 20, + 106, + 21, + 133, + 35, + 180, + 193, + 125, + 70, + 174, + 106, + 216, + 187, + 121, + 131, + 136, + 45, + 77, + 168, + 74, + 132, + 201, + 81, + 37, + 232, + 196, + 231, + 5, + 77, + 16, + 219, + 158, + 19, + 193, + 206, + 33, + 72, + 115, + 212, + 203, + 111, + 156, + 244, + 68, + 146, + 102, + 163, + 252, + 207, + 97, + 135, + 146, + 218, + 120, + 44, + 183, + 156, + 172, + 139, + 8, + 198, + 80, + 128, + 182, + 58, + 83, + 173, + 246, + 88, + 76, + 229, + 253, + 149, + 116, + 172, + 134, + 121, + 196, + 46, + 205, + 43, + 106, + 119, + 24, + 7, + 41, + 97, + 174, + 210, + 72, + 151, + 176, + 32, + 229, + 201, + 159, + 81, + 170, + 246, + 105, + 85, + 174, + 17, + 149, + 106, + 248, + 251, + 110, + 72, + 185, + 238, + 215, + 235, + 47, + 28, + 55, + 69, + 222, + 62, + 33, + 172, + 192, + 117, + 62, + 108, + 231, + 172, + 77, + 104, + 242, + 55, + 234, + 118, + 178, + 213, + 113, + 146, + 156, + 182, + 86, + 128, + 2, + 152, + 155, + 237, + 184, + 172, + 144, + 132, + 227, + 57, + 133, + 150, + 182, + 127, + 247, + 5, + 198, + 20, + 45, + 255, + 169, + 50, + 31, + 16, + 174, + 83, + 20, + 76, + 209, + 76, + 200, + 231, + 9, + 146, + 198, + 56, + 124, + 113, + 209, + 140, + 100, + 163, + 80, + 70, + 194, + 255, + 243, + 64, + 196, + 51, + 30, + 123, + 62, + 202, + 93, + 207, + 40, + 0, + 140, + 30, + 15, + 21, + 84, + 179, + 223, + 111, + 249, + 53, + 69, + 163, + 158, + 164, + 200, + 58, + 48, + 114, + 58, + 49, + 20, + 236, + 253, + 85, + 210, + 207, + 122, + 61, + 109, + 85, + 113, + 7, + 176, + 235, + 16, + 202, + 218, + 58, + 27, + 82, + 216, + 239, + 69, + 229, + 195, + 143, + 222, + 119, + 124, + 167, + 230, + 125, + 177, + 142, + 34, + 193, + 3, + 37, + 117, + 131, + 102, + 88, + 234, + 216, + 196, + 2, + 176, + 250, + 90, + 165, + 214, + 108, + 206, + 173, + 222, + 230, + 208, + 45, + 187, + 29, + 191, + 108, + 9, + 200, + 16, + 217, + 243, + 150, + 105, + 204, + 210, + 255, + 243, + 80, + 196, + 20, + 30, + 107, + 198, + 214, + 94, + 121, + 138, + 153, + 153, + 95, + 184, + 91, + 128, + 27, + 177, + 178, + 165, + 147, + 89, + 136, + 30, + 79, + 81, + 195, + 10, + 84, + 111, + 199, + 187, + 54, + 50, + 41, + 61, + 110, + 241, + 31, + 187, + 234, + 48, + 72, + 72, + 83, + 215, + 175, + 103, + 218, + 136, + 149, + 70, + 153, + 219, + 214, + 57, + 208, + 247, + 210, + 228, + 126, + 222, + 159, + 73, + 138, + 219, + 177, + 78, + 170, + 74, + 137, + 145, + 74, + 84, + 87, + 35, + 54, + 133, + 109, + 17, + 219, + 61, + 70, + 130, + 37, + 235, + 73, + 10, + 84, + 43, + 197, + 180, + 162, + 26, + 236, + 202, + 165, + 84, + 249, + 136, + 159, + 252, + 229, + 70, + 68 + ], + "data": "", + "chunks": [ + { + "type": "byte", + "bytes": [ + 242, + 123, + 82, + 54, + 226, + 7, + 32, + 176, + 100, + 184, + 33, + 142, + 42, + 242, + 222, + 131, + 88, + 138, + 184, + 103, + 115, + 102, + 153, + 118, + 228, + 164, + 89, + 140, + 32, + 17, + 85, + 197, + 91, + 85, + 202, + 1, + 0, + 41, + 49, + 129, + 178, + 241, + 209, + 44, + 53, + 100, + 188, + 2, + 157, + 157, + 146, + 145, + 237, + 73, + 84, + 140, + 69, + 21, + 109, + 111, + 255, + 243, + 160, + 196, + 33, + 70, + 92, + 10, + 170, + 89, + 152, + 120, + 1, + 147, + 89, + 104, + 129, + 48, + 126, + 8, + 168, + 13, + 7, + 34, + 64, + 130, + 157, + 201, + 50, + 68, + 151, + 106, + 7, + 92, + 67, + 198, + 19, + 182, + 226, + 228, + 175, + 92, + 182, + 188, + 85, + 53, + 196, + 109, + 92, + 19, + 194, + 252, + 57, + 8, + 113, + 235, + 72, + 5, + 176, + 92, + 206, + 6, + 102, + 52, + 208, + 164, + 171, + 15, + 101, + 97, + 250, + 240, + 67, + 81, + 2, + 220, + 105, + 23, + 109, + 34, + 147, + 202, + 215, + 12, + 99, + 189, + 90, + 97, + 100, + 121, + 12, + 199, + 108, + 131, + 1, + 22, + 135, + 71, + 11, + 210, + 5, + 139, + 196, + 123, + 30, + 19, + 145, + 206, + 159, + 204, + 5, + 114, + 181, + 56, + 176, + 192, + 103, + 63, + 19, + 101, + 96, + 155, + 22, + 35, + 169, + 93, + 137, + 20, + 106, + 21, + 133, + 35, + 180, + 193, + 125, + 70, + 174, + 106, + 216, + 187, + 121, + 131, + 136, + 45, + 77, + 168, + 74, + 132, + 201, + 81, + 37, + 232, + 196, + 231, + 5, + 77, + 16, + 219, + 158, + 19, + 193, + 206, + 33, + 72, + 115, + 212, + 203, + 111, + 156, + 244, + 68, + 146, + 102, + 163, + 252, + 207, + 97, + 135, + 146, + 218, + 120, + 44, + 183, + 156, + 172, + 139, + 8, + 198, + 80, + 128, + 182, + 58, + 83, + 173, + 246, + 88, + 76, + 229, + 253, + 149, + 116, + 172, + 134, + 121, + 196, + 46, + 205, + 43, + 106, + 119, + 24, + 7, + 41, + 97, + 174, + 210, + 72, + 151, + 176, + 32, + 229, + 201, + 159, + 81, + 170, + 246, + 105, + 85, + 174, + 17, + 149, + 106, + 248, + 251, + 110, + 72, + 185, + 238, + 215, + 235, + 47, + 28, + 55, + 69, + 222, + 62, + 33, + 172, + 192, + 117, + 62, + 108, + 231, + 172, + 77, + 104, + 242, + 55, + 234, + 118, + 178, + 213, + 113, + 146, + 156, + 182, + 86, + 128, + 2, + 152, + 155, + 237, + 184, + 172, + 144, + 132, + 227, + 57, + 133, + 150, + 182, + 127, + 247, + 5, + 198, + 20, + 45, + 255, + 169, + 50, + 31, + 16, + 174, + 83, + 20, + 76, + 209, + 76, + 200, + 231, + 9, + 146, + 198, + 56, + 124, + 113, + 209, + 140, + 100, + 163, + 80, + 70, + 194, + 255, + 243, + 64, + 196, + 51, + 30, + 123, + 62, + 202, + 93, + 207, + 40, + 0, + 140, + 30, + 15, + 21, + 84, + 179, + 223, + 111, + 249, + 53, + 69, + 163, + 158, + 164, + 200, + 58, + 48, + 114, + 58, + 49, + 20, + 236, + 253, + 85, + 210, + 207, + 122, + 61, + 109, + 85, + 113, + 7, + 176, + 235, + 16, + 202, + 218, + 58, + 27, + 82, + 216, + 239, + 69, + 229, + 195, + 143, + 222, + 119, + 124, + 167, + 230, + 125, + 177, + 142, + 34, + 193, + 3, + 37, + 117, + 131, + 102, + 88, + 234, + 216, + 196, + 2, + 176, + 250, + 90, + 165, + 214, + 108, + 206, + 173, + 222, + 230, + 208, + 45, + 187, + 29, + 191, + 108, + 9, + 200, + 16, + 217, + 243, + 150, + 105, + 204, + 210, + 255, + 243, + 80, + 196, + 20, + 30, + 107, + 198, + 214, + 94, + 121, + 138, + 153, + 153, + 95, + 184, + 91, + 128, + 27, + 177, + 178, + 165, + 147, + 89, + 136, + 30, + 79, + 81, + 195, + 10, + 84, + 111, + 199, + 187, + 54, + 50, + 41, + 61, + 110, + 241, + 31, + 187, + 234, + 48, + 72, + 72, + 83, + 215, + 175, + 103, + 218, + 136, + 149, + 70, + 153, + 219, + 214, + 57, + 208, + 247, + 210, + 228, + 126, + 222, + 159, + 73, + 138, + 219, + 177, + 78, + 170, + 74, + 137, + 145, + 74, + 84, + 87, + 35, + 54, + 133, + 109, + 17, + 219, + 61, + 70, + 130, + 37, + 235, + 73, + 10, + 84, + 43, + 197, + 180, + 162, + 26, + 236, + 202, + 165, + 84, + 249, + 136, + 159, + 252, + 229, + 70, + 68 + ], + "text": "" + } + ], + "location": { + "topRightCorner": { + "x": 254.99999999999997, + "y": 12.000000000000002 + }, + "topLeftCorner": { + "x": 12.000000000000002, + "y": 12.000000000000002 + }, + "bottomRightCorner": { + "x": 254.99999999999997, + "y": 254.99999999999997 + }, + "bottomLeftCorner": { + "x": 12.000000000000002, + "y": 254.99999999999997 + }, + "topRightFinderPattern": { + "x": 244.5, + "y": 22.5 + }, + "topLeftFinderPattern": { + "x": 22.5, + "y": 22.5 + }, + "bottomLeftFinderPattern": { + "x": 22.5, + "y": 244.5 + }, + "bottomRightAlignmentPattern": { + "x": 235.5, + "y": 235.5 + } + } +} \ No newline at end of file diff --git a/tests/end-to-end/structured-append-08/input.png b/tests/end-to-end/structured-append-08/input.png new file mode 100644 index 0000000000000000000000000000000000000000..f380f2fbbbde74fe87676d1425e758cd59446a8a GIT binary patch literal 1822 zcmV+(2jTdMP))FE}6g1CN2J7nfILK-Kc5%{mSSr4p5+794O&V}lV@TO`Q3 z=k%T_@pY?{$3ftvSASf3{$6hLx>L~ku)&|O{?s;ckh5Rzb=oI?n3aXFR~y}6lsCK* z2hm!Fq@dPzsf`#n-c}UEr1aV2Af8Lh^6pg11E=8Ht1VYT-hUD^2r{KN<*U#_z+|Y{ z@xq6)(OWzYveO1>hVIXKvA)~qRRvu;5Bvr~JoBcq{^`d!FPECGwVnesiMZ$jA!iM> zBU=tu^y1v$U1eqRoQQW72ibjPyN#2N6!bE((G2Ml)hDr*7FXZXfM__c~$?9gKRxTwlou4PY)i{=i&InlroW!vJhyg`yAb? zXDujM7`MIoH!dNNlhwB`gD0+cL#e@eW3#cT-VtdCnJ4O=7<1i$sfSoz|b5Wx3wkiL5uQiWY| zdTlew4baC%Pd{`R191**J~+DDRPwQ2?!7fr_o$UGRUm{+q~RlD9XlxV^cInzrdO4C z9EAOuAz(RA`XPi-9Dt!Ic;%yCVj!@^KG7Rp!yCuGCpAXoj1*aWi-W-BH=S6ajf`=} z>~=3y2JxQ16M_(k+J|st@qcK^S;~braxbd+v_q2#YpXbj zbY+dGv>O(OXPH8FjKeV=@l^g|pQM1mZ{g>;b+O&vtNl-E0}pU}bH z6Y?1=@QH2^#1HFDQvm`j4wgE54N^(JoNx?erhHA)+`QZ<1=FQw+MFHb%_xMVP_9Z@ZTskq4srZ#KMY>G9(Ct?0GTW zDWwxy%Bgf?Toh&3oqh5+h;v->xa(W*LmTQLWi8afmv=)Td)9T?rEW=i_|G%~p_wF( z_iy(Z0YPAHH7cnLcXi>zGc0AgzL?uv9E1bB$UJFwc&#zG>QqY4x%-*o1VM)NjRoXQ zmEFhRtn8Qtmdms_h!s+I<>XbPh(w;2TN*^}&#giPL^BWkIsq0b!stYllp(;>T-(G! z$`zJ+2v*>(TTNY@HgY){_3d#G-3jad*(JohTxz+-Y`Ot(8v`NoosuwDBchsz5nvjN zlIW|N!yxx^nV_j8bxiKa^^!G|;73-3LFk9KT&6h4iZH2v>>DO8!AiB-&UiO*3 z)3Rv4Wi7h!{I;wR$W{{Hb+;hPtN(!TInUf}-%GO?$ZvoChx}p4Ux*hc;*brE_y7O^ M07*qoM6N<$f>*tROaK4? literal 0 HcmV?d00001 diff --git a/tests/end-to-end/structured-append-08/output.json b/tests/end-to-end/structured-append-08/output.json new file mode 100644 index 00000000..332d3a58 --- /dev/null +++ b/tests/end-to-end/structured-append-08/output.json @@ -0,0 +1,629 @@ +{ + "binaryData": [ + 44, + 162, + 163, + 129, + 62, + 19, + 188, + 101, + 71, + 24, + 51, + 55, + 237, + 91, + 73, + 139, + 180, + 214, + 11, + 224, + 26, + 240, + 48, + 255, + 243, + 80, + 196, + 15, + 28, + 17, + 34, + 214, + 252, + 194, + 77, + 0, + 64, + 171, + 101, + 139, + 178, + 28, + 14, + 130, + 152, + 163, + 253, + 252, + 154, + 195, + 145, + 28, + 144, + 83, + 247, + 255, + 26, + 123, + 253, + 169, + 44, + 114, + 213, + 173, + 48, + 1, + 196, + 78, + 131, + 239, + 20, + 9, + 209, + 192, + 12, + 72, + 91, + 22, + 145, + 231, + 2, + 60, + 199, + 199, + 8, + 197, + 147, + 189, + 42, + 31, + 60, + 252, + 163, + 138, + 41, + 166, + 12, + 8, + 21, + 90, + 149, + 173, + 225, + 231, + 174, + 84, + 113, + 52, + 141, + 22, + 23, + 52, + 191, + 176, + 174, + 124, + 58, + 186, + 117, + 180, + 226, + 58, + 59, + 127, + 221, + 28, + 196, + 111, + 234, + 255, + 109, + 254, + 235, + 149, + 96, + 94, + 250, + 185, + 102, + 188, + 106, + 59, + 61, + 136, + 237, + 16, + 76, + 109, + 2, + 42, + 94, + 44, + 26, + 255, + 243, + 80, + 196, + 19, + 27, + 153, + 78, + 217, + 148, + 98, + 70, + 88, + 100, + 136, + 154, + 101, + 114, + 159, + 44, + 200, + 170, + 67, + 192, + 82, + 88, + 27, + 247, + 154, + 161, + 130, + 48, + 87, + 18, + 219, + 30, + 61, + 134, + 117, + 143, + 95, + 135, + 30, + 192, + 133, + 76, + 198, + 170, + 105, + 92, + 64, + 108, + 78, + 9, + 7, + 196, + 128, + 192, + 144, + 44, + 72, + 94, + 133, + 5, + 192, + 7, + 144, + 30, + 8, + 11, + 173, + 141, + 156, + 109, + 207, + 164, + 210, + 30, + 17, + 176, + 224, + 52, + 0, + 181, + 23, + 107, + 127, + 250, + 25, + 148, + 141, + 180, + 89, + 200, + 22, + 186, + 196, + 188, + 38, + 85, + 149, + 57, + 94, + 97, + 10, + 17, + 152, + 130, + 92, + 130, + 116, + 227, + 212, + 115, + 200, + 162, + 148, + 114, + 69, + 101, + 89, + 235, + 144, + 134, + 47, + 144, + 212, + 49, + 137, + 97, + 255, + 243, + 64, + 196, + 25, + 26, + 209, + 38, + 197, + 178, + 51, + 6, + 104, + 251, + 174, + 225, + 158, + 17, + 145, + 153, + 218, + 112, + 48, + 80, + 174, + 196, + 20, + 100, + 59, + 142, + 166, + 120, + 95, + 123, + 192, + 64, + 136, + 56, + 210, + 172, + 81, + 242, + 176, + 144, + 88, + 233, + 25, + 26, + 65, + 181, + 172, + 2, + 212, + 13, + 80, + 148, + 153, + 48, + 37, + 140, + 26, + 195, + 227, + 6, + 193, + 65, + 97, + 72, + 80, + 50, + 48, + 112, + 181, + 68, + 84, + 153, + 228, + 2, + 202, + 35, + 225, + 173, + 149, + 78, + 181, + 94, + 248, + 139, + 176, + 161, + 103, + 54, + 133, + 30, + 74, + 106, + 106, + 215, + 127, + 148, + 1, + 143, + 218, + 67, + 255, + 243, + 80, + 196, + 8, + 27, + 138, + 206, + 197, + 148, + 97, + 132, + 152, + 75, + 3, + 236, + 4, + 230, + 182, + 197, + 132, + 6, + 22, + 2, + 118, + 35, + 51, + 237, + 59, + 109, + 246, + 220, + 34, + 36, + 251, + 184, + 151, + 243, + 14, + 148, + 167, + 173, + 176, + 207, + 113, + 150, + 158, + 43, + 85, + 38, + 119, + 116, + 101, + 116, + 65, + 13, + 57, + 25, + 108, + 231, + 68, + 73, + 222, + 143, + 171, + 255, + 76, + 224, + 154, + 180, + 73, + 239, + 145, + 217, + 183, + 209, + 228, + 127, + 151, + 231, + 74, + 19, + 34, + 189, + 30, + 126, + 77, + 247, + 186, + 7, + 13, + 188, + 16, + 91, + 100, + 226, + 0, + 35, + 3, + 232, + 91, + 60, + 218, + 132, + 23, + 134, + 101, + 10, + 23, + 78, + 168, + 156, + 90, + 229, + 205, + 85, + 44, + 70, + 155, + 85, + 199, + 16, + 6, + 212, + 107, + 85, + 44, + 9, + 84, + 36, + 255, + 243, + 80, + 196, + 14, + 26, + 195, + 66, + 218, + 92, + 64, + 71, + 177, + 24, + 29, + 137, + 7, + 170, + 172, + 138, + 187, + 117, + 23, + 81, + 223, + 29, + 7, + 178, + 50, + 14, + 89, + 88, + 95, + 94, + 202, + 121, + 125, + 110, + 103, + 25, + 55, + 236, + 221, + 202, + 208, + 179, + 209, + 165, + 30, + 116, + 138, + 173, + 18, + 106, + 8, + 228, + 32, + 148, + 39, + 127, + 250, + 135, + 101, + 249, + 151, + 231, + 158 + ], + "data": "", + "chunks": [ + { + "type": "eci", + "assignmentNumber": -1 + } + ], + "location": { + "topRightCorner": { + "x": 254.99999999999997, + "y": 12.000000000000002 + }, + "topLeftCorner": { + "x": 12.000000000000002, + "y": 12.000000000000002 + }, + "bottomRightCorner": { + "x": 254.99999999999997, + "y": 254.99999999999997 + }, + "bottomLeftCorner": { + "x": 12.000000000000002, + "y": 254.99999999999997 + }, + "topRightFinderPattern": { + "x": 244.5, + "y": 22.5 + }, + "topLeftFinderPattern": { + "x": 22.5, + "y": 22.5 + }, + "bottomLeftFinderPattern": { + "x": 22.5, + "y": 244.5 + }, + "bottomRightAlignmentPattern": { + "x": 235.5, + "y": 235.5 + } + } +} diff --git a/tests/end-to-end/structured-append-09/input.png b/tests/end-to-end/structured-append-09/input.png new file mode 100644 index 0000000000000000000000000000000000000000..367cbf6155b30cd80b17e63806ba7d10aaa4d622 GIT binary patch literal 1811 zcmV+u2kiKXP)|k(mB%%ZxBz%%AZov$d9!P*G{&Yh&bDS+^dk`U zlNk}2W$Cvc`ycYBA-mbD%TqY}&dRnP(`lA}+Wg&ZDOlzQInw#Evn-lvsjJY;VSRP$ z5cxi{g}Z)`!27K%@@YATc$QuMF7hMUt38Ls23N?iY;$6w{H-2hKJieftF*d9`eK`w zwYTQoF$&hZt~A{|`9fITf?wN_xO1|NL(1p0_H91@V*~y>gm}?h|MlPBA>{z!b9MP; z^^oc;HB;o9J>0I2LH$Y+2gu&7)j}lZZ)*UWZEwEY)jF$KU_ZzanzZB-D;jutb3_~B zb`|Ro)*+phCxm!B_2(|lA$=G^Oj?6wB?&S=$lm39yM5a9wzF>=rar+R#hFEhL-_bX zxMNL<^{ZW9#D3)FImT^{iqOLklG64OBQksVZ~Kx~U!*D3WszJV^~;*QWA+X3cUNa@ zY_K5^K|dMb0l7%%)Ley?W@BKP^JB?p?IgUFWW?O@XP`l^^6Ph0DqZQR?Gq=e`^ z@tE#4W*dphA1~zrxmqpiyTFk_^M>Cv(Xf@>ZOuF(a6IX|3fRdw9}zfd4SQ|L5mKBu zuaSkk6OKKcmwH@?O|G9wyFies6gMn6T)WGf;Vw^}n3MK!_Jdq@j@Xu)`5?kK>&kNx z(rQTY%nxz|(waPzc0nO5ZP~3og$}6293fO`c*zeI23j(Rgv!R?DhfDub#R1`$4N4{ zx1<{5!T=&xa+;sENq&$W&Ql3k_tGd88K163hmQp*TL(YL^{qJ+9r;DM7P!A+01+0v z^XLd^MY>kt`_L#TN~Z4x0Yg;L7ozaTf5}Y{p$ta}2N|OzR{24Qmn;w_ycQRxolN>^ za?tFjA7nS!UCeYhBp6YS{(tPQZ|o^JTp;|fWR`)D#ON^bSohjV!t*P_K9F6jt8Rqq z7?m3A)r!c}E~13m7*78mIc)S zM1`clzS5BLCY8(&qVP|O8WdRZlAu6z5~sO|kNqHOfJOWlYEPkt>{H_4`zWL=TXILp zuCWk?>Pu1D9=eZM;WRatND50b)m*8#Y^M!hJ0MpYg! zDajKrE)a6s3R#JlcCt|=9l22JXzw2Rbb(wQs{2)sZH{DE4u8P7FWWv(26#d2uFuvH zF~MB|WcJ3O@EU982O(bY5m^+Ayj0zu)ndbfi?K2M3QP}(Ar}zFS_RU2ttfEeT}dVN z^wVB+fm|(hC)yQ=mzgNEbnm^>kBs$~K50!y*Ly3Yb1K?U652ccfy?={{P zCSrGtvs%|;$LILM1#+nePgJ6}gp3+FNnCj1nHwj+m0$isCqIQ;h9|_- z^DvVm)4J+(PHWt^EW^{fa)IzUA{2%2=E(b{Vx0vb$=2*~WIho5OW*1c2LCmSdevZ? zbO6Z3)6{l>9C8rcuYZb8nTxAafA^Qi^nnCCky%SEc%RnZbV&8~DXh2L7cwSz!mwa7 z*Nf`2No{g=_2(GS3Gz~tg9?B=%f*hW-B(ox#gD4FK(x9#Ly!?`?~c?0yHgkHST*y5 zC|=YKSIE57&r`o`FYe>P;>Y56Kz{rAAM%GGe*yh!NUsrbBSruK002ovPDHLkV1mBJ BVZHzW literal 0 HcmV?d00001 diff --git a/tests/end-to-end/structured-append-09/output.json b/tests/end-to-end/structured-append-09/output.json new file mode 100644 index 00000000..590327b8 --- /dev/null +++ b/tests/end-to-end/structured-append-09/output.json @@ -0,0 +1,624 @@ +{ + "binaryData": [ + 255, + 255, + 148, + 254, + 113, + 150, + 165, + 194, + 75, + 228, + 108, + 226, + 20, + 52, + 70, + 119, + 176, + 159, + 212, + 140, + 72, + 13, + 237, + 53, + 23, + 145, + 207, + 153, + 223, + 111, + 125, + 212, + 144, + 99, + 170, + 83, + 152, + 255, + 85, + 68, + 42, + 228, + 73, + 82, + 3, + 45, + 28, + 218, + 22, + 98, + 110, + 143, + 68, + 124, + 208, + 72, + 188, + 166, + 115, + 11, + 40, + 93, + 103, + 255, + 243, + 64, + 196, + 24, + 26, + 147, + 66, + 198, + 82, + 96, + 196, + 212, + 159, + 20, + 92, + 172, + 98, + 154, + 14, + 97, + 109, + 172, + 118, + 145, + 4, + 206, + 169, + 82, + 221, + 215, + 175, + 73, + 155, + 87, + 170, + 226, + 153, + 20, + 20, + 155, + 191, + 191, + 186, + 221, + 84, + 137, + 123, + 106, + 142, + 215, + 101, + 78, + 56, + 146, + 236, + 247, + 71, + 209, + 27, + 181, + 181, + 164, + 73, + 80, + 245, + 102, + 215, + 74, + 146, + 134, + 202, + 221, + 19, + 108, + 153, + 31, + 93, + 52, + 181, + 190, + 197, + 123, + 14, + 44, + 119, + 117, + 252, + 234, + 163, + 49, + 66, + 138, + 170, + 171, + 21, + 40, + 168, + 28, + 109, + 66, + 131, + 204, + 23, + 255, + 243, + 80, + 196, + 8, + 27, + 10, + 122, + 194, + 82, + 122, + 70, + 144, + 239, + 40, + 198, + 162, + 108, + 126, + 246, + 59, + 195, + 176, + 138, + 86, + 46, + 220, + 154, + 28, + 126, + 227, + 11, + 166, + 206, + 108, + 98, + 141, + 70, + 77, + 109, + 93, + 226, + 57, + 67, + 225, + 87, + 132, + 123, + 240, + 187, + 145, + 39, + 121, + 55, + 23, + 97, + 131, + 144, + 255, + 203, + 231, + 191, + 186, + 126, + 156, + 75, + 207, + 249, + 237, + 82, + 18, + 75, + 85, + 255, + 69, + 135, + 253, + 207, + 58, + 191, + 247, + 21, + 155, + 120, + 42, + 126, + 37, + 136, + 11, + 234, + 166, + 86, + 33, + 121, + 220, + 74, + 2, + 160, + 125, + 102, + 1, + 18, + 34, + 161, + 208, + 197, + 139, + 217, + 82, + 145, + 196, + 211, + 84, + 170, + 38, + 234, + 203, + 149, + 106, + 0, + 53, + 170, + 154, + 203, + 233, + 81, + 216, + 199, + 132, + 200, + 255, + 243, + 80, + 196, + 16, + 27, + 40, + 230, + 210, + 84, + 203, + 210, + 112, + 40, + 188, + 35, + 131, + 34, + 122, + 236, + 115, + 28, + 227, + 17, + 217, + 152, + 155, + 175, + 166, + 254, + 34, + 94, + 37, + 168, + 230, + 18, + 3, + 76, + 82, + 26, + 36, + 96, + 218, + 54, + 162, + 198, + 230, + 193, + 61, + 139, + 123, + 208, + 78, + 76, + 40, + 22, + 48, + 14, + 146, + 30, + 81, + 171, + 97, + 66, + 135, + 55, + 139, + 67, + 5, + 14, + 14, + 47, + 165, + 107, + 22, + 118, + 65, + 136, + 122, + 242, + 102, + 28, + 183, + 244, + 135, + 182, + 147, + 0, + 127, + 148, + 225, + 112, + 254, + 164, + 185, + 139, + 100, + 86, + 239, + 151, + 242, + 236, + 221, + 77, + 56, + 173, + 149, + 50, + 124, + 113, + 219, + 183, + 241, + 233, + 114, + 75, + 23, + 110, + 60, + 128, + 218, + 169, + 102, + 141, + 46, + 199, + 208, + 128, + 129, + 88, + 255, + 243, + 64, + 196, + 24, + 27, + 34, + 22, + 210, + 82, + 97, + 134, + 228, + 66, + 22, + 50, + 249, + 151, + 247, + 215, + 3, + 134, + 74, + 175, + 116, + 241, + 187, + 17, + 174, + 147, + 99, + 43, + 118, + 54, + 96, + 225, + 226, + 67, + 121, + 191, + 177, + 92, + 250, + 95, + 237, + 171, + 53, + 42, + 130, + 198, + 172, + 117, + 175, + 59, + 249, + 167, + 174, + 165, + 97, + 73, + 79, + 200, + 137, + 243, + 48, + 96, + 133, + 152, + 19, + 80, + 176, + 177, + 228, + 201, + 208, + 205, + 2, + 210, + 192, + 88, + 0, + 155, + 29, + 42, + 134, + 104, + 211, + 176, + 233, + 106, + 212, + 255, + 69, + 55, + 237, + 115, + 210, + 181, + 248, + 248, + 156, + 109, + 252, + 128, + 255, + 243, + 80, + 196, + 6, + 27, + 57, + 122, + 198, + 84, + 123, + 6, + 20, + 176, + 105, + 34, + 160, + 50, + 134, + 120, + 203, + 170, + 201, + 247, + 177, + 73, + 199, + 23, + 213, + 8, + 49, + 114, + 11, + 24, + 145, + 47, + 48, + 102, + 66, + 208, + 26, + 58, + 24, + 8, + 136, + 23, + 254, + 123, + 33, + 129, + 92, + 82, + 166 + ], + "data": "", + "chunks": [], + "location": { + "topRightCorner": { + "x": 254.99999999999997, + "y": 12.000000000000002 + }, + "topLeftCorner": { + "x": 12.000000000000002, + "y": 12.000000000000002 + }, + "bottomRightCorner": { + "x": 254.99999999999997, + "y": 254.99999999999997 + }, + "bottomLeftCorner": { + "x": 12.000000000000002, + "y": 254.99999999999997 + }, + "topRightFinderPattern": { + "x": 244.5, + "y": 22.5 + }, + "topLeftFinderPattern": { + "x": 22.5, + "y": 22.5 + }, + "bottomLeftFinderPattern": { + "x": 22.5, + "y": 244.5 + }, + "bottomRightAlignmentPattern": { + "x": 235.5, + "y": 235.5 + } + } +} diff --git a/tests/end-to-end/structured-append-10/input.png b/tests/end-to-end/structured-append-10/input.png new file mode 100644 index 0000000000000000000000000000000000000000..fba5b41d4a494091640540e5fddf92c4b53d9ff0 GIT binary patch literal 1827 zcmV+;2i*9HP)J(3R$kQW>loWZn>ufrDh~RdXai*XNzt-buBBtx^4D@Tv2CbaR94hA@{ebtBzFhb0<&z zAbVJcOv>oQmtUjB_1?*2QS!9*gDA07R=M88S?f7Qsq~c-~U=)K$VZg=*%Z{2+U1AYHag6FJg8GbyQa+Ai5B zcSi_S`wDWGwYRNXMcB->PUje)t7dS7r1Rc!=k*?Cv^raPw0mfG$RiT~H^?4Z3VMK$ z7D{cS&aTMyc8X2^*+w6Trcz{t7N!phZA{(S^Jub;QXPJf%hru#ZBJ5u*)AjC^Fbt} zRee{07eq+IS3q)+cM{)3e(bhARJ*K$9|W;N7>}hYmCaMMd$%1X_;N@5{U8T&kw|vS zdT42k?BqGh$#RXr{2=>VOp4^PjaOH}>tGPBTJn^5ld#{i_kdi2Iil3s=fa(l;`7GAVjKA6q$32L=*o%}uS7WQ z;EJc%W6Hx1f`7SXc>Qf)?K)>Ln|HhPVJQ~~M9#V1<76z%nL+o!nnuE^e~e+?IhJq z?s!6~XXehBh!dy0M>|ujI!yd#DIdteb@NIm{%ACJNd*+;Pw(!^53-m$er9x@#M!O@ zFE-MhLq30cH5bTEi-xaE1QPW?>X8)q1ENBT--+o1IToFQWlE2&5EI5*!pmTp;oZg) zlBi(v9e$$Ph%v|3PH~ak8T=p^J(EW)m{?W_eBv6>UsjDje`DjOTPK}hyqN~gZ?P}pZ$YDAK(T+N#K zLClWf_ZRb+h5s-|d}#^tj1V0Yxj5klhQl%a}ZW+?^iIXg*n z!)AWwQZA6oM4pJUnPR2PuoBmcXA))=TG0GaVJRJNEw@j z2Q$v}0k+(XlQn~;ju3&-&(WNb*t@bw*KRYaTAObRbVL)K{Av z<16h29nq!KZ~^^y8tMh%hBH~2w>_GlotJaSIu*M#yF#ojQ=3kiqy(x#r&ua4u7e|_ zY?qBEGd)wKMIj+7H4C6mKgj-;5o^)RRNfNDG@z7%{d>a05Aw&)KgeH({0Ac(25>}n Rmwo^M002ovPDHLkV1kbVbcp}} literal 0 HcmV?d00001 diff --git a/tests/end-to-end/structured-append-10/output.json b/tests/end-to-end/structured-append-10/output.json new file mode 100644 index 00000000..a79f0ecd --- /dev/null +++ b/tests/end-to-end/structured-append-10/output.json @@ -0,0 +1,1215 @@ +{ + "binaryData": [ + 102, + 71, + 3, + 174, + 172, + 202, + 37, + 13, + 70, + 28, + 167, + 98, + 115, + 109, + 78, + 202, + 36, + 200, + 84, + 8, + 34, + 90, + 14, + 145, + 148, + 72, + 50, + 160, + 170, + 213, + 34, + 211, + 185, + 91, + 74, + 201, + 217, + 189, + 201, + 214, + 38, + 27, + 81, + 82, + 50, + 203, + 49, + 101, + 72, + 67, + 187, + 84, + 19, + 236, + 246, + 208, + 177, + 129, + 224, + 186, + 72, + 148, + 54, + 113, + 216, + 97, + 192, + 206, + 234, + 69, + 152, + 223, + 26, + 6, + 120, + 177, + 151, + 255, + 243, + 80, + 196, + 14, + 26, + 145, + 218, + 210, + 116, + 123, + 4, + 120, + 197, + 1, + 116, + 45, + 131, + 206, + 3, + 11, + 75, + 28, + 98, + 43, + 139, + 72, + 107, + 128, + 153, + 146, + 196, + 72, + 75, + 38, + 118, + 250, + 189, + 124, + 252, + 252, + 230, + 222, + 203, + 12, + 4, + 113, + 28, + 204, + 92, + 141, + 239, + 8, + 32, + 0, + 65, + 201, + 191, + 218, + 68, + 33, + 4, + 17, + 180, + 207, + 115, + 183, + 68, + 68, + 215, + 162, + 52, + 53, + 58, + 16, + 163, + 142, + 201, + 197, + 53, + 173, + 168, + 114, + 124, + 131, + 149, + 7, + 193, + 243, + 230, + 211, + 241, + 225, + 113, + 112, + 246, + 141, + 76, + 86, + 207, + 127, + 246, + 203, + 219, + 115, + 170, + 144, + 56, + 149, + 185, + 235, + 48, + 53, + 35, + 134, + 99, + 9, + 177, + 236, + 240, + 26, + 181, + 154, + 238, + 201, + 67, + 132, + 229, + 186, + 237, + 255, + 243, + 80, + 196, + 24, + 33, + 33, + 122, + 210, + 84, + 195, + 7, + 36, + 202, + 102, + 3, + 127, + 149, + 94, + 16, + 232, + 57, + 77, + 74, + 88, + 156, + 112, + 204, + 142, + 154, + 114, + 110, + 125, + 45, + 217, + 130, + 19, + 203, + 128, + 93, + 55, + 241, + 199, + 143, + 88, + 137, + 58, + 190, + 224, + 228, + 140, + 84, + 194, + 139, + 166, + 62, + 153, + 113, + 230, + 84, + 186, + 144, + 30, + 160, + 34, + 118, + 203, + 47, + 150, + 133, + 19, + 147, + 242, + 223, + 140, + 206, + 153, + 224, + 132, + 98, + 245, + 173, + 196, + 138, + 137, + 92, + 29, + 138, + 2, + 100, + 75, + 42, + 201, + 209, + 112, + 8, + 164, + 1, + 209, + 165, + 122, + 194, + 106, + 61, + 109, + 204, + 130, + 164, + 214, + 53, + 214, + 239, + 220, + 46, + 159, + 109, + 20, + 247, + 200, + 218, + 86, + 234, + 12, + 108, + 233, + 39, + 63, + 14, + 147, + 169, + 255, + 243, + 96, + 196, + 8, + 31, + 83, + 66, + 192, + 242, + 194, + 74, + 180, + 99, + 91, + 157, + 127, + 106, + 102, + 232, + 179, + 23, + 62, + 61, + 166, + 198, + 179, + 31, + 138, + 125, + 34, + 246, + 66, + 14, + 155, + 174, + 168, + 16, + 73, + 162, + 150, + 72, + 155, + 87, + 25, + 81, + 186, + 148, + 255, + 67, + 155, + 40, + 229, + 39, + 12, + 116, + 244, + 197, + 28, + 81, + 43, + 165, + 143, + 34, + 131, + 232, + 102, + 16, + 159, + 102, + 186, + 78, + 168, + 135, + 116, + 100, + 34, + 167, + 85, + 204, + 200, + 48, + 135, + 153, + 182, + 49, + 79, + 159, + 102, + 223, + 144, + 172, + 85, + 90, + 144, + 115, + 162, + 38, + 151, + 182, + 134, + 211, + 183, + 158, + 246, + 86, + 77, + 149, + 100, + 250, + 47, + 94, + 207, + 149, + 7, + 11, + 53, + 229, + 82, + 97, + 174, + 126, + 138, + 198, + 42, + 23, + 40, + 229, + 84, + 218, + 234, + 13, + 167, + 76, + 165, + 36, + 181, + 127, + 174, + 214, + 139, + 74, + 153, + 210, + 142, + 180, + 40, + 10, + 71, + 41, + 70, + 8, + 92, + 152, + 179, + 206, + 255, + 243, + 80, + 196, + 25, + 32, + 171, + 218, + 180, + 2, + 202, + 70, + 173, + 46, + 52, + 54, + 250, + 216, + 4, + 81, + 24, + 38, + 146, + 38, + 210, + 247, + 35, + 244, + 193, + 143, + 8, + 83, + 57, + 212, + 20, + 241, + 205, + 106, + 141, + 149, + 148, + 181, + 153, + 161, + 109, + 32, + 10, + 230, + 90, + 222, + 243, + 92, + 65, + 17, + 130, + 93, + 161, + 95, + 164, + 190, + 28, + 155, + 42, + 99, + 168, + 201, + 166, + 94, + 87, + 117, + 251, + 77, + 127, + 48, + 64, + 134, + 100, + 75, + 193, + 171, + 101, + 194, + 223, + 255, + 220, + 170, + 207, + 219, + 40, + 185, + 126 + ], + "data": "", + "chunks": [ + { + "type": "byte", + "bytes": [ + 102, + 71, + 3, + 174, + 172, + 202, + 37, + 13, + 70, + 28, + 167, + 98, + 115, + 109, + 78, + 202, + 36, + 200, + 84, + 8, + 34, + 90, + 14, + 145, + 148, + 72, + 50, + 160, + 170, + 213, + 34, + 211, + 185, + 91, + 74, + 201, + 217, + 189, + 201, + 214, + 38, + 27, + 81, + 82, + 50, + 203, + 49, + 101, + 72, + 67, + 187, + 84, + 19, + 236, + 246, + 208, + 177, + 129, + 224, + 186, + 72, + 148, + 54, + 113, + 216, + 97, + 192, + 206, + 234, + 69, + 152, + 223, + 26, + 6, + 120, + 177, + 151, + 255, + 243, + 80, + 196, + 14, + 26, + 145, + 218, + 210, + 116, + 123, + 4, + 120, + 197, + 1, + 116, + 45, + 131, + 206, + 3, + 11, + 75, + 28, + 98, + 43, + 139, + 72, + 107, + 128, + 153, + 146, + 196, + 72, + 75, + 38, + 118, + 250, + 189, + 124, + 252, + 252, + 230, + 222, + 203, + 12, + 4, + 113, + 28, + 204, + 92, + 141, + 239, + 8, + 32, + 0, + 65, + 201, + 191, + 218, + 68, + 33, + 4, + 17, + 180, + 207, + 115, + 183, + 68, + 68, + 215, + 162, + 52, + 53, + 58, + 16, + 163, + 142, + 201, + 197, + 53, + 173, + 168, + 114, + 124, + 131, + 149, + 7, + 193, + 243, + 230, + 211, + 241, + 225, + 113, + 112, + 246, + 141, + 76, + 86, + 207, + 127, + 246, + 203, + 219, + 115, + 170, + 144, + 56, + 149, + 185, + 235, + 48, + 53, + 35, + 134, + 99, + 9, + 177, + 236, + 240, + 26, + 181, + 154, + 238, + 201, + 67, + 132, + 229, + 186, + 237, + 255, + 243, + 80, + 196, + 24, + 33, + 33, + 122, + 210, + 84, + 195, + 7, + 36, + 202, + 102, + 3, + 127, + 149, + 94, + 16, + 232, + 57, + 77, + 74, + 88, + 156, + 112, + 204, + 142, + 154, + 114, + 110, + 125, + 45, + 217, + 130, + 19, + 203, + 128, + 93, + 55, + 241, + 199, + 143, + 88, + 137, + 58, + 190, + 224, + 228, + 140, + 84, + 194, + 139, + 166, + 62, + 153, + 113, + 230, + 84, + 186, + 144, + 30, + 160, + 34, + 118, + 203, + 47, + 150, + 133, + 19, + 147, + 242, + 223, + 140, + 206, + 153, + 224, + 132, + 98, + 245, + 173, + 196, + 138, + 137, + 92, + 29, + 138, + 2, + 100, + 75, + 42, + 201, + 209, + 112, + 8, + 164, + 1, + 209, + 165, + 122, + 194, + 106, + 61, + 109, + 204, + 130, + 164, + 214, + 53, + 214, + 239, + 220, + 46, + 159, + 109, + 20, + 247, + 200, + 218, + 86, + 234, + 12, + 108, + 233, + 39, + 63, + 14, + 147, + 169, + 255, + 243, + 96, + 196, + 8, + 31, + 83, + 66, + 192, + 242, + 194, + 74, + 180, + 99, + 91, + 157, + 127, + 106, + 102, + 232, + 179, + 23, + 62, + 61, + 166, + 198, + 179, + 31, + 138, + 125, + 34, + 246, + 66, + 14, + 155, + 174, + 168, + 16, + 73, + 162, + 150, + 72, + 155, + 87, + 25, + 81, + 186, + 148, + 255, + 67, + 155, + 40, + 229, + 39, + 12, + 116, + 244, + 197, + 28, + 81, + 43, + 165, + 143, + 34, + 131, + 232, + 102, + 16, + 159, + 102, + 186, + 78, + 168, + 135, + 116, + 100, + 34, + 167, + 85, + 204, + 200, + 48, + 135, + 153, + 182, + 49, + 79, + 159, + 102, + 223, + 144, + 172, + 85, + 90, + 144, + 115, + 162, + 38, + 151, + 182, + 134, + 211, + 183, + 158, + 246, + 86, + 77, + 149, + 100, + 250, + 47, + 94, + 207, + 149, + 7, + 11, + 53, + 229, + 82, + 97, + 174, + 126, + 138, + 198, + 42, + 23, + 40, + 229, + 84, + 218, + 234, + 13, + 167, + 76, + 165, + 36, + 181, + 127, + 174, + 214, + 139, + 74, + 153, + 210, + 142, + 180, + 40, + 10, + 71, + 41, + 70, + 8, + 92, + 152, + 179, + 206, + 255, + 243, + 80, + 196, + 25, + 32, + 171, + 218, + 180, + 2, + 202, + 70, + 173, + 46, + 52, + 54, + 250, + 216, + 4, + 81, + 24, + 38, + 146, + 38, + 210, + 247, + 35, + 244, + 193, + 143, + 8, + 83, + 57, + 212, + 20, + 241, + 205, + 106, + 141, + 149, + 148, + 181, + 153, + 161, + 109, + 32, + 10, + 230, + 90, + 222, + 243, + 92, + 65, + 17, + 130, + 93, + 161, + 95, + 164, + 190, + 28, + 155, + 42, + 99, + 168, + 201, + 166, + 94, + 87, + 117, + 251, + 77, + 127, + 48, + 64, + 134, + 100, + 75, + 193, + 171, + 101, + 194, + 223, + 255, + 220, + 170, + 207, + 219, + 40, + 185, + 126 + ], + "text": "" + } + ], + "location": { + "topRightCorner": { + "x": 254.99999999999997, + "y": 12.000000000000002 + }, + "topLeftCorner": { + "x": 12.000000000000002, + "y": 12.000000000000002 + }, + "bottomRightCorner": { + "x": 254.99999999999997, + "y": 254.99999999999997 + }, + "bottomLeftCorner": { + "x": 12.000000000000002, + "y": 254.99999999999997 + }, + "topRightFinderPattern": { + "x": 244.5, + "y": 22.5 + }, + "topLeftFinderPattern": { + "x": 22.5, + "y": 22.5 + }, + "bottomLeftFinderPattern": { + "x": 22.5, + "y": 244.5 + }, + "bottomRightAlignmentPattern": { + "x": 235.5, + "y": 235.5 + } + } +} \ No newline at end of file diff --git a/tests/end-to-end/structured-append-11/input.png b/tests/end-to-end/structured-append-11/input.png new file mode 100644 index 0000000000000000000000000000000000000000..32fb83f9707295abef4df02a5e036120a40e47e3 GIT binary patch literal 1804 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 Hu0mjf#{_85 literal 0 HcmV?d00001 diff --git a/tests/end-to-end/structured-append-12/output.json b/tests/end-to-end/structured-append-12/output.json new file mode 100644 index 00000000..d428440a --- /dev/null +++ b/tests/end-to-end/structured-append-12/output.json @@ -0,0 +1,1215 @@ +{ + "binaryData": [ + 212, + 255, + 243, + 96, + 196, + 21, + 35, + 210, + 226, + 212, + 42, + 123, + 16, + 188, + 248, + 175, + 75, + 178, + 203, + 251, + 30, + 227, + 199, + 73, + 98, + 173, + 69, + 69, + 86, + 159, + 164, + 254, + 51, + 122, + 70, + 212, + 30, + 200, + 158, + 86, + 165, + 15, + 206, + 140, + 223, + 8, + 16, + 55, + 91, + 118, + 113, + 198, + 175, + 189, + 50, + 118, + 58, + 15, + 199, + 203, + 158, + 45, + 72, + 26, + 44, + 123, + 77, + 213, + 194, + 17, + 74, + 202, + 225, + 129, + 83, + 70, + 52, + 244, + 99, + 220, + 43, + 253, + 213, + 76, + 240, + 165, + 143, + 40, + 145, + 85, + 118, + 183, + 219, + 225, + 90, + 190, + 95, + 157, + 164, + 154, + 237, + 106, + 47, + 127, + 190, + 61, + 89, + 231, + 88, + 109, + 38, + 243, + 248, + 5, + 85, + 103, + 70, + 53, + 92, + 82, + 180, + 213, + 112, + 160, + 241, + 82, + 107, + 105, + 241, + 97, + 117, + 44, + 78, + 64, + 179, + 69, + 213, + 36, + 66, + 9, + 12, + 6, + 102, + 1, + 164, + 149, + 86, + 196, + 129, + 168, + 12, + 208, + 210, + 104, + 74, + 176, + 135, + 255, + 243, + 80, + 196, + 20, + 27, + 209, + 66, + 218, + 42, + 74, + 70, + 13, + 163, + 48, + 96, + 234, + 129, + 65, + 154, + 149, + 32, + 189, + 195, + 236, + 134, + 69, + 176, + 94, + 231, + 67, + 184, + 196, + 96, + 64, + 152, + 19, + 87, + 26, + 252, + 151, + 155, + 97, + 67, + 84, + 86, + 139, + 90, + 33, + 171, + 211, + 124, + 22, + 90, + 116, + 194, + 116, + 167, + 252, + 187, + 69, + 143, + 241, + 231, + 176, + 25, + 187, + 165, + 166, + 201, + 45, + 109, + 112, + 71, + 245, + 208, + 180, + 17, + 127, + 126, + 183, + 123, + 105, + 117, + 169, + 249, + 62, + 253, + 169, + 247, + 177, + 198, + 127, + 205, + 241, + 190, + 139, + 65, + 147, + 221, + 93, + 223, + 254, + 207, + 85, + 40, + 55, + 113, + 73, + 210, + 172, + 181, + 14, + 37, + 186, + 70, + 138, + 70, + 86, + 16, + 137, + 69, + 154, + 88, + 140, + 149, + 164, + 196, + 27, + 234, + 255, + 243, + 64, + 196, + 25, + 26, + 210, + 94, + 218, + 84, + 50, + 70, + 120, + 174, + 107, + 187, + 213, + 229, + 94, + 248, + 174, + 185, + 230, + 227, + 158, + 178, + 17, + 202, + 249, + 181, + 70, + 116, + 14, + 139, + 62, + 25, + 30, + 121, + 30, + 11, + 150, + 75, + 21, + 56, + 89, + 229, + 223, + 36, + 98, + 121, + 100, + 150, + 251, + 150, + 124, + 104, + 189, + 229, + 36, + 185, + 31, + 47, + 255, + 74, + 182, + 69, + 96, + 162, + 104, + 6, + 22, + 46, + 241, + 162, + 233, + 14, + 237, + 123, + 28, + 199, + 179, + 53, + 206, + 152, + 83, + 105, + 114, + 95, + 127, + 200, + 26, + 138, + 21, + 226, + 154, + 213, + 129, + 18, + 171, + 70, + 76, + 2, + 176, + 123, + 255, + 243, + 80, + 196, + 8, + 27, + 131, + 66, + 206, + 84, + 88, + 69, + 176, + 20, + 72, + 57, + 105, + 129, + 52, + 224, + 225, + 146, + 112, + 169, + 45, + 206, + 98, + 6, + 212, + 196, + 152, + 151, + 177, + 117, + 175, + 152, + 183, + 86, + 245, + 216, + 141, + 76, + 61, + 121, + 143, + 148, + 30, + 227, + 220, + 108, + 245, + 42, + 122, + 187, + 139, + 63, + 113, + 18, + 121, + 168, + 211, + 54, + 182, + 72, + 230, + 196, + 76, + 252, + 6, + 194, + 102, + 13, + 199, + 115, + 101, + 1, + 152, + 168, + 96, + 19, + 137, + 225, + 86, + 94, + 16, + 129, + 37, + 96, + 33, + 145, + 77, + 109, + 28, + 181, + 42, + 63, + 140, + 200, + 155, + 210, + 238, + 236, + 191, + 172, + 27, + 244, + 253, + 118, + 165, + 172, + 239, + 138, + 192, + 42, + 21, + 128, + 54, + 190, + 175, + 43, + 64, + 177, + 0, + 21, + 81, + 44, + 200, + 46, + 58, + 161, + 255, + 243, + 80, + 196, + 15, + 26, + 226, + 98, + 202, + 44, + 73, + 134, + 124, + 50, + 16, + 25, + 177, + 232, + 144, + 245, + 117, + 162, + 214, + 149, + 37, + 41, + 253, + 202, + 139, + 156, + 60, + 193, + 67, + 254, + 59, + 247, + 253, + 184, + 23, + 16, + 183, + 247, + 120, + 40, + 195, + 121, + 164, + 233, + 241, + 198, + 160, + 87, + 125, + 56, + 249, + 113, + 99, + 93, + 139, + 66, + 164, + 72, + 96 + ], + "data": "", + "chunks": [ + { + "type": "byte", + "bytes": [ + 212, + 255, + 243, + 96, + 196, + 21, + 35, + 210, + 226, + 212, + 42, + 123, + 16, + 188, + 248, + 175, + 75, + 178, + 203, + 251, + 30, + 227, + 199, + 73, + 98, + 173, + 69, + 69, + 86, + 159, + 164, + 254, + 51, + 122, + 70, + 212, + 30, + 200, + 158, + 86, + 165, + 15, + 206, + 140, + 223, + 8, + 16, + 55, + 91, + 118, + 113, + 198, + 175, + 189, + 50, + 118, + 58, + 15, + 199, + 203, + 158, + 45, + 72, + 26, + 44, + 123, + 77, + 213, + 194, + 17, + 74, + 202, + 225, + 129, + 83, + 70, + 52, + 244, + 99, + 220, + 43, + 253, + 213, + 76, + 240, + 165, + 143, + 40, + 145, + 85, + 118, + 183, + 219, + 225, + 90, + 190, + 95, + 157, + 164, + 154, + 237, + 106, + 47, + 127, + 190, + 61, + 89, + 231, + 88, + 109, + 38, + 243, + 248, + 5, + 85, + 103, + 70, + 53, + 92, + 82, + 180, + 213, + 112, + 160, + 241, + 82, + 107, + 105, + 241, + 97, + 117, + 44, + 78, + 64, + 179, + 69, + 213, + 36, + 66, + 9, + 12, + 6, + 102, + 1, + 164, + 149, + 86, + 196, + 129, + 168, + 12, + 208, + 210, + 104, + 74, + 176, + 135, + 255, + 243, + 80, + 196, + 20, + 27, + 209, + 66, + 218, + 42, + 74, + 70, + 13, + 163, + 48, + 96, + 234, + 129, + 65, + 154, + 149, + 32, + 189, + 195, + 236, + 134, + 69, + 176, + 94, + 231, + 67, + 184, + 196, + 96, + 64, + 152, + 19, + 87, + 26, + 252, + 151, + 155, + 97, + 67, + 84, + 86, + 139, + 90, + 33, + 171, + 211, + 124, + 22, + 90, + 116, + 194, + 116, + 167, + 252, + 187, + 69, + 143, + 241, + 231, + 176, + 25, + 187, + 165, + 166, + 201, + 45, + 109, + 112, + 71, + 245, + 208, + 180, + 17, + 127, + 126, + 183, + 123, + 105, + 117, + 169, + 249, + 62, + 253, + 169, + 247, + 177, + 198, + 127, + 205, + 241, + 190, + 139, + 65, + 147, + 221, + 93, + 223, + 254, + 207, + 85, + 40, + 55, + 113, + 73, + 210, + 172, + 181, + 14, + 37, + 186, + 70, + 138, + 70, + 86, + 16, + 137, + 69, + 154, + 88, + 140, + 149, + 164, + 196, + 27, + 234, + 255, + 243, + 64, + 196, + 25, + 26, + 210, + 94, + 218, + 84, + 50, + 70, + 120, + 174, + 107, + 187, + 213, + 229, + 94, + 248, + 174, + 185, + 230, + 227, + 158, + 178, + 17, + 202, + 249, + 181, + 70, + 116, + 14, + 139, + 62, + 25, + 30, + 121, + 30, + 11, + 150, + 75, + 21, + 56, + 89, + 229, + 223, + 36, + 98, + 121, + 100, + 150, + 251, + 150, + 124, + 104, + 189, + 229, + 36, + 185, + 31, + 47, + 255, + 74, + 182, + 69, + 96, + 162, + 104, + 6, + 22, + 46, + 241, + 162, + 233, + 14, + 237, + 123, + 28, + 199, + 179, + 53, + 206, + 152, + 83, + 105, + 114, + 95, + 127, + 200, + 26, + 138, + 21, + 226, + 154, + 213, + 129, + 18, + 171, + 70, + 76, + 2, + 176, + 123, + 255, + 243, + 80, + 196, + 8, + 27, + 131, + 66, + 206, + 84, + 88, + 69, + 176, + 20, + 72, + 57, + 105, + 129, + 52, + 224, + 225, + 146, + 112, + 169, + 45, + 206, + 98, + 6, + 212, + 196, + 152, + 151, + 177, + 117, + 175, + 152, + 183, + 86, + 245, + 216, + 141, + 76, + 61, + 121, + 143, + 148, + 30, + 227, + 220, + 108, + 245, + 42, + 122, + 187, + 139, + 63, + 113, + 18, + 121, + 168, + 211, + 54, + 182, + 72, + 230, + 196, + 76, + 252, + 6, + 194, + 102, + 13, + 199, + 115, + 101, + 1, + 152, + 168, + 96, + 19, + 137, + 225, + 86, + 94, + 16, + 129, + 37, + 96, + 33, + 145, + 77, + 109, + 28, + 181, + 42, + 63, + 140, + 200, + 155, + 210, + 238, + 236, + 191, + 172, + 27, + 244, + 253, + 118, + 165, + 172, + 239, + 138, + 192, + 42, + 21, + 128, + 54, + 190, + 175, + 43, + 64, + 177, + 0, + 21, + 81, + 44, + 200, + 46, + 58, + 161, + 255, + 243, + 80, + 196, + 15, + 26, + 226, + 98, + 202, + 44, + 73, + 134, + 124, + 50, + 16, + 25, + 177, + 232, + 144, + 245, + 117, + 162, + 214, + 149, + 37, + 41, + 253, + 202, + 139, + 156, + 60, + 193, + 67, + 254, + 59, + 247, + 253, + 184, + 23, + 16, + 183, + 247, + 120, + 40, + 195, + 121, + 164, + 233, + 241, + 198, + 160, + 87, + 125, + 56, + 249, + 113, + 99, + 93, + 139, + 66, + 164, + 72, + 96 + ], + "text": "" + } + ], + "location": { + "topRightCorner": { + "x": 254.99999999999997, + "y": 12.000000000000002 + }, + "topLeftCorner": { + "x": 12.000000000000002, + "y": 12.000000000000002 + }, + "bottomRightCorner": { + "x": 254.99999999999997, + "y": 254.99999999999997 + }, + "bottomLeftCorner": { + "x": 12.000000000000002, + "y": 254.99999999999997 + }, + "topRightFinderPattern": { + "x": 244.5, + "y": 22.5 + }, + "topLeftFinderPattern": { + "x": 22.5, + "y": 22.5 + }, + "bottomLeftFinderPattern": { + "x": 22.5, + "y": 244.5 + }, + "bottomRightAlignmentPattern": { + "x": 235.5, + "y": 235.5 + } + } +} \ No newline at end of file diff --git a/tests/end-to-end/structured-append-13/input.png b/tests/end-to-end/structured-append-13/input.png new file mode 100644 index 0000000000000000000000000000000000000000..72bb857a0bf911cc8c9a39a4ca244c284d09d324 GIT binary patch literal 1834 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 DU#wZN literal 0 HcmV?d00001 diff --git a/tests/end-to-end/structured-append-15/output.json b/tests/end-to-end/structured-append-15/output.json new file mode 100644 index 00000000..03f091a2 --- /dev/null +++ b/tests/end-to-end/structured-append-15/output.json @@ -0,0 +1,549 @@ +{ + "binaryData": [ + 150, + 58, + 244, + 209, + 41, + 175, + 49, + 167, + 185, + 239, + 218, + 238, + 98, + 51, + 209, + 38, + 142, + 24, + 114, + 167, + 84, + 211, + 255, + 251, + 53, + 213, + 45, + 75, + 91, + 233, + 244, + 178, + 186, + 29, + 203, + 51, + 107, + 38, + 216, + 116, + 14, + 98, + 64, + 255, + 243, + 112, + 196, + 1, + 40, + 251, + 134, + 125, + 129, + 144, + 104, + 0, + 13, + 16, + 32, + 0, + 9, + 7, + 180, + 85, + 136, + 136, + 55, + 40, + 197, + 28, + 44, + 124, + 44, + 133, + 184, + 25, + 64, + 165, + 9, + 247, + 232, + 137, + 232, + 114, + 20, + 179, + 46, + 4, + 20, + 10, + 8, + 124, + 18, + 213, + 85, + 243, + 83, + 193, + 201, + 16, + 64, + 10, + 223, + 249, + 80, + 94, + 128, + 76, + 143, + 33, + 45, + 30, + 38, + 58, + 215, + 255, + 143, + 192, + 51, + 130, + 42, + 19, + 208, + 156, + 146, + 164, + 176, + 84, + 68, + 218, + 165, + 85, + 171, + 255, + 2, + 100, + 23, + 160, + 50, + 65, + 98, + 84, + 72, + 147, + 132, + 20, + 17, + 224, + 82, + 141, + 2, + 162, + 93, + 171, + 251, + 43, + 255, + 248, + 23, + 37, + 208, + 29, + 193, + 28, + 127, + 10, + 169, + 52, + 188, + 102, + 35, + 35, + 20, + 118, + 8, + 24, + 36, + 195, + 14, + 58, + 43, + 90, + 235, + 250, + 215, + 87, + 255, + 249, + 112, + 63, + 128, + 5, + 37, + 193, + 42, + 30, + 0, + 146, + 135, + 225, + 47, + 26, + 70, + 65, + 76, + 234, + 3, + 180, + 154, + 104, + 32, + 36, + 144, + 246, + 51, + 85, + 85, + 153, + 87, + 76, + 65, + 77, + 69, + 51, + 46, + 255, + 243, + 16, + 196, + 6, + 0, + 0, + 3, + 72, + 1, + 192, + 0, + 0, + 57, + 57, + 46, + 53, + 85, + 85, + 85, + 85, + 85, + 85, + 85, + 85, + 85 + ], + "data": "", + "chunks": [ + { + "type": "byte", + "bytes": [ + 150, + 58, + 244, + 209, + 41, + 175, + 49, + 167, + 185, + 239, + 218, + 238, + 98, + 51, + 209, + 38, + 142, + 24, + 114, + 167, + 84, + 211, + 255, + 251, + 53, + 213, + 45, + 75, + 91, + 233, + 244, + 178, + 186, + 29, + 203, + 51, + 107, + 38, + 216, + 116, + 14, + 98, + 64, + 255, + 243, + 112, + 196, + 1, + 40, + 251, + 134, + 125, + 129, + 144, + 104, + 0, + 13, + 16, + 32, + 0, + 9, + 7, + 180, + 85, + 136, + 136, + 55, + 40, + 197, + 28, + 44, + 124, + 44, + 133, + 184, + 25, + 64, + 165, + 9, + 247, + 232, + 137, + 232, + 114, + 20, + 179, + 46, + 4, + 20, + 10, + 8, + 124, + 18, + 213, + 85, + 243, + 83, + 193, + 201, + 16, + 64, + 10, + 223, + 249, + 80, + 94, + 128, + 76, + 143, + 33, + 45, + 30, + 38, + 58, + 215, + 255, + 143, + 192, + 51, + 130, + 42, + 19, + 208, + 156, + 146, + 164, + 176, + 84, + 68, + 218, + 165, + 85, + 171, + 255, + 2, + 100, + 23, + 160, + 50, + 65, + 98, + 84, + 72, + 147, + 132, + 20, + 17, + 224, + 82, + 141, + 2, + 162, + 93, + 171, + 251, + 43, + 255, + 248, + 23, + 37, + 208, + 29, + 193, + 28, + 127, + 10, + 169, + 52, + 188, + 102, + 35, + 35, + 20, + 118, + 8, + 24, + 36, + 195, + 14, + 58, + 43, + 90, + 235, + 250, + 215, + 87, + 255, + 249, + 112, + 63, + 128, + 5, + 37, + 193, + 42, + 30, + 0, + 146, + 135, + 225, + 47, + 26, + 70, + 65, + 76, + 234, + 3, + 180, + 154, + 104, + 32, + 36, + 144, + 246, + 51, + 85, + 85, + 153, + 87, + 76, + 65, + 77, + 69, + 51, + 46, + 255, + 243, + 16, + 196, + 6, + 0, + 0, + 3, + 72, + 1, + 192, + 0, + 0, + 57, + 57, + 46, + 53, + 85, + 85, + 85, + 85, + 85, + 85, + 85, + 85, + 85 + ], + "text": "" + } + ], + "location": { + "topRightCorner": { + "x": 254.99999999999997, + "y": 12.000000000000002 + }, + "topLeftCorner": { + "x": 12.000000000000002, + "y": 12.000000000000002 + }, + "bottomRightCorner": { + "x": 254.99999999999997, + "y": 254.99999999999997 + }, + "bottomLeftCorner": { + "x": 12.000000000000002, + "y": 254.99999999999997 + }, + "topRightFinderPattern": { + "x": 244.5, + "y": 22.5 + }, + "topLeftFinderPattern": { + "x": 22.5, + "y": 22.5 + }, + "bottomLeftFinderPattern": { + "x": 22.5, + "y": 244.5 + }, + "bottomRightAlignmentPattern": { + "x": 235.5, + "y": 235.5 + } + } +} \ No newline at end of file diff --git a/tests/structured-append-test.ts b/tests/structured-append-test.ts new file mode 100644 index 00000000..cca7efdf --- /dev/null +++ b/tests/structured-append-test.ts @@ -0,0 +1,72 @@ +import * as fs from "fs-extra"; +import * as path from "path"; +import jsQR from "../src"; +import { loadPng } from "../tests/helpers"; +import * as helpers from "./helpers"; + + +// Fisher-Yates-Durstenfeld shuffle +// https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array +Array.prototype.shuffle = function() { + for (let i = this.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [this[i], this[j]] = [this[j], this[i]]; + } +} + +if(typeof Array.prototype.flat === 'undefined') { + // polyfill + Array.prototype.flat = function() { + return (new Array()).concat(...this); + } +} + + +describe("structured-append", async () => { + const pieces = fs.readdirSync(path.join("tests", "end-to-end")).filter((n) => n.includes("structured-append-")); + + // TODO: the structured append header should be exposed so we can reconstruct misordered codes + //pieces.shuffle(); + + var N; + let blocks = new Array(); + it('reconstructs data split across qr codes', async () => { + + for (const p of pieces) { + const inputImage = await helpers.loadPng(path.join("tests", "end-to-end", p, "input.png")); + const result = jsQR(inputImage.data, inputImage.width, inputImage.height); + + expect(result.binaryData).toBeInstanceOf(Array); + + expect(result.data).toEqual(""); // 'data' i.e. 'text' should be empty because there's no text in binary! + expect(result.binaryData).toBeInstanceOf(Array /*TODO: change API to Uint8Array*/); + expect(result.binaryData.length).toBeGreaterThan(0); + + result.M = blocks.length; // TODO: expose this in the jsQR API; for now, just load in order + result.N = pieces.length; // TODO: ditto + + expect(result.N).toBeGreaterThan(0); + + expect(result.M).toBeGreaterThanOrEqual(0); + expect(result.M).toBeLessThan(result.N); + + // ensure N, the total count, is constant across all pieces + if(typeof N === 'undefined') { + N = result.N; + } + expect(result.N).toEqual(N); + + expect(blocks[result.N]).toBeUndefined(); // we should not have seen this block yet + + blocks[result.M] = result.binaryData; + } + + expect(blocks.length).toEqual(N); + + const reconstructed = blocks.flat(); + const expectedOutput = [].concat(...(await fs.readFile(path.join("tests", "amen.mp3")))); + + expect(reconstructed).toEqual(expectedOutput); + }); + +}); From 790f9b8f8ac61ab316fc869b8d0228fbda3351f1 Mon Sep 17 00:00:00 2001 From: kousu Date: Tue, 2 Apr 2019 17:16:43 -0400 Subject: [PATCH 2/8] Split structured-append test into pieces. It's important that this is done sync, not async, because there's a stateful part that places parts into an array by their page number, and if the separate subparts run async from each other the ordering gets messed up. --- tests/helpers.ts | 14 ++++++++++ tests/structured-append-test.ts | 48 ++++++++++++++++++--------------- 2 files changed, 40 insertions(+), 22 deletions(-) diff --git a/tests/helpers.ts b/tests/helpers.ts index f5249400..47e2d45d 100644 --- a/tests/helpers.ts +++ b/tests/helpers.ts @@ -32,6 +32,20 @@ export async function loadPng(path) { return out; } +export function loadPngSync(path) { + const data = png.decode(fs.readFileSync(path)); + const out: { + data: Uint8ClampedArray, + height: number, + width: number, + } = { + data: png.toRGBA8(data), + height: data.height, + width: data.width, + }; + return out; +} + export async function loadBinarized(path) { const image = await loadPng(path); const out = BitMatrix.createEmpty(image.width, image.height); diff --git a/tests/structured-append-test.ts b/tests/structured-append-test.ts index cca7efdf..d04f9784 100644 --- a/tests/structured-append-test.ts +++ b/tests/structured-append-test.ts @@ -22,51 +22,55 @@ if(typeof Array.prototype.flat === 'undefined') { } -describe("structured-append", async () => { +describe("structured-append", () => { const pieces = fs.readdirSync(path.join("tests", "end-to-end")).filter((n) => n.includes("structured-append-")); + const expectedOutput = [].concat(...fs.readFileSync(path.join("tests", "amen.mp3"))); // TODO: the structured append header should be exposed so we can reconstruct misordered codes //pieces.shuffle(); - + + var N; let blocks = new Array(); - it('reconstructs data split across qr codes', async () => { + var i = 0; - for (const p of pieces) { - const inputImage = await helpers.loadPng(path.join("tests", "end-to-end", p, "input.png")); - const result = jsQR(inputImage.data, inputImage.width, inputImage.height); + describe.each(pieces)('piece %s', (p) => { + const inputImage = helpers.loadPngSync(path.join("tests", "end-to-end", p, "input.png")); + const result = jsQR(inputImage.data, inputImage.width, inputImage.height); + it('loads binary data', () => { expect(result.binaryData).toBeInstanceOf(Array); expect(result.data).toEqual(""); // 'data' i.e. 'text' should be empty because there's no text in binary! expect(result.binaryData).toBeInstanceOf(Array /*TODO: change API to Uint8Array*/); expect(result.binaryData.length).toBeGreaterThan(0); + }); + + result.M = i++; //blocks.length; // TODO: expose this in the jsQR API; for now, just load in order + result.N = pieces.length; // TODO: ditto - result.M = blocks.length; // TODO: expose this in the jsQR API; for now, just load in order - result.N = pieces.length; // TODO: ditto + if(typeof N === 'undefined') { + N = result.N; + } + it('reads page numbers', () => { expect(result.N).toBeGreaterThan(0); expect(result.M).toBeGreaterThanOrEqual(0); expect(result.M).toBeLessThan(result.N); // ensure N, the total count, is constant across all pieces - if(typeof N === 'undefined') { - N = result.N; - } expect(result.N).toEqual(N); + }); - expect(blocks[result.N]).toBeUndefined(); // we should not have seen this block yet - - blocks[result.M] = result.binaryData; - } - - expect(blocks.length).toEqual(N); - - const reconstructed = blocks.flat(); - const expectedOutput = [].concat(...(await fs.readFile(path.join("tests", "amen.mp3")))); - - expect(reconstructed).toEqual(expectedOutput); + blocks[result.M] = result.binaryData; }); + describe('reconstructs split codes', () => { + const reconstructed = blocks.flat(); + it('reconstructs', () => { + expect(blocks.length).toEqual(N); + expect(reconstructed).toEqual(expectedOutput); + } + })); }); From 299b2d8e7ff7cf90192ed35594475f42f0081846 Mon Sep 17 00:00:00 2001 From: kousu Date: Tue, 2 Apr 2019 19:00:30 -0400 Subject: [PATCH 3/8] Implement Structured Append. - I remembered that the parity byte exists, so I test that too - bumped the output data down into a sub-member (result.structuredAppend.{M,N,parity}) and gave it a TypeScript type - bumped M and N up to be 1-based, following the QR spec --- src/decoder/decodeData/index.ts | 39 ++++++++++++++++++++++++++++-- src/index.ts | 4 +++- tests/structured-append-test.ts | 42 ++++++++++++++++++++++++++------- 3 files changed, 73 insertions(+), 12 deletions(-) diff --git a/src/decoder/decodeData/index.ts b/src/decoder/decodeData/index.ts index 4ca067ea..82d9fc3f 100644 --- a/src/decoder/decodeData/index.ts +++ b/src/decoder/decodeData/index.ts @@ -2,11 +2,21 @@ import { BitStream } from "./BitStream"; import { shiftJISTable } from "./shiftJISTable"; +export interface StructuredAppendTag { + M: number; + N: number; + parity: number; +} + export interface Chunk { type: Mode; text: string; } +export interface StructuredAppendChunk extends StructuredAppendTag { + type: Mode.StructuredAppend; +} + export interface ByteChunk { type: Mode.Byte | Mode.Kanji; bytes: number[]; @@ -17,17 +27,19 @@ export interface ECIChunk { assignmentNumber: number; } -export type Chunks = Array; +export type Chunks = Array; export interface DecodedQR { text: string; bytes: number[]; chunks: Chunks; + structuredAppend?: StructuredAppendTag; } export enum Mode { Numeric = "numeric", Alphanumeric = "alphanumeric", + StructuredAppend = "structuredappend", Byte = "byte", Kanji = "kanji", ECI = "eci", @@ -37,10 +49,10 @@ enum ModeByte { Terminator = 0x0, Numeric = 0x1, Alphanumeric = 0x2, + StructuredAppend = 0x3, Byte = 0x4, Kanji = 0x8, ECI = 0x7, - // StructuredAppend = 0x3, // FNC1FirstPosition = 0x5, // FNC1SecondPosition = 0x9, } @@ -223,6 +235,29 @@ export function decode(data: Uint8ClampedArray, version: number): DecodedQR { type: Mode.Alphanumeric, text: alphanumericResult.text, }); + } else if (mode === ModeByte.StructuredAppend) { + // QR Standard section 9.2: + // > The 4-bit patterns shall be the binary equivalents of (m - 1) and (n - 1) respectively. + const structuredAppend : StructuredAppendTag = { + M: stream.readBits(4) + 1, + N: stream.readBits(4) + 1, + parity: stream.readBits(8) + }; + // QR codes sometimes contain duplicate Structured Append tags for redundancy. + // If they exist, they are all supposed to be equal. This checks for that: + if(typeof result.parity === 'undefined') { + result.structuredAppend = structuredAppend; + } else { + try { + assert.deepStrictEqual(structuredAppend, result.structuredAppend); + } catch { + console.warn("QR Code contains inconsistent Structured Append tags:", result.structuredAppend, "vs", structuredAppend); + } + } + result.chunks.push({ + type: Mode.StructuredAppend, + ...result.structuredAppend + }); } else if (mode === ModeByte.Byte) { const byteResult = decodeByte(stream, size); result.text += byteResult.text; diff --git a/src/index.ts b/src/index.ts index 65116049..d9d6b42f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,6 @@ import {binarize} from "./binarizer"; import {BitMatrix} from "./BitMatrix"; -import {Chunks} from "./decoder/decodeData"; +import {Chunks, StructuredAppendTag} from "./decoder/decodeData"; import {decode} from "./decoder/decoder"; import {extract} from "./extractor"; import {locate, Point} from "./locator"; @@ -9,6 +9,7 @@ export interface QRCode { binaryData: number[]; data: string; chunks: Chunks; + structuredAppend?: StructuredAppendTag; location: { topRightCorner: Point; topLeftCorner: Point; @@ -39,6 +40,7 @@ function scan(matrix: BitMatrix): QRCode | null { binaryData: decoded.bytes, data: decoded.text, chunks: decoded.chunks, + structuredAppend?: decoded.structuredAppend, location: { topRightCorner: extracted.mappingFunction(location.dimension, 0), topLeftCorner: extracted.mappingFunction(0, 0), diff --git a/tests/structured-append-test.ts b/tests/structured-append-test.ts index d04f9784..844da599 100644 --- a/tests/structured-append-test.ts +++ b/tests/structured-append-test.ts @@ -3,6 +3,7 @@ import * as path from "path"; import jsQR from "../src"; import { loadPng } from "../tests/helpers"; import * as helpers from "./helpers"; +import { strict as assert } from 'assert'; // Fisher-Yates-Durstenfeld shuffle @@ -31,6 +32,7 @@ describe("structured-append", () => { var N; + var parity; let blocks = new Array(); var i = 0; @@ -46,24 +48,40 @@ describe("structured-append", () => { expect(result.binaryData.length).toBeGreaterThan(0); }); - result.M = i++; //blocks.length; // TODO: expose this in the jsQR API; for now, just load in order - result.N = pieces.length; // TODO: ditto - if(typeof N === 'undefined') { - N = result.N; + N = result.structuredAppend.N; + } + + if(typeof parity === 'undefined') { + parity = result.structuredAppend.parity; } it('reads page numbers', () => { - expect(result.N).toBeGreaterThan(0); + // page numbers are 4 bits and 1-based (so 1..16 inclusive) + // The QR standard, section 9.2, explains that it stores them 0-based but counts them 1-based: + // > The 4-bit patterns shall be the binary equivalents of (m - 1) and (n - 1) respectively. + // or in short, 0 { @@ -72,5 +90,11 @@ describe("structured-append", () => { expect(blocks.length).toEqual(N); expect(reconstructed).toEqual(expectedOutput); } + it('parity checks out', () => { + // parity is the xor of all data bytes in the message; see QR spec section 9.3. + // TODO: test how parity interacts with mixed-mode QR codes;  + expect(reconstructed.reduce((acc, val) => acc^val, 0)).toEqual(parity); + }); + })); }); From 3acb7d09276821dea8f1a92f432b57ab1bdffba1 Mon Sep 17 00:00:00 2001 From: kousu Date: Tue, 2 Apr 2019 19:39:03 -0400 Subject: [PATCH 4/8] Repair bugs caught by TypeScript. The assert line is weird. In structured-append-test.ts I can use ``` import { strict as assert } from 'assert'; ``` But here I can't and I have to use ``` import * as assert from 'assert'; ``` (ref: https://stackoverflow.com/questions/39883960/what-is-the-typescript-2-0-es2015-way-to-import-assert-from-node-js) Oh well?? --- src/decoder/decodeData/index.ts | 3 ++- src/index.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/decoder/decodeData/index.ts b/src/decoder/decodeData/index.ts index 82d9fc3f..34afa9a9 100644 --- a/src/decoder/decodeData/index.ts +++ b/src/decoder/decodeData/index.ts @@ -1,6 +1,7 @@ // tslint:disable:no-bitwise import { BitStream } from "./BitStream"; import { shiftJISTable } from "./shiftJISTable"; +import * as assert from 'assert'; export interface StructuredAppendTag { M: number; @@ -245,7 +246,7 @@ export function decode(data: Uint8ClampedArray, version: number): DecodedQR { }; // QR codes sometimes contain duplicate Structured Append tags for redundancy. // If they exist, they are all supposed to be equal. This checks for that: - if(typeof result.parity === 'undefined') { + if(typeof result.structuredAppend === 'undefined') { result.structuredAppend = structuredAppend; } else { try { diff --git a/src/index.ts b/src/index.ts index d9d6b42f..1a851883 100644 --- a/src/index.ts +++ b/src/index.ts @@ -40,7 +40,7 @@ function scan(matrix: BitMatrix): QRCode | null { binaryData: decoded.bytes, data: decoded.text, chunks: decoded.chunks, - structuredAppend?: decoded.structuredAppend, + structuredAppend: decoded.structuredAppend, location: { topRightCorner: extracted.mappingFunction(location.dimension, 0), topLeftCorner: extracted.mappingFunction(0, 0), From 421218584d9345e8969b324583d58a951bc71ee9 Mon Sep 17 00:00:00 2001 From: kousu Date: Tue, 2 Apr 2019 19:40:53 -0400 Subject: [PATCH 5/8] Regenerate test cases. As you can see from the diff, this only adds missing byte chunks and the new structured append chunks, plus 15 newly passing tests :) Previously, in 7d113b2cf6685f68bfbcf86cb8fa82e065e88c79, I had generated the expected output using https://github.com/glassechidna/zxing-cpp/. Now, the expected output was made by jsQR. The fact that the diff shows no change in that part of the output.jsons means this feature branch is correct :) --- tests/end-to-end/report.json | 17 +- .../structured-append-01/output.json | 606 +++++++++++++++++- .../structured-append-02/output.json | 606 +++++++++++++++++- .../structured-append-03/output.json | 606 +++++++++++++++++- .../structured-append-04/output.json | 11 + .../structured-append-05/output.json | 606 +++++++++++++++++- .../structured-append-06/output.json | 11 + .../structured-append-07/output.json | 11 + .../structured-append-08/output.json | 603 ++++++++++++++++- .../structured-append-09/output.json | 606 +++++++++++++++++- .../structured-append-10/output.json | 11 + .../structured-append-11/output.json | 11 + .../structured-append-12/output.json | 11 + .../structured-append-13/output.json | 11 + .../structured-append-14/output.json | 11 + .../structured-append-15/output.json | 11 + 16 files changed, 3735 insertions(+), 14 deletions(-) diff --git a/tests/end-to-end/report.json b/tests/end-to-end/report.json index 24fb4f5b..14152bcc 100644 --- a/tests/end-to-end/report.json +++ b/tests/end-to-end/report.json @@ -1,7 +1,7 @@ { "counts": { "failed": 47, - "successful": 207 + "successful": 222 }, "tests": { "0": true, @@ -245,6 +245,21 @@ "stickerbook-4": true, "stickerbook-5": true, "stickerbook-6": false, + "structured-append-01": true, + "structured-append-02": true, + "structured-append-03": true, + "structured-append-04": true, + "structured-append-05": true, + "structured-append-06": true, + "structured-append-07": true, + "structured-append-08": true, + "structured-append-09": true, + "structured-append-10": true, + "structured-append-11": true, + "structured-append-12": true, + "structured-append-13": true, + "structured-append-14": true, + "structured-append-15": true, "subway-station": false, "tattoo-scan": true, "trackable-book-1": false, diff --git a/tests/end-to-end/structured-append-01/output.json b/tests/end-to-end/structured-append-01/output.json index 1fbad2c0..cb1f9f54 100644 --- a/tests/end-to-end/structured-append-01/output.json +++ b/tests/end-to-end/structured-append-01/output.json @@ -586,7 +586,609 @@ 173 ], "data": "", - "chunks": [], + "chunks": [ + { + "type": "structuredappend", + "M": 1, + "N": 15, + "parity": 109 + }, + { + "type": "byte", + "bytes": [ + 255, + 243, + 128, + 196, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 88, + 105, + 110, + 103, + 0, + 0, + 0, + 15, + 0, + 0, + 0, + 60, + 0, + 0, + 32, + 235, + 0, + 4, + 13, + 13, + 17, + 17, + 21, + 25, + 25, + 29, + 29, + 34, + 37, + 37, + 42, + 42, + 45, + 49, + 49, + 53, + 53, + 56, + 60, + 60, + 64, + 64, + 70, + 75, + 75, + 79, + 79, + 83, + 86, + 86, + 90, + 90, + 94, + 104, + 104, + 114, + 114, + 117, + 121, + 121, + 125, + 125, + 129, + 132, + 132, + 136, + 136, + 140, + 144, + 144, + 148, + 148, + 152, + 155, + 155, + 159, + 159, + 163, + 167, + 167, + 172, + 172, + 176, + 181, + 181, + 185, + 185, + 189, + 193, + 193, + 198, + 198, + 202, + 205, + 205, + 209, + 209, + 213, + 217, + 217, + 221, + 221, + 226, + 229, + 229, + 233, + 233, + 237, + 241, + 241, + 245, + 245, + 249, + 255, + 255, + 255, + 0, + 0, + 0, + 57, + 76, + 65, + 77, + 69, + 51, + 46, + 57, + 57, + 114, + 2, + 105, + 0, + 0, + 0, + 0, + 46, + 46, + 0, + 0, + 20, + 40, + 36, + 4, + 31, + 66, + 0, + 0, + 40, + 0, + 0, + 32, + 235, + 56, + 85, + 255, + 236, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 255, + 243, + 80, + 196, + 0, + 24, + 155, + 30, + 164, + 1, + 67, + 40, + 0, + 46, + 187, + 185, + 253, + 119, + 115, + 230, + 224, + 2, + 19, + 244, + 220, + 56, + 28, + 35, + 116, + 33, + 206, + 115, + 191, + 232, + 66, + 103, + 57, + 9, + 83, + 156, + 249, + 222, + 132, + 33, + 50, + 16, + 132, + 20, + 33, + 27, + 144, + 132, + 33, + 27, + 161, + 8, + 79, + 212, + 231, + 58, + 16, + 62, + 1, + 128, + 97, + 240, + 248, + 187, + 161, + 3, + 225, + 243, + 191, + 252, + 231, + 59, + 255, + 242, + 16, + 132, + 243, + 188, + 132, + 33, + 42, + 66, + 16, + 132, + 33, + 9, + 245, + 57, + 222, + 115, + 156, + 231, + 57, + 206, + 255, + 206, + 113, + 64, + 65, + 192, + 248, + 62, + 8, + 2, + 25, + 127, + 242, + 138, + 4, + 1, + 33, + 0, + 16, + 64, + 9, + 1, + 102, + 142, + 34, + 32, + 70, + 51, + 42, + 18, + 127, + 70, + 255, + 243, + 160, + 196, + 18, + 70, + 92, + 22, + 176, + 213, + 153, + 192, + 0, + 127, + 166, + 2, + 176, + 37, + 0, + 161, + 160, + 101, + 203, + 0, + 10, + 138, + 2, + 124, + 238, + 44, + 42, + 16, + 20, + 37, + 238, + 68, + 82, + 235, + 151, + 29, + 18, + 145, + 192, + 2, + 6, + 158, + 135, + 128, + 176, + 130, + 208, + 206, + 24, + 33, + 168, + 169, + 80, + 166, + 99, + 245, + 148, + 178, + 196, + 84, + 119, + 40, + 225, + 227, + 10, + 150, + 243, + 178, + 221, + 209, + 33, + 249, + 197, + 204, + 70, + 122, + 6, + 51, + 37, + 106, + 98, + 17, + 37, + 91, + 235, + 102, + 24, + 83, + 120, + 252, + 62, + 243, + 202, + 226, + 214, + 227, + 49, + 205, + 66, + 94, + 102, + 101, + 23, + 142, + 180, + 153, + 36, + 223, + 37, + 245, + 109, + 103, + 45, + 173, + 186, + 149, + 97, + 170, + 29, + 214, + 138, + 54, + 40, + 118, + 25, + 127, + 169, + 229, + 146, + 154, + 104, + 205, + 52, + 178, + 49, + 79, + 95, + 146, + 106, + 178, + 27, + 178, + 150, + 125, + 22, + 185, + 39, + 198, + 204, + 204, + 171, + 26, + 251, + 149, + 71, + 101, + 216, + 88, + 141, + 75, + 167, + 249, + 132, + 162, + 154, + 247, + 55, + 77, + 30, + 185, + 87, + 234, + 202, + 173, + 208, + 87, + 144, + 74, + 39, + 229, + 18, + 167, + 238, + 43, + 106, + 228, + 166, + 93, + 45, + 131, + 49, + 189, + 107, + 147, + 52, + 87, + 111, + 86, + 251, + 152, + 212, + 213, + 220, + 45, + 103, + 99, + 47, + 185, + 106, + 190, + 24, + 214, + 166, + 164, + 179, + 190, + 234, + 173, + 185, + 158, + 218, + 153, + 126, + 109, + 231, + 87, + 233, + 168, + 49, + 194, + 174, + 117, + 113, + 203, + 238, + 103, + 77, + 102, + 245, + 205, + 225, + 173 + ], + "text": "" + } + ], + "structuredAppend": { + "M": 1, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, @@ -621,4 +1223,4 @@ "y": 235.5 } } -} +} \ No newline at end of file diff --git a/tests/end-to-end/structured-append-02/output.json b/tests/end-to-end/structured-append-02/output.json index d1bdb139..f4043f16 100644 --- a/tests/end-to-end/structured-append-02/output.json +++ b/tests/end-to-end/structured-append-02/output.json @@ -586,7 +586,609 @@ 90 ], "data": "", - "chunks": [], + "chunks": [ + { + "type": "structuredappend", + "M": 2, + "N": 15, + "parity": 109 + }, + { + "type": "byte", + "bytes": [ + 81, + 99, + 106, + 158, + 237, + 78, + 223, + 239, + 46, + 222, + 187, + 246, + 245, + 44, + 199, + 26, + 12, + 172, + 89, + 149, + 103, + 150, + 187, + 94, + 151, + 249, + 98, + 158, + 173, + 91, + 213, + 10, + 238, + 39, + 96, + 146, + 82, + 11, + 8, + 140, + 28, + 234, + 243, + 81, + 52, + 159, + 100, + 104, + 31, + 230, + 202, + 177, + 30, + 153, + 97, + 126, + 255, + 175, + 34, + 9, + 81, + 184, + 96, + 3, + 225, + 10, + 231, + 255, + 243, + 64, + 196, + 36, + 31, + 138, + 122, + 196, + 11, + 207, + 64, + 0, + 136, + 2, + 178, + 160, + 168, + 64, + 22, + 9, + 4, + 194, + 227, + 22, + 222, + 7, + 149, + 34, + 50, + 85, + 77, + 167, + 60, + 30, + 214, + 57, + 34, + 235, + 116, + 138, + 121, + 235, + 78, + 183, + 227, + 186, + 154, + 185, + 154, + 184, + 153, + 236, + 215, + 187, + 187, + 177, + 251, + 213, + 68, + 112, + 253, + 255, + 197, + 255, + 247, + 87, + 235, + 247, + 243, + 67, + 83, + 218, + 146, + 186, + 159, + 30, + 52, + 36, + 28, + 64, + 228, + 104, + 128, + 242, + 163, + 226, + 59, + 72, + 178, + 40, + 176, + 171, + 145, + 90, + 242, + 138, + 185, + 91, + 240, + 10, + 81, + 246, + 170, + 255, + 243, + 96, + 196, + 0, + 31, + 171, + 214, + 192, + 12, + 194, + 68, + 153, + 194, + 13, + 88, + 112, + 164, + 196, + 86, + 42, + 140, + 57, + 169, + 190, + 109, + 54, + 138, + 212, + 24, + 166, + 84, + 57, + 158, + 70, + 193, + 194, + 104, + 198, + 198, + 1, + 39, + 10, + 64, + 209, + 50, + 217, + 25, + 52, + 223, + 44, + 252, + 131, + 238, + 13, + 98, + 177, + 66, + 101, + 104, + 203, + 85, + 69, + 121, + 204, + 26, + 96, + 174, + 37, + 217, + 214, + 136, + 204, + 66, + 207, + 76, + 234, + 201, + 89, + 24, + 234, + 237, + 157, + 212, + 179, + 42, + 206, + 82, + 208, + 168, + 246, + 217, + 200, + 135, + 100, + 51, + 211, + 70, + 118, + 215, + 107, + 65, + 157, + 22, + 221, + 110, + 157, + 251, + 179, + 210, + 169, + 211, + 66, + 77, + 253, + 93, + 117, + 171, + 229, + 74, + 43, + 34, + 94, + 143, + 106, + 43, + 207, + 95, + 99, + 250, + 213, + 54, + 169, + 163, + 52, + 106, + 61, + 186, + 218, + 221, + 2, + 0, + 224, + 106, + 177, + 200, + 47, + 0, + 120, + 112, + 84, + 13, + 244, + 213, + 91, + 121, + 255, + 243, + 80, + 196, + 16, + 29, + 41, + 154, + 189, + 106, + 123, + 6, + 80, + 97, + 4, + 172, + 13, + 206, + 10, + 163, + 42, + 49, + 74, + 44, + 88, + 82, + 90, + 116, + 0, + 33, + 16, + 148, + 144, + 91, + 168, + 80, + 98, + 108, + 110, + 144, + 92, + 129, + 4, + 8, + 10, + 228, + 219, + 26, + 232, + 22, + 155, + 82, + 141, + 157, + 251, + 177, + 122, + 253, + 208, + 33, + 155, + 31, + 150, + 241, + 1, + 5, + 146, + 19, + 121, + 112, + 227, + 38, + 82, + 211, + 166, + 133, + 212, + 124, + 164, + 210, + 84, + 31, + 181, + 75, + 131, + 66, + 210, + 104, + 109, + 122, + 214, + 52, + 130, + 144, + 2, + 22, + 100, + 141, + 64, + 82, + 2, + 231, + 87, + 45, + 91, + 182, + 104, + 178, + 90, + 12, + 161, + 83, + 108, + 74, + 3, + 18, + 25, + 178, + 72, + 154, + 78, + 88, + 170, + 67, + 78, + 166, + 85, + 74, + 24, + 133, + 255, + 243, + 80, + 196, + 16, + 30, + 66, + 74, + 205, + 190, + 121, + 134, + 148, + 194, + 119, + 21, + 173, + 73, + 147, + 136, + 28, + 20, + 145, + 106, + 254, + 164, + 21, + 11, + 6, + 61, + 21, + 60, + 49, + 169, + 67, + 17, + 160, + 180, + 61, + 30, + 85, + 168, + 48, + 181, + 17, + 5, + 20, + 190, + 2, + 134, + 161, + 171, + 28, + 225, + 220, + 149, + 179, + 114, + 169, + 214, + 130, + 171, + 59, + 16, + 38, + 169, + 21, + 152, + 195, + 76, + 219, + 215, + 92, + 47, + 228, + 100, + 159, + 73, + 233, + 195, + 63, + 207, + 36, + 55, + 188, + 62, + 143, + 114, + 93, + 34, + 87, + 76, + 80, + 10, + 125, + 242, + 205, + 138, + 224, + 34, + 52, + 234, + 46, + 5, + 73, + 241, + 70, + 197, + 217, + 205, + 57, + 143, + 90, + 114, + 20, + 7, + 83, + 153, + 133, + 102, + 73, + 55, + 133, + 49, + 95, + 21, + 90 + ], + "text": "" + } + ], + "structuredAppend": { + "M": 2, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, @@ -621,4 +1223,4 @@ "y": 235.5 } } -} +} \ No newline at end of file diff --git a/tests/end-to-end/structured-append-03/output.json b/tests/end-to-end/structured-append-03/output.json index ba31e60f..e0461054 100644 --- a/tests/end-to-end/structured-append-03/output.json +++ b/tests/end-to-end/structured-append-03/output.json @@ -586,7 +586,609 @@ 55 ], "data": "", - "chunks": [], + "chunks": [ + { + "type": "structuredappend", + "M": 3, + "N": 15, + "parity": 109 + }, + { + "type": "byte", + "bytes": [ + 108, + 45, + 42, + 255, + 243, + 80, + 196, + 12, + 26, + 217, + 202, + 184, + 82, + 121, + 134, + 188, + 139, + 207, + 99, + 138, + 133, + 198, + 123, + 102, + 89, + 65, + 84, + 236, + 210, + 233, + 154, + 49, + 188, + 197, + 150, + 151, + 133, + 148, + 254, + 179, + 253, + 213, + 182, + 244, + 9, + 169, + 223, + 89, + 245, + 243, + 105, + 22, + 125, + 188, + 97, + 114, + 218, + 135, + 188, + 41, + 79, + 255, + 241, + 85, + 212, + 39, + 238, + 26, + 181, + 213, + 39, + 118, + 224, + 192, + 6, + 88, + 70, + 117, + 115, + 7, + 225, + 113, + 160, + 35, + 207, + 104, + 184, + 125, + 72, + 88, + 179, + 203, + 32, + 82, + 172, + 173, + 52, + 143, + 102, + 178, + 216, + 88, + 234, + 34, + 228, + 16, + 19, + 202, + 99, + 108, + 241, + 213, + 5, + 182, + 237, + 219, + 54, + 154, + 82, + 188, + 176, + 245, + 161, + 39, + 20, + 46, + 62, + 141, + 78, + 8, + 81, + 240, + 166, + 255, + 243, + 64, + 196, + 21, + 27, + 217, + 2, + 217, + 190, + 73, + 134, + 124, + 8, + 187, + 237, + 44, + 157, + 39, + 155, + 114, + 217, + 230, + 19, + 164, + 140, + 149, + 94, + 238, + 218, + 109, + 152, + 145, + 230, + 53, + 105, + 21, + 170, + 44, + 168, + 80, + 16, + 152, + 159, + 32, + 36, + 26, + 15, + 226, + 132, + 37, + 28, + 183, + 36, + 160, + 88, + 34, + 15, + 168, + 34, + 147, + 111, + 98, + 129, + 1, + 166, + 210, + 81, + 17, + 56, + 126, + 39, + 168, + 108, + 49, + 72, + 124, + 229, + 31, + 205, + 136, + 208, + 224, + 253, + 228, + 4, + 239, + 112, + 62, + 64, + 105, + 241, + 112, + 253, + 93, + 236, + 123, + 7, + 6, + 10, + 137, + 254, + 179, + 106, + 255, + 243, + 96, + 196, + 0, + 29, + 114, + 254, + 200, + 0, + 192, + 70, + 240, + 171, + 108, + 26, + 20, + 50, + 34, + 97, + 102, + 17, + 60, + 191, + 41, + 132, + 192, + 158, + 184, + 243, + 151, + 106, + 236, + 162, + 69, + 41, + 153, + 148, + 203, + 185, + 127, + 120, + 103, + 148, + 206, + 226, + 221, + 58, + 48, + 58, + 136, + 93, + 74, + 79, + 249, + 20, + 255, + 164, + 176, + 81, + 168, + 9, + 170, + 161, + 249, + 59, + 244, + 175, + 149, + 51, + 232, + 50, + 216, + 192, + 133, + 56, + 81, + 38, + 198, + 173, + 9, + 75, + 105, + 35, + 29, + 85, + 216, + 23, + 15, + 200, + 138, + 8, + 54, + 198, + 195, + 3, + 40, + 14, + 31, + 105, + 74, + 140, + 199, + 111, + 75, + 187, + 109, + 126, + 254, + 190, + 42, + 6, + 10, + 134, + 131, + 160, + 226, + 64, + 42, + 152, + 10, + 30, + 81, + 166, + 177, + 104, + 181, + 197, + 168, + 237, + 174, + 0, + 185, + 25, + 101, + 223, + 255, + 27, + 77, + 238, + 119, + 156, + 194, + 98, + 192, + 70, + 154, + 79, + 231, + 192, + 16, + 18, + 75, + 50, + 173, + 6, + 255, + 243, + 64, + 196, + 25, + 27, + 113, + 138, + 230, + 126, + 121, + 134, + 88, + 65, + 51, + 235, + 185, + 26, + 216, + 212, + 203, + 60, + 108, + 239, + 197, + 21, + 44, + 149, + 69, + 48, + 76, + 223, + 139, + 9, + 66, + 17, + 186, + 172, + 35, + 4, + 133, + 161, + 209, + 202, + 24, + 202, + 239, + 76, + 18, + 255, + 114, + 41, + 127, + 131, + 85, + 89, + 23, + 11, + 24, + 98, + 92, + 36, + 29, + 208, + 107, + 38, + 16, + 162, + 194, + 40, + 81, + 1, + 200, + 86, + 44, + 159, + 47, + 16, + 165, + 165, + 216, + 212, + 158, + 179, + 78, + 171, + 58, + 209, + 22, + 82, + 154, + 243, + 96, + 245, + 103, + 216, + 197, + 50, + 0, + 37, + 29, + 251, + 120, + 210, + 255, + 243, + 80, + 196, + 6, + 27, + 82, + 210, + 218, + 94, + 121, + 132, + 124, + 69, + 41, + 98, + 2, + 140, + 31, + 199, + 137, + 80, + 107, + 46, + 98, + 70, + 157, + 128, + 8, + 214, + 72, + 255, + 103, + 47, + 225, + 83, + 142, + 181, + 36, + 205, + 149, + 156, + 169, + 117, + 45, + 171, + 25, + 138, + 99, + 165, + 29, + 173, + 169, + 101, + 236, + 143, + 161, + 74, + 134, + 135, + 109, + 169, + 190, + 254, + 174, + 240, + 77, + 163, + 243, + 185, + 77, + 12, + 206, + 128, + 198, + 238, + 158, + 217, + 25, + 108, + 151, + 68, + 74, + 21, + 159, + 176, + 55 + ], + "text": "" + } + ], + "structuredAppend": { + "M": 3, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, @@ -621,4 +1223,4 @@ "y": 235.5 } } -} +} \ No newline at end of file diff --git a/tests/end-to-end/structured-append-04/output.json b/tests/end-to-end/structured-append-04/output.json index cda37289..f78bc489 100644 --- a/tests/end-to-end/structured-append-04/output.json +++ b/tests/end-to-end/structured-append-04/output.json @@ -587,6 +587,12 @@ ], "data": "", "chunks": [ + { + "type": "structuredappend", + "M": 4, + "N": 15, + "parity": 109 + }, { "type": "byte", "bytes": [ @@ -1178,6 +1184,11 @@ "text": "" } ], + "structuredAppend": { + "M": 4, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, diff --git a/tests/end-to-end/structured-append-05/output.json b/tests/end-to-end/structured-append-05/output.json index fcad7c6b..5cbee4ae 100644 --- a/tests/end-to-end/structured-append-05/output.json +++ b/tests/end-to-end/structured-append-05/output.json @@ -586,7 +586,609 @@ 4 ], "data": "", - "chunks": [], + "chunks": [ + { + "type": "structuredappend", + "M": 5, + "N": 15, + "parity": 109 + }, + { + "type": "byte", + "bytes": [ + 151, + 90, + 220, + 57, + 19, + 158, + 116, + 215, + 68, + 204, + 16, + 252, + 188, + 240, + 196, + 161, + 97, + 20, + 236, + 48, + 20, + 49, + 7, + 97, + 133, + 197, + 109, + 206, + 100, + 4, + 144, + 158, + 149, + 0, + 230, + 133, + 99, + 6, + 73, + 200, + 229, + 158, + 167, + 155, + 231, + 152, + 137, + 77, + 69, + 132, + 46, + 26, + 37, + 235, + 105, + 3, + 245, + 209, + 69, + 132, + 23, + 129, + 205, + 63, + 52, + 0, + 14, + 214, + 17, + 216, + 65, + 252, + 246, + 46, + 16, + 113, + 127, + 240, + 143, + 8, + 73, + 160, + 49, + 127, + 211, + 66, + 149, + 233, + 254, + 155, + 197, + 22, + 243, + 174, + 249, + 249, + 125, + 62, + 23, + 210, + 50, + 136, + 153, + 251, + 157, + 130, + 10, + 82, + 14, + 235, + 216, + 30, + 252, + 230, + 109, + 201, + 33, + 252, + 123, + 231, + 218, + 48, + 24, + 205, + 97, + 146, + 32, + 2, + 23, + 242, + 71, + 27, + 69, + 13, + 142, + 255, + 243, + 96, + 196, + 14, + 35, + 131, + 206, + 226, + 124, + 102, + 10, + 180, + 141, + 171, + 86, + 14, + 7, + 136, + 46, + 124, + 73, + 68, + 171, + 246, + 50, + 140, + 59, + 188, + 173, + 168, + 29, + 55, + 68, + 181, + 36, + 92, + 170, + 220, + 163, + 144, + 214, + 229, + 177, + 53, + 83, + 100, + 150, + 110, + 103, + 168, + 42, + 172, + 170, + 207, + 26, + 236, + 86, + 154, + 255, + 185, + 82, + 123, + 51, + 66, + 194, + 34, + 198, + 89, + 193, + 223, + 17, + 42, + 168, + 171, + 167, + 170, + 91, + 165, + 78, + 53, + 103, + 215, + 65, + 46, + 241, + 232, + 101, + 113, + 21, + 75, + 45, + 74, + 203, + 173, + 5, + 212, + 174, + 147, + 93, + 81, + 206, + 90, + 58, + 110, + 61, + 105, + 61, + 150, + 251, + 199, + 122, + 255, + 244, + 255, + 87, + 247, + 180, + 105, + 251, + 6, + 149, + 209, + 78, + 221, + 93, + 11, + 59, + 106, + 168, + 221, + 46, + 186, + 214, + 36, + 66, + 39, + 164, + 210, + 74, + 145, + 152, + 150, + 106, + 104, + 112, + 249, + 25, + 71, + 26, + 182, + 2, + 175, + 142, + 147, + 110, + 255, + 243, + 80, + 196, + 15, + 27, + 226, + 234, + 218, + 74, + 123, + 4, + 60, + 172, + 125, + 51, + 22, + 101, + 208, + 12, + 89, + 80, + 182, + 203, + 190, + 43, + 93, + 17, + 191, + 205, + 163, + 119, + 37, + 106, + 213, + 61, + 66, + 230, + 82, + 136, + 103, + 51, + 16, + 192, + 165, + 14, + 137, + 40, + 149, + 45, + 158, + 149, + 66, + 229, + 43, + 219, + 205, + 154, + 244, + 74, + 45, + 119, + 103, + 125, + 233, + 103, + 114, + 167, + 37, + 180, + 51, + 178, + 148, + 205, + 55, + 173, + 87, + 125, + 58, + 34, + 63, + 162, + 63, + 133, + 162, + 41, + 25, + 245, + 246, + 18, + 228, + 13, + 205, + 173, + 169, + 143, + 138, + 162, + 78, + 47, + 105, + 77, + 245, + 150, + 30, + 76, + 204, + 42, + 238, + 218, + 32, + 6, + 119, + 128, + 104, + 103, + 20, + 163, + 137, + 23, + 37, + 164, + 78, + 139, + 121, + 118, + 209, + 45, + 231, + 89, + 255, + 243, + 80, + 196, + 20, + 28, + 250, + 114, + 197, + 144, + 72, + 135, + 128, + 92, + 140, + 19, + 24, + 106, + 210, + 220, + 106, + 230, + 83, + 199, + 106, + 242, + 179, + 28, + 132, + 66, + 133, + 56, + 174, + 10, + 227, + 77, + 109, + 228, + 254, + 108, + 107, + 9, + 158, + 3, + 100, + 133, + 19, + 79, + 242, + 195, + 40, + 185, + 15, + 15, + 42, + 65, + 122, + 183, + 43, + 11, + 135, + 137, + 132, + 88, + 147, + 213, + 44, + 226, + 198, + 171, + 60, + 171, + 246, + 47, + 212, + 234, + 223, + 1, + 37, + 31, + 96, + 116, + 36, + 185, + 34, + 77, + 124, + 139, + 192, + 207, + 120, + 231, + 199, + 146, + 23, + 54, + 146, + 226, + 78, + 110, + 186, + 16, + 179, + 4, + 78, + 177, + 235, + 37, + 211, + 84, + 165, + 50, + 150, + 218, + 168, + 83, + 203, + 208, + 89, + 67, + 61, + 112, + 107, + 85, + 101, + 142, + 161, + 87, + 232, + 88, + 255, + 243, + 64, + 196, + 21, + 26, + 225, + 134, + 202, + 84, + 97, + 135, + 36, + 187, + 188, + 235, + 181, + 99, + 254, + 173, + 23, + 191, + 24, + 128, + 10, + 35, + 101, + 9, + 252, + 182, + 55, + 79, + 4 + ], + "text": "" + } + ], + "structuredAppend": { + "M": 5, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, @@ -621,4 +1223,4 @@ "y": 235.5 } } -} +} \ No newline at end of file diff --git a/tests/end-to-end/structured-append-06/output.json b/tests/end-to-end/structured-append-06/output.json index bc09ac90..92f3f394 100644 --- a/tests/end-to-end/structured-append-06/output.json +++ b/tests/end-to-end/structured-append-06/output.json @@ -587,6 +587,12 @@ ], "data": "", "chunks": [ + { + "type": "structuredappend", + "M": 6, + "N": 15, + "parity": 109 + }, { "type": "byte", "bytes": [ @@ -1178,6 +1184,11 @@ "text": "" } ], + "structuredAppend": { + "M": 6, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, diff --git a/tests/end-to-end/structured-append-07/output.json b/tests/end-to-end/structured-append-07/output.json index c2000269..a01b3ffe 100644 --- a/tests/end-to-end/structured-append-07/output.json +++ b/tests/end-to-end/structured-append-07/output.json @@ -587,6 +587,12 @@ ], "data": "", "chunks": [ + { + "type": "structuredappend", + "M": 7, + "N": 15, + "parity": 109 + }, { "type": "byte", "bytes": [ @@ -1178,6 +1184,11 @@ "text": "" } ], + "structuredAppend": { + "M": 7, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, diff --git a/tests/end-to-end/structured-append-08/output.json b/tests/end-to-end/structured-append-08/output.json index 332d3a58..f0e78bf4 100644 --- a/tests/end-to-end/structured-append-08/output.json +++ b/tests/end-to-end/structured-append-08/output.json @@ -588,10 +588,607 @@ "data": "", "chunks": [ { - "type": "eci", - "assignmentNumber": -1 + "type": "structuredappend", + "M": 8, + "N": 15, + "parity": 109 + }, + { + "type": "byte", + "bytes": [ + 44, + 162, + 163, + 129, + 62, + 19, + 188, + 101, + 71, + 24, + 51, + 55, + 237, + 91, + 73, + 139, + 180, + 214, + 11, + 224, + 26, + 240, + 48, + 255, + 243, + 80, + 196, + 15, + 28, + 17, + 34, + 214, + 252, + 194, + 77, + 0, + 64, + 171, + 101, + 139, + 178, + 28, + 14, + 130, + 152, + 163, + 253, + 252, + 154, + 195, + 145, + 28, + 144, + 83, + 247, + 255, + 26, + 123, + 253, + 169, + 44, + 114, + 213, + 173, + 48, + 1, + 196, + 78, + 131, + 239, + 20, + 9, + 209, + 192, + 12, + 72, + 91, + 22, + 145, + 231, + 2, + 60, + 199, + 199, + 8, + 197, + 147, + 189, + 42, + 31, + 60, + 252, + 163, + 138, + 41, + 166, + 12, + 8, + 21, + 90, + 149, + 173, + 225, + 231, + 174, + 84, + 113, + 52, + 141, + 22, + 23, + 52, + 191, + 176, + 174, + 124, + 58, + 186, + 117, + 180, + 226, + 58, + 59, + 127, + 221, + 28, + 196, + 111, + 234, + 255, + 109, + 254, + 235, + 149, + 96, + 94, + 250, + 185, + 102, + 188, + 106, + 59, + 61, + 136, + 237, + 16, + 76, + 109, + 2, + 42, + 94, + 44, + 26, + 255, + 243, + 80, + 196, + 19, + 27, + 153, + 78, + 217, + 148, + 98, + 70, + 88, + 100, + 136, + 154, + 101, + 114, + 159, + 44, + 200, + 170, + 67, + 192, + 82, + 88, + 27, + 247, + 154, + 161, + 130, + 48, + 87, + 18, + 219, + 30, + 61, + 134, + 117, + 143, + 95, + 135, + 30, + 192, + 133, + 76, + 198, + 170, + 105, + 92, + 64, + 108, + 78, + 9, + 7, + 196, + 128, + 192, + 144, + 44, + 72, + 94, + 133, + 5, + 192, + 7, + 144, + 30, + 8, + 11, + 173, + 141, + 156, + 109, + 207, + 164, + 210, + 30, + 17, + 176, + 224, + 52, + 0, + 181, + 23, + 107, + 127, + 250, + 25, + 148, + 141, + 180, + 89, + 200, + 22, + 186, + 196, + 188, + 38, + 85, + 149, + 57, + 94, + 97, + 10, + 17, + 152, + 130, + 92, + 130, + 116, + 227, + 212, + 115, + 200, + 162, + 148, + 114, + 69, + 101, + 89, + 235, + 144, + 134, + 47, + 144, + 212, + 49, + 137, + 97, + 255, + 243, + 64, + 196, + 25, + 26, + 209, + 38, + 197, + 178, + 51, + 6, + 104, + 251, + 174, + 225, + 158, + 17, + 145, + 153, + 218, + 112, + 48, + 80, + 174, + 196, + 20, + 100, + 59, + 142, + 166, + 120, + 95, + 123, + 192, + 64, + 136, + 56, + 210, + 172, + 81, + 242, + 176, + 144, + 88, + 233, + 25, + 26, + 65, + 181, + 172, + 2, + 212, + 13, + 80, + 148, + 153, + 48, + 37, + 140, + 26, + 195, + 227, + 6, + 193, + 65, + 97, + 72, + 80, + 50, + 48, + 112, + 181, + 68, + 84, + 153, + 228, + 2, + 202, + 35, + 225, + 173, + 149, + 78, + 181, + 94, + 248, + 139, + 176, + 161, + 103, + 54, + 133, + 30, + 74, + 106, + 106, + 215, + 127, + 148, + 1, + 143, + 218, + 67, + 255, + 243, + 80, + 196, + 8, + 27, + 138, + 206, + 197, + 148, + 97, + 132, + 152, + 75, + 3, + 236, + 4, + 230, + 182, + 197, + 132, + 6, + 22, + 2, + 118, + 35, + 51, + 237, + 59, + 109, + 246, + 220, + 34, + 36, + 251, + 184, + 151, + 243, + 14, + 148, + 167, + 173, + 176, + 207, + 113, + 150, + 158, + 43, + 85, + 38, + 119, + 116, + 101, + 116, + 65, + 13, + 57, + 25, + 108, + 231, + 68, + 73, + 222, + 143, + 171, + 255, + 76, + 224, + 154, + 180, + 73, + 239, + 145, + 217, + 183, + 209, + 228, + 127, + 151, + 231, + 74, + 19, + 34, + 189, + 30, + 126, + 77, + 247, + 186, + 7, + 13, + 188, + 16, + 91, + 100, + 226, + 0, + 35, + 3, + 232, + 91, + 60, + 218, + 132, + 23, + 134, + 101, + 10, + 23, + 78, + 168, + 156, + 90, + 229, + 205, + 85, + 44, + 70, + 155, + 85, + 199, + 16, + 6, + 212, + 107, + 85, + 44, + 9, + 84, + 36, + 255, + 243, + 80, + 196, + 14, + 26, + 195, + 66, + 218, + 92, + 64, + 71, + 177, + 24, + 29, + 137, + 7, + 170, + 172, + 138, + 187, + 117, + 23, + 81, + 223, + 29, + 7, + 178, + 50, + 14, + 89, + 88, + 95, + 94, + 202, + 121, + 125, + 110, + 103, + 25, + 55, + 236, + 221, + 202, + 208, + 179, + 209, + 165, + 30, + 116, + 138, + 173, + 18, + 106, + 8, + 228, + 32, + 148, + 39, + 127, + 250, + 135, + 101, + 249, + 151, + 231, + 158 + ], + "text": "" } ], + "structuredAppend": { + "M": 8, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, @@ -626,4 +1223,4 @@ "y": 235.5 } } -} +} \ No newline at end of file diff --git a/tests/end-to-end/structured-append-09/output.json b/tests/end-to-end/structured-append-09/output.json index 590327b8..befb8640 100644 --- a/tests/end-to-end/structured-append-09/output.json +++ b/tests/end-to-end/structured-append-09/output.json @@ -586,7 +586,609 @@ 166 ], "data": "", - "chunks": [], + "chunks": [ + { + "type": "structuredappend", + "M": 9, + "N": 15, + "parity": 109 + }, + { + "type": "byte", + "bytes": [ + 255, + 255, + 148, + 254, + 113, + 150, + 165, + 194, + 75, + 228, + 108, + 226, + 20, + 52, + 70, + 119, + 176, + 159, + 212, + 140, + 72, + 13, + 237, + 53, + 23, + 145, + 207, + 153, + 223, + 111, + 125, + 212, + 144, + 99, + 170, + 83, + 152, + 255, + 85, + 68, + 42, + 228, + 73, + 82, + 3, + 45, + 28, + 218, + 22, + 98, + 110, + 143, + 68, + 124, + 208, + 72, + 188, + 166, + 115, + 11, + 40, + 93, + 103, + 255, + 243, + 64, + 196, + 24, + 26, + 147, + 66, + 198, + 82, + 96, + 196, + 212, + 159, + 20, + 92, + 172, + 98, + 154, + 14, + 97, + 109, + 172, + 118, + 145, + 4, + 206, + 169, + 82, + 221, + 215, + 175, + 73, + 155, + 87, + 170, + 226, + 153, + 20, + 20, + 155, + 191, + 191, + 186, + 221, + 84, + 137, + 123, + 106, + 142, + 215, + 101, + 78, + 56, + 146, + 236, + 247, + 71, + 209, + 27, + 181, + 181, + 164, + 73, + 80, + 245, + 102, + 215, + 74, + 146, + 134, + 202, + 221, + 19, + 108, + 153, + 31, + 93, + 52, + 181, + 190, + 197, + 123, + 14, + 44, + 119, + 117, + 252, + 234, + 163, + 49, + 66, + 138, + 170, + 171, + 21, + 40, + 168, + 28, + 109, + 66, + 131, + 204, + 23, + 255, + 243, + 80, + 196, + 8, + 27, + 10, + 122, + 194, + 82, + 122, + 70, + 144, + 239, + 40, + 198, + 162, + 108, + 126, + 246, + 59, + 195, + 176, + 138, + 86, + 46, + 220, + 154, + 28, + 126, + 227, + 11, + 166, + 206, + 108, + 98, + 141, + 70, + 77, + 109, + 93, + 226, + 57, + 67, + 225, + 87, + 132, + 123, + 240, + 187, + 145, + 39, + 121, + 55, + 23, + 97, + 131, + 144, + 255, + 203, + 231, + 191, + 186, + 126, + 156, + 75, + 207, + 249, + 237, + 82, + 18, + 75, + 85, + 255, + 69, + 135, + 253, + 207, + 58, + 191, + 247, + 21, + 155, + 120, + 42, + 126, + 37, + 136, + 11, + 234, + 166, + 86, + 33, + 121, + 220, + 74, + 2, + 160, + 125, + 102, + 1, + 18, + 34, + 161, + 208, + 197, + 139, + 217, + 82, + 145, + 196, + 211, + 84, + 170, + 38, + 234, + 203, + 149, + 106, + 0, + 53, + 170, + 154, + 203, + 233, + 81, + 216, + 199, + 132, + 200, + 255, + 243, + 80, + 196, + 16, + 27, + 40, + 230, + 210, + 84, + 203, + 210, + 112, + 40, + 188, + 35, + 131, + 34, + 122, + 236, + 115, + 28, + 227, + 17, + 217, + 152, + 155, + 175, + 166, + 254, + 34, + 94, + 37, + 168, + 230, + 18, + 3, + 76, + 82, + 26, + 36, + 96, + 218, + 54, + 162, + 198, + 230, + 193, + 61, + 139, + 123, + 208, + 78, + 76, + 40, + 22, + 48, + 14, + 146, + 30, + 81, + 171, + 97, + 66, + 135, + 55, + 139, + 67, + 5, + 14, + 14, + 47, + 165, + 107, + 22, + 118, + 65, + 136, + 122, + 242, + 102, + 28, + 183, + 244, + 135, + 182, + 147, + 0, + 127, + 148, + 225, + 112, + 254, + 164, + 185, + 139, + 100, + 86, + 239, + 151, + 242, + 236, + 221, + 77, + 56, + 173, + 149, + 50, + 124, + 113, + 219, + 183, + 241, + 233, + 114, + 75, + 23, + 110, + 60, + 128, + 218, + 169, + 102, + 141, + 46, + 199, + 208, + 128, + 129, + 88, + 255, + 243, + 64, + 196, + 24, + 27, + 34, + 22, + 210, + 82, + 97, + 134, + 228, + 66, + 22, + 50, + 249, + 151, + 247, + 215, + 3, + 134, + 74, + 175, + 116, + 241, + 187, + 17, + 174, + 147, + 99, + 43, + 118, + 54, + 96, + 225, + 226, + 67, + 121, + 191, + 177, + 92, + 250, + 95, + 237, + 171, + 53, + 42, + 130, + 198, + 172, + 117, + 175, + 59, + 249, + 167, + 174, + 165, + 97, + 73, + 79, + 200, + 137, + 243, + 48, + 96, + 133, + 152, + 19, + 80, + 176, + 177, + 228, + 201, + 208, + 205, + 2, + 210, + 192, + 88, + 0, + 155, + 29, + 42, + 134, + 104, + 211, + 176, + 233, + 106, + 212, + 255, + 69, + 55, + 237, + 115, + 210, + 181, + 248, + 248, + 156, + 109, + 252, + 128, + 255, + 243, + 80, + 196, + 6, + 27, + 57, + 122, + 198, + 84, + 123, + 6, + 20, + 176, + 105, + 34, + 160, + 50, + 134, + 120, + 203, + 170, + 201, + 247, + 177, + 73, + 199, + 23, + 213, + 8, + 49, + 114, + 11, + 24, + 145, + 47, + 48, + 102, + 66, + 208, + 26, + 58, + 24, + 8, + 136, + 23, + 254, + 123, + 33, + 129, + 92, + 82, + 166 + ], + "text": "" + } + ], + "structuredAppend": { + "M": 9, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, @@ -621,4 +1223,4 @@ "y": 235.5 } } -} +} \ No newline at end of file diff --git a/tests/end-to-end/structured-append-10/output.json b/tests/end-to-end/structured-append-10/output.json index a79f0ecd..2baf7d53 100644 --- a/tests/end-to-end/structured-append-10/output.json +++ b/tests/end-to-end/structured-append-10/output.json @@ -587,6 +587,12 @@ ], "data": "", "chunks": [ + { + "type": "structuredappend", + "M": 10, + "N": 15, + "parity": 109 + }, { "type": "byte", "bytes": [ @@ -1178,6 +1184,11 @@ "text": "" } ], + "structuredAppend": { + "M": 10, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, diff --git a/tests/end-to-end/structured-append-11/output.json b/tests/end-to-end/structured-append-11/output.json index 52bcd04c..f6bb9e3b 100644 --- a/tests/end-to-end/structured-append-11/output.json +++ b/tests/end-to-end/structured-append-11/output.json @@ -587,6 +587,12 @@ ], "data": "", "chunks": [ + { + "type": "structuredappend", + "M": 11, + "N": 15, + "parity": 109 + }, { "type": "byte", "bytes": [ @@ -1178,6 +1184,11 @@ "text": "" } ], + "structuredAppend": { + "M": 11, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, diff --git a/tests/end-to-end/structured-append-12/output.json b/tests/end-to-end/structured-append-12/output.json index d428440a..c96a4cf9 100644 --- a/tests/end-to-end/structured-append-12/output.json +++ b/tests/end-to-end/structured-append-12/output.json @@ -587,6 +587,12 @@ ], "data": "", "chunks": [ + { + "type": "structuredappend", + "M": 12, + "N": 15, + "parity": 109 + }, { "type": "byte", "bytes": [ @@ -1178,6 +1184,11 @@ "text": "" } ], + "structuredAppend": { + "M": 12, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, diff --git a/tests/end-to-end/structured-append-13/output.json b/tests/end-to-end/structured-append-13/output.json index c30f6298..7ae4702b 100644 --- a/tests/end-to-end/structured-append-13/output.json +++ b/tests/end-to-end/structured-append-13/output.json @@ -587,6 +587,12 @@ ], "data": "", "chunks": [ + { + "type": "structuredappend", + "M": 13, + "N": 15, + "parity": 109 + }, { "type": "byte", "bytes": [ @@ -1178,6 +1184,11 @@ "text": "" } ], + "structuredAppend": { + "M": 13, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, diff --git a/tests/end-to-end/structured-append-14/output.json b/tests/end-to-end/structured-append-14/output.json index 986d22cf..087c7965 100644 --- a/tests/end-to-end/structured-append-14/output.json +++ b/tests/end-to-end/structured-append-14/output.json @@ -587,6 +587,12 @@ ], "data": "", "chunks": [ + { + "type": "structuredappend", + "M": 14, + "N": 15, + "parity": 109 + }, { "type": "byte", "bytes": [ @@ -1178,6 +1184,11 @@ "text": "" } ], + "structuredAppend": { + "M": 14, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, diff --git a/tests/end-to-end/structured-append-15/output.json b/tests/end-to-end/structured-append-15/output.json index 03f091a2..3180cbac 100644 --- a/tests/end-to-end/structured-append-15/output.json +++ b/tests/end-to-end/structured-append-15/output.json @@ -254,6 +254,12 @@ ], "data": "", "chunks": [ + { + "type": "structuredappend", + "M": 15, + "N": 15, + "parity": 109 + }, { "type": "byte", "bytes": [ @@ -512,6 +518,11 @@ "text": "" } ], + "structuredAppend": { + "M": 15, + "N": 15, + "parity": 109 + }, "location": { "topRightCorner": { "x": 254.99999999999997, From c176477ada968f896bf53ae10744acdf205dedea Mon Sep 17 00:00:00 2001 From: kousu Date: Tue, 2 Apr 2019 20:00:36 -0400 Subject: [PATCH 6/8] lint --- src/decoder/decodeData/index.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/decoder/decodeData/index.ts b/src/decoder/decodeData/index.ts index 34afa9a9..91284264 100644 --- a/src/decoder/decodeData/index.ts +++ b/src/decoder/decodeData/index.ts @@ -1,7 +1,7 @@ // tslint:disable:no-bitwise +import * as assert from "assert"; import { BitStream } from "./BitStream"; import { shiftJISTable } from "./shiftJISTable"; -import * as assert from 'assert'; export interface StructuredAppendTag { M: number; @@ -239,14 +239,14 @@ export function decode(data: Uint8ClampedArray, version: number): DecodedQR { } else if (mode === ModeByte.StructuredAppend) { // QR Standard section 9.2: // > The 4-bit patterns shall be the binary equivalents of (m - 1) and (n - 1) respectively. - const structuredAppend : StructuredAppendTag = { + const structuredAppend: StructuredAppendTag = { M: stream.readBits(4) + 1, N: stream.readBits(4) + 1, - parity: stream.readBits(8) + parity: stream.readBits(8), }; // QR codes sometimes contain duplicate Structured Append tags for redundancy. // If they exist, they are all supposed to be equal. This checks for that: - if(typeof result.structuredAppend === 'undefined') { + if (typeof result.structuredAppend === "undefined") { result.structuredAppend = structuredAppend; } else { try { @@ -257,7 +257,7 @@ export function decode(data: Uint8ClampedArray, version: number): DecodedQR { } result.chunks.push({ type: Mode.StructuredAppend, - ...result.structuredAppend + ...result.structuredAppend, }); } else if (mode === ModeByte.Byte) { const byteResult = decodeByte(stream, size); From 686e336aa4e5daec23c6b80e4944cc86bfa24a7d Mon Sep 17 00:00:00 2001 From: kousu Date: Tue, 2 Apr 2019 20:02:20 -0400 Subject: [PATCH 7/8] Apparently console.warn isn't to good citizenship in this era of 2019 --- src/decoder/decodeData/index.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/decoder/decodeData/index.ts b/src/decoder/decodeData/index.ts index 91284264..282ca037 100644 --- a/src/decoder/decodeData/index.ts +++ b/src/decoder/decodeData/index.ts @@ -249,11 +249,8 @@ export function decode(data: Uint8ClampedArray, version: number): DecodedQR { if (typeof result.structuredAppend === "undefined") { result.structuredAppend = structuredAppend; } else { - try { - assert.deepStrictEqual(structuredAppend, result.structuredAppend); - } catch { - console.warn("QR Code contains inconsistent Structured Append tags:", result.structuredAppend, "vs", structuredAppend); - } + // TODO: should this really be an assert? If the user has a corrupt QR code they probably still want to try to read it. + assert.deepStrictEqual(structuredAppend, result.structuredAppend, "QR Code contains inconsistent Structured Append tags."); } result.chunks.push({ type: Mode.StructuredAppend, From b05257b1e368a9cd21eee15a706f233552b015a7 Mon Sep 17 00:00:00 2001 From: kousu Date: Tue, 2 Apr 2019 20:19:14 -0400 Subject: [PATCH 8/8] Shuffle the structured append codes, for more realism. --- tests/structured-append-test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/structured-append-test.ts b/tests/structured-append-test.ts index 844da599..fe2d1761 100644 --- a/tests/structured-append-test.ts +++ b/tests/structured-append-test.ts @@ -24,12 +24,12 @@ if(typeof Array.prototype.flat === 'undefined') { describe("structured-append", () => { - const pieces = fs.readdirSync(path.join("tests", "end-to-end")).filter((n) => n.includes("structured-append-")); + const pieces = [].concat(...fs.readdirSync(path.join("tests", "end-to-end")).filter((n) => n.includes("structured-append-"))); const expectedOutput = [].concat(...fs.readFileSync(path.join("tests", "amen.mp3"))); - // TODO: the structured append header should be exposed so we can reconstruct misordered codes - //pieces.shuffle(); - + // randomize the codes, to demonstrate that we can reconstruct the full data + // from any misordering, just by using the embedded headers. + pieces.shuffle(); var N; var parity;