
    Ii                         S r SSKrSSKJs  Jr  SSKrSSKJ	r	  SSK
Jr  SSKJrJrJrJr  SSKJr  \	 " S S	5      5       r " S
 S\5      rg)z1Test user implementation for unit and play tests.    N)	dataclass)Any   )UserMenuItemEscapeBehaviorgenerate_uuid)UserPreferencesc                   8    \ rS rSr% Sr\\S'   \\\4   \S'   Sr	g)Message   z&A captured message from the test user.typedata N)
__name__
__module____qualname____firstlineno____doc__str__annotations__dictr   __static_attributes__r       :C:\Users\dbart\PlayPalace11\server\core\users\test_user.pyr   r      s    0
I
sCx.r   r   c                      \ rS rSrSr SES\S\S\S-  S\4S	 jjr\S
\4S j5       r	\S
\4S j5       r
\S
\4S j5       r\S
\4S j5       r\S
\4S j5       r\S
\4S j5       rS\S
S4S jr\S
\4S j5       rS\S
S4S jrS
\4S jrSFS\S\S
S4S jjrSGS\S\S\S\S
S4
S jjrSHS\S\S
S4S  jjrSIS! jrSJS"\S#\S$\S
S4S% jjrSIS& jrS\R8                  SS'S(S'S).S*\S+\\\-     S,\S-\S.\S-  S/\S0\S1\S
S4S2 jjr   SKS*\S+\\\-     S.\S-  S3\S-  S1\S
S4S4 jjr S*\S
S4S5 jr! SLS'S'S6.S7\S8\S9\S:\S;\S
S4S< jjjr"S7\S
S4S= jr#SIS> jr$S
\\   4S? jr%S
\S-  4S@ jr&S
\\   4SA jr'S*\S
\\\-     S-  4SB jr(SISC jr)SDr*g)MMockUser   z
Mock implementation of User that captures all messages for assertion.

Used in unit tests and play tests to verify game behavior.
NTusernamelocaleuuidapprovedc                     U=(       d
    [        5       U l        Xl        X l        X@l        [
        R
                  " 5       U l        SU l        SU l        [        5       U l
        / U l        0 U l        0 U l        g)z!Initialize a mock user for tests. N)r	   _uuid	_username_locale	_approvedtime_connected_at_client_type	_platformr
   _preferencesmessagesmenus	editboxes)selfr   r    r!   r"   s        r   __init__MockUser.__init__   s^     ,]_
!!$(IIK!# -<->')02
46r   returnc                     U R                   $ )zReturn the mock user's UUID.)r%   r1   s    r   r!   MockUser.uuid*   s     zzr   c                     U R                   $ )zReturn the mock user's name.)r&   r6   s    r   r   MockUser.username/        ~~r   c                     U R                   $ )zReturn the mock user's locale.)r'   r6   s    r   r    MockUser.locale4   s     ||r   c                     U R                   $ )z)Return whether the mock user is approved.)r(   r6   s    r   r"   MockUser.approved9   r:   r   c                     U R                   $ )z#Return the mock user's preferences.)r-   r6   s    r   preferencesMockUser.preferences>           r   c                     U R                   $ )z#Return the mock user's client type.r+   r6   s    r   client_typeMockUser.client_typeC   rB   r   rE   c                     Xl         g)z Set the mock user's client type.NrD   )r1   rE   s     r   set_client_typeMockUser.set_client_typeH   s    'r   c                     U R                   $ )z'Return the mock user's platform string.r,   r6   s    r   platformMockUser.platformL   r:   r   rL   c                     Xl         g)z$Set the mock user's platform string.NrK   )r1   rL   s     r   set_platformMockUser.set_platformQ   s    !r   c                     [         R                   " 5       U R                  -
  n[        US-  5      n[        US-  5      n[        US-  5      nUS:  a  [        US5       S3$ US:  a  U S3$ US-  nU SU S3$ )	z-Format the time this user has been connected.<   i  iQ r   m   hzd )r)   r*   intmax)r1   elapsedminuteshoursdaysremaining_hourss         r   format_time_onlineMockUser.format_time_onlineU   s    ))+ 2 22gm$GtO$7e#$19'1o&a((2:WA;"*r/*!,,r   textbufferc                 R    U R                   R                  [        SXS.5      5        g)zRecord a speech event.speak)r_   r`   Nr.   appendr   )r1   r_   r`   s      r   rb   MockUser.speakb   s    WWt.NOPr   namevolumepanpitchc           
      T    U R                   R                  [        SXX4S.5      5        g)zRecord a sound playback event.
play_sound)rf   rg   rh   ri   Nrc   )r1   rf   rg   rh   ri   s        r   rk   MockUser.play_soundf   s'    L	
r   loopingc                 R    U R                   R                  [        SXS.5      5        g)zRecord a music playback event.
play_music)rf   rm   Nrc   )r1   rf   rm   s      r   ro   MockUser.play_musico   s    W\D3UVWr   c                 N    U R                   R                  [        S0 5      5        g)zRecord a music stop event.
stop_musicNrc   r6   s    r   rr   MockUser.stop_musics   s    W\267r   loopintrooutroc           	      T    U R                   R                  [        SXUS.5      5        g)z"Record an ambience playback event.play_ambience)rt   ru   rv   Nrc   )r1   rt   ru   rv   s       r   rx   MockUser.play_ambiencew   s#    OdU%ST	
r   c                 N    U R                   R                  [        S0 5      5        g)zRecord an ambience stop event.stop_ambienceNrc   r6   s    r   r{   MockUser.stop_ambience}   s    W_b9:r   Fr   )multiletterescape_behaviorpositiongrid_enabled
grid_widthplay_selection_soundmenu_iditemsr}   r~   r   r   r   r   c                    UUUUUUS.n	XR                   U'   U R                  R                  [        SSU0U	E5      5        g)z&Record menu display state and message.)r   r}   r~   r   r   r   	show_menur   Nr/   r.   rd   r   )
r1   r   r   r}   r~   r   r   r   r   	menu_datas
             r   r   MockUser.show_menu   sN     &. ($
	 (

7W[9g2S2STUr   selection_idc           
          XR                   ;   a%  X R                   U   S'   Ub  X0R                   U   S'   U R                  R                  [        SUUUUS.5      5        g)z%Record menu update state and message.r   Nr   update_menu)r   r   r   r   r   )r1   r   r   r   r   r   s         r   r   MockUser.update_menu   sd     jj +0JJw(#2:

7#J/&" ($0	
	
r   c                     U R                   R                  US5        U R                  R                  [	        SSU05      5        g)z&Record menu removal state and message.Nremove_menur   )r/   popr.   rd   r   r1   r   s     r   r   MockUser.remove_menu   s2    

w%W]Y4HIJr   )	multiline	read_onlyinput_idpromptdefault_valuer   r   c                    UUUUS.nX`R                   U'   U R                  R                  [        SSU0UE5      5        g)z)Record editbox display state and message.)r   r   r   r   show_editboxr   N)r0   r.   rd   r   )r1   r   r   r   r   r   editbox_datas          r   r   MockUser.show_editbox   sH     *""	
 $0x W^j(5[l5[\]r   c                     U R                   R                  US5        U R                  R                  [	        SSU05      5        g)z)Record editbox removal state and message.Nremove_editboxr   )r0   r   r.   rd   r   )r1   r   s     r   r   MockUser.remove_editbox   s5    8T*W%5
H7MNOr   c                     U R                   R                  5         U R                  R                  5         U R                  R	                  [        S0 5      5        g)z,Clear stored UI state and record the action.clear_uiN)r/   clearr0   r.   rd   r   r6   s    r   r   MockUser.clear_ui   s;    

WZ45r   c                     U R                    Vs/ s H#  oR                  S:X  d  M  UR                  S   PM%     sn$ s  snf )zGet all spoken text messages.rb   r_   r.   r   r   r1   rS   s     r   get_spoken_messagesMockUser.get_spoken_messages   s1    (,K179JvKKK   <<c                 ~    [        U R                  5       H$  nUR                  S:X  d  M  UR                  S   s  $    g)z#Get the most recent spoken message.rb   r_   N)reversedr.   r   r   r   s     r   get_last_spokenMockUser.get_last_spoken   s4    $--(Avv vvf~% ) r   c                     U R                    Vs/ s H#  oR                  S:X  d  M  UR                  S   PM%     sn$ s  snf )z"Get all sound effect names played.rk   rf   r   r   s     r   get_sounds_playedMockUser.get_sounds_played   s1    (,P1<9OvPPPr   c                 F    XR                   ;   a  U R                   U   S   $ g)z!Get the current items for a menu.r   N)r/   r   s     r   get_current_menu_itemsMockUser.get_current_menu_items   s#    jj ::g&w//r   c                 8    U R                   R                  5         g)z5Clear the message history (but not current UI state).N)r.   r   r6   s    r   clear_messagesMockUser.clear_messages   s    r   )r(   r+   r*   r'   r,   r-   r&   r%   r0   r/   r.   )enNT)misc)d   r   r   )T)r4   N)r$   r$   )NNF)r$   )+r   r   r   r   r   r   boolr2   propertyr!   r   r    r"   r
   r@   rE   rH   rL   rO   r]   rb   rV   rk   ro   rr   rx   r{   r   KEYBINDlistr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    \`77%(77:Tz7TX7  c   #      $   !_ ! ! !S ! !(3 (4 ( #  "S "T "-C -Q# Qs Q Q
s 
C 
C 
C 
Z^ 
Xs XT XT X8
# 
c 
s 
D 
; !*8*@*@#"%*VV C(N#V
 V (V *V V V #V 
V8  $#'%*

 C(N#
 *	

 Dj
 #
 

2K3 K4 K  	^  ^^ ^ 	^ ^ ^ 
^&Ps Pt P
6LT#Y Lt Q49 Qc d3>6JT6Q r   r   )r   builtins@py_builtins_pytest.assertion.rewrite	assertionrewrite
@pytest_arr)   dataclassesr   typingr   baser   r   r   r	   r@   r
   r   r   r   r   r   <module>r      sE    7    !  ? ? (   [t [r   