
    #)di                       d Z ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& ddl'm(Z( dZ)dZ* ej        d	g d
          Z+dZ, ej        dg d          Z-dZ.dddZ/dZ0ddiZ1dddZ2dZ3ddiZ4ddiZ5dZ6dZ7dZ8 G d dej9                  Z: G d de:          Z; G d  d!e:          Z< G d" d#e:          Z= G d$ d%e:          Z> G d& d'e:          Z? G d( d)e:          Z@ G d* d+e:          ZA G d, d-e:          ZB G d. d/e:          ZC G d0 d1e:          ZD G d2 d3ej9                  ZE G d4 d5ej9                  ZF G d6 d7e:          ZG G d8 d9e:          ZH G d: d;ej9                  ZI G d< d=ej9                  ZJ G d> d?ej9                  ZKeLd@k    r ejM                     dS dS )Az Test suite for IntelHex library.    N)IntelHexIntelHexErrorHexReaderErrorAddressOverlapErrorHexRecordErrorRecordLengthErrorRecordTypeErrorRecordChecksumErrorEOFRecordError!ExtendedSegmentAddressRecordError ExtendedLinearAddressRecordErrorStartSegmentAddressRecordErrorStartLinearAddressRecordError DuplicateStartAddressRecordErrorInvalidStartAddressValueError
_EndOfFileBadAccess16bithex2binRecord)compat)	BytesIOStringIOUnicodeTypearray_tobytesasbytesasstrdict_items_grange_grange_l)version_strrestructuredtexta  :1004E300CFF0FBE2FDF220FF20F2E120E2FBE6F396
:1004F3000A00FDE0E1E2E3B4E4E5BAE6E7B3BFE80E
:10050300E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8E0
:10051300F9FCFEFF00C0C1C2C3A5C4C5AAC6C7B2C9
:10052300AFC8C9CACBCCCDCECFD0D1D2D3D4D5D6F8
:07053300D7D8D9DCDEDF00A0
:10053A0078227C007D007BFF7A0479F57E007F2398
:10054A0012042F78457C007D007BFF7A0579187E9E
:10055A00007F2212042F759850438920758DDDD2B1
:10056A008ED2996390017BFF7A0479E31200658049
:01057A00FE82
:030000000205A254
:0C05A200787FE4F6D8FD75817A02053AF6
:10035F00E709F608DFFA8046E709F208DFFA803E80
:10036F0088828C83E709F0A3DFFA8032E309F6086D
:10037F00DFFA8078E309F208DFFA807088828C83D5
:10038F00E309F0A3DFFA806489828A83E0A3F60889
:10039F00DFFA805889828A83E0A3F208DFFA804C63
:1003AF0080D280FA80C680D4806980F2803380103A
:1003BF0080A680EA809A80A880DA80E280CA8033A3
:1003CF0089828A83ECFAE493A3C8C582C8CCC5831B
:1003DF00CCF0A3C8C582C8CCC583CCDFE9DEE780EB
:1003EF000D89828A83E493A3F608DFF9ECFAA9F06A
:1003FF00EDFB2289828A83ECFAE0A3C8C582C8CCC0
:10040F00C583CCF0A3C8C582C8CCC583CCDFEADED8
:10041F00E880DB89828A83E493A3F208DFF980CC3A
:10042F0088F0EF60010E4E60C388F0ED2402B40433
:10043F000050B9F582EB2402B4040050AF232345DA
:06044F0082239003AF734D
:10000300E576246AF8E60576227867300702786A8F
:10001300E475F0011204AD0204552000EB7F2ED2EB
:10002300008018EF540F2490D43440D4FF30040BD5
:10003300EF24BFB41A0050032461FFE57760021573
:1000430077057AE57A7002057930070D7867E475EC
:10005300F0011204ADEF02049B02057B7403D20787
:100063008003E4C207F5768B678A688969E4F577CC
:10007300F579F57AE57760077F2012003E80F57504
:1000830078FFC201C200C202C203C205C206C2088F
:1000930012000CFF700D3007057F0012004FAF7A7E
:1000A300AE7922B4255FC2D5C20412000CFF24D05E
:1000B300B40A00501A75F00A787730D50508B6FFF0
:1000C3000106C6A426F620D5047002D20380D924E3
:1000D300CFB41A00EF5004C2E5D20402024FD2019A
:1000E30080C6D20080C0D20280BCD2D580BAD205ED
:1000F30080B47F2012003E2002077401B5770040D0
:10010300F1120003FF12003E020077D208D20680EC
:1001130095120003FB120003FA120003F94A4B7015
:100123000679207A037BFF20022EE577602A7E0082
:100133008E8275830012046E60060EEE657870F091
:10014300C2D5EBC0E0EAC0E0E9C0E0EE120296D00F
:10015300E0F9D0E0FAD0E0FB120455FF60AAEBC04F
:10016300E0EAC0E0E9C0E012003ED0E02401F9D0AB
:10017300E03400FAD0E0FBE5780460DCD578D98080
:10018300877BFF7A027992D202809C791080027970
:1001930008C206C2088008D2D5790A8004790AC247
:1001A300D5E578047002F578E4FAFDFEFF1200034A
:1001B300FC7B08200113120003FD7B1030000A12A0
:1001C3000003FE120003FF7B20EC3382D592D5504F
:1001D30013C3E43000069FFFE49EFEE42001039D69
:1001E300FDE49CFCE4CBF8C201EC700CCFCECDCC8B
:1001F300E824F8F870F38017C3EF33FFEE33FEED16
:1002030033FDEC33FCEB33FB994002FB0FD8E9EBF6
:10021300300105F8D0E0C448B201C0E00AEC4D4E0D
:100223004F78207B0070C2EAB5780040BCC0E01272
:100233000298D0F0D0E0200104C4C0E0C4B201C0F1
:10024300F0120027D0F0D5F0EB0200771204BD01C5
:100253001453018E5800E54C00E14201924F019A7C
:0F02630044019A4900FA4301A0550184460184E1
:100272004501844703405000E92D00ED2E01102B6B
:1002820000F123010E2003292A00A94800000108D9
:100292003F3F3F00790AA2D5200314300509B91067
:1002A200020404B9080104A2D52006025001042068
:1002B20002689202B577005034C0E07F2030031903
:1002C2007F30A20272067205500F1202EFC202C202
:1002D20006C205C2087F30800F300503E9C0E01274
:1002E200003E300503D0E0F9D0E0B577CC300517F9
:1002F2007F30B9100C12003E7F583004077F78809F
:1003020003B9080312003E3002057F2D02003E7F32
:10031200202008F87F2B2006F322920280CF286E3D
:10032200756C6C2900D2011200033001F8C2017809
:100332007730D50108F60200A92D50434958120022
:10034200032403B405004001E490033B9312002F01
:0D035200743A12002FD20375770402018E59
:10045500BB010689828A83E0225002E722BBFE02A5
:09046500E32289828A83E49322D8
:10046E00BB010CE58229F582E5833AF583E0225043
:10047E0006E92582F8E622BBFE06E92582F8E2228D
:0D048E00E58229F582E5833AF583E49322A7
:10049B00BB010689828A83F0225002F722BBFE0140
:0204AB00F3223A
:1004AD00FAE6FB0808E6F925F0F618E6CA3AF62250
:1004BD00D083D082F8E4937012740193700DA3A3CE
:1004CD0093F8740193F5828883E4737402936860E2
:0604DD00EFA3A3A380DFE2
:10057B00EFB40A07740D120586740A309811A89906
:10058B00B8130CC2983098FDA899C298B811F630E0
:07059B0099FDC299F59922B8
:00000001FF
B(              v   $   j         r$   r'   "   x   g   0      r#   r-   r)      u                  r#   r6   U       r         .      r            T      r(         4   @   rD      r/   r6      r@   r(            r   P      r(   a   rG   r&   w   `   r#      rO   r$   z   r&   rR   p   r#   r$   y   r/   r0      r-   r.   r1   r2   r3   r4   r5   r6   r7   r@   r#   r6      r#   r$   {   t   rM   r=   r0   r>   rM   r1      r0      r'      r.      h      i   r1   rZ   rO   rZ   rT   rZ   rR   r&   rO   rP   r0   r;   r9   r5   r   >   r>   rZ   r2   r-   rG   rY   r4   rY   r   rY   r#   rY   rM   rY   r$   rY      rY      r5   r      rG   rS   rU   r/   r0   r$   r;   r   r5   r   O      rR      rT   r,   rJ   %   _   rY      rY   r6   r5   r   rc   rG   r(      rJ   
   r   rL   rK   r2   r3   rk   r-   rO   r/   ri   r$   rb      rG   r4   ra         &      r9   ri   r6   rS   r#   r=   rM   r>      r(      rJ   rK   r   r@   rL   r6   rY   r&   r=   r6   r#   r#   rd   r=   r4   r>   rm   r=   r   r>      r=   r#   r>      r=   ri   r>      r=   r$   r>   rJ   r;   r9   r5   r   r`   r9   r#   r0   rX   r4      rO   r   rF      r5   r   rM   rG   r5   r   r`   r#   r   rO   r=   rb   r=   ra   r>      r5   r   rM      r5   r   rM      r5   r   rM      J   K   rS   ra   rT   r9   rR   rM   rW   rG   r9   r#   r<   r&   rO   rP   *   ~   r         r2      r   r5   r6   n   rP   ra         e   r-   rS   r3   rY   ri   r:   rs         rs   r      rs   r   r   r5   r#      rj   r   r{   rj   r   rz   rj   r   ry   r5   r6   r8   rG   rP      r:   rs   r   r   rs   r   r   rs   r   r5   r   r`   rj   r   r(   r4   r{   rj   r   rE   r   rz   rj   r   ry   r&   r-   r6   rP      ri   r-   rq   r>      rW   rG   rR   r#   rT      r=   r#   r>      rT      r>   r#   rT   rb   rY   ra   rY   rb   r>   rb   r=   ri   rT   rk   r>   r6   rT   rk   rY   ri   r&   r-   r6   rS   r#   rZ   r-   r1   rz         rG   r5   r   rM      rW   rb   r9   r4      r5   r   rM   r   rW   r   r/   r   rk   r5   r   rM   r   r5   r   rM   rG   rW   r9      3   r   ri   r   ri   rL   r      r1   r/   r   ra      rG   r1      r   r1   r9   r4   rM      r   r1   r   r   r1      r*   rY   r4   r   rS   rc   rr               r(   r*   r*   rS      r>      r   r@   r   rG   r   r   r      r   r   r   r   r   r:   r   ry      rF   r#   ry   rB      r   r:   r/   r4   r$   r*   rj   r      H      r4   rs   r   rk   r   M   N   rd   r-   r9   rW   r   rS   rY   r   rv   r-   r   rF   rt   rs   r   r5   r#      rj   r3   rj   r   r9   r4   r6   r   rs   r   r   r   r4   rs   r3   r5   r   '   rj   r3   ri   r3   r:   r#   r   rO   r5   r6      r4      S   r4   r   X   r   r&   L   r      B   r4   r   rd   r4      D   r4   r   I   r   rz   C   r4      r8   r4      F   r4   r   E   r4   r   G   rM   rF   rL   r   r   -   r   r   r<   r4   r   +   r   rw   #   r4   r   r9   rM   )   r~   r      r   r   r   r4   rb   ?   r   r   r   rT   rk   r%   ri   r9   rM   r   r/   r$   	      r   r#   r6   r6   r   rb   r4   r6   r%   ri   r9   ra   r#   rL   r4   r6   r9   r#   r]   r   r#   rv   rO   r   rL   rE   rs   r   r;   r9   r/   rM      r;   r/   r%   r#   r   ra   r   r$   rL   rB   r5   r#   r@   rY   r#   rY   ra   rY   r$   rY   rb   r;   r/   r>   rB   r/   r$   rM   r   rs   r   r5   r   r`   r/   r$   rM   rj   r   r{   rj   r   rv   rO   r   r/   r$   r   r;   r/   r   r   rc   r5   r   r`   r;   r   r/   r6   r0   r;   r-   r>   rM   r   rb   rM   r5   r   r`   r/   r#   r$   r;   r   r#   r   r`   r;   r9   r9   rb   r*   r;   r   r9   ra   r   r,   r   r#   r>   rr   (   r   r2   l   r   r   r   r=   r4   r5   r   rM   r/   r4   r*   rY   r4   r-   rO   r/   ri   r4   rb   rp   r#   r   r   r   rL   r   r   r   r5   r   rM   r(   rM   rJ   r$   r   rF   r4   r1   rC   rM   ;      r5   r   /   rX   :   r5   r   r   r=   rM   r2   rO   r6   r#   r4   r      r   rp   rb      rz   r>   r   r   r      rb   r   rz   r>   r`      r      r   r   r   r3      r   rz   r>   2      r   rp   rb   r   rz   r>   r-   r   r   r   rb   r   rz   r>   rS   r   r   r   r   r   r   r3   r   r   rz   r>   d   r^   r   r\   r   r   r   rp   rb   r   rz   r>   r   r^   r   r\   r   r   r   r   rb   r   rz   r>   r   r>   r=   r>   rz   r>   rm   r>   rD   r>   r_   r>   r   r>   r   r>   r   r>      r>   r   r>   r   r>      r>      r>      r>      r>   r   r^   r   r\   r   r   rz   r1   r   r         r   r   r   r   r   r   r3   r   r   r   r   r   r   r   r   r   r   r      r   r>   rU   r^   r   r\   r   r1   r   r   rp   rb   r   r{   r   rz   r   r3   r   ry   r,   r^   r   r\   r   r   rz   r   r   r   r   r   r   r   r   r   r   r3   r   r   r   r   r   r   r   r   r   r   r   r   r   r>      r^   r   r\   r   r1   r   r   r   rb   r   r{   r>   r   r   r3   r@   rP   r4   r   r   rP   r   r   r3   r   r(   r#   rJ   r6   r   rL   r   rZ   r   r:   r(   r#   rJ   r6   r   rL   re   r   r   r   r   r   rC   rM   re   s      r4   ra   r^   r   r\   r   r   r,   rL   r#   r   r,   r   r   r#   r   r,   r^   r   r\   r   r1   r   r,   r   r4   rc   r&   r   r   rZ   r   r&   r   r   rZ   r   r   r,   rL   ra   r   rg   r   r*   r+   r,   r   r   ra   r   rg   r   r*   r   r,   r&   r   r   rZ   r   r&   r   r   rZ   r   r1   r   r,   r   r4   ra   r^   r   r\   r   r3   r,   rL   r#      r,   r   r   r4   r   r,   rz   r+   ry   rb   rb   r+   r{   rg   r3   rp   r?   r+   r   r   rp   r,   rj   r   rj   r   r*   r1   r   rS   r5   rX   r4   r   rS   rU   r   r   r   r*   rX   r4   r   rZ   r   r   r   r1   r   rX   r#   r   r]   rP   r@   r   r   r   r>   r   rr   r3   ry   r   r   r   r9   rG   r9   r   r   r9   r   ry   r+   r   rk   r   r   r   r   r   r   rJ   r1   r&   ru   r+   r      rI   r   r   r   r:   r   r   r   r@   r3   rw   r   r      rZ   rp   r   r*   r{   r   r   rG   r   rs      rY   r      r   r   r   rm      r   re   r      r   r   r   r   r   rr   rj      r=      rD   ri         r   rq   r   r   r   r   r-   r,   |   r   }   r   rW   rG   rR   r6   rT   rZ   r   r   r;   r   r5   r6   r   r-   r   r   r   r   r   rW   rG   rR   r$   rT   r?   r   r   r;   r,   r5   r6   r   r2   r   rL   r   r^   r9   r2         r=   r   r=   r   c   rC   r4   rW   rG   rR   r6   rT   r   r5   r   r   r>   r   r@   rJ   rk   r0   rX   rU   r5   r$      rX   rk   r/   r      r   r      r   rc   rY   r   r/   r   r   r   r   rY   r   r   r   rp   r/   r   r   rY   r   rZ   r   r,   r-   r;   r1   rp   r   r   r2      rR   r#   r$   r   z:020000040000FA
:10000000000083120313072055301820042883169C
:10001000031340309900181598168312031318160D
:1000200098170800831203138C1E14281A0808005E
:0C003000831203130C1E1A28990008000C
:00000001FF
H) r       i   iU0  i   i(  i  r   i@0  r   i  i  r   r   i  i  rb   r   r   i  i(  i  rb   r   r   i  i(  r   rb   ?  r   zH:020000040000FA
:0100000001FE
:020000040001F9
:0100000002FD
:00000001FF
r4   r#   )r   i   z.:0400000312345678E5
:0100000001FE
:00000001FF
4  xV  CSIPz.:0400000512345678E3
:0100000002FD
:00000001FF
EIPxV4z:00000001FF
z:10000000000083120313072055301820042883169C
:10001000031340309900181598168312031318160D
:1000200098170800831203138C1E14281A0808005E
:0C003000831203130C1E1A28990008000C
:00000001FF
z0:020FEC00E4E738
:040FF00022E122E1F7
:00000001FF
c                       e Zd ZdZd Zd ZdS )TestIntelHexBasezPBase class for all tests.
    Provide additional functionality for testing.
    c                 H   	  ||i | t          |d          r|j        }nt          |          }|                     d|z            # |$ rS t	          j                    d         }t          |          }|sY dS ||k    rY dS |                     d|d|d          w xY w)au  Just like unittest.TestCase.assertRaises,
        but checks that the message is right too.

        Borrowed from Ned Batchelder Blog.
        See: http://www.nedbatchelder.com/blog/200609.html#e20060905T064418

        Typical usage::

            self.assertRaisesMsg(MyException, "Exception message",
                                 my_function, (arg1, arg2))
        __name__z4Expected to raise %s, didn't get an exception at allr4   Nz%Right exception, wrong message: got 'z' expected '')hasattrr  strfailureExceptionsysexc_info)	selfexcClassmsgcallableObjargskwargsexcNameexcexcMsgs	            T/var/www/menimich/repos/protonApp/venv/lib/python3.11/site-packages/intelhex/test.pyassertRaisesMsgz TestIntelHexBase.assertRaisesMsgy  s    	K((((" x,, ("+h--''F  )  	 	 	,..#CXXF 3 +++VVSSS"  	s   A	 	/B!;B!B!c           	      >    |                      ||d|d|d          S )Nz%Written data is incorrect
Should be:
z

Written:

)assertEqual)r	  abs      r  assertEqualWrittenDataz'TestIntelHexBase.assertEqualWrittenData  s4    11 	qq!!!'   	    N)r  
__module____qualname____doc__r  r   r  r  r   r   t  s=         % % %N    r  r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestIntelHexc                 8    t          t                    | _        d S Nr   hex8fr	  s    r  setUpzTestIntelHex.setUp      $r  c                 <    | j                                          | ` d S r"  r%  closer&  s    r  tearDownzTestIntelHex.tearDown      FFFr  c           	          t          | j                  }t          t          t                              D ]4}t          |         }||         }|                     ||d|||fz             5d S )N'Data different at address %x (%x != %x))r   r%  r   lenbin8r  r	  ihaddrexpectedactuals        r  test_init_from_filez TestIntelHex.test_init_from_file  s    dfCII&& 	I 	IDDzHXFXv-04h/GHI I I I	I 	Ir  c           	         t                      }|                    | j        d           t          t	          t
                              D ]4}t
          |         }||         }|                     ||d|||fz             5d S )Nhexformatr/  )r   fromfiler%  r   r0  r1  r  r2  s        r  test_hex_fromfilezTestIntelHex.test_hex_fromfile  s    ZZ
DF5)))CII&& 	I 	IDDzHXFXv-04h/GHI I I I	I 	Ir  c                    t          j        t          d                    \  }}t          j        |           	 |                     t          |t                               t          |d          }	 |                    t                     |                                 n# |                                 w xY wt          |          }|                     d|                                           |                     t          t                    dz
  |                                           t          j        |           d S # t          j        |           w xY w)N wr   r4   )tempfilemkstempr   osr+  
assertTrue
isinstanceopenwriter$  r   r  minaddrr0  r1  maxaddrremove)r	  handlefnamer%  r3  s        r  test_unicode_filenamez"TestIntelHex.test_unicode_filename  s    (R99
	OOJuk::;;;UC  A								%BQ

---SYYq["**,,777IeBIes$   8E 3B" E "B88A7E Ec                    t                      }d|_        |                     t          j        dg           |                                           |                     t          j        dg           |                    d                     |                     t          j        dg           |                    d                     |                     t          j        dg d          |                    dd                     d S )NrG   r"   r   startr#   end)rG   rG   rG   )r   paddingr  array
tobinarrayr	  r3  s     r  test_tobinarray_emptyz"TestIntelHex.test_tobinarray_empty  s    ZZ
S"--r}}???S"--r}}1}/E/EFFFS"--r}}}/C/CDDDS---88"--!:L:LMMMMMr  c                 B   t          | j                  }|                     t          j        dg d          |                    d                     |                     t          j        dg d          |                    dd                     |                     t          j        dg d          |                    dd	                     |                     t          j        dg d          |                    d
d	                     |                     t          |j        ddd           |                     t          |j        dd	           |                     t          |j        d           |                     t          |j        d           d S )Nr"   )r#   r$   r%   r&   r'   r(   r)   r*   rb   size)r-   r.   r/   r0   r#   r-   r)   r1   rc   rP  rZ  r0   rR  rZ  r   r   )rP  rR  rZ  rM   )r   r%  r  rT  rU  assertRaises
ValueErrorrV  s     r  test_tobinarray_with_sizez&TestIntelHex.test_tobinarray_with_size  s   dfS*M*M*MNNA..	0 	0 	0S*M*M*MNNRa88	: 	: 	:S*M*M*MNN1155	7 	7 	7S*M*M*MNN2A66	8 	8 	8*bm1!!LLL*bmCCC*bm!<<<*bm"=====r  c                     t          | j                  }|                                }t          t                    }|                     ||d|d|           d S )Ndata not equal


)r   r%  tobinstrr   r1  r  )r	  r3  s1s2s       r  test_tobinstrzTestIntelHex.test_tobinstr  sV    df[[]]4  RRrrr22!FGGGGGr  c                 "   t          | j                  }t                      }|                    |           |                                }|                                 t          t                    }|                     ||d|d|           t                      }|	                    |d           |                                }|                                 t          t                    }|                     ||d|d|           d S )Nrb  rc  binr:  )
r   r%  r   	tobinfilegetvaluer+  r   r1  r  tofile)r	  r3  siore  rf  s        r  test_tobinfilezTestIntelHex.test_tobinfile  s    dfii
S\\^^		4  RRrrr22!FGGGii
		#e	$$$\\^^		4  RRrrr22!FGGGGGr  c                     t          | j                  }t          j        d          }	 |                    |           |                                 d S # |                                 w xY w)Nwb)mode)r   r%  rA  TemporaryFilerj  r+  )r	  r3  tfs      r  test_tobinfile_realfilez$TestIntelHex.test_tobinfile_realfile  s^    df#...	LLHHJJJJJBHHJJJJs   A A,c                    |                      dt          j        dd                     |                      dt          j        dd                     |                      dt          j        dd                     |                      dt          j        dd                     |                     t          dt          j        dd           d S )	Nr  nativewin32linuxCRLFz
zwrong eolstyle 'LF'LF)r  r   _get_eol_textfiler  r_  r&  s    r  test__get_eol_textfilez#TestIntelHex.test__get_eol_textfile  s    x9(GLLMMMx9(GLLMMMx9&'JJKKK!;FG!L!LMMMZ)>&g	7 	7 	7 	7 	7r  c                     t          j                    }t                      }|                    |           |                                }|                                 |                     t          |           d S r"  )intelhexr   r   write_hex_filerk  r+  r  hex_empty_filer	  r3  rm  ss       r  test_write_empty_hexfilez%TestIntelHex.test_write_empty_hexfile  sc      jj
#LLNN		##NA66666r  c                    t          j        t          t                              }t                      }|                    |           |                                }|                                 |                     t          |           t                      }|                    |d           |                                }|                                 |                     t          |           d S Nr9  r:  )	r~  r   r   
hex_simpler  rk  r+  r  rl  r  s       r  test_write_hexfilezTestIntelHex.test_write_hexfile  s    x
3344jj
#LLNN		##J222jj
		#e	$$$LLNN		##J22222r  c                 "   t          j        t          t                              }t                      }|                    |d           |                                }|                                 |                     t          |           d S r  )r~  r   r   hex_bug_lp_341051rl  rk  r+  r  r  s       r  test_write_hex_bug_341051z&TestIntelHex.test_write_hex_bug_341051*  sq    x(9::;;jj
		#e	$$$LLNN		##$5q99999r  c                    t          ddi          }t                      }|                    |           |                                }|                                 t          j        d          t          j        ddg          t          j                    g}d	                    |          dz   }| 
                    ||           d S )Ni   r4   r#   r   r  )r   r   r  rk  r+  r   extended_linear_addressdataeofjoinr  )r	  r3  rm  r  rhs         r  ,test_write_hex_first_extended_linear_addressz9TestIntelHex.test_write_hex_first_extended_linear_address2  s    wo&&jj
#LLNN		+A..[$((Z\\ IIaLL4Ar  c                     t                      }t                      }|                     t          |j        |ddi           d S )Nr;  bad)r   r   r^  r_  rl  r	  r3  rm  s      r  test_tofile_wrong_formatz%TestIntelHex.test_tofile_wrong_format@  s;    ZZjj*bix6GHHHHHr  c                    t                      }|                     i |                                           t          t          t                              }|                     t
          |                                           t                      }d|d<   ddi|_        |                     dddid|                                           d S )Nr#   r4   r     r4   
start_addr)r   r  todictr   hex64kdata64kr  rV  s     r  test_todictzTestIntelHex.test_todictE  s    ZZRYY[[)))hv&&''"))++...ZZ1Qudm<<biikkJJJJJr  c                 f   t                      }|                    ddd           |                     ddd|                                           |                    ddd           |                     dddd|                                           t                      }|                    ddd	id
           |                     ddd	id
|                                           |                     t
          |j        dd	i           |                     t
          |j        dd	i           d S )Nr#   r6   r4   rM   r$   r0   )r4   ra   )r4   rM   ra   r   r  r  r]  )r   fromdictr  r  r^  r_  rV  s     r  test_fromdictzTestIntelHex.test_fromdictO  s   ZZ
qAJJARYY[[111
qAJJAa"))++666ZZ
%77888Qudm<<biikkJJJ*bkE4=AAA*bkB:>>>>>r  c                    t          ddd          }|                     ddd|                                           ddi|_        t          |          }d|d<   ddi|_        |                     ddddid	|                                           |                     t          |          t          |                     d S )
Nr#   r6   r  r   r  r$   r4   i.  )r4   rM   r  )r   r  r  r  assertNotEqualid)r	  r3  ih2s      r  test_init_from_objzTestIntelHex.test_init_from_obj\  s    ajj!!ARYY[[111rll1A5$-@@#**,,OOOBrFFBsGG,,,,,r  c                     t                      }|                     d|d                    d|d<   |                     d|d                    |d= |                     i |                                           d S )NrG   r   r4   )r   r  r  rV  s     r  test_dict_interfacez TestIntelHex.test_dict_interfacef  ss    ZZr!u%%%1BqE"""qERYY[[)))))r  c                    t                      }|                     dt          |                     d|d<   |                     dt          |                     d|d<   |                     dt          |                     d S )Nr   r4   r#   i  )r   r  r0  rV  s     r  test_lenzTestIntelHex.test_lenn  sw    ZZCGG$$$1CGG$$$4CGG$$$$$r  c                    t                      |                     dd                    dd<   |                     dd                    |                     dd                    fd}|                     t          d|d           |                     t          dt	          d	          z  |d	           t                      dd<   d
d<   dd
<   dd<   d d          }|                     t          |t                                |                     dd
ddd|                                           |                     i dd                                                    |                     dd
ddd
                                                    |                     dd
dd d
                                                    |                     dddd
d                                                     |                     ddddd d d
                                                    |                     ddidd                                                    d S )NrG   r   r4   l    c                     |          S r"  r  )indexr3  s    r  getitemz-TestIntelHex.test__getitem__.<locals>.getitem  s    e9r  Address should be >= 0.r]   Address has unsupported type: %sfoor#   rM   r6   rk   )r   r4   r#   rk   rb   )r   r4   )r#   rk   )r   r#   rk   rH   )r   r  r  	TypeErrortyperD  rE  r  )r	  r  r  r3  s      @r  test__getitem__zTestIntelHex.test__getitem__v  sc   ZZr!u%%%1BqE"""r'{+++	 	 	 	 	Y%R	 	 	 	Y.e<U	 	 	 ZZ1112e
311222AaA..

===R!W^^--...AR!W^^%5%5666ARV]]__555A!bfmmoo666Aq))2ccc7>>+;+;<<<"QAbD!2!233333r  c           
          t                      dd<   |                     ddi                                           fd}|                     t          d|dd           |                     t          dt          d          z  |dd           t          d          dd<   |                     ddd	d
d                                           t          dd          dd <   |                     ddddd                                           t          dd          d d<   |                     ddddd                                           t                      t          d          ddd	<   |                     ddd	d
d                                           |                     t          d|t          dd	d           d           |                     t          d|t          ddd           g d           |                     t          d|t          d d d           g d           |                     t          d|t          d d	d           g d           |                     t          d|t          ddd          g d           d S )Nr4   r   c                     || <   d S r"  r  )r  r  r3  s     r  setitemz-TestIntelHex.test__setitem__.<locals>.setitem  s    BqEEEr  r  r]  r  r  r6   r#   rM   )r   r4   r#   rM   r$   r   ra   r0   rb   rU   rk   rH   rc   )r   r#   r6   ra   z)Slice operation expects sequence of bytesr  z5Length of bytes sequence does not match address range)r4   r#   rM   zUnsupported address rangez start address cannot be negativezstop address cannot be negative)	r   r  r  r  r  r  r   r_  slice)r	  r  r3  s     @r  test__setitem__zTestIntelHex.test__setitem__  s   ZZ1!A		,,,	 	 	 	 	Y%R	 	 	 	Y.e<UA	 	 	 !**1Q3Aa1--ryy{{;;;1122Aa1--ryy{{;;;22A2ArR00"))++>>>ZZAJJ1Qq5	Aa1--ryy{{;;; 	Z7U1Qt__c	+ 	+ 	+ 	ZCU1Qt__ggg	/ 	/ 	/ 	Y'U4T**GGG	5 	5 	5 	Y.U4$''	2 	2 	2 	Y-U1R^^WWW	. 	. 	. 	. 	.r  c                    t                      dd<   d= |                     i                                            fd}|                     t          |d           |                     t          d|d           |                     t          dt          d          z  |d           dd= dd	} |d          d d = |                     i                                             |d          d
d= |                     ddddd                                            |d          d d d
= |                     ddddd                                           d S )Nr4   r   c                     | = d S r"  r  )r4  r3  s    r  delitemz-TestIntelHex.test__delitem__.<locals>.delitem  s    4r  r  r]  r  r  rb   c                 P    t                      }t          |           D ]}|||<   |S r"  )r   r   )rZ  r3  is      r  ihexz*TestIntelHex.test__delitem__.<locals>.ihex  s0    BT]]  1Ir  r#   ra   r0   )r   r4   ra   r0   rM   r$   )r4   rM   r$   r0   )rb   )r   r  r  r^  KeyErrorr  r  r  )r	  r  r  r3  s      @r  test__delitem__zTestIntelHex.test__delitem__  s   ZZ1qERYY[[)))	 	 	 	 	(GQ///Y%R	 	 	 	Y.e<U	 	 	 qsG	 	 	 	
 T!WWqqqERYY[[)))T!WWqsGAa1--ryy{{;;;T!WWsssGAa1--ryy{{;;;;;r  c                 ,   t                      }|                     g |                                           |                     d |                                           |                     d |                                           t          dddd          }|                     g d|                                           |                     d|                                           |                     d|                                           d S )Nr#   rb   r   r4   r0   rk   r4   rk   )r   r  	addressesrH  rI  rV  s     r  test_addresseszTestIntelHex.test_addresses  s    ZZR\\^^,,,rzz||,,,rzz||,,,aA&&''2<<>>222BJJLL)))RZZ\\*****r  c                    t                      }|                     t          j        |j                   |                     t          j        |j        d           |                     d|                    dd                     |                     d|                    dd                     t          dd	dd
          }|                     d|                                           |                     d|                    d                     |                     d|                    dd                     |                     d|                    dd                     d S )Nrk   rY  )r   r   r   r[  )r4   rk   r\  r#   rb   r  )r   r^  r~  EmptyIntelHexError_get_start_endr  rV  s     r  test__get_start_endz TestIntelHex.test__get_start_end  sT    ZZ(5r7HIII(5r7HrRRR 1 1 1 C CDDD!2!2r!2!C!CDDDaA&&''!2!2!4!4555!2!2!2!;!;<<< 1 1 1 C CDDD!2!2r!2!C!CDDDDDr  c                    t                      }|                                }|                     t          |t                               |                     t          |          d           d|d<   |                                }|                     t          |t                               |                     t          |          d           |                     t          |d         t                               |                     t          |d                   dk               |                     |d         d         |d         d         k                |                     t          |d                   d           |                     t          |d                   d           d|d<   |                                }|                     t          |t                               |                     t          |          d           |                     t          |d         t                               |                     t          |d                   dk               |                     |d         d         |d         d         k                |                     t          |d                   d           |                     t          |d                   d           d|d<   d|d	<   d
|d<   |                                }|                     t          |t                               |                     t          |          d           |                     t          |d         t                               |                     t          |d                   dk               |                     |d         d         |d         d         k                |                     t          |d         t                               |                     t          |d                   dk               |                     |d         d         |d         d         k                |                     t          |d                   d           |                     t          |d                   d           |                     t          |d                   d           |                     t          |d                   d           d|d<   |                                }|                     t          |          d           |                    d          }|                     t          |          d           |                     t          |d                   d           |                     t          |d                   d           d S )Nr      r4   r#   i  i  i   rM   i  r6   i  i  r$   i  )min_gapi  )
r   segmentsrD  rE  listr  r0  tupleminmax)r	  r3  sgs      r  test_segmentszTestIntelHex.test_segments  s   ZZ[[]]
2t,,---R!$$$5	[[]]
2t,,---R!$$$
2a5%00111BqE

a(((1a2a58+,,,RUU+++RUU+++5	[[]]
2t,,---R!$$$
2a5%00111BqE

a(((1a2a58+,,,RUU+++RUU+++5	5	5	[[]]
2t,,---R!$$$
2a5%00111BqE

a(((1a2a58+,,,
2a5%00111BqE

a(((1a2a58+,,,RUU+++RUU+++RUU+++RUU+++5	[[]]R!$$$[[[##R!$$$RUU+++RUU+++r  N)r  r  r  r'  r,  r7  r=  rM  rW  r`  rg  rn  rt  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r     s              I I II I I   N N N> > >H H HH H H   7 7 77 7 73 3 3: : :  I I I
K K K? ? ?- - -* * *% % %!4 !4 !4F-. -. -.^< < <B
+ 
+ 
+E E E/ / / / /r  r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestIntelHexLoadBinc                 `    t          d          | _        t          | j                  | _        d S )N
0123456789)r   bytesr   r%  r&  s    r  r'  zTestIntelHexLoadBin.setUp7  s&    \**
$$r  c                 8    | j                                          d S r"  r*  r&  s    r  r,  zTestIntelHexLoadBin.tearDown;  s    r  c                 P   t                      }|                    | j                   |                     d|                                           |                     d|                                           |                     | j        |                                           d S )Nr   r   r   loadbinr%  r  rH  rI  r  rd  rV  s     r  test_loadbinz TestIntelHexLoadBin.test_loadbin>  s    ZZ


46BJJLL)))BJJLL)))R[[]]33333r  c                 T   t                      }|                    | j        d           |                     d|                                           |                     d|                                           |                     | j        |                                           d S Nri  r:  r   r   )r   r<  r%  r  rH  rI  r  rd  rV  s     r  test_bin_fromfilez%TestIntelHexLoadBin.test_bin_fromfileE      ZZ
DF5)))BJJLL)))BJJLL)))R[[]]33333r  c                 T   t                      }|                    | j        d           |                     d|                                           |                     d|                                           |                     | j        |                                           d S )Nr   )offsetm   r  rV  s     r  test_loadbin_w_offsetz)TestIntelHexLoadBin.test_loadbin_w_offsetL  s    ZZ


46#
&&&bjjll+++bjjll+++R[[]]33333r  c                 T   t                      }|                    | j        d           |                     d|                                           |                     d|                                           |                     | j        |                                           d S r  )r   loadfiler%  r  rH  rI  r  rd  rV  s     r  test_loadfile_format_binz,TestIntelHexLoadBin.test_loadfile_format_binS  r  r  N)	r  r  r  r'  r,  r  r  r  r  r  r  r  r  r  5  sn        % % %  4 4 44 4 44 4 44 4 4 4 4r  r  c                   L    e Zd Zd Zd Zd ZddZd Zd Zd Z	d	 Z
d
 Zd ZdS )"TestIntelHexStartingAddressRecordsc                    t          |          }t          |          }|                                 |                     ||j        d|d|j                   |                     ||j        d|d|j                   d S )NzInternal buffer: z != zStart address: )r   r   r+  r  _bufr  )r	  hexstrr  r  rm  r3  s         r  
_test_readz-TestIntelHexStartingAddressRecords._test_read]  s    vc]]		rww$$)	* 	* 	* 	R]]$**bmm5	6 	6 	6 	6 	6r  c                 R    |                      t          t          t                     d S r"  )r  hex_rectype3data_rectype3start_addr_rectype3r&  s    r  test_read_rectype3z5TestIntelHexStartingAddressRecords.test_read_rectype3i      m5HIIIIIr  c                 R    |                      t          t          t                     d S r"  )r  hex_rectype5data_rectype5start_addr_rectype5r&  s    r  test_read_rectype5z5TestIntelHexStartingAddressRecords.test_read_rectype5l  r  r  Tc                    t          d           }||_        ||_        t                      }|                    ||           |                                }|                                 |                     ||           d S r"  )r   r  r  r   r  rk  r+  r  )r	  r  r  r  write_start_addrr3  rm  r  s           r  _test_writez.TestIntelHexStartingAddressRecords._test_writeo  sq    d^^"jj
#/000LLNN		##FA.....r  c                     d                     |                    d          dd                    }|                     |||d           d S )Nr?  Tr4   F)r  
splitlinesr  )r	  r  r  r  r5  s        r  _test_dont_writez3TestIntelHexStartingAddressRecords._test_dont_write|  sJ    776,,T221226774U;;;;;r  c                 R    |                      t          t          t                     d S r"  )r  r  r  r  r&  s    r  test_write_rectype3z6TestIntelHexStartingAddressRecords.test_write_rectype3  !    }6IJJJJJr  c                 R    |                      t          t          t                     d S r"  )r  r  r  r  r&  s    r  test_dont_write_rectype3z;TestIntelHexStartingAddressRecords.test_dont_write_rectype3  !    lM;NOOOOOr  c                 R    |                      t          t          t                     d S r"  )r  r  r  r  r&  s    r  test_write_rectype5z6TestIntelHexStartingAddressRecords.test_write_rectype5  r  r  c                 R    |                      t          t          t                     d S r"  )r  r  r  r  r&  s    r  test_dont_write_rectype5z;TestIntelHexStartingAddressRecords.test_dont_write_rectype5  r  r  c                     t                      }ddi|_        t                      }|                     t          |j        |           d S )Nr  r4   )r   r  r   r^  r   r  r  s      r  #test_write_invalid_start_addr_valuezFTestIntelHexStartingAddressRecords.test_write_invalid_start_addr_value  sA    ZZ
jj79JCPPPPPr  N)T)r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  [  s        
6 
6 
6J J JJ J J/ / / /< < <K K KP P PK K KP P PQ Q Q Q Qr  r  c                   *    e Zd ZdZd Zd Zd Zd ZdS )TestIntelHex_big_filesz3Test that data bigger than 64K read/write correctlyc                 8    t          t                    | _        d S r"  )r   r  r%  r&  s    r  r'  zTestIntelHex_big_files.setUp  s    &!!r  c                 <    | j                                          | ` d S r"  r*  r&  s    r  r,  zTestIntelHex_big_files.tearDown  r-  r  c           	          t          j        | j                  }t          t                    D ]*\  }}||         }|                     ||d|||fz             +d S )Nz$data not equal at addr %X (%X != %X))r~  r   r%  r   r  r  )r	  r3  r4  bytereadeds        r  test_readfilez$TestIntelHex_big_files.test_readfile  s    tv&&&w// 	C 	CJD$XFT6+.2D&-ABC C C C	C 	Cr  c                    t          j        | j                  }t                      }|                    |           |                                }|                                 |                     t          |           d S r"  )	r~  r   r%  r   r  rk  r+  r  r  r  s       r  test_write_hex_filez*TestIntelHex_big_files.test_write_hex_file  sg    tv&&jj
#LLNN		##FA.....r  N)r  r  r  r  r'  r,  r  r  r  r  r  r  r    sY        ==" " "  C C C/ / / / /r  r  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestIntelHexGetPutStringc                 d    t                      | _        t          d          D ]}|| j        |<   d S )Nrk   )r   r3  r   )r	  r  s     r  r'  zTestIntelHexGetPutString.setUp  s9    ** 	 	ADGAJJ	 	r  c                 P   |                      t          d          | j                            dd                     |                      t          d          | j                            dd                     |                     t
          j        d| j        j        dd	           d S )
Nz r   rb   	r0   rM   z>Bad access at 0x1: not enough data to read 10 contiguous bytesr4   rk   )r  r   r3  getsr  r~  NotEnoughDataErrorr&  s    r  	test_getsz"TestIntelHexGetPutString.test_gets  s    !CDDdgllSTVWFXFXYYY00$',,q!2D2DEEEX8:GL!R	! 	! 	! 	! 	!r  c                     | j                             dt          d                     |                     t          d          | j                             dd                     d S )NrM   helloz
 hello	r   rk   )r3  putsr   r  r  r&  s    r  	test_putsz"TestIntelHexGetPutString.test_puts  sU    T77++,,,!<==tw||Ar?R?RSSSSSr  c                 ^   |                      t          d          | j                            d                     |                     t
          j        d| j        j        d           d| j        d<   |                      t          d          | j                            d                     d S )Nr?  r   zABad access at 0x1: not enough data to read zero-terminated stringr4   r6   z)r  r   r3  getszr  r~  r  r&  s    r  
test_getszz#TestIntelHexGetPutString.test_getsz  s    dgmmA&6&6777X8=GM1	 	 	 
00$'--2B2BCCCCCr  c                     | j                             dt          d                     |                     t          d          | j                             dd                     d S )NrM   r!  z
 hello 	r   rk   )r3  putszr   r  r  r&  s    r  
test_putszz#TestIntelHexGetPutString.test_putsz  sU    dGG,,---!<==tw||Ar?R?RSSSSSr  c                 ,   |                      d| j                            t          d                               |                      d| j                            t          d                               |                      d| j                            t          d                               |                      d| j                            t          d                               |                      d| j                            t          d                               |                      d| j                            t          d	                               |                      d
| j                            t          d                               |                      d
| j                            t          d                               |                      d
| j                            t          d                               d S )Nr     rM   r0   r  r]  r  r  r3  findr   r&  s    r  	test_findz"TestIntelHexGetPutString.test_find  s   DGLL1O)P)PQQRRRDGLL99:::DGLL1C)D)DEEFFFDGLL99:::DGLL)@)@AABBBDGLL99:::TW\\'&//::;;;TW\\'**=*=>>???TW\\'**=*=>>?????r  c                 P   |                      d| j                            t          d          d                     |                      d| j                            t          d          d                     |                      d| j                            t          d          d                     |                      d| j                            t          d          d                     |                      d| j                            t          d	          d                     |                      d| j                            t          d
          d                     |                      d| j                            t          d          d                     |                      d| j                            t          d          d                     |                      d| j                            t          d          d                     d S )Nr]  r+  rM   rO  r,  r-  r.  r0   r  r/  r  r0  r1  r2  r&  s    r  test_find_startz(TestIntelHexGetPutString.test_find_start  s   TW\\'2P*Q*QYZ\[[\\\TW\\'&//\CCDDDDGLL1C)D)DALNNOOODGLLLBBCCCDGLL)@)@LJJKKKDGLLLBBCCCTW\\'&//\CCDDDTW\\'**=*=Q\GGHHHTW\\'**=*=Q\GGHHHHHr  c                 P   |                      d| j                            t          d          d                     |                      d| j                            t          d          d                     |                      d| j                            t          d          d                     |                      d| j                            t          d	          d                     |                      d| j                            t          d
          d                     |                      d| j                            t          d          d                     |                      d| j                            t          d          d                     |                      d| j                            t          d          d                     |                      d| j                            t          d          d                     d S )Nr]  r+  r6   rQ  r   r,  r-  rM   r.  r  r/  r  r0  r1  r2  r&  s    r  test_find_endz&TestIntelHexGetPutString.test_find_end  s   TW\\'2P*Q*QWX\YYZZZDGLLaL@@AAATW\\'2D*E*E1\MMNNNDGLLaL@@AAATW\\'.*A*Aq\IIJJJTW\\'&//q\AABBBTW\\'&//q\AABBBTW\\'**=*=1\EEFFFTW\\'**=*=1\EEFFFFFr  c                 b   |                      d| j                            t          d          dd                     |                      d| j                            t          d          dd                     |                      d| j                            t          d          dd                     |                      d| j                            t          d          dd                     |                      d| j                            t          d	          dd                     |                      d| j                            t          d
          dd                     |                      d| j                            t          d          dd                     |                      d| j                            t          d          dd                     |                      d| j                            t          d          dd                     d S )Nr]  r+  rM   r0   rP  rR  r,  r-  r.  r  r/  r  r0  r1  r2  r&  s    r  test_find_start_endz,TestIntelHexGetPutString.test_find_start_end  s   TW\\'2P*Q*QYZ`a\bbcccTW\\'&//\JJKKKDGLL1C)D)DASTLUUVVVDGLLqLIIJJJTW\\'.*A*APQ\RRSSSTW\\'&//\JJKKKTW\\'&//\JJKKKTW\\'**=*=QA\NNOOOTW\\'**=*=QA\NNOOOOOr  N)r  r  r  r'  r  r#  r&  r)  r4  r6  r8  r;  r  r  r  r  r    s          
! ! !T T TD D DT T T	@ 	@ 	@	I 	I 	I	G 	G 	G	P 	P 	P 	P 	Pr  r  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestIntelHexDumpc                     t                      }t                      }|                    |           |                     d|                                           d S Nr?  r   r   dumpr  rk  r  s      r  
test_emptyzTestIntelHexDump.test_empty  sG    ZZjj
S\\^^,,,,,r  c                 v   t                      }d|d<   d|d<   t                      }|                    |           |                     d|                                           d|d<   d|d	<   t                      }|                    |           |                     d
|                                           d S )Nr5   r   rE   r4   zJ0000  12 34 -- -- -- -- -- -- -- -- -- -- -- -- -- --  |.4              |
V   r   r      z0000  12 34 -- -- -- -- -- -- -- -- -- -- -- -- -- --  |.4              |
0010  56 -- -- -- -- -- -- -- -- -- -- -- -- -- 98 --  |V             . |
r@  r  s      r  test_simplezTestIntelHexDump.test_simple  s    ZZ11jj
YLLNN	 	 	 22jj
ZLLNN	 	 	 	 	r  c                     t                      }d|d<   d|d<   t                      }|                    |           |                     d|                                           d S )NrD  r   r   rE  zJ0010  56 -- -- -- -- -- -- -- -- -- -- -- -- -- 98 --  |V             . |
r@  r  s      r  test_minaddr_not_zeroz&TestIntelHexDump.test_minaddr_not_zero  se    ZZ22jj
YLLNN	 	 	 	 	r  c                    t                      }d|d<   d|d<   ddd|_        t                      }|                    |           |                     d|                                           d	d
i|_        t                      }|                    |           |                     d|                                           d S )Nr5   r   rE   r4   r   r   r   zcCS = 0x1234, IP = 0x5678
0000  12 34 -- -- -- -- -- -- -- -- -- -- -- -- -- --  |.4              |
r   r   z[EIP = 0x12345678
0000  12 34 -- -- -- -- -- -- -- -- -- -- -- -- -- --  |.4              |
)r   r  r   rA  r  rk  r  s      r  test_start_addrz TestIntelHexDump.test_start_addr  s    ZZ11%V44jj
ZLLNN	 	 	 
+jj
ZLLNN	 	 	 	 	r  c                     t                      }t                      }g d}|D ]%}|                     t          d|j        ||           &di g |g}|D ]%}|                     t          d|j        ||           &d S )N)r   r]  g      %g      @z!width must be a positive integer.r?  )r   r   r  r_  rA  )r	  r3  rm  	badwidthsbwbadwidthtypesbwts          r  test_bad_widthzTestIntelHexDump.test_bad_width2  s    ZZjj'''	 	" 	"B  -Pb" " " "RS)  	# 	#C  -Pc# # # #	# 	#r  c                 ~   t                      }d|d<   d|d<   t                      }|                    |d           |                     d|                                           d|d	<   d
|d<   t                      }|                    |d           |                     d|                                           d S )Nr5   r   rE   r4   rM   )rl  widthz0000  12 34 --  |.4 |
rD  r   r   rE  z0000  12 34 --  |.4 |
0003  -- -- --  |   |
0006  -- -- --  |   |
0009  -- -- --  |   |
000C  -- -- --  |   |
000F  -- 56 --  | V |
0012  -- -- --  |   |
0015  -- -- --  |   |
0018  -- -- --  |   |
001B  -- -- --  |   |
001E  98 -- --  |.  |
r@  r  s      r  test_simple_width3z#TestIntelHexDump.test_simple_width3>  s    ZZ11jj
s!$$$%LLNN	 	 	 22jj
s!$$$
& LLNN	 	 	 	 	r  c                     t                      }d|d<   d|d<   t                      }|                    |dd           |                     d|                                           d S )	NrD  r   r   rE  rM   T)rl  rR  withpaddingz000F  FF FF 56  |..V|
0012  FF FF FF  |...|
0015  FF FF FF  |...|
0018  FF FF FF  |...|
001B  FF FF FF  |...|
001E  98 FF FF  |...|
r@  r  s      r  $test_minaddr_not_zero_width3_paddingz5TestIntelHexDump.test_minaddr_not_zero_width3_paddingZ  sr    ZZ22jj
s!666& LLNN	 	 	 	 	r  N)
r  r  r  rB  rF  rH  rJ  rP  rS  rV  r  r  r  r=  r=    s}        - - -  $    &
# 
# 
#  8    r  r=  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestIntelHexMergec                     t                      }t                      }|                    |           |                     i |                                           d S r"  r   merger  r  r	  ih1r  s      r  test_merge_emptyz"TestIntelHexMerge.test_merge_emptyl  sG    jjjj		#SZZ\\*****r  c           	          t          dddd          }t          dddd          }|                    |           |                     ddddddd	|                                           d S )
Nr4   r#   rM   )r   r4   r#   r6   r$   ra   )rM   r6   r$   )r   r4   r#   rM   r6   r$   rZ  r\  s      r  test_merge_simplez#TestIntelHexMerge.test_merge_simpler  so    !qA''!qA''		#Aa1Q77FFFFFr  c                    t                      }|                     t          d|j        ddi           |                     t          d|j        |           t                      }|                     t          d|j        |d           d S )Nzother should be IntelHex objectr   r4   zCan't merge itselfz@overlap argument should be either 'error', 'ignore' or 'replace'spamoverlap)r   r  r  r[  r_  r\  s      r  test_merge_wrong_argsz'TestIntelHexMerge.test_merge_wrong_argsx  s    jjY(II!u	 	 	Z)=Is	 	 	jjZ *-IsF 	 	, 	, 	, 	, 	,r  c                 (   t          ddi          }t          ddi          }|                     t          j        d|j        |d           t          ddi          }t          ddi          }|                    |d           |                     ddi|                                           t          ddi          }t          ddi          }|                    |d           |                     ddi|                                           d S )	Nr   r4   r#   zData overlapped at address 0x0errorrc  ignorereplace)r   r  r~  r   r[  r  r  r\  s      r  test_merge_overlapz$TestIntelHexMerge.test_merge_overlap  s   !uoo!uooX9,IsG 	 	- 	- 	- !uoo!uoo		#x	(((!A

---!uoo!uoo		#y	)))!A

-----r  c                    t          dddii          }t                      }|                    |           |                     dddii|                                           t                      }t          dddii          }|                    |           |                     dddii|                                           t          dddii          }t          dddii          }|                    |           |                     dddii|                                           t          dddii          }t          dddii          }|                     t
          d|j        |d           t          dddii          }t          dddii          }|                    |d           |                     dddii|                                           t          dddii          }t          dddii          }|                    |d	           |                     dddii|                                           d S )
Nr  r   r   l   !C z Starting addresses are differentrg  rc  rh  ri  )r   r[  r  r  r  r   r\  s      r  test_merge_start_addrz'TestIntelHexMerge.test_merge_start_addr  sQ   uj&9:;;jj		#,
(;<cjjllKKKjjuj&9:;;		#,
(;<cjjllKKKuj&9:;;uj&9:;;		#,
(;<cjjllKKK uj&9:;;uj&9:;;0.IsG 	 	- 	- 	- uj&9:;;uj&9:;;		#x	(((,
(;<cjjllKKKuj&9:;;uj&9:;;		#y	))),
(;<cjjllKKKKKr  N)r  r  r  r^  r`  re  rj  rl  r  r  r  rX  rX  j  sg        + + +G G G	, 	, 	,. . .$ L  L  L  L  Lr  rX  c                   \    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )TestIntelHex16bitc                 8    t          t                    | _        d S r"  )r   hex16r%  r&  s    r  r'  zTestIntelHex16bit.setUp  s    %r  c                 <    | j                                          | ` d S r"  r*  r&  s    r  r,  zTestIntelHex16bit.tearDown  r-  r  c                 8    t          j        | j                  }d S r"  )r~  IntelHex16bitr%  rV  s     r  r7  z%TestIntelHex16bit.test_init_from_file  s    #DF++r  c                 `    t          j        | j                  }t          j        |          }d S r"  )r~  r   r%  rs  r	  r3  ih16s      r  test_init_from_ihz#TestIntelHex16bit.test_init_from_ih  s(    tv&&%b))r  c                     t          j                    }|                     d|j                   |                     d|d                    d S )N  r   )r~  rs  r  rS  )r	  rv  s     r  test_default_paddingz&TestIntelHex16bit.test_default_padding  sH    %''$,///$q'*****r  c                     t          j        | j                  }|                                }|                     d|d|z             d S )Nr   z)Error in detection of minaddr (0 != 0x%x))r~  rs  r%  rH  r  r	  r3  r4  s      r  test_minaddrzTestIntelHex16bit.test_minaddr  sT    #DF++zz||DDtK	M 	M 	M 	M 	Mr  c                     t          j        | j                  }|                                }|                     d|d|z             d S )N   z.Error in detection of maxaddr (0x001D != 0x%x))r~  rs  r%  rI  r  r|  s      r  test_maxaddrzTestIntelHex16bit.test_maxaddr  sT    #DF++zz||,.23	4 	4 	4 	4 	4r  c           
          t          j        | j                  }d|_        t	          t
                    D ].\  }}|                     |||         d||||         fz             /d S )Nr   z,Data mismatch at address 0x%x (0x%x != 0x%x))r~  rs  r%  rS  	enumeratebin16r  )r	  r3  r4  words       r  test_getitemzTestIntelHex16bit.test_getitem  s    #DF++
#E** 	M 	MJD$T2d836:D"T(5KLM M M M	M 	Mr  c                     t          j                    }d|d<   t          j        |          |                     t          dfdd           d S )Nr4   r   z7Bad access at 0x0: not enough data to read 16 bit valuec                     |          S r"  r  )xrv  s    r  <lambda>z8TestIntelHex16bit.test_not_enough_data.<locals>.<lambda>  s    tAw r  )r~  r   rs  r  r   ru  s     @r  test_not_enough_dataz&TestIntelHex16bit.test_not_enough_data  sc      1%b))^D....		  	  	  	  	 r  c                    t          j        | j                  }t                      }|                    |           |                                }|                                 t          |          }t          j        |          }|                     |                                |                                d           d S )N-Written hex file does not equal with original)	r~  rs  r%  r   r  rk  r+  r  rd  r	  r3  rm  r  finr  s         r  r  z%TestIntelHex16bit.test_write_hex_file  s    #DF++jj
#LLNN		qkk$S))H	J 	J 	J 	J 	Jr  c                     t          j        t          j                              }d|d<   t                      }|                    |           d S )Nr   r   )r~  rs  r   r   r  r  s      r  test_bug_988148z!TestIntelHex16bit.test_bug_988148  sG    #H$5$7$7881jj
#r  c                     t          j        | j                  }|d         }|dz  |d<   |                     ||d         d           d S )Nr   ry  z+Setting new value to internal buffer failed)r~  rs  r%  r  )r	  r3  olds      r  test_setitemzTestIntelHex16bit.test_setitem   s\    #DF++ef1CAI	K 	K 	K 	K 	Kr  c                 N   t          j                    }d|d<   d|d<   |                     t          j        dg d          |                    dd                     d	|_        |                     t          j        dg d
          |                    dd                     d S )Nr   r   r   r4   r   )r   r   ry  r#   r:  r   )r   r   r   )r~  rs  r  rT  rU  rS  rV  s     r  test_tobinarrayz!TestIntelHex16bit.test_tobinarray	  s    #%%11S*@*@*@AAQA66	8 	8 	8 
S*@*@*@AAQA66	8 	8 	8 	8 	8r  N)r  r  r  r'  r,  r7  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  rn  rn    s        ! ! !  , , ,* * *+ + +
M M M4 4 4M M M     J J J  K K K	8 	8 	8 	8 	8r  rn  c                   ~    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestIntelHexErrorszTests for custom errors classesc                 H    |                      |t          |                    S r"  )r  r  )r	  message	exceptions      r  assertEqualExcz!TestIntelHexErrors.assertEqualExc  s    Y888r  c                 J    |                      dt                                 d S )NIntelHex base errorr  r   r&  s    r  test_IntelHexErrorz%TestIntelHexErrors.test_IntelHexError  s#    1=??CCCCCr  c                     |                      dt          d                     |                      dt          d                     d S )NzIntelHex custom error message)r  r  r?  r  r&  s    r  test_IntelHexError_messagez-TestIntelHexErrors.test_IntelHexError_message  sW    ;=>>>	@ 	@ 	@1=R3H3H3HIIIIIr  c                 J    |                      dt                                 d S )NzHex reader base error)r  r   r&  s    r  test_HexReaderErrorz&TestIntelHexErrors.test_HexReaderError$  s%    3^5E5EFFFFFr  c                 N    |                      dt          d                     d S )N*Hex file contains invalid record at line 1r4   line)r  r   r&  s    r  test_HexRecordErrorz&TestIntelHexErrors.test_HexRecordError'  s5    H"""	$ 	$ 	$ 	$ 	$r  c                 N    |                      dt          d                     d S )N#Record at line 1 has invalid lengthr4   r  )r  r   r&  s    r  test_RecordLengthErrorz)TestIntelHexErrors.test_RecordLengthError+  s5    A1%%%	' 	' 	' 	' 	'r  c                 N    |                      dt          d                     d S )N(Record at line 1 has invalid record typer4   r  )r  r	   r&  s    r  test_RecordTypeErrorz'TestIntelHexErrors.test_RecordTypeError/  s5    F###	% 	% 	% 	% 	%r  c                 N    |                      dt          d                     d S )N%Record at line 1 has invalid checksumr4   r  )r  r
   r&  s    r  test_RecordChecksumErrorz+TestIntelHexErrors.test_RecordChecksumError3  s5    CQ'''	) 	) 	) 	) 	)r  c                 J    |                      dt                                 d S )N#File has invalid End-of-File record)r  r   r&  s    r  test_EOFRecordErrorz&TestIntelHexErrors.test_EOFRecordError7  s0    A	 	 	 	 	r  c                 N    |                      dt          d                     d S )N1Invalid Extended Segment Address Record at line 1r4   r  )r  r   r&  s    r  &test_ExtendedSegmentAddressRecordErrorz9TestIntelHexErrors.test_ExtendedSegmentAddressRecordError;  s5    ?-1555	7 	7 	7 	7 	7r  c                 N    |                      dt          d                     d S )N0Invalid Extended Linear Address Record at line 1r4   r  )r  r   r&  s    r  %test_ExtendedLinearAddressRecordErrorz8TestIntelHexErrors.test_ExtendedLinearAddressRecordError@  s5    N,!444	6 	6 	6 	6 	6r  c                 N    |                      dt          d                     d S )N.Invalid Start Segment Address Record at line 1r4   r  )r  r   r&  s    r  #test_StartSegmentAddressRecordErrorz6TestIntelHexErrors.test_StartSegmentAddressRecordErrorD  s5    L*222	4 	4 	4 	4 	4r  c                 N    |                      dt          d                     d S )N-Invalid Start Linear Address Record at line 1r4   r  )r  r   r&  s    r  "test_StartLinearAddressRecordErrorz5TestIntelHexErrors.test_StartLinearAddressRecordErrorH  s5    K)q111	3 	3 	3 	3 	3r  c                 N    |                      dt          d                     d S )Nz,Start Address Record appears twice at line 1r4   r  )r  r   r&  s    r   test_DuplicateStartAddressRecordz3TestIntelHexErrors.test_DuplicateStartAddressRecordL  s5    J,!444	6 	6 	6 	6 	6r  c                 R    |                      dt          ddi                     d S )Nz'Invalid start address value: {'foo': 1}r  r4   )r  )r  r   r&  s    r  test_InvalidStartAddressValuez0TestIntelHexErrors.test_InvalidStartAddressValueP  s>    E)eQZ@@@	B 	B 	B 	B 	Br  c                 P    |                      dt          dd                     d S )Nz5Hex file has data overlap at address 0x1234 on line 1r   r4   )addressr  )r  r   r&  s    r  test_AddressOverlapErrorz+TestIntelHexErrors.test_AddressOverlapErrorT  s>     (/QGGG	I 	I 	I 	I 	Ir  c                 Z    |                      dt          j        dd                     d S )NzABad access at 0x1234: not enough data to read 10 contiguous bytesr   rk   )r  length)r  r~  r  r&  s    r  test_NotEnoughDataErrorz*TestIntelHexErrors.test_NotEnoughDataErrorY  sA     :'rBBB	D 	D 	D 	D 	Dr  c                 N    |                      dt          d                     d S )Nz:Bad access at 0x1234: not enough data to read 16 bit valuer   )r  )r  r   r&  s    r  test_BadAccess16bitz&TestIntelHexErrors.test_BadAccess16bit^  s8     C*6:::	< 	< 	< 	< 	<r  N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r    s:       ))9 9 9D D DJ J J
G G G$ $ $' ' '% % %) ) )  7 7 7
6 6 64 4 43 3 36 6 6B B BI I I
D D D
< < < < <r  r  c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestDecodeHexRecordszVTesting that decoding of records is correct
    and all errors raised when needed
    c                 N    t                      | _        | j        j        | _        d S r"  )r   r3  _decode_recorddecode_recordr&  s    r  r'  zTestDecodeHexRecords.setUpj  s     **!W3r  c                 
    | ` d S r"  )r3  r&  s    r  r,  zTestDecodeHexRecords.tearDownn  s    GGGr  c                 0    |                      d           d S r?  r  r&  s    r  test_empty_linez$TestDecodeHexRecords.test_empty_lineq  s     	2r  c                 L    |                      t          d| j        dd           d S )Nr   r4   r  r   r  r&  s    r  test_non_empty_linez(TestDecodeHexRecords.test_non_empty_linev  s5    ^I!/ 		  	  	  	  	 r  c                 L    |                      t          d| j        dd           d S )Nr  :r4   r  r&  s    r  test_short_recordz&TestDecodeHexRecords.test_short_record}  s5    ^I!/ 		  	  	  	  	 r  c                 L    |                      t          d| j        dd           d S )Nr  z:0100000100Fr4   r  r&  s    r  test_odd_hexascii_digitsz-TestDecodeHexRecords.test_odd_hexascii_digits  s5    ^I!/+		  	  	  	  	 r  c                 L    |                      t          d| j        dd           d S )Nr  z:FF00000100r4   )r  r   r  r&  s    r  test_invalid_lengthz(TestDecodeHexRecords.test_invalid_length  s6    .B!/*		  	  	  	  	 r  c                 L    |                      t          d| j        dd           d S )Nr  z:000000FF01r4   )r  r	   r  r&  s    r  test_invalid_record_typez-TestDecodeHexRecords.test_invalid_record_type  s5    _G!/*		  	  	  	  	 r  c                 L    |                      t          d| j        dd           d S )Nr  z:0000000100r4   )r  r
   r  r&  s    r  test_invalid_checksumz*TestDecodeHexRecords.test_invalid_checksum  s6    0D!/*		  	  	  	  	 r  c                 L    |                      t          d| j        dd           d S )Nr  z:0100000100FEr4   )r  r   r  r&  s    r  test_invalid_eofz%TestDecodeHexRecords.test_invalid_eof  s5    ^B!/,		  	  	  	  	 r  c                     |                      t          d| j        dd           |                      t          d| j        dd           d S )Nr  z:00000002FEr4   z:020001020000FB)r  r   r  r&  s    r  test_invalid_extended_segmentz2TestDecodeHexRecords.test_invalid_extended_segment  sb    >P!/*		  	  	  	>P!/.		  	  	  	  	 r  c                     |                      t          d| j        dd           |                      t          d| j        dd           d S )Nr  z:00000004FCr4   z:020001040000F9)r  r   r  r&  s    r  test_invalid_linear_addressz0TestDecodeHexRecords.test_invalid_linear_address  sf    =)!/*	  	  	  	=)!/.	  	  	  	  	 r  c                     |                      t          d| j        dd           |                      t          d| j        dd           d S )Nr  z:00000003FDr4   z:0400010300000000F8)r  r   r  r&  s    r  test_invalid_start_segment_addrz4TestDecodeHexRecords.test_invalid_start_segment_addr  sb    ;M!/*		  	  	  	;M!/2		  	  	  	  	 r  c                 v    |                      d           |                     t          d| j         dd           d S )N:0400000312345678E5,Start Address Record appears twice at line 2z:0400000300000000F9r#   r  r  r   r&  s    r  !test_duplicate_start_segment_addrz6TestDecodeHexRecords.test_duplicate_start_segment_addr  K    0111=K!/2		  	  	  	  	 r  c                     |                      t          d| j        dd           |                      t          d| j        dd           d S )Nr  z:00000005FBr4   z:0400010500000000F6)r  r   r  r&  s    r  test_invalid_start_linear_addrz3TestDecodeHexRecords.test_invalid_start_linear_addr  sb    :L!/*		  	  	  	:L!/2		  	  	  	  	 r  c                 v    |                      d           |                     t          d| j         dd           d S )N:0400000512345678E3r  z:0400000500000000F7r#   r  r&  s    r   test_duplicate_start_linear_addrz5TestDecodeHexRecords.test_duplicate_start_linear_addr  r  r  c                 v    |                      d           |                     t          d| j         dd           d S )Nz:0100000000FFz2Hex file has data overlap at address 0x0 on line 1r4   )r  r  r   r&  s    r  test_addr_overlapz&TestDecodeHexRecords.test_addr_overlap  sL    ?+++0)!/,	  	  	  	  	 r  c                     |                      d           |                      d           |                      d           d S )Nz:0100000000FF
z:03000100000102F9
z+:1004E300CFF0FBE2FDF220FF20F2E120E2FBE6F396r  r&  s    r  test_data_recordz%TestDecodeHexRecords.test_data_record  sG    ,---2333HIIIIIr  c                 H    |                      t          | j        d           d S N:00000001FF)r^  r   r  r&  s    r  test_eofzTestDecodeHexRecords.test_eof  s#    *d&8-HHHHHr  N)r  r  r  r  r'  r,  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  e  sC        4 4 4    
                                                                       J J JI I I I Ir  r  c                        e Zd Zd Zd Zd ZdS )TestHex2Binc                 ^    t          t                    | _        t                      | _        d S r"  )r   r$  r  r   foutr&  s    r  r'  zTestHex2Bin.setUp
  s    D>>II			r  c                 j    | j                                          | j                                         d S r"  )r  r+  r  r&  s    r  r,  zTestHex2Bin.tearDown  s,    	r  c           	      X   t          | j        | j                  }t          j        dt	          | j                                                            }t          t          t                              D ]4}t          |         }||         }| 	                    ||d|||fz             5d S )Nr"   r/  )
r   r  r  rT  r   rk  r   r0  r1  r  )r	  r3  r  r4  r5  r6  s         r  test_hex2binzTestHex2Bin.test_hex2bin  s    TXty)){3	(:(:(<(< = =>>CII&& 	I 	IDDzH$ZFXv-04h/GHI I I I	I 	Ir  N)r  r  r  r'  r,  r  r  r  r  r  r    sF            I I I I Ir  r  c                       e Zd Zd ZdS )TestDiffDumpsc                 h   t          dddd          }t          dddd          }t                      }t          j        |||           |                                }d}t
          j        d         dk    st
          j        d	k    rd
}dt          |          z  }| 	                    ||           d S )Nr/   1   r   )r4   r   r   r   r  r   rM   z2.7r?  aZ  --- a%(extra)s
+++ b%(extra)s
@@ -1,3 +1,3 @@
 0000  -- 30 -- -- -- -- -- -- -- -- -- -- -- -- -- --  | 0              |
-0010  -- -- -- -- 31 -- -- -- -- -- -- -- -- -- -- --  |    1           |
+0010  -- -- -- -- 32 -- -- -- -- -- -- -- -- -- -- --  |    2           |
 0020  -- -- -- -- -- -- -- -- 33 -- -- -- -- -- -- --  |        3       |
)extra)
r   r   r~  
diff_dumpsrk  r  version_infoversiondictr  )r	  r]  r  rm  resultr  shouldbes          r  rF  zTestDiffDumps.test_simple  s    $4D1122$4D1122jjCc***A!##s{e';';E[ 5!!!" 	6*****r  N)r  r  r  rF  r  r  r  r  r    s#        + + + + +r  r  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestBuildRecordsc                 p    |                      dt          j                            g d                     d S )Nr  )r   r   r   r4   )r  r~  r   _from_bytesr&  s    r  test__from_bytesz!TestBuildRecords.test__from_bytes6  s=    O''			22	4 	4 	4 	4 	4r  c                     |                      dt          j                            ddg                     |                      dt          j                            dg d                     d S )Nz:011234005663r   rD  z:0312340056789059)rD  r-   rC   )r  r~  r   r  r&  s    r  	test_datazTestBuildRecords.test_data:  sm    (/*>*>vv*N*NOOO,O  );););<<	> 	> 	> 	> 	>r  c                 j    |                      dt          j                                                   d S r  )r  r~  r   r  r&  s    r  r  zTestBuildRecords.test_eof?  s,    (;(;(=(=>>>>>r  c                 l    |                      dt          j                            d                     d S )Nz:020000021234B6r   )r  r~  r   extended_segment_addressr&  s    r  test_extended_segment_addressz.TestBuildRecords.test_extended_segment_addressB  s:    *O44V<<	> 	> 	> 	> 	>r  c                 n    |                      dt          j                            dd                     d S )Nr  r   r   )r  r~  r   start_segment_addressr&  s    r  test_start_segment_addressz+TestBuildRecords.test_start_segment_addressF  sA    .O11&&AA	C 	C 	C 	C 	Cr  c                 l    |                      dt          j                            d                     d S )Nz:020000041234B4r   )r  r~  r   r  r&  s    r  test_extended_linear_addressz-TestBuildRecords.test_extended_linear_addressJ  s:    *O33F;;	= 	= 	= 	= 	=r  c                 l    |                      dt          j                            d                     d S )Nr  r   )r  r~  r   start_linear_addressr&  s    r  test_start_linear_addressz*TestBuildRecords.test_start_linear_addressN  s:    .O00<<	> 	> 	> 	> 	>r  N)
r  r  r  r  r  r  r  r  r!  r$  r  r  r  r  r  4  s        4 4 4> > >
? ? ?> > >C C C= = => > > > >r  r  c                        e Zd Zd Zd Zd ZdS )Test_GetFileAndAddrRangec                    |                      dt          j        d                     |                      dt          j        d                     |                      dt          j        d                     |                      dt          j        d                     |                      d	t          j        d
                     |                      d	t          j        d                     d S )N)filename.hexNNr(  )r%  NNr%  )r(  r4   Nzfilename.hex:1:)r(  Nrk   zfilename.hex::A)r(  r4   rk   zfilename.hex:1:Azfilename.hex:0001:000Ar  r~  _get_file_and_addr_ranger&  s    r  rF  z$Test_GetFileAndAddrRange.test_simpleU  s   5-n==	? 	? 	?*-c22	4 	4 	42-.?@@	B 	B 	B3-.?@@	B 	B 	B0-.@AA	C 	C 	C0-.FGG	I 	I 	I 	I 	Ir  c                 
   |                      t          j        t          j        d           |                      t          j        t          j        d           |                      t          j        t          j        dd           d S )Nzfilename.hex:zfilename.hex:::zC:\filename.hex:T)r^  r~  _BadFileNotationr*  r&  s    r  test_bad_notationz*Test_GetFileAndAddrRange.test_bad_notationc  s    (3-	@ 	@ 	@(3-/@	B 	B 	B(3-/BD	J 	J 	J 	J 	Jr  c                    |                      dt          j        dd                     |                      dt          j        dd                     |                      dt          j        dd                     |                      dt          j        d	d                     |                      dt          j        d
d                     d S )N)C:\filename.hexNNr/  T)r/  r4   NzC:\filename.hex:1:)r/  Nrk   zC:\filename.hex::A)r/  r4   rk   zC:\filename.hex:1:AzC:\filename.hex:0001:000Ar)  r&  s    r  test_drive_letterz*Test_GetFileAndAddrRange.test_drive_letterk  s    9-.@$GG	I 	I 	I6-.CTJJ	L 	L 	L7-.CTJJ	L 	L 	L4-.DdKK	M 	M 	M4-.JDQQ	S 	S 	S 	S 	Sr  N)r  r  r  rF  r-  r0  r  r  r  r&  r&  S  sL        I I IJ J J
S 
S 
S 
S 
Sr  r&  c                       e Zd Zd ZdS )TestXrangeLongIntc                 n   t           j        dk    r9|                     t          t          t
          j        t
          j        dz              t          j        dd          }|                     g dt          |                     t          j        ddd          }|                     ddgt          |                     t          j        ddd          }|                     g d	t          |                     t          j        ddd
          }|                     ddgt          |                     d S )Nr#   rM      P#@ l   S#@ )r4     Q#@    R#@ r6  l   O#@ r]  )r6  r5  r4  )
r   Pythonr^  OverflowErrorxranger  maxintr   r  r  )r	  uprdnrs      r  test_xrange_longintz%TestXrangeLongInt.test_xrange_longintz  s	   =AmVSZANNNnZ44===tCyyIIInZQ77*j1499===nZR88===tCyyIIInZR88*j1499=====r  N)r  r  r  r>  r  r  r  r2  r2  x  s#        > > > > >r  r2  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestInSubprocessc                    t           j        dk    rt          j        |          }t	          j        |t          j        t          j                  }|                                \  }}|                                }|r|	                    dd          }n|r|	                    dd          }|
                    dd          }||fS )Nrw  )stdoutstderrasciiri  r?  )r  platformshlexsplit
subprocessPopenPIPEcommunicatepolldecoderi  )r	  cmdlineprB  rC  retcodeoutputs          r  #runProcessAndGetAsciiStdoutOrStderrz4TestInSubprocess.runProcessAndGetAsciiStdoutOrStderr  s    <7""k'**GWZ_Z_UUU&&(( 	7]]7I66FF 	7]]7I66Fb))r  c                     |t           j        z  }|                     |          \  }}|                     t          |                                           |                     d|           d S )Nr   )r  
executablerS  r  r    rstrip)r	  cmdline_templaterO  rQ  rR  s        r  versionCheckerzTestInSubprocess.versionChecker  s_    "S^3BB7KKfmmoo666G$$$$$r  c                 0    |                      d           d S )Nz%s setup.py --versionrX  r&  s    r  test_setup_versionz#TestInSubprocess.test_setup_version  s    344444r  c                 0    |                      d           d S )Nz%s scripts/bin2hex.py --versionrZ  r&  s    r  test_sripts_bin2hex_versionz,TestInSubprocess.test_sripts_bin2hex_version      =>>>>>r  c                 0    |                      d           d S )Nz%s scripts/hex2bin.py --versionrZ  r&  s    r  test_sripts_hex2bin_versionz,TestInSubprocess.test_sripts_hex2bin_version  r^  r  c                 0    |                      d           d S )Nz %s scripts/hex2dump.py --versionrZ  r&  s    r  test_sripts_hex2dump_versionz-TestInSubprocess.test_sripts_hex2dump_version      >?????r  c                 0    |                      d           d S )Nz%s scripts/hexdiff.py --versionrZ  r&  s    r  test_sripts_hexdiff_versionz,TestInSubprocess.test_sripts_hexdiff_version  r^  r  c                 0    |                      d           d S )Nz %s scripts/hexmerge.py --versionrZ  r&  s    r  test_sripts_hexmerge_versionz-TestInSubprocess.test_sripts_hexmerge_version  rc  r  N)r  r  r  rS  rX  r[  r]  r`  rb  re  rg  r  r  r  r@  r@    s          % % %5 5 5? ? ?? ? ?@ @ @? ? ?@ @ @ @ @r  r@  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestWriteHexFileByteCountc                 8    t          t                    | _        d S r"  r#  r&  s    r  r'  zTestWriteHexFileByteCount.setUp  r(  r  c                 <    | j                                          | ` d S r"  r*  r&  s    r  r,  z"TestWriteHexFileByteCount.tearDown  r-  r  c                 &   t          j        | j                  }t                      }|                     t
          |j        |d           |                     t
          |j        |d           |                     t
          |j        |d           d S )Nr   
byte_countr]  r  )r~  r   r%  r   r^  r_  r  r  s      r  "test_write_hex_file_bad_byte_countz<TestWriteHexFileByteCount.test_write_hex_file_bad_byte_count  s    tv&&jj*b&7KKK*b&7LLL*b&7MMMMMr  c                    t          j        | j                  }|d d         }t                      }|                    |d           |                                }|                                 |                     d|d           t          |          }t          j        |          }|                     |                                |                                d           d S )Nr6   r4   rm  zD:0100000002FD
:0100010005F9
:01000200A25B
:01000300E517
:00000001FF
z"Written hex is not in byte count 1r  )	r~  r   r%  r   r  rk  r+  r  rd  )r	  r3  r]  rm  r  r  r  s          r   test_write_hex_file_byte_count_1z:TestWriteHexFileByteCount.test_write_hex_file_byte_count_1  s    tv&&!fjj31---LLNN		
 0	2 	2 	2 qkk$$H	J 	J 	J 	J 	Jr  c                 
   t          j        | j                  }t                      }|                    |d           |                                }|                    d           |                     |                                dd           |	                                 t          |          }t          j        |          }|                     |
                                |
                                d           d S )NrU   rm  r   z&:0D0000000205A2E576246AF8E6057622786E
z#Written hex is not in byte count 13r  r~  r   r%  r   r  rk  seekr  readliner+  rd  r  s         r  !test_write_hex_file_byte_count_13z;TestWriteHexFileByteCount.test_write_hex_file_byte_count_13  s    tv&&jj
#"---LLNN51	3 	3 	3 			qkk$$H	J 	J 	J 	J 	Jr  c                 
   t          j        | j                  }t                      }|                    |d           |                                }|                    d           |                     |                                dd           |	                                 t          |          }t          j        |          }|                     |
                                |
                                d           d S )NrG   rm  r   a
  :FF0000000205A2E576246AF8E60576227867300702786AE475F0011204AD0204552000EB7F2ED2008018EF540F2490D43440D4FF30040BEF24BFB41A0050032461FFE57760021577057AE57A7002057930070D7867E475F0011204ADEF02049B02057B7403D2078003E4C207F5768B678A688969E4F577F579F57AE57760077F2012003E80F57578FFC201C200C202C203C205C206C20812000CFF700D3007057F0012004FAF7AAE7922B4255FC2D5C20412000CFF24D0B40A00501A75F00A787730D50508B6FF0106C6A426F620D5047002D20380D924CFB41A00EF5004C2E5D20402024FD20180C6D20080C0D20280BCD2D580BAD20580B47F2012003E20020774010E
z$Written hex is not in byte count 255r  rs  r  s         r  "test_write_hex_file_byte_count_255z<TestWriteHexFileByteCount.test_write_hex_file_byte_count_255  s    tv&&jj
##...LLNN+ 3
	4 
	4 
	4 			qkk$$H	J 	J 	J 	J 	Jr  N)	r  r  r  r'  r,  ro  rq  rv  rx  r  r  r  ri  ri    s|               N N NJ J J,J J J$J J J J Jr  ri  __main__)Nr  rT  rC  rG  rI  r  rA  unittestr~  r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   intelhex.compatr   r   r   r   r   r   r   r   r   intelhex.__version__r    __docformat__r$  r1  rp  r  r  r  r  r  r  r  r  r  r  r  r  TestCaser   r   r  r  r  r  r=  rX  rn  r  r  r  r  r  r&  r2  r@  ri  r  mainr  r  r  <module>r     sY  D ' &  				      



                                            *      
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 - , , , , ,"
cH u{3 {E {E {E {F {F|	 	C : : : 	; 	;
 !

 A#622  Aj)  
 3 3 3 3 3x( 3 3 3nH H H H H# H H HT#4 #4 #4 #4 #4* #4 #4 #4L5Q 5Q 5Q 5Q 5Q)9 5Q 5Q 5Qp/ / / / /- / / /6JP JP JP JP JP/ JP JP JPZl l l l l' l l l^KL KL KL KL KL( KL KL KL\Z8 Z8 Z8 Z8 Z8( Z8 Z8 Z8|K< K< K< K< K<) K< K< K<^^I ^I ^I ^I ^I+ ^I ^I ^IFI I I I I(# I I I*+ + + + +H% + + +.> > > > >' > > >>"S "S "S "S "S/ "S "S "SJ> > > > >) > > >$%@ %@ %@ %@ %@x( %@ %@ %@PPJ PJ PJ PJ PJ 1 PJ PJ PJh zHMOOOOO r  