§
    ;�ªj:  ã                   ód   — d Z ddlZddlmc mZ ddlmZm	Z	 ddl
Z
ddlmZmZ d„ Zd„ Zd„ Zd„ ZdS )	u§  AutoPOE2 - Unit Tests for StashMemoryReader (Doc 63 / SSoT 2026).

Kiá»ƒm thá»­ bá»™ nhá»› Ä‘á»‡m RAM vÃ  kháº£ nÄƒng Ä‘á»“ng bá»™ Hybrid cá»§a Stash & Inventory:
- Khá»Ÿi táº¡o bá»™ nhá»› Ä‘á»‡m 60 Ã´ tÃºi Ä‘á»“.
- Cáº­p nháº­t vÃ  truy xuáº¥t tráº¡ng thÃ¡i Ã´ Ä‘á»“ O(1).
- Ä�á»“ng bá»™ hai chiá»�u vá»›i ma tráº­n quang há»�c (Optical Matrix).
- Kiá»ƒm tra cÆ¡ cháº¿ an toÃ n Fail-Soft khi khÃ´ng thá»ƒ káº¿t ná»‘i PID.
é    N)Ú	MagicMockÚpatch)ÚStashMemoryReaderÚSlotMemoryDatac            	      ó  — t          ¦   «         } | j        }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        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}x}}| j        } |¦   «         }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j
        |	¦  «        ¦  «        ‚d	x}x}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œz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}
x}x}}|                      d
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
}|
|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        }
|
 }|sxddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d	x}
}d	S )uG   Kiá»ƒm tra khá»Ÿi táº¡o 60 Ã´ tÃºi Ä‘á»“ máº·c Ä‘á»‹nh trong RAM Cache.é<   ©ú==)zL%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s._cache
})
} == %(py8)sÚlenÚreader)Úpy0Úpy1Úpy3Úpy5Úpy8zassert %(py10)sÚpy10Nr   )zt%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.get_all_occupied_slots
}()
})
} == %(py10)s)r   r   r   r   Úpy7r   zassert %(py12)sÚpy12©zR%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.get_waystones_count
}()
} == %(py7)s©r   Úpy2Úpy4r   úassert %(py9)sÚpy9)z+%(py2)s
{%(py2)s = %(py0)s.col
} == %(py5)sÚslot_0_0©r   r   r   úassert %(py7)sr   )z+%(py2)s
{%(py2)s = %(py0)s.row
} == %(py5)sz3assert not %(py2)s
{%(py2)s = %(py0)s.is_occupied
})r   r   )r   Ú_cacher   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚget_all_occupied_slotsÚget_waystones_countÚget_slot_dataÚcolÚrowÚis_occupied)r   Ú@py_assert2Ú@py_assert4Ú@py_assert7Ú@py_assert6Ú@py_format9Ú@py_format11Ú@py_assert9Ú@py_assert8Ú@py_format13Ú@py_assert1Ú@py_assert3Ú@py_assert5Ú@py_format8Ú@py_format10r   Ú@py_format6Ú@py_format4s                     ú6C:\Projects\AutoPOE2\tests\test_stash_memory_reader.pyÚ#test_stash_memory_reader_cache_initr>      s  € åÑ Ô €FØŒ}Ð#�3ˆ}ÑÔÐ# Ð#Ð Ò#Ð#Ð#Ñ#Õ#Ô#Ð#Ð#Ð#Ð#Ð Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�3Ñ#Ô#Ð#Õ#Ô#�3Ñ#Ô#Ð#Ð#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆvÑ#Ô#Ð#Õ#Ô#ˆvÑ#Ô#Ð#Ð#Õ#Ô#ˆ}Ñ#Ô#Õ#Ô#ÐÑ#Ô#Õ#Ô# Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ð Ô,Ð4Ð,Ð,Ñ.Ô.Ð4�3Ð.Ñ/Ô/Ð4°1Ð4Ð/°1Ò4Ð4Ð4Ñ4Õ4Ô4Ð4Ð4Ð4Ð4Ð/°1Ð4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4�3Ñ4Ô4Ð4Õ4Ô4�3Ñ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°1Ñ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ØÔ%Ð,Ð%Ð%Ñ'Ô'Ð,¨1Ð,Ð'¨1Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð'¨1Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆ6Ñ,Ô,Ð,Õ,Ô,ˆ6Ñ,Ô,Ð,Ð,Õ,Ô,Ð%Ñ,Ô,Õ,Ô,Ð'Ñ,Ô,Õ,Ô,¨1Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð ×#Ò# A qÑ)Ô)€HØŒ<Ð˜1Ðˆ<˜1ÒÐÐÐÕÔÐÐÐÐˆ<˜1ÐÑÔÐÕÔÑÔÐÐÕÔˆ8ÑÔÐÕÔˆ8ÑÔÐÐÕÔˆ<ÑÔÕÔ˜1ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØŒ<Ð˜1Ðˆ<˜1ÒÐÐÐÕÔÐÐÐÐˆ<˜1ÐÑÔÐÕÔÑÔÐÐÕÔˆ8ÑÔÐÕÔˆ8ÑÔÐÐÕÔˆ<ÑÔÕÔ˜1ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØÔ#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆxÑ#Ô#Ð#Õ#Ô#ˆxÑ#Ô#Ð#Ð#Õ#Ô#Ð#Ñ#Ô#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ó    c                  óL  — t          ¦   «         } |                      dddddd¬¦  «        }|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}}|                      ddd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}}	| 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œz  }dd |iz  }t          t          j
        |¦  «        ¦  «        ‚dx}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}}	g }|d         }|j        }d}||k    }|}|r|d         }|j        }d}||k    }|}|�s(t          j        d|fd"||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d#œz  }d$d%|iz  }|                     |¦  «         |rst          j        d|fd&||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d'œz  }d(d)|iz  }|                     |¦  «         t          j        |d¦  «        i z  }d*d+|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}x}x}x}x}x}x}x}}dS ),uQ   Kiá»ƒm tra cáº­p nháº­t vÃ  truy xuáº¥t dá»¯ liá»‡u váº­t pháº©m trong RAM Cache.r   TzWaystone (Tier 16)ÚWAYSTONEé   )r*   r+   r,   Ú	item_nameÚcategoryÚtier©Úis)z3%(py2)s
{%(py2)s = %(py0)s.is_occupied
} is %(py5)sÚslot_wsr   r   r   Nr	   )z1%(py2)s
{%(py2)s = %(py0)s.item_name
} == %(py5)s)z,%(py2)s
{%(py2)s = %(py0)s.tier
} == %(py5)sé   z	Chaos OrbÚCURRENCY)r*   r+   r,   rC   rD   é   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   Úoccupied)r   r   r   Úpy6zassert %(py8)sr   r   r   r   r   r   Úws_slots)z+%(py5)s
{%(py5)s = %(py3)s.col
} == %(py8)s)r   r   r   z%(py10)sr   )z/%(py15)s
{%(py15)s = %(py13)s.row
} == %(py18)s)Úpy13Úpy15Úpy18z%(py20)sÚpy20zassert %(py23)sÚpy23)r   Úupdate_slotr,   r   r    r!   r"   r#   r$   r%   r&   rC   rE   r'   r   r(   Úget_waystone_slotsr*   r+   ÚappendÚ_format_boolop)r   rH   r6   r.   r7   r;   r9   rL   r-   r8   Ú@py_format7r1   r0   r:   rN   r/   Ú@py_assert0Ú@py_assert12Ú@py_assert14Ú@py_assert17Ú@py_assert16r2   Ú@py_format19Ú@py_format21Ú@py_format22Ú@py_format24s                             r=   Ú$test_stash_memory_reader_update_slotrb   #   sQ  € åÑ Ô €Fð × Ò ØØØØ&ØØð !ñ ô €Gð ÔÐ& $Ð&Ð $Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð $Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ7Ñ&Ô&Ð&Õ&Ô&ˆ7Ñ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔÐ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ˆ7Ñ4Ô4Ð4Õ4Ô4ˆ7Ñ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Ð4ØŒ<Ð˜2Ðˆ<˜2ÒÐÐÐÕÔÐÐÐÐˆ<˜2ÐÑÔÐÕÔÑÔÐÐÕÔˆ7ÑÔÐÕÔˆ7ÑÔÐÐÕÔˆ<ÑÔÕÔ˜2ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐð ×ÒØØØØØð ñ ô ð ð ×,Ò,Ñ.Ô.€HÝˆx‰=Œ=Ð˜AÐˆ=˜AÒÐÐÐÕÔÐÐÐÐˆ=˜AÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔˆ=ÑÔÕÔ˜AÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØÔ%Ð,Ð%Ð%Ñ'Ô'Ð,¨1Ð,Ð'¨1Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð'¨1Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆ6Ñ,Ô,Ð,Õ,Ô,ˆ6Ñ,Ô,Ð,Ð,Õ,Ô,Ð%Ñ,Ô,Õ,Ô,Ð'Ñ,Ô,Õ,Ô,¨1Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,à×(Ò(Ñ*Ô*€HÝˆx‰=Œ=Ð˜AÐˆ=˜AÒÐÐÐÕÔÐÐÐÐˆ=˜AÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔˆ=ÑÔÕÔ˜AÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ8Ð8ˆ8�AŒ;Ð8ˆ;Œ?Ð8˜aÐ8ˆ?˜aÒÐ8Ð8Ð8Ð8Ð8 H¨Q¤KÐ8 K¤OÐ8°qÐ8 O°qÒ$8Ð8Ð8Ð8Ð8Ñ8Õ8Ô8Ð8Ð8Ð8Ð8ˆ?˜aÐ8Ñ8Ô8Õ8Ô8ˆ;Ñ8Ô8Õ8Ô8ˆ?Ñ8Ô8Õ8Ô8˜aÑ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8×8Ò8Ð8Ñ8Ô8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8 O°qÐ8Ñ8Ô8Õ8Ô8 KÑ8Ô8Õ8Ô8 OÑ8Ô8Õ8Ô8°qÑ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8×8Ò8Ð8Ñ8Ô8Ð8Õ8Ô8Ð8Ð8Ñ8Ô8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r?   c            
      ór  — t          ¦   «         } |                      dddd¬¦  «         t          ddd¬¦  «        }t          ddd¬¦  «        }|                      ||g¦  «         | j        }d}d} |||¦  «        }|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        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}x}x}x}	}| j        }d}d} |||¦  «        }|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        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}x}x}x}	}dS )uH   Kiá»ƒm tra Ä‘á»“ng bá»™ hai chiá»�u vá»›i káº¿t quáº£ quÃ©t quang há»�c.r   TÚWaystone)r*   r+   r,   rC   F)r*   r+   r,   rK   rF   )z€%(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.get_slot_data
}(%(py4)s, %(py6)s)
}.is_occupied
} is %(py13)sr   )r   r   r   rM   r   r   rO   zassert %(py15)srP   N)r   rT   r   Úsync_with_optical_matrixr)   r,   r   r    r!   r"   r#   r$   r%   r&   )r   Úmock_slot_0Úmock_slot_2r6   r7   r8   r/   r3   rZ   Ú@py_assert11Ú@py_format14Ú@py_format16s               r=   Ú*test_stash_memory_reader_sync_with_opticalrk   G   s+  € åÑ Ô €Fð ×Ò˜1 !°ÀÐÑLÔLÐLõ   q°eÐ<Ñ<Ô<€KÝ  q°dÐ;Ñ;Ô;€Kà
×#Ò# [°+Ð$>Ñ?Ô?Ð?ð ÔÐ: Ð: 1Ð:ÐÐ  1Ñ%Ô%Ð:Ð%Ô1Ð:°UÐ:Ð1°UÐ:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð1°UÐ:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆ6Ñ:Ô:Ð:Õ:Ô:ˆ6Ñ:Ô:Ð:Ð:Õ:Ô:ÐÑ:Ô:Õ:Ô: Ñ:Ô:Õ:Ô: 1Ñ:Ô:Õ:Ô:Ð%Ñ:Ô:Õ:Ô:Ð1Ñ:Ô:Õ:Ô:°UÑ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ð ÔÐ9 Ð9 1Ð9ÐÐ  1Ñ%Ô%Ð9Ð%Ô1Ð9°TÐ9Ð1°TÐ9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð1°TÐ9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆ6Ñ9Ô9Ð9Õ9Ô9ˆ6Ñ9Ô9Ð9Ð9Õ9Ô9ÐÑ9Ô9Õ9Ô9 Ñ9Ô9Õ9Ô9 1Ñ9Ô9Õ9Ô9Ð%Ñ9Ô9Õ9Ô9Ð1Ñ9Ô9Õ9Ô9°TÑ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9r?   c                  óV  — t          d¬¦  «        } | 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}x}}|  	                    dd¦  «        }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}}|                      d¦  «        }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}}dS )uL   Kiá»ƒm tra cÆ¡ cháº¿ an toÃ n Fail-Soft khi khÃ´ng thá»ƒ má»Ÿ tiáº¿n trÃ¬nh.i?B )ÚpidzJassert not %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.is_attached
}()
}r   )r   r   r   Nl        é   rF   )z%(py0)s is %(py3)sÚval)r   r   zassert %(py5)sr   Úval_u32)r   Úis_attachedr!   r"   r   r#   r$   r%   r&   Úread_memoryr    Úread_u32)	r   r6   r7   r8   r;   ro   r-   r<   rp   s	            r=   Ú"test_stash_memory_reader_fail_softrt   [   s}  € å 6Ð*Ñ*Ô*€FØÔ!Ð#Ð!Ð!Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆvÑ#Ô#Ð#Õ#Ô#ˆvÑ#Ô#Ð#Ð#Õ#Ô#Ð!Ñ#Ô#Õ#Ô#Ð#Ñ#Ô#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ð ×
Ò
˜[¨!Ñ
,Ô
,€CØÐˆ3�$ˆ;ÐÐÐÕÔÐÐÐÐˆ3�$ÐÑÔÐÕÔÑÔÐÐÕÔˆ3ÑÔÐÕÔˆ3ÑÔÐÐÕÔ�$ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐà�oŠo˜kÑ*Ô*€GØÐˆ7�dˆ?ÐÐÐÕÔÐÐÐÐˆ7�dÐÑÔÐÕÔÑÔÐÐÕÔˆ7ÑÔÐÕÔˆ7ÑÔÐÐÕÔ�dÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr?   )Ú__doc__Úbuiltinsr!   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   Úunittest.mockr   r   ÚpytestÚ,src.assistant_tool.stash.stash_memory_readerr   r   r>   rb   rk   rt   © r?   r=   ú<module>r~      s¼   ððð ð € € € € € € € € € € € € Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø €€€ðð ð ð ð ð ð ð ð$ð $ð $ð !9ð !9ð !9ðH:ð :ð :ð(
ð 
ð 
ð 
ð 
r?   