§
    f‘¦jÍ  ã                   óÖ   — d Z ddlZddlmc mZ ddlZddlm	Z	 ddl
mZmZ ddlZddlmZmZmZmZmZmZ ddlmZmZ de	fd„Zde	fd	„Zde	fd
„Zde	fd„Z	 	 ddededefd„Zd„ Z d„ Z!dS )z†Unit tests for Poe2VisualTool v1.2.0 features:

- Cloud Dynamic Offsets Auto-Sync
- POI Radar Shared Memory Parser & Proximity Alarms
é    N)ÚPath)Ú	MagicMockÚpatch)ÚENTITY_SIZEÚHEADER_SIZEÚ	POI_MAGICÚPoiRadarReaderÚRadarEntityÚRadarSnapshot)ÚCloudOffsetsSyncÚ
SyncResultÚtmp_pathc                 óÐ  — | dz  }|                      dd¬¦  «         t          |¬¦  «        }|                     ¦   «         }d}||k    }|s—t          j        d|fd||f¦  «        d	t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        d
œz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}d S )Núoffsets.tomlú-version = "0.5.5-rel2"
[Camera]
zoom = 0x520
úutf-8©Úencoding©Úlocal_config_pathú
0.5.5-rel2©ú==©z%(py0)s == %(py3)sÚfp©Úpy0Úpy3úassert %(py5)sÚpy5)Ú
write_textr   Úread_local_fingerprintÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)r   Úoffsets_fileÚsyncr   Ú@py_assert2Ú@py_assert1Ú@py_format4Ú@py_format6s           ú5C:\Projects\Poe2VisualTool\tests\test_v12_features.pyÚ!test_cloud_sync_local_fingerprintr2      s  € Ø˜nÑ,€LØ×ÒÐNÐY`ÐÑaÔaÐaå¨lÐ;Ñ;Ô;€DØ	×	$Ò	$Ñ	&Ô	&€BØÐˆ2�ÒÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐó    c                 ód  — | dz  }|                      dd¬¦  «         t          |¬¦  «        }t          j        |dd¬¦  «        5  |                     ¦   «         }|j        }d	}||u }|sªt          j        d
|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|j        }d}||u }|sªt          j        d
|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   r   r   r   Úfetch_remote_offsets)Tr   Ú ©Úreturn_valueT©Úis©z/%(py2)s
{%(py2)s = %(py0)s.success
} is %(py5)sÚresult©r   Úpy2r    úassert %(py7)sÚpy7F©z/%(py2)s
{%(py2)s = %(py0)s.updated
} is %(py5)sr   r   )z5%(py2)s
{%(py2)s = %(py0)s.local_version
} == %(py5)s)r!   r   r   Úobjectr,   Úsuccessr#   r$   r%   r&   r'   r(   r)   r*   ÚupdatedÚlocal_version©	r   r+   r,   r<   r.   Ú@py_assert4Ú@py_assert3r0   Ú@py_format8s	            r1   Ú"test_cloud_sync_already_up_to_daterJ   $   se  € Ø˜nÑ,€LØ×ÒÐNÐY`ÐÑaÔaÐaå¨lÐ;Ñ;Ô;€DÝ	ŒØØØSð
ñ 
ô 
ð 4ð 4ð
 —’‘”ˆØŒ~Ð% Ð%ˆ~ Ð%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ~ Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆvÑ%Ô%Ð%Õ%Ô%ˆvÑ%Ô%Ð%Ð%Õ%Ô%ˆ~Ñ%Ô%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØŒ~Ð& Ð&ˆ~ Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ~ Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆvÑ&Ô&Ð&Õ&Ô&ˆvÑ&Ô&Ð&Ð&Õ&Ô&ˆ~Ñ&Ô&Õ&Ô& Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔ#Ð3 |Ð3Ð# |Ò3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð# |Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆvÑ3Ô3Ð3Õ3Ô3ˆvÑ3Ô3Ð3Ð3Õ3Ô3Ð#Ñ3Ô3Õ3Ô3 |Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4ð 4ð 4s   ÁIJ%Ê%J)Ê,J)c           	      óê
  — | dz  }|                      dd¬¦  «         t          |¬¦  «        }d}t          j        |dd|d	f¬
¦  «        5  |                     ¦   «         }|j        }d}||u }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}|j        }d}||u }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}|j        }d} ||¬¦  «        }
|
|k    }|sût          j        d|fd|
|f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |
¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}
}| dz  }|j        } |¦   «         }|s‹ddt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}}d}|j        }d} ||¬¦  «        }||v }|sÐt          j        d |fd!||f¦  «        t          j        |¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d"œz  }d#d$|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}d d d ¦  «         d S # 1 swxY w Y   d S )%Nr   z-version = "0.5.5-rel1"
[Camera]
zoom = 0x520
r   r   r   zDversion = "0.5.5-rel2"
[Camera]
zoom = 0x528
[Minimap]
grid = 0x120
r5   Tr6   r7   r9   r;   r<   r=   r?   r@   rA   r   r   )z6%(py2)s
{%(py2)s = %(py0)s.remote_version
} == %(py5)s)zX%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.read_text
}(encoding=%(py4)s)
} == %(py8)sr+   Úremote_content)r   r>   Úpy4Úpy6Úpy8zassert %(py10)sÚpy10zoffsets.toml.bakzAassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}Úbackup_file)r   r>   rM   z
0.5.5-rel1)Úin)zX%(py1)s in %(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.read_text
}(encoding=%(py7)s)
})Úpy1r   r    r@   Úpy9zassert %(py11)sÚpy11)r!   r   r   rB   r,   rC   r#   r$   r%   r&   r'   r(   r)   r*   rD   Úremote_versionÚ	read_textÚexists)r   r+   r,   rL   r<   r.   rG   rH   r0   rI   Ú@py_assert5Ú@py_assert7Ú@py_format9Ú@py_format11rQ   Ú@py_format5Ú@py_assert0Ú@py_assert6Ú@py_assert8r-   Ú@py_format10Ú@py_format12s                         r1   Ú*test_cloud_sync_updates_and_creates_backuprc   4   sœ  € Ø˜nÑ,€LØ×ÒÐNÐY`ÐÑaÔaÐaå¨lÐ;Ñ;Ô;€DØ`€Nå	Œ�dÐ2À$ÈÐXZÐA[Ð	\Ñ	\Ô	\ð Gð GØ—’‘”ˆØŒ~Ð% Ð%ˆ~ Ð%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ~ Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆvÑ%Ô%Ð%Õ%Ô%ˆvÑ%Ô%Ð%Ð%Õ%Ô%ˆ~Ñ%Ô%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØŒ~Ð% Ð%ˆ~ Ð%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ~ Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆvÑ%Ô%Ð%Õ%Ô%ˆvÑ%Ô%Ð%Ð%Õ%Ô%ˆ~Ñ%Ô%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØÔ$Ð4¨Ð4Ð$¨Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð$¨Ð4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆvÑ4Ô4Ð4Õ4Ô4ˆvÑ4Ô4Ð4Ð4Õ4Ô4Ð$Ñ4Ô4Õ4Ô4¨Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ð Ô%ÐI¨wÐIÐ%Ð%¨wÐ7Ñ7Ô7ÐIÐ7¸>ÒIÐIÐIÐIÕIÔIÐIÐIÐIÐIÐ7¸>ÐIÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔIˆ|ÑIÔIÐIÕIÔIˆ|ÑIÔIÐIÐIÕIÔIÐ%ÑIÔIÕIÔI¨wÑIÔIÕIÔIÐ7ÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔI¸>ÑIÔIÐIÕIÔI¸>ÑIÔIÐIÐIÐIÐIÑIÐIÐIÐIÐIÐIÑIÐIÕIÕIÔIÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIÐIÐIÐIÐIàÐ!3Ñ3ˆØÔ!Ð#Ð!Ð!Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆ{Ñ#Ô#Ð#Õ#Ô#ˆ{Ñ#Ô#Ð#Ð#Õ#Ô#Ð!Ñ#Ô#Õ#Ô#Ð#Ñ#Ô#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#ØÐF˜{Ô4ÐF¸gÐFÐ4Ð4¸gÐFÑFÔFÐFˆ|ÐFÐFÐFÐFÐFÕFÔFÐFÐFÐFÐFˆ|ÐFÐFÑFÔFÕFÔFˆ|ÑFÔFÐFÕFÔFÑFÔFÐFÐFÕFÔF˜{ÑFÔFÐFÕFÔF˜{ÑFÔFÐFÐFÕFÔFÐ4ÑFÔFÕFÔF¸gÑFÔFÕFÔFÐFÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð Gð Gs   Á	TU(Õ(U,Õ/U,c                 óâ  — | dz  }|                      dd¬¦  «         t          |¬¦  «        }t          j        |dd¬¦  «        5  |                     ¦   «         }|j        }d	}||u }|sªt          j        d
|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|j        }d	}||u }|sªt          j        d
|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d d d ¦  «         d S # 1 swxY w Y   d S )Nr   zversion = "0.5.5-rel1"
r   r   r   r5   )Tz<html>404 Not Found</html>r6   r7   Fr9   r;   r<   r=   r?   r@   rA   )r!   r   r   rB   r,   rC   r#   r$   r%   r&   r'   r(   r)   r*   rD   rF   s	            r1   Ú.test_cloud_sync_rejects_invalid_remote_payloadre   I   sƒ  € Ø˜nÑ,€LØ×ÒÐ6ÀÐÑIÔIÐIå¨lÐ;Ñ;Ô;€DÝ	ŒØÐ$Ð3[ð
ñ 
ô 
ð 'ð 'ð —’‘”ˆØŒ~Ð& Ð&ˆ~ Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ~ Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆvÑ&Ô&Ð&Õ&Ô&ˆvÑ&Ô&Ð&Ð&Õ&Ô&ˆ~Ñ&Ô&Õ&Ô& Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØŒ~Ð& Ð&ˆ~ Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ~ Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆvÑ&Ô&Ð&Õ&Ô&ˆvÑ&Ô&Ð&Ð&Õ&Ô&ˆ~Ñ&Ô&Õ&Ô& Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 's   ÁFG$Ç$G(Ç+G(é   ÚseqlockÚentities_dataÚreturnc                 óØ  — |€ddg}t          j        dt          | t          |¦  «        ddddd¦	  «	        }t	          ¦   «         }|D ]b}|\  }}}}}	}
}}}}}}|                     d	d
¦  «        d d	…         }|                     t          j        d|||||	|
||||||¦  «        ¦  «         Œcd
t          z  }|                     |dt          |¦  «        z
  z  ¦  «         |t          |¦  «        z   S )N)éÑ  é   ç      Y@g      i@ç      I@g      Ž@g     à€@rl   ó      ç     ÀR@gq=
×£pí?s   Crucible Boss   )éÒ  é   g      ^@ç     €f@rn   g     h�@ç     À‚@rl   ro   g     €F@ç      ð?s   Arcanist's Strongbox z<IIII4fr   rm   g     Àb@rn   g…ëQ¸é?é    ó    z<QI5fB3sff32sé@   )	ÚstructÚpackr   ÚlenÚ	bytearrayÚljustÚextendr   Úbytes)rg   rh   ÚheaderÚbodyÚentÚeidÚetypeÚwxÚwyÚwzÚsxÚsyÚon_scrÚpadÚdistÚhpÚ
name_bytesÚpadded_nameÚempty_entrys                      r1   Úcreate_mock_poi_state_bytesr‘   Y   s:  € ð Ðððð
ˆõ@ Œ[ØÝØÝˆMÑÔØ	ØØØØñ
ô 
€Fõ ‰;Œ;€DØð 
ð 
ˆØLOÑIˆˆU�B˜˜B  B¨°°T¸2¸zØ ×&Ò& r¨7Ñ3Ô3°C°R°CÔ8ˆØ�ŠÝŒKØØØØØØØØØØØØØñô ñ	
ô 	
ð 	
ð 	
ð& �KÑ'€KØ‡K‚K�˜r¥C¨Ñ$6Ô$6Ñ6Ñ7Ñ8Ô8Ð8à•E˜$‘K”KÑÐr3   c                  ó   — t          d¬¦  «        } t          ¦   «         }t          ¦   «         }t          ¦   «         |_        | d t          …         | t          t          t
          z   …         | t          t
          z   t          dt
          z  z   …         t          j        dd¦  «        g}||j        _	        ||_
        |                     ¦   «         }d }||u}|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }d	d
|iz  }t%          t          j        |¦  «        ¦  «        ‚d x}}|j        }d}	||	k    }
|
sªt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚d x}x}
}	|j        }d}	||	k    }
|
sªt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚d x}x}
}	|j        d         }|j        }d}	||	k    }
|
sªt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚d x}x}
}	|j        }d}	||	u }
|
sªt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚d x}x}
}	|j        }d}	||	k    }
|
sªt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚d x}x}
}	|j        }d}	||	k    }
|
sªt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚d x}x}
}	|j        d         }|j        }d}	||	k    }
|
sªt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚d x}x}
}	|j        }d}	||	u }
|
sªt          j        d|
fd ||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚d x}x}
}	|j        }d!}	||	k    }
|
sªt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚d x}x}
}	d S )"Né   )rg   rf   z<I)úis not)z%(py0)s is not %(py3)sÚsnapshotr   r   r    r   )z-%(py2)s
{%(py2)s = %(py0)s.count
} == %(py5)sr=   r?   r@   rm   )z0%(py2)s
{%(py2)s = %(py0)s.player_x
} == %(py5)sr   rk   )z*%(py2)s
{%(py2)s = %(py0)s.id
} == %(py5)sÚbossTr9   )z/%(py2)s
{%(py2)s = %(py0)s.is_boss
} is %(py5)szCrucible Boss)z,%(py2)s
{%(py2)s = %(py0)s.name
} == %(py5)srp   )z0%(py2)s
{%(py2)s = %(py0)s.distance
} == %(py5)srl   rq   Úbox)z4%(py2)s
{%(py2)s = %(py0)s.is_strongbox
} is %(py5)szArcanist's Strongbox)r‘   r	   r   Úseekr   r   ry   rz   ÚreadÚside_effectÚ_mmapÚread_snapshotr#   r$   r%   r&   r'   r(   r)   r*   ÚcountÚplayer_xÚentitiesÚidÚis_bossÚnameÚdistanceÚis_strongbox)Úraw_dataÚreaderÚ	mock_mmapÚread_chunksr•   r-   r.   r/   r0   rG   rH   rI   r–   r—   s                 r1   Ú test_radar_reader_parse_snapshotr©   §   sW	  € Ý*°1Ð5Ñ5Ô5€HåÑÔ€Få‘”€IÝ‘[”[€I„Nð 	�•+�ÔØ•�{­[Ñ8Ð8Ô9Ø•�{Ñ*­[¸1½{¹?Ñ-JÐJÔKÝŒ�D˜!ÑÔð	€Kð "-€I„NÔØ€F„Là×#Ò#Ñ%Ô%€HØÐˆ8˜4ÐÐÐÐÕÔÐÐÐÐˆ8˜4ÐÑÔÐÕÔÑÔÐÐÕÔˆ8ÑÔÐÕÔˆ8ÑÔÐÐÕÔ˜4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØŒ>Ð˜QÐˆ>˜QÒÐÐÐÕÔÐÐÐÐˆ>˜QÐÑÔÐÕÔÑÔÐÐÕÔˆ8ÑÔÐÕÔˆ8ÑÔÐÐÕÔˆ>ÑÔÕÔ˜QÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØÔÐ% Ð%Ð Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆ8Ñ%Ô%Ð%Õ%Ô%ˆ8Ñ%Ô%Ð%Ð%Õ%Ô%ÐÑ%Ô%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%àÔ˜QÔ€DØŒ7Ð�dÐˆ7�dŠ?ÐÐÐÕÔÐÐÐÐˆ7�dÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔˆ7ÑÔÕÔ�dÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØŒ<Ð˜4Ðˆ<˜4ÐÐÐÐÕÔÐÐÐÐˆ<˜4ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔˆ<ÑÔÕÔ˜4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØŒ9Ð'˜Ð'ˆ9˜Ò'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'ˆ9˜Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆ4Ñ'Ô'Ð'Õ'Ô'ˆ4Ñ'Ô'Ð'Ð'Õ'Ô'ˆ9Ñ'Ô'Õ'Ô'˜Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØŒ=Ð ˜DÐ ˆ=˜DÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ=˜DÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆ4Ñ Ô Ð Õ Ô ˆ4Ñ Ô Ð Ð Õ Ô ˆ=Ñ Ô Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð à
Ô
˜AÔ
€CØŒ6Ð�TÐˆ6�TŠ>ÐÐÐÕÔÐÐÐÐˆ6�TÐÑÔÐÕÔÑÔÐÐÕÔˆ3ÑÔÐÕÔˆ3ÑÔÐÐÕÔˆ6ÑÔÕÔ�TÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØÔÐ#˜tÐ#Ð˜tÐ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#Ð˜tÐ#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆ3Ñ#Ô#Ð#Õ#Ô#ˆ3Ñ#Ô#Ð#Ð#Õ#Ô#ÐÑ#Ô#Õ#Ô#˜tÑ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØŒ8Ð-Ð-Ð-ˆ8Ð-Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-ˆ8Ð-Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆ3Ñ-Ô-Ð-Õ-Ô-ˆ3Ñ-Ô-Ð-Ð-Õ-Ô-ˆ8Ñ-Ô-Õ-Ô-Ð-Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r3   c                  óN
  ‡— t          ¦   «         } t          ddddddddddd	¬
¦  «        t          ddddddddddd¬
¦  «        g}t          ddddd|¬¦  «        }g Šdt          fˆfd„}|                      |d|¬¦  «        }t	          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nddt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}|d         }
|
j        }d	}||k    }|st          j        d|fd||f¦  «        t          j
        |
¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}
x}x}}d	g}‰|k    }|s—t          j        d|fd ‰|f¦  «        d!t          j        ¦   «         v st          j	        ‰¦  «        rt          j
        ‰¦  «        nd!t          j
        |¦  «        d"œz  }d#d$|iz  }t          t          j        |¦  «        ¦  «        ‚d x}}‰                     ¦   «          |                      |d|¬¦  «        }t	          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndd%t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd%t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}t	          ‰¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndd!t          j        ¦   «         v st          j	        ‰¦  «        rt          j
        ‰¦  «        nd!t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}d S )&Ni¹  rl   g      $@g        g     @@Tg     @P@ru   zMap Boss)r    Úpoi_typeÚworld_xÚworld_yÚworld_zÚscreen_xÚscreen_yÚ	on_screenr£   Ú
health_pctr¢   iº  rf   g      4@rt   rn   z	Rare Bear)r�   rž   Úplayer_yÚplayer_zÚ
camera_yawrŸ   r‚   c                 ó<   •— ‰                      | j        ¦  «         d S )N)Úappendr¢   )r‚   Úalerted_targetss    €r1   Úon_alertz2test_radar_threat_alert_callback.<locals>.on_alertõ   s   ø€ Ø×Ò˜sœxÑ(Ô(Ð(Ð(Ð(r3   rs   )Údistance_thresholdÚon_new_targetr   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr{   Úthreats)r   rS   r   rN   zassert %(py8)srO   r   )z,%(py3)s
{%(py3)s = %(py1)s.name
} == %(py6)s)rS   r   rN   r   r¸   r   r   r    Úthreats2)r	   r
   r   Úcheck_high_value_threatsr{   r#   r$   r%   r&   r'   r(   r)   r*   r¢   Úclear)r¦   rŸ   r•   r¹   r¼   r-   rY   rG   Ú@py_format7r[   r^   r.   r/   r0   r½   r¸   s                  @r1   Ú test_radar_threat_alert_callbackrÁ   Ê   s  ø€ ÝÑÔ€Fõ 	ØØØØØØØØØØØð	
ñ 	
ô 	
õ 	ØØØØØØØØØØØð	
ñ 	
ô 	
ð€Hõ: ØØØØØØðñ ô €Hð €Oð)•kð )ð )ð )ð )ð )ð )ð ×-Ò-Ø U¸(ð .ñ ô €Gõ ˆw‰<Œ<Ð˜1Ðˆ<˜1ÒÐÐÐÕÔÐÐÐÐˆ<˜1ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔˆ<ÑÔÕÔ˜1ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�1Œ:Ð(ˆ:Œ?Ð(˜jÐ(ˆ?˜jÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ?˜jÐ(Ñ(Ô(Õ(Ô(ˆ:Ñ(Ô(Õ(Ô(ˆ?Ñ(Ô(Õ(Ô(˜jÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø)˜lÐ*ˆ?˜lÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*ˆ?˜lÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆ?Ñ*Ô*Ð*Õ*Ô*ˆ?Ñ*Ô*Ð*Ð*Õ*Ô*˜lÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*ð ×ÒÑÔÐØ×.Ò.Ø U¸(ð /ñ ô €Hõ ˆx‰=Œ=Ð˜AÐˆ=˜AÒÐÐÐÕÔÐÐÐÐˆ=˜AÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔˆ=ÑÔÕÔ˜AÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÝˆÑÔÐ$ 1Ð$Ð 1Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð 1Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$�3Ñ$Ô$Ð$Õ$Ô$�3Ñ$Ô$Ð$Ð$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆÑ$Ô$Ð$Õ$Ô$ˆÑ$Ô$Ð$Ð$Õ$Ô$ÐÑ$Ô$Õ$Ô$ 1Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$r3   )rf   N)"Ú__doc__Úbuiltinsr%   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter#   ry   Úpathlibr   Úunittest.mockr   r   ÚpytestÚsrc.assistant.radar_overlayr   r   r   r	   r
   r   Úsrc.commercial.cloud_syncr   r   r2   rJ   rc   re   ÚintÚlistr   r‘   r©   rÁ   © r3   r1   ú<module>rÏ      s°  ððð ð € € € € € € € € € € € € €€€€Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð CÐ BÐ BÐ BÐ BÐ BÐ BÐ Bð°ð ð ð ð ð4°ð 4ð 4ð 4ð 4ð G¸ð Gð Gð Gð Gð*
'¸Tð 
'ð 
'ð 
'ð 
'ð" ØðK ð K ØðK àðK ð ðK ð K ð K ð K ð\ .ð  .ð  .ðF<%ð <%ð <%ð <%ð <%r3   