o
    q+WZÏ  ã                   @   s<   d dl mZ ddlmZ G dd„ deƒZG dd„ deƒZdS )	é    )ÚTestCaseé   )ÚMethodicalMachinec                   @   sÈ   e Zd Zeƒ Zejdddd„ ƒZe ¡ dd„ ƒZe ¡ dd„ ƒZe 	¡ d	d
„ ƒZ
e 	¡ dd„ ƒZe 	¡ dd„ ƒZe ¡ dd„ ƒZejZe e
eeg¡ e eeeg¡ e eeg ¡ e eeg ¡ dS )ÚSampleObjectT)Úinitialc                 C   ó   dS )zinitial stateN© ©Úselfr   r   ú:/usr/lib/python3/dist-packages/automat/_test/test_trace.pyÚbegin   ó    zSampleObject.beginc                 C   r   )zmiddle stateNr   r	   r   r   r   Úmiddle
   r   zSampleObject.middlec                 C   r   )z	end stateNr   r	   r   r   r   Úend   r   zSampleObject.endc                 C   r   ©zsample inputNr   r	   r   r   r   Úgo1   r   zSampleObject.go1c                 C   r   r   r   r	   r   r   r   Úgo2   r   zSampleObject.go2c                 C   r   r   r   r	   r   r   r   Úback   r   zSampleObject.backc                 C   r   )zsample outputNr   r	   r   r   r   Úout   r   zSampleObject.outN)Ú__name__Ú
__module__Ú__qualname__r   ÚmmÚstater   r   r   Úinputr   r   r   Úoutputr   Ú	_setTraceÚsetTraceÚuponr   r   r   r   r      s*    







r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
TraceTestsc                    sŒ   g ‰ ‡ fdd„}t ƒ }| |¡ | ¡  |  ˆ dg¡ | ¡  |  ˆ ddg¡ | d ¡ | ¡  |  ˆ ddg¡ | ¡  |  ˆ ddg¡ d S )Nc                    s   ˆ   | ||f¡ d S ©N©Úappend)Ú	old_stater   Ú	new_state©Útracesr   r   Útracer)   s   z+TraceTests.test_only_inputs.<locals>.tracer)r   r   r   )r   r   r   ©r   r   r   ÚassertEqualr   r   ©r
   r'   Úsr   r%   r   Útest_only_inputs'   s&   
ÿ
ÿ
ÿzTraceTests.test_only_inputsc                    sŽ   g ‰ ‡ fdd„}t ƒ }| |¡ | ¡  |  ˆ ddg¡ | ¡  |  ˆ g d¢¡ | d ¡ | ¡  |  ˆ g d¢¡ | ¡  |  ˆ g d¢¡ d S )Nc                    s(   ˆ  ˆˆ ˆd f¡ ‡ ‡‡‡fdd„}|S )Nc                    s   ˆ  ˆˆ ˆ| f¡ d S r    r!   )r   )r   r$   r#   r&   r   r   Útrace_outputsE   s   zITraceTests.test_inputs_and_outputs.<locals>.tracer.<locals>.trace_outputsr!   )r#   r   r$   r-   r%   )r   r$   r#   r   r'   C   s   z2TraceTests.test_inputs_and_outputs.<locals>.tracer©r   r   r   N©r   r   r   r   )r.   r/   )r   r   r   N)r   r   r   r   r(   r*   r   r%   r   Útest_inputs_and_outputsA   s   
ÿ
z"TraceTests.test_inputs_and_outputsN)r   r   r   r,   r0   r   r   r   r   r   &   s    r   N)Úunittestr   Ú_methodicalr   Úobjectr   r   r   r   r   r   Ú<module>   s    "