1# Created: 01.05.2014, 2018 rewritten for pytest 2# Copyright (C) 2014-2019, Manfred Moitzi 3# License: MIT License 4from ezdxf.tools.crypt import decode, encode 5 6 7def test_decode(): 8 for enc, dec in zip(decode(ENCODED_LINES), DECODED_LINES): 9 assert dec == enc 10 11 12def test_encode(): 13 for enc, dec in zip(ENCODED_LINES, encode(DECODED_LINES)): 14 assert enc == dec 15 16 17DECODED_LINES = r"""21200 115 2 26 1816 Autodesk AutoCAD 19 ASM 217.0.0.4503 NT 0 191 9.9999999999999995e-007 1e-010 20asmheader $-1 -1 @12 217.0.0.4503 # 21body $2 -1 $-1 $3 $-1 $-1 # 22ref_vt-eye-attrib $-1 -1 $-1 $-1 $1 $4 $5 # 23lump $6 -1 $-1 $-1 $7 $1 # 24eye_refinement $-1 -1 @5 grid 1 @3 tri 1 @4 surf 0 @3 adj 0 @4 grad 0 @9 postcheck 0 @4 stol 0.020115179941058159 @4 ntol 30 @4 dsil 0 @8 flatness 0 @7 pixarea 0 @4 hmax 0 @6 gridar 0 @5 mgrid 3000 @5 ugrid 0 @5 vgrid 0 @10 end_fields # 25vertex_template $-1 -1 3 0 1 8 # 26ref_vt-eye-attrib $-1 -1 $-1 $-1 $3 $4 $5 # 27shell $8 -1 $-1 $-1 $-1 $9 $-1 $3 # 28ref_vt-eye-attrib $-1 -1 $-1 $-1 $7 $4 $5 # 29face $10 -1 $-1 $11 $12 $7 $-1 $13 forward single # 30fmesh-eye-attrib $-1 -1 $14 $-1 $9 # 31face $15 -1 $-1 $16 $17 $7 $-1 $18 reversed single # 32loop $-1 -1 $-1 $-1 $19 $9 # 33plane-surface $-1 -1 $-1 5 5 10 0 0 1 1 0 0 forward_v I I I I # 34ref_vt-eye-attrib $-1 -1 $-1 $10 $9 $4 $5 # 35fmesh-eye-attrib $-1 -1 $20 $-1 $11 # 36face $21 -1 $-1 $22 $23 $7 $-1 $24 reversed single # 37loop $-1 -1 $-1 $-1 $25 $11 # 38plane-surface $-1 -1 $-1 5 5 0 0 0 1 1 0 0 forward_v I I I I # 39coedge $-1 -1 $-1 $26 $27 $28 $29 forward $12 $-1 # 40ref_vt-eye-attrib $-1 -1 $-1 $15 $11 $4 $5 # 41fmesh-eye-attrib $-1 -1 $30 $-1 $16 # 42face $31 -1 $-1 $32 $33 $7 $-1 $34 reversed single # 43loop $-1 -1 $-1 $-1 $35 $16 # 44plane-surface $-1 -1 $-1 5 0 5 0 1 0 0 0 1 forward_v I I I I # 45coedge $-1 -1 $-1 $36 $37 $38 $39 forward $17 $-1 # 46coedge $-1 -1 $-1 $40 $19 $41 $42 forward $12 $-1 # 47coedge $-1 -1 $-1 $19 $40 $43 $44 forward $12 $-1 # 48coedge $-1 -1 $-1 $45 $46 $19 $29 reversed $47 $-1 # 49edge $48 -1 $-1 $49 -5 $50 5 $28 $51 forward @7 unknown # 50ref_vt-eye-attrib $-1 -1 $-1 $21 $16 $4 $5 # 51fmesh-eye-attrib $-1 -1 $52 $-1 $22 # 52face $53 -1 $-1 $54 $55 $7 $-1 $56 reversed single # 53loop $-1 -1 $-1 $-1 $57 $22 # 54plane-surface $-1 -1 $-1 0 5 5 1 0 0 0 0 -1 forward_v I I I I # 55coedge $-1 -1 $-1 $58 $43 $59 $60 forward $23 $-1 # 56coedge $-1 -1 $-1 $61 $25 $58 $62 forward $17 $-1 # 57coedge $-1 -1 $-1 $25 $61 $63 $64 forward $17 $-1 # 58coedge $-1 -1 $-1 $46 $45 $25 $39 reversed $47 $-1 # 59edge $65 -1 $-1 $66 -5 $67 5 $38 $68 forward @7 unknown # 60coedge $-1 -1 $-1 $27 $26 $69 $70 forward $12 $-1 # 61coedge $-1 -1 $-1 $71 $72 $26 $42 reversed $55 $-1 # 62edge $73 -1 $-1 $50 -5 $74 5 $41 $75 forward @7 unknown # 63coedge $-1 -1 $-1 $35 $76 $27 $44 reversed $23 $-1 # 64edge $77 -1 $-1 $78 -5 $49 5 $43 $79 forward @7 unknown # 65coedge $-1 -1 $-1 $38 $28 $76 $80 forward $47 $-1 # 66coedge $-1 -1 $-1 $28 $38 $71 $81 reversed $47 $-1 # 67loop $-1 -1 $-1 $-1 $45 $54 # 68ptlist-eye-attrib $-1 -1 $-1 $-1 $29 # 69vertex $-1 -1 $-1 $29 0 $82 # 70vertex $-1 -1 $-1 $29 1 $83 # 71straight-curve $-1 -1 $-1 10 5 10 0 1 0 I I # 72ref_vt-eye-attrib $-1 -1 $-1 $31 $22 $4 $5 # 73fmesh-eye-attrib $-1 -1 $84 $-1 $32 # 74face $85 -1 $-1 $-1 $47 $7 $-1 $86 reversed single # 75loop $-1 -1 $-1 $-1 $71 $32 # 76plane-surface $-1 -1 $-1 5 10 5 0 -1 0 0 0 -1 forward_v I I I I # 77coedge $-1 -1 $-1 $87 $69 $72 $88 forward $33 $-1 # 78coedge $-1 -1 $-1 $76 $35 $36 $62 reversed $23 $-1 # 79coedge $-1 -1 $-1 $69 $87 $35 $60 reversed $33 $-1 # 80edge $89 -1 $-1 $78 -5 $90 5 $59 $91 forward @7 unknown # 81coedge $-1 -1 $-1 $37 $36 $87 $92 forward $17 $-1 # 82edge $93 -1 $-1 $67 -5 $90 5 $58 $94 forward @7 unknown # 83coedge $-1 -1 $-1 $72 $71 $37 $64 reversed $55 $-1 # 84edge $95 -1 $-1 $96 -5 $66 5 $63 $97 forward @7 unknown # 85ptlist-eye-attrib $-1 -1 $-1 $-1 $39 # 86vertex $-1 -1 $-1 $39 0 $98 # 87vertex $-1 -1 $-1 $80 1 $99 # 88straight-curve $-1 -1 $-1 10 5 0 0 -1 0 I I # 89coedge $-1 -1 $-1 $57 $59 $40 $70 reversed $33 $-1 # 90edge $100 -1 $-1 $74 -5 $78 5 $69 $101 forward @7 unknown # 91coedge $-1 -1 $-1 $63 $41 $46 $81 forward $55 $-1 # 92coedge $-1 -1 $-1 $41 $63 $57 $88 reversed $55 $-1 # 93ptlist-eye-attrib $-1 -1 $-1 $-1 $42 # 94vertex $-1 -1 $-1 $42 1 $102 # 95straight-curve $-1 -1 $-1 5 10 10 -1 0 0 I I # 96coedge $-1 -1 $-1 $43 $58 $45 $80 reversed $23 $-1 # 97ptlist-eye-attrib $-1 -1 $-1 $-1 $44 # 98vertex $-1 -1 $-1 $70 1 $103 # 99straight-curve $-1 -1 $-1 5 0 10 1 0 0 I I # 100edge $104 -1 $-1 $49 -5 $67 5 $45 $105 forward @7 unknown # 101edge $106 -1 $-1 $50 -5 $66 5 $46 $107 forward @7 unknown # 102point $-1 -1 $-1 10 0 10 # 103point $-1 -1 $-1 10 10 10 # 104ref_vt-eye-attrib $-1 -1 $-1 $53 $32 $4 $5 # 105fmesh-eye-attrib $-1 -1 $108 $-1 $54 # 106plane-surface $-1 -1 $-1 10 5 5 -1 0 0 0 0 1 forward_v I I I I # 107coedge $-1 -1 $-1 $59 $57 $61 $92 reversed $33 $-1 # 108edge $109 -1 $-1 $74 -5 $96 5 $72 $110 forward @7 unknown # 109ptlist-eye-attrib $-1 -1 $-1 $-1 $60 # 110vertex $-1 -1 $-1 $92 0 $111 # 111straight-curve $-1 -1 $-1 0 0 5 0 0 -1 I I # 112edge $112 -1 $-1 $90 -5 $96 5 $87 $113 forward @7 unknown # 113ptlist-eye-attrib $-1 -1 $-1 $-1 $62 # 114straight-curve $-1 -1 $-1 5 0 0 -1 0 0 I I # 115ptlist-eye-attrib $-1 -1 $-1 $-1 $64 # 116vertex $-1 -1 $-1 $64 0 $114 # 117straight-curve $-1 -1 $-1 5 10 0 1 0 0 I I # 118point $-1 -1 $-1 10 10 0 # 119point $-1 -1 $-1 10 0 0 # 120ptlist-eye-attrib $-1 -1 $-1 $-1 $70 # 121straight-curve $-1 -1 $-1 0 5 10 0 -1 0 I I # 122point $-1 -1 $-1 0 10 10 # 123point $-1 -1 $-1 0 0 10 # 124ptlist-eye-attrib $-1 -1 $-1 $-1 $80 # 125straight-curve $-1 -1 $-1 10 0 5 0 0 -1 I I # 126ptlist-eye-attrib $-1 -1 $-1 $-1 $81 # 127straight-curve $-1 -1 $-1 10 10 5 0 0 -1 I I # 128ref_vt-eye-attrib $-1 -1 $-1 $85 $54 $4 $5 # 129ptlist-eye-attrib $-1 -1 $-1 $-1 $88 # 130straight-curve $-1 -1 $-1 0 10 5 0 0 -1 I I # 131point $-1 -1 $-1 0 0 0 # 132ptlist-eye-attrib $-1 -1 $-1 $-1 $92 # 133straight-curve $-1 -1 $-1 0 5 0 0 1 0 I I # 134point $-1 -1 $-1 0 10 0 # 135""".splitlines() 136 137ENCODED_LINES = r"""mnmoo nnj m mi 138ni ^ *+0;:,4 ^ *+0\^ [ nf ^ LR mnhqoqoqkjol QK o 139n fqfffffffffffffffj:rooh n:rono 140>,27:>;:- {rn rn _nm mnhqoqoqkjol | 141=0;& {m rn {rn {l {rn {rn | 142-:9@)+r:&:r>++-6= {rn rn {rn {rn {n {k {j | 1433*2/ {i rn {rn {rn {h {n | 144:&:@-:961:2:1+ {rn rn _j 8-6; n _l +-6 n _k ,*-9 o _l >;5 o _k 8->; o _f /0,+<7:<4 o _k ,+03 oqomonnjnhffknojgnjf _k 1+03 lo _k ;,63 o _g 93>+1:,, o _h /6'>-:> o _k 72>' o _i 8-6;>- o _j 28-6; looo _j *8-6; o _j )8-6; o _no :1;@96:3;, | 145):-+:'@+:2/3>+: {rn rn l o n g | 146-:9@)+r:&:r>++-6= {rn rn {rn {rn {l {k {j | 147,7:33 {g rn {rn {rn {rn {f {rn {l | 148-:9@)+r:&:r>++-6= {rn rn {rn {rn {h {k {j | 1499><: {no rn {rn {nn {nm {h {rn {nl 90-(>-; ,6183: | 15092:,7r:&:r>++-6= {rn rn {nk {rn {f | 1519><: {nj rn {rn {ni {nh {h {rn {ng -:):-,:; ,6183: | 152300/ {rn rn {rn {rn {nf {f | 153/3>1:r,*-9><: {rn rn {rn j j no o o n n o o 90-(>-;@) V V V V | 154-:9@)+r:&:r>++-6= {rn rn {rn {no {f {k {j | 15592:,7r:&:r>++-6= {rn rn {mo {rn {nn | 1569><: {mn rn {rn {mm {ml {h {rn {mk -:):-,:; ,6183: | 157300/ {rn rn {rn {rn {mj {nn | 158/3>1:r,*-9><: {rn rn {rn j j o o o n n o o 90-(>-;@) V V V V | 159<0:;8: {rn rn {rn {mi {mh {mg {mf 90-(>-; {nm {rn | 160-:9@)+r:&:r>++-6= {rn rn {rn {nj {nn {k {j | 16192:,7r:&:r>++-6= {rn rn {lo {rn {ni | 1629><: {ln rn {rn {lm {ll {h {rn {lk -:):-,:; ,6183: | 163300/ {rn rn {rn {rn {lj {ni | 164/3>1:r,*-9><: {rn rn {rn j o j o n o o o n 90-(>-;@) V V V V | 165<0:;8: {rn rn {rn {li {lh {lg {lf 90-(>-; {nh {rn | 166<0:;8: {rn rn {rn {ko {nf {kn {km 90-(>-; {nm {rn | 167<0:;8: {rn rn {rn {nf {ko {kl {kk 90-(>-; {nm {rn | 168<0:;8: {rn rn {rn {kj {ki {nf {mf -:):-,:; {kh {rn | 169:;8: {kg rn {rn {kf rj {jo j {mg {jn 90-(>-; _h *1410(1 | 170-:9@)+r:&:r>++-6= {rn rn {rn {mn {ni {k {j | 17192:,7r:&:r>++-6= {rn rn {jm {rn {mm | 1729><: {jl rn {rn {jk {jj {h {rn {ji -:):-,:; ,6183: | 173300/ {rn rn {rn {rn {jh {mm | 174/3>1:r,*-9><: {rn rn {rn o j j n o o o o rn 90-(>-;@) V V V V | 175<0:;8: {rn rn {rn {jg {kl {jf {io 90-(>-; {ml {rn | 176<0:;8: {rn rn {rn {in {mj {jg {im 90-(>-; {nh {rn | 177<0:;8: {rn rn {rn {mj {in {il {ik 90-(>-; {nh {rn | 178<0:;8: {rn rn {rn {ki {kj {mj {lf -:):-,:; {kh {rn | 179:;8: {ij rn {rn {ii rj {ih j {lg {ig 90-(>-; _h *1410(1 | 180<0:;8: {rn rn {rn {mh {mi {if {ho 90-(>-; {nm {rn | 181<0:;8: {rn rn {rn {hn {hm {mi {km -:):-,:; {jj {rn | 182:;8: {hl rn {rn {jo rj {hk j {kn {hj 90-(>-; _h *1410(1 | 183<0:;8: {rn rn {rn {lj {hi {mh {kk -:):-,:; {ml {rn | 184:;8: {hh rn {rn {hg rj {kf j {kl {hf 90-(>-; _h *1410(1 | 185<0:;8: {rn rn {rn {lg {mg {hi {go 90-(>-; {kh {rn | 186<0:;8: {rn rn {rn {mg {lg {hn {gn -:):-,:; {kh {rn | 187300/ {rn rn {rn {rn {kj {jk | 188/+36,+r:&:r>++-6= {rn rn {rn {rn {mf | 189):-+:' {rn rn {rn {mf o {gm | 190):-+:' {rn rn {rn {mf n {gl | 191,+->687+r<*-): {rn rn {rn no j no o n o V V | 192-:9@)+r:&:r>++-6= {rn rn {rn {ln {mm {k {j | 19392:,7r:&:r>++-6= {rn rn {gk {rn {lm | 1949><: {gj rn {rn {rn {kh {h {rn {gi -:):-,:; ,6183: | 195300/ {rn rn {rn {rn {hn {lm | 196/3>1:r,*-9><: {rn rn {rn j no j o rn o o o rn 90-(>-;@) V V V V | 197<0:;8: {rn rn {rn {gh {if {hm {gg 90-(>-; {ll {rn | 198<0:;8: {rn rn {rn {hi {lj {li {im -:):-,:; {ml {rn | 199<0:;8: {rn rn {rn {if {gh {lj {io -:):-,:; {ll {rn | 200:;8: {gf rn {rn {hg rj {fo j {jf {fn 90-(>-; _h *1410(1 | 201<0:;8: {rn rn {rn {lh {li {gh {fm 90-(>-; {nh {rn | 202:;8: {fl rn {rn {ih rj {fo j {jg {fk 90-(>-; _h *1410(1 | 203<0:;8: {rn rn {rn {hm {hn {lh {ik -:):-,:; {jj {rn | 204:;8: {fj rn {rn {fi rj {ii j {il {fh 90-(>-; _h *1410(1 | 205/+36,+r:&:r>++-6= {rn rn {rn {rn {lf | 206):-+:' {rn rn {rn {lf o {fg | 207):-+:' {rn rn {rn {go n {ff | 208,+->687+r<*-): {rn rn {rn no j o o rn o V V | 209<0:;8: {rn rn {rn {jh {jf {ko {ho -:):-,:; {ll {rn | 210:;8: {noo rn {rn {hk rj {hg j {if {non 90-(>-; _h *1410(1 | 211<0:;8: {rn rn {rn {il {kn {ki {gn 90-(>-; {jj {rn | 212<0:;8: {rn rn {rn {kn {il {jh {gg -:):-,:; {jj {rn | 213/+36,+r:&:r>++-6= {rn rn {rn {rn {km | 214):-+:' {rn rn {rn {km n {nom | 215,+->687+r<*-): {rn rn {rn j no no rn o o V V | 216<0:;8: {rn rn {rn {kl {jg {kj {go -:):-,:; {ml {rn | 217/+36,+r:&:r>++-6= {rn rn {rn {rn {kk | 218):-+:' {rn rn {rn {ho n {nol | 219,+->687+r<*-): {rn rn {rn j o no n o o V V | 220:;8: {nok rn {rn {kf rj {ih j {kj {noj 90-(>-; _h *1410(1 | 221:;8: {noi rn {rn {jo rj {ii j {ki {noh 90-(>-; _h *1410(1 | 222/061+ {rn rn {rn no o no | 223/061+ {rn rn {rn no no no | 224-:9@)+r:&:r>++-6= {rn rn {rn {jl {lm {k {j | 22592:,7r:&:r>++-6= {rn rn {nog {rn {jk | 226/3>1:r,*-9><: {rn rn {rn no j j rn o o o o n 90-(>-;@) V V V V | 227<0:;8: {rn rn {rn {jf {jh {in {fm -:):-,:; {ll {rn | 228:;8: {nof rn {rn {hk rj {fi j {hm {nno 90-(>-; _h *1410(1 | 229/+36,+r:&:r>++-6= {rn rn {rn {rn {io | 230):-+:' {rn rn {rn {fm o {nnn | 231,+->687+r<*-): {rn rn {rn o o j o o rn V V | 232:;8: {nnm rn {rn {fo rj {fi j {gh {nnl 90-(>-; _h *1410(1 | 233/+36,+r:&:r>++-6= {rn rn {rn {rn {im | 234,+->687+r<*-): {rn rn {rn j o o rn o o V V | 235/+36,+r:&:r>++-6= {rn rn {rn {rn {ik | 236):-+:' {rn rn {rn {ik o {nnk | 237,+->687+r<*-): {rn rn {rn j no o n o o V V | 238/061+ {rn rn {rn no no o | 239/061+ {rn rn {rn no o o | 240/+36,+r:&:r>++-6= {rn rn {rn {rn {ho | 241,+->687+r<*-): {rn rn {rn o j no o rn o V V | 242/061+ {rn rn {rn o no no | 243/061+ {rn rn {rn o o no | 244/+36,+r:&:r>++-6= {rn rn {rn {rn {go | 245,+->687+r<*-): {rn rn {rn no o j o o rn V V | 246/+36,+r:&:r>++-6= {rn rn {rn {rn {gn | 247,+->687+r<*-): {rn rn {rn no no j o o rn V V | 248-:9@)+r:&:r>++-6= {rn rn {rn {gj {jk {k {j | 249/+36,+r:&:r>++-6= {rn rn {rn {rn {gg | 250,+->687+r<*-): {rn rn {rn o no j o o rn V V | 251/061+ {rn rn {rn o o o | 252/+36,+r:&:r>++-6= {rn rn {rn {rn {fm | 253,+->687+r<*-): {rn rn {rn o j o o n o V V | 254/061+ {rn rn {rn o no o | 255""".splitlines() 256