
    $i                     n    d Z ddlZddlmc mZ ddlZddlm	Z	m
Z
mZmZ d Zd Zd Zd Zd Zd	 Zd
 ZdS )u   数据模型测试。    N)SessionModePtyStateSessionStateMessageContextc                     t           j        } | j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |           t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    dx} x}x}}t           j        } | j        }d	}||k    }|st          j        d|fd
||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |           t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    dx} x}x}}dS )u   测试会话模式枚举。nl==)zS%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.NATURAL_LANGUAGE
}.value
} == %(py7)sr   py0py2py4py7assert %(py9)spy9Ninteractive)zN%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.INTERACTIVE
}.value
} == %(py7)s)r   NATURAL_LANGUAGEvalue
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationINTERACTIVE@py_assert1@py_assert3@py_assert6@py_assert5@py_format8@py_format10s         +/root/projects/qq-shell/tests/test_state.pytest_session_mode_enumr&      s   '5'-55-5555555555-555555555555;55555;555555'5555-555555555555555555555555555555555"9"(9M9(M9999999999(M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9M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    c                  f   t           j        } | j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |           t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    dx} x}x}}t           j        } | j        }d	}||k    }|st          j        d|fd
||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |           t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    dx} x}x}}t           j        } | j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |           t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    dx} x}x}}t           j        } | j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        t                     rt          j        t                     ndt          j        |           t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    dx} x}x}}dS )u   测试 PTY 状态枚举。idler	   )zG%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.IDLE
}.value
} == %(py7)sr   r   r   r   Nrunning)zJ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.RUNNING
}.value
} == %(py7)sblocked)zJ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.BLOCKED
}.value
} == %(py7)sunknown)zJ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.UNKNOWN
}.value
} == %(py7)s)r   IDLEr   r   r   r   r   r   r   r   r   RUNNINGBLOCKEDUNKNOWNr   s         r%   test_pty_state_enumr1      s   =(=(&(&((((((((((&((((((((((((8(((((8((((((=((((((((&(((((((((((((((((((((((((((((.!.Y.!Y..........!Y............8.....8..........!....Y..............................!.Y.!Y..........!Y............8.....8..........!....Y..............................!.Y.!Y..........!Y............8.....8..........!....Y...............................r'   c                  l   t          dddddi          } | j        }d}||k    }|st          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
        }t          j        }||k    }|st          j        d|fd||f          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          dt	          j                    v st          j        t                    rt          j        t                    ndt          j        |          dz  }dd|iz  }t          t          j	        |                    dx}x}}| j        }d}||k    }|st          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         }	d}|	|k    }
|
slt          j        d|
fd|	|f          t          j        |	          t          j        |          dz  }dd|iz  }t          t          j	        |                    dx}	x}
}dS )u   测试会话状态创建。butler_test123test123z
/home/userHOME)
session_iduser_idpwdenvr	   )z2%(py2)s
{%(py2)s = %(py0)s.session_id
} == %(py5)sstater   r   py5assert %(py7)sr   NzR%(py2)s
{%(py2)s = %(py0)s.mode
} == %(py6)s
{%(py6)s = %(py4)s.NATURAL_LANGUAGE
}r   r   r   r   py6assert %(py8)spy8)z+%(py2)s
{%(py2)s = %(py0)s.pwd
} == %(py5)s)z%(py1)s == %(py4)s)py1r   assert %(py6)sr@   )r   r6   r   r   r   r   r   r   r   r   moder   r   r8   r9   )r:   r   @py_assert4r    @py_format6r#   r"   @py_format7@py_format9@py_assert0@py_assert2@py_format5s               r%   test_session_state_creationrM      s   #\"	  E ///////////////////////////5/////5//////////////////////////////////////:555:55555555555:55555555555555555555555555:555555555555555555555555555555555555555555555555559$$9$$$$$$$$$$9$$$$$$$$$$$$5$$$$$5$$$$$$9$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9V,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,r'   c                  N   t          dd          } | j        }t          j        }||k    }|st	          j        d|fd||f          dt          j                    v st	          j        |           rt	          j	        |           ndt	          j	        |          dt          j                    v st	          j        t                    rt	          j	        t                    ndt	          j	        |          dz  }dd	|iz  }t          t	          j        |                    d
x}x}}d
S )u*   测试默认模式为自然语言模式。testr6   r7   r	   r>   r:   r   r?   rA   rB   N)r   rE   r   r   r   r   r   r   r   r   r   r   )r:   r   r"   r    rH   rI   s         r%   test_session_state_default_moderQ   #   s7   FF;;;E:555:55555555555:55555555555555555555555555:5555555555555555555555555555555555555555555555555555r'   c                  .   t          dd          } | j        }|                                  | j        }||k    }|st          j        d|fd||f          dt          j                    v st          j        |           rt          j        |           nd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}}d
S )u"   测试 touch 方法更新时间。rO   rP   )>=)z6%(py2)s
{%(py2)s = %(py0)s.last_active_at
} >= %(py4)sr:   old_time)r   r   r   rD   r@   N)r   last_active_attouchr   r   r   r   r   r   r   r   )r:   rT   r   r    rL   rH   s         r%   test_session_state_touchrW   )   s1   FF;;;E#H	KKMMM+8++++++++++8++++++++++++5+++++5+++++++++++++++++8+++++8+++++++++++++++++++++++++++++r'   c                     t          ddd          } | j        }d}||k    }|st          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 }|st          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 }|st          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 )u   测试消息上下文创建。msg123user123zls -la)
message_idr7   contentr	   )z2%(py2)s
{%(py2)s = %(py0)s.message_id
} == %(py5)sctxr;   r=   r   NFisz2%(py2)s
{%(py2)s = %(py0)s.is_command
} is %(py5)s)z9%(py2)s
{%(py2)s = %(py0)s.requires_approval
} is %(py5)s)r   r[   r   r   r   r   r   r   r   r   
is_commandrequires_approvalr]   r   rF   r    rG   r#   s         r%   test_message_context_creationrd   1   s   
  C
 >%X%>X%%%%%%%%%%>X%%%%%%%%%%%%3%%%%%3%%%%%%>%%%%X%%%%%%%%%%%%%%%%%%%%%%%%%%%>"U">U"""""""""">U""""""""""""3"""""3"""""">""""U""""""""""""""""""""""""""" )E) E)))))))))) E))))))))))))3)))))3)))))) ))))E)))))))))))))))))))))))))))))r'   c                     t          dddd          } | j        }d}||u }|st          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 )u   测试命令检测。rY   rZ   z/log recentT)r[   r7   r\   ra   r^   r`   r]   r;   r=   r   N)
r   ra   r   r   r   r   r   r   r   r   rc   s         r%   &test_message_context_command_detectionrf   =   s   
	  C >!T!>T!!!!!!!!!!>T!!!!!!!!!!!!3!!!!!3!!!!!!>!!!!T!!!!!!!!!!!!!!!!!!!!!!!!!!!!!r'   )__doc__builtinsr   _pytest.assertion.rewrite	assertionrewriter   pytestbutler.session.stater   r   r   r   r&   r1   rM   rQ   rW   rd   rf    r'   r%   <module>ro      s                    T T T T T T T T T T T T: : :/ / /- - -6 6 6, , ,	* 	* 	*" " " " "r'   