ó
    Î›‘h'9  ã                  ó¶  • S SK Jr  S SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
Jr  S SKJrJr  SSKJr  SS	KJr  S
SKJr  S rS rS r " S S\5      r " S S5      rS+S jr\" \" 5       (       + S5      \" \" 5       (       + S5       " S S\
5      5       5       r\ " S S\5      5       rS rS r\" \" 5       (       + S5      \" \" 5       (       + S5       " S S\
5      5       5       r \" \" 5       (       + S5      \" \" 5       (       + S5      \" \" 5       (       + S5       " S S \
5      5       5       5       r!\" \" 5       (       + S5      \" \" 5       (       + S5       " S! S"\
5      5       5       r" " S# S$\5      r# " S% S&\5      r$ " S' S(\5      r%\" \" 5       (       + S5      \" \" 5       (       + S5      \" \" 5       (       + S5       " S) S*\
5      5       5       5       r&g),é    )ÚannotationsN)Ú	dataclass)ÚProtocol)ÚTestCaseÚskipIf)ÚTypeMachineBuilderÚpep614é   )ÚMethodicalMachine)ÚTypeMachineé   )ÚisTwistedInstalledc                 ó<   •  [        S5        g! [         a     gf = f)z*
Is the graphviz Python module installed?
ÚgraphvizTF)Ú
__import__ÚImportError© ó    Ú`C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\automat/_test/test_visualize.pyÚisGraphvizModuleInstalledr      s(   € ðÜ�:Ôð øô ó Ùðús   ‚ Ž
šc                 óö   • [         R                  " 5       u  p[         R                  " U5         [        R                  " SU SS9(       + [         R                  " U 5        $ ! [         R                  " U 5        f = f)z#
Are the graphviz tools installed?
ÚdotT)ÚstdinÚshell)ÚosÚpipeÚcloseÚ
subprocessÚcall)ÚrÚws     r   ÚisGraphvizInstalledr"      sK   € ô �7Š7‹9�D€AÜ‡H‚HˆQ„KðÜ—?’? 5°¸Ñ>Ô>ä
�Š��øŒ�Š��ús   ¯A  Á A8c                 ón   ^• [        5       m " U4S jS[        5      n U " 5       nUR                  5         T$ )z?
Create a sample L{MethodicalMachine} with some sample states.
c                  óô   >• \ rS rSr Y R	                  SS9S 5       r Y R	                  5       S 5       r Y R                  5       S 5       r Y R                  5       S 5       r
\R                  \\\
/5        Srg	)
Ú#sampleMachine.<locals>.SampleObjecté/   T)Úinitialc                ó   • g)zinitial stateNr   ©Úselfs    r   ÚbeginÚ)sampleMachine.<locals>.SampleObject.begin0   ó   � r   c                ó   • g)z	end stateNr   r)   s    r   ÚendÚ'sampleMachine.<locals>.SampleObject.end4   r-   r   c                ó   • g)zsample inputNr   r)   s    r   ÚgoÚ&sampleMachine.<locals>.SampleObject.go8   r-   r   c                ó   • g)zsample outputNr   r)   s    r   ÚoutÚ'sampleMachine.<locals>.SampleObject.out<   r-   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ústater+   r/   Úinputr2   Úoutputr5   ÚuponÚ__static_attributes__)Úmms   €r   ÚSampleObjectr%   /   s‚   ø† Ù	�‰˜$ˆÐ	ñ	ó 
 ð	ñ 
�‰‹ñ	ó 
ð	ñ 
�‰‹ñ	ó 
ð	ñ 
�‰‹ñ	ó 
ð	ð 	�
‰
�2�s˜S˜E×"r   rA   )r   Úobjectr2   )rA   Úsor@   s     @r   ÚsampleMachinerD   )   s0   ø€ ô 
Ó	€B÷#”vô #ñ& 
‹€BØ‡E�E„GØ€Ir   c                  ó   • \ rS rSrSS jrSrg)ÚSampleéG   c                ó   • g ©Nr   r)   s    r   r2   Ú	Sample.goH   s   € ˜#r   r   N©ÚreturnÚNone)r7   r8   r9   r:   r2   r?   r   r   r   rF   rF   G   s   † ßr   rF   c                  ó   • \ rS rSrSrg)ÚCoreéI   r   N)r7   r8   r9   r:   r?   r   r   r   rO   rO   I   s   † ŠCr   rO   c                 ó.  • [        [        [        5      n U R                  S5      nSS jnU R                  SU5      nU R                  S5      nUR	                  [        R
                  5      R                  U5      R                  S5        UR	                  [        R
                  5      R                  U5      R                  S5        [        UR	                  [        R
                  5      R                  U5      5      SS j5       nU R                  5       $ )	z9
Create a sample L{TypeMachine} with some sample states.
r+   c                ó   • g)Né   r   )ÚprotoÚcores     r   ÚbuilditÚ"sampleTypeMachine.<locals>.builditS   s   € Ør   Údatar/   Nc                ó   • g rI   r   )ÚsamplerU   s     r   r5   ÚsampleTypeMachine.<locals>.out[   s   € Ø14r   )rT   rF   rU   rO   rL   Úint)rZ   rF   rU   rO   rL   rM   )
r   rF   rO   r;   r>   r2   ÚtoÚreturnsr	   Úbuild)Úbuilderr+   rV   rX   r/   r5   s         r   ÚsampleTypeMachinera   L   sÆ   € ô !¤¬Ó.€GØ�M‰M˜'Ó"€Eôð �=‰=˜ Ó)€DØ
�-‰-˜Ó
€CØ	‡J�JŒv�y‰yÓ×Ñ˜TÓ"×*Ñ*¨4Ô0Ø‡I�IŒf�i‰iÓ×Ñ˜CÓ ×(Ñ(¨Ô.äˆC�H‰H”V—Y‘YÓ×"Ñ" 5Ó)Ó*Û4ó +Ø4à�=‰=‹?Ðr   z!Graphviz module is not installed.zTwisted is not installed.c                  ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚElementMakerTestséa   zD
L{elementMaker} generates HTML representing the specified element.
c                ó   • SSK Jn  Xl        g )Nr
   ©ÚelementMaker)Ú
_visualizerg   )r*   rg   s     r   ÚsetUpÚElementMakerTests.setUph   s   € Ý-à(Õr   c           
     óJ   • SnU R                  XR                  SSSSS95        g)z;
L{elementMaker} orders HTML attributes lexicographically.
z<div a="1" b="2" c="3"></div>ÚdivÚ2Ú1Ú3©ÚbÚaÚcN©ÚassertEqualrg   ©r*   Úexpecteds     r   Útest_sortsAttrsÚ!ElementMakerTests.test_sortsAttrsm   s+   € ð 4ˆØ×Ñ˜×#4Ñ#4°U¸cÀSÈCÐ#4Ð#PÕQr   c           
     óJ   • SnU R                  XR                  SSSSS95        g)z‰
L{elementMaker} quotes HTML attributes according to DOT's quoting rule.

See U{http://www.graphviz.org/doc/info/lang.html}, footnote 1.
z-<div a="1" b="a \" quote" c="a string"></div>rl   z	a " quoter   za stringrp   Nrt   rv   s     r   Útest_quotesAttrsÚ"ElementMakerTests.test_quotesAttrst   s/   € ð DˆØ×ÑØ×'Ñ'¨°ÀÀZÐ'ÐPõ	
r   c                óH   • SnU R                  XR                  S5      5        g)z>
L{elementMaker} should render an element with no attributes.
z<div ></div>rl   Nrt   rv   s     r   Útest_noAttrsÚElementMakerTests.test_noAttrs   s"   € ð #ˆØ×Ñ˜×#4Ñ#4°UÓ#;Õ<r   rf   N)
r7   r8   r9   r:   Ú__doc__ri   rx   r{   r~   r?   r   r   r   rc   rc   a   s   † ñò)ò
Rò	
õ=r   rc   c                  ó8   • \ rS rSr% SrS\S'   S\S'   S\S'   S	rg
)ÚHTMLElementé‡   z2Holds an HTML element, as created by elementMaker.ÚstrÚnamezlist[HTMLElement]Úchildrenzdict[str, str]Ú
attributesr   N)r7   r8   r9   r:   r€   Ú__annotations__r?   r   r   r   r‚   r‚   ‡   s   ‡ á<à
ƒIØÓØÖr   r‚   c                ó¶   • U" U 5      (       a  U /$ [        U 5      (       a  / $ U R                   VVs/ s H  n[        X!5        H  nUPM     M     snn$ s  snnf )z_
Recursively collect all elements in an L{HTMLElement} tree that
match the optional predicate.
)ÚisLeafr†   ÚfindElements)ÚelementÚ	predicateÚchildÚresults       r   r‹   r‹   �   sd   € ñ
 �×ÑØˆyÐÜ	��‰Øˆ	ð ×%Ò%ôâ%ˆEÜ" 5×4ˆFó 	á4ñ 	Ù%òð ùó s   ²Ac                ó,   • [        U [        5      (       + $ )z*
This HTML element is actually leaf node.
)Ú
isinstancer‚   ©rŒ   s    r   rŠ   rŠ   ¡   s   € ô ˜'¤;Ó/Ô/Ð/r   c                  ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
ÚTableMakerTestsé¨   zÆ
Tests that ensure L{tableMaker} generates HTML tables usable as
labels in DOT graphs.

For more information, read the "HTML-Like Labels" section of
U{http://www.graphviz.org/doc/info/shapes.html}.
c                ó   • [        XUS9$ )N)r…   r†   r‡   )r‚   )r*   r…   r†   r‡   s       r   ÚfakeElementMakerÚ TableMakerTests.fakeElementMaker³   s   € Ü ÀJÑOÐOr   c                ór   • SSK Jn  SU l        SU l        [        R
                  " XR                  S9U l        g )Nr
   )Ú
tableMakerúinput labelzthe port)Ú_E)rh   rš   Ú
inputLabelÚportÚ	functoolsÚpartialr—   )r*   rš   s     r   ri   ÚTableMakerTests.setUp¶   s+   € Ý+à'ˆŒØˆŒ	Ü#×+Ò+¨J×;PÑ;PÑQˆ�r   c                ó¼  ^ • U 4S jn/ S/4 HÌ  nT R                  T R                  UT R                  S9nT R                  [	        UR
                  5      S5        UR
                  S   n[        X15      nT R                  [	        U5      S5        T R                  US   R                  S5        T R                  [        U[        5      T R                  /5        MÎ     g)z­
The table returned by L{tableMaker} always contains the input
symbol label in its first row, and that row contains one cell
with a port attribute set to the provided port.
c                ó‚   >• [        U 5      (       + =(       a(    U R                  R                  S5      TR                  :H  $ )Nrž   )rŠ   r‡   Úgetrž   )rŒ   r*   s    €r   ÚhasPortÚ3TableMakerTests.test_inputLabelRow.<locals>.hasPortÄ   s/   ø€ Ü˜g“Ô&×V¨7×+=Ñ+=×+AÑ+AÀ&Ó+IÈTÏYÉYÑ+VÐVr   zan output label©rž   r   r   ÚtdN)
rš   r�   rž   ÚassertGreaterÚlenr†   r‹   ru   r…   rŠ   )r*   r¥   ÚoutputLabelsÚtableÚinputLabelRowÚportCandidatess   `     r   Útest_inputLabelRowÚ"TableMakerTests.test_inputLabelRow½   s¹   ø€ õ	Wð  Ð"3Ð!4Ó5ˆLØ—O‘O D§O¡O°\ÈÏ	É	�OÐRˆEØ×Ñœs 5§>¡>Ó2°AÔ6Ø!ŸN™N¨1Ñ-ˆMä)¨%Ó9ˆNà×ÑœS Ó0°!Ô4Ø×Ñ˜^¨AÑ.×3Ñ3°TÔ:Ø×Ñœ\¨-¼Ó@À4Ç?Á?ÐBSÖTò 6r   c                óØ   • U R                  SSU R                  S9nU R                  [        UR                  5      S5        UR                  u  nU R                  SUR                  5        g)zu
L{tableMaker} does not add a colspan attribute to the input
label's cell or a second row if there no output labels.
r›   r   r§   r   ÚcolspanN)rš   rž   ru   rª   r†   ÚassertNotInr‡   )r*   r¬   r­   s      r   Útest_noOutputLabelsÚ#TableMakerTests.test_noOutputLabelsÒ   sW   € ð
 —‘ ¨r¸¿	¹	�ÐBˆØ×Ñœ˜UŸ^™^Ó,¨aÔ0Ø Ÿ>™>ÑˆØ×Ñ˜ M×$<Ñ$<Õ=r   c                óF  • U R                  U R                  SU R                  S9nU R                  [	        UR
                  5      S5        UR
                  u  p#S nU R                  [	        [        X$5      5      S5        U R                  [        U[        5      SS/5        g)	z™
L{tableMaker} adds a colspan attribute to the input label's cell
equal to the number of output labels and a second row that
contains the output labels.
)úoutput label 1úoutput label 2r§   r
   c                ó˜   • [        U 5      (       + =(       a4    U R                  S:H  =(       a    U R                  R                  S5      S:H  $ )Nr¨   r²   rm   )rŠ   r…   r‡   r¤   r’   s    r   ÚhasCorrectColspanÚ@TableMakerTests.test_withOutputLabels.<locals>.hasCorrectColspané   s@   € ä˜7“OÔ#÷ =Ø—L‘L DÑ(÷=à×&Ñ&×*Ñ*¨9Ó5¸Ñ<ðr   r   r·   r¸   N)rš   r�   rž   ru   rª   r†   r‹   rŠ   )r*   r¬   ÚinputRowÚ	outputRowrº   s        r   Útest_withOutputLabelsÚ%TableMakerTests.test_withOutputLabelsÜ   s�   € ð —‘Ø�O‰OÐAÈÏ	É	ð  ð 
ˆð 	×Ñœ˜UŸ^™^Ó,¨aÔ0Ø#Ÿn™nÑˆò	ð 	×Ñœœ\¨(ÓFÓGÈÔKØ×ÑÜ˜¤FÓ+Ð.>Ð@PÐ-Qõ	
r   )r�   rž   rš   N)r7   r8   r9   r:   r€   r—   ri   r¯   r´   r¾   r?   r   r   r   r”   r”   ¨   s#   † ñòPòRòUò*>õ
r   r”   z!Graphviz tools are not installed.c                  ó"   • \ rS rSrSrSS jrSrg)ÚIntegrationTestséö   zO
Tests which make sure Graphviz can understand the output produced by
Automat.
c                ó6  • [        5       R                  5       nSR                  U5      R                  S5      n[        R
                  " S[        R                  [        R                  S9nUR                  U5      u  pEU R                  UR                  S5        g)z(
C{graphviz} emits valid graphviz data.
Ú zutf-8r   )r   Ústdoutr   N)
rD   Ú	asDigraphÚjoinÚencoder   ÚPopenÚPIPEÚcommunicateru   Ú
returncode)r*   ÚdigraphÚtextÚpr5   Úerrs         r   Útest_validGraphvizÚ#IntegrationTests.test_validGraphvizÿ   sm   € ô  “/×+Ñ+Ó-ˆØ�w‰w�wÓ×&Ñ& wÓ/ˆÜ×Ò˜U¬*¯/©/Ä*Ç/Á/ÑRˆØ—=‘= Ó&‰ˆØ×Ñ˜Ÿ™ qÕ)r   r   NrK   )r7   r8   r9   r:   r€   rÑ   r?   r   r   r   rÁ   rÁ   ö   s   † ñ÷
*r   rÁ   c                  ó$   • \ rS rSrSrS rS rSrg)Ú
SpotChecksi
  z^
Tests to make sure that the output contains salient features of the machine
being generated.
c                óâ   • SR                  [        5       R                  5       5      nU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        g)zq
The output of L{graphviz.Digraph} should contain the names of the
states, inputs, outputs in the state machine.
rÄ   r+   r/   r2   r5   N)rÇ   rD   rÆ   ÚassertIn©r*   Úgvouts     r   Útest_containsMachineFeaturesÚ'SpotChecks.test_containsMachineFeatures  sU   € ð
 —‘œ›×1Ñ1Ó3Ó4ˆØ�‰�g˜uÔ%Ø�‰�e˜UÔ#Ø�‰�d˜EÔ"Ø�‰�e˜UÕ#r   c                ó  • SR                  [        5       R                  5       5      nU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        g)zq
The output of L{graphviz.Digraph} should contain the names of the states,
inputs, outputs in the state machine.
rÄ   r+   r/   r2   zdata:builditr5   N)rÇ   ra   rÆ   rÖ   r×   s     r   Ú test_containsTypeMachineFeaturesÚ+SpotChecks.test_containsTypeMachineFeatures  se   € ð
 —‘Ô)Ó+×5Ñ5Ó7Ó8ˆØ�‰�g˜uÔ%Ø�‰�e˜UÔ#Ø�‰�d˜EÔ"Ø�‰�n eÔ,Ø�‰�e˜UÕ#r   r   N)r7   r8   r9   r:   r€   rÙ   rÜ   r?   r   r   r   rÔ   rÔ   
  s   † ñò
	$õ
$r   rÔ   c                  ó$   • \ rS rSrSrS rS rSrg)ÚRecordsDigraphActionsi*  z'
Records calls made to L{FakeDigraph}.
c                ó$   • U R                  5         g rI   )Úresetr)   s    r   Ú__init__ÚRecordsDigraphActions.__init__/  s   € Ø�
‰
�r   c                ó    • / U l         / U l        g rI   ©ÚrenderCallsÚ	saveCallsr)   s    r   rá   ÚRecordsDigraphActions.reset2  s   € ØˆÔØˆ�r   rå   N)r7   r8   r9   r:   r€   râ   rá   r?   r   r   r   rß   rß   *  s   † ñòõr   rß   c                  ó*   • \ rS rSrSrS rS rS rSrg)ÚFakeDigraphi7  zN
A fake L{graphviz.Digraph}.  Instantiate it with a
L{RecordsDigraphActions}.
c                ó   • Xl         g rI   ©Ú	_recorder)r*   Úrecorders     r   râ   ÚFakeDigraph.__init__=  s   € Ø!�r   c                óN   • U R                   R                  R                  U5        g rI   )rí   ræ   Úappend©r*   Úkwargss     r   ÚrenderÚFakeDigraph.render@  s   € Ø�‰×"Ñ"×)Ñ)¨&Õ1r   c                óN   • U R                   R                  R                  U5        g rI   )rí   rç   rñ   rò   s     r   ÚsaveÚFakeDigraph.saveC  s   € Ø�‰× Ñ ×'Ñ'¨Õ/r   rì   N)	r7   r8   r9   r:   r€   râ   rô   r÷   r?   r   r   r   rê   rê   7  s   † ñò
"ò2õ0r   rê   c                  ó$   • \ rS rSrSrS rS rSrg)ÚFakeMethodicalMachineiG  zD
A fake L{MethodicalMachine}.  Instantiate it with a L{FakeDigraph}
c                ó   • Xl         g rI   ©Ú_digraph)r*   rÍ   s     r   râ   ÚFakeMethodicalMachine.__init__L  s   € Ø�r   c                ó   • U R                   $ rI   rü   r)   s    r   rÆ   ÚFakeMethodicalMachine.asDigraphO  s   € Ø�}‰}Ðr   rü   N)r7   r8   r9   r:   r€   râ   rÆ   r?   r   r   r   rú   rú   G  s   † ñò õr   rú   c                  óV   • \ rS rSrS rS rS r SS jrS rS r	S	 r
S
 rS rS rSrg)ÚVisualizeToolTestsiS  c                ó�   • [        5       U l        [        U R                  5      U l        SU l        S/U l        / U l        SU l        g )Nz	tool-testÚignoredz	fake.fqpn)rß   ÚdigraphRecorderrê   ÚfakeDigraphÚfakePrognameÚfakeSysPathÚcollectedOutputÚfakeFQPNr)   s    r   ri   ÚVisualizeToolTests.setUpW  sA   € Ü4Ó6ˆÔÜ& t×';Ñ';Ó<ˆÔà'ˆÔØ%˜;ˆÔØ!ˆÔØ#ˆ�r   c                óX   • U R                   R                  SR                  U5      5        g )NÚ )r	  rñ   rÇ   )r*   Úargss     r   ÚcollectPrintsÚ VisualizeToolTests.collectPrints`  s   € Ø×Ñ×#Ñ# C§H¡H¨T£NÕ3r   c              #  ó>   #   • U[        U R                  5      4v •  g 7frI   )rú   r  )r*   Úfqpns     r   ÚfakeFindMachinesÚ#VisualizeToolTests.fakeFindMachinesc  s   é € ØÔ)¨$×*:Ñ*:Ó;Ð;Ó;ùs   ‚Nc                óâ   • SSK Jn  U" U=(       d    U R                  U=(       d    U R                  /U=(       d    U R                  U=(       d    U R
                  U=(       d    U R                  S9$ )Nr
   )Útool)Ú	_prognameÚ_argvÚ_syspathÚ_findMachinesÚ_print)rh   r  r  r
  r  r  r  )r*   ÚprognameÚargvÚsyspathÚfindMachinesÚprintr  s          r   r  ÚVisualizeToolTests.toolf  sZ   € õ 	&áØ×3 $×"3Ñ"3Ø×)˜4Ÿ=™=˜/Ø×0 × 0Ñ 0Ø&×?¨$×*?Ñ*?Ø×.˜D×.Ñ.ñ
ð 	
r   c                óv   • U R                  U R                  /S9  U R                  U R                  S   S5        g)zi
L{tool} adds '' to sys.path to ensure
L{automat._discover.findMachines} searches the current
directory.
©r  r   rÄ   N)r  r
  ru   r  r)   s    r   Útest_checksCurrentDirectoryÚ.VisualizeToolTests.test_checksCurrentDirectorys  s3   € ð 	�	‰	˜Ÿ™�ˆ	Ñ'Ø×Ñ˜×)Ñ)¨!Ñ,¨bÕ1r   c                óÜ   • U R                  U R                  S/S9  U R                  U R                  5        U R                  U R                  S/S9  U R                  U R                  5        g)z&
Passing -q/--quiet hides all output.
z--quietr#  z-qN)r  r
  ÚassertFalser	  r)   s    r   Útest_quietHidesOutputÚ(VisualizeToolTests.test_quietHidesOutput|  sZ   € ð 	�	‰	˜Ÿ™ yÐ1ˆ	Ñ2Ø×Ñ˜×-Ñ-Ô.Ø�	‰	˜Ÿ™ tÐ,ˆ	Ñ-Ø×Ñ˜×-Ñ-Õ.r   c                ó  • S GH  nU R                   R                  5         / U l        U R                  U R                  US/S9  U R                  [        S U R                   5       5      5        U R                  [        U R                   R                  5      S5        U R                   R                  u  nU R                  SR                  U R                  5      US   5        U R                  U R                   R                  5        GM	     g)	zM
Passing an empty string for --image-directory/-i disables
rendering images.
)ú--image-directoryz-irÄ   r#  c              3  ó,   #   • U  H
  nS U;   v •  M     g7f©ÚimageNr   ©Ú.0Úlines     r   Ú	<genexpr>Ú6VisualizeToolTests.test_onlySaveDot.<locals>.<genexpr>�  s   é € Ð RÒ=Q°T ¨D¦Ò=Qùó   ‚r   ú{}.dotÚfilenameN)r  rá   r	  r  r
  r'  Úanyru   rª   rç   Úformatræ   ©r*   Úargr   s      r   Útest_onlySaveDotÚ#VisualizeToolTests.test_onlySaveDot…  sÐ   € ô
 /ˆCØ× Ñ ×&Ñ&Ô(Ø#%ˆDÔ à�I‰I˜DŸM™M¨3°Ð3ˆIÑ4Ø×ÑœSÑ R¸T×=QÒ=QÓ RÓRÔSà×ÑœS ×!5Ñ!5×!?Ñ!?Ó@À!ÔDØ×*Ñ*×4Ñ4‰GˆTØ×Ñ˜XŸ_™_¨T¯]©]Ó;¸TÀ*Ñ=MÔNà×Ñ˜T×1Ñ1×=Ñ=×>ò /r   c                óF  • S GH  nU R                   R                  5         / U l        U R                  U R                  US/S9  U R                  [        S U R                   5       5      5        U R                  [        U R                   R                  5      S5        U R                   R                  u  nU R                  SR                  U R                  5      US   5        U R                  US   5        U R                  U R                   R                  5        GM     g	)
zK
Passing an empty string for --dot-directory/-d disables saving dot
files.
)ú--dot-directoryz-drÄ   r#  c              3  ó,   #   • U  H
  nS U;   v •  M     g7f©r   Nr   r/  s     r   r2  Ú8VisualizeToolTests.test_saveOnlyImage.<locals>.<genexpr>¡  s   é € Ð PÒ;O°4 ¨$¦Ò;Oùr4  r   r5  r6  ÚcleanupN)r  rá   r	  r  r
  r'  r7  ru   rª   ræ   r8  Ú
assertTruerç   r9  s      r   Útest_saveOnlyImageÚ%VisualizeToolTests.test_saveOnlyImage—  sà   € ô
 -ˆCØ× Ñ ×&Ñ&Ô(Ø#%ˆDÔ Ø�I‰I˜DŸM™M¨3°Ð3ˆIÑ4à×ÑœSÑ P¸4×;OÒ;OÓ PÓPÔQà×ÑœS ×!5Ñ!5×!AÑ!AÓBÀAÔFØ×*Ñ*×6Ñ6‰GˆTØ×Ñ˜XŸ_™_¨T¯]©]Ó;¸TÀ*Ñ=MÔNØ�O‰O˜D ™OÔ,à×Ñ˜T×1Ñ1×;Ñ;×<ò -r   c                óŒ  • SnSnU R                  U R                  SUSU/S9  U R                  [        S U R                   5       5      5        U R                  [        S U R                   5       5      5        U R                  [        U R                  R                  5      S5        U R                  R                  u  nU R                  US	   U5        U R                  US
   5        U R                  [        U R                  R                  5      S5        U R                  R                  u  nU R                  US	   U5        g)zz
Passing different directories to --image-directory and --dot-directory
writes images and dot files to those directories.
r.  r   r+  r>  r#  c              3  ó,   #   • U  H
  nS U;   v •  M     g7fr-  r   r/  s     r   r2  ÚQVisualizeToolTests.test_saveDotAndImagesInDifferentDirectories.<locals>.<genexpr>»  s   é € ÐMÒ8L°˜G tžOÒ8Lùr4  c              3  ó,   #   • U  H
  nS U;   v •  M     g7fr@  r   r/  s     r   r2  rH  ¼  s   é € ÐKÒ6J¨d˜E TžMÒ6Jùr4  r   Ú	directoryrB  N)
r  r
  rC  r7  r	  ru   rª   r  ræ   rç   )r*   ÚimageDirectoryÚdotDirectoryÚ
renderCallÚsaveCalls        r   Ú+test_saveDotAndImagesInDifferentDirectoriesÚ>VisualizeToolTests.test_saveDotAndImagesInDifferentDirectoriesª  s  € ð
 !ˆØˆØ�	‰	à—‘Ø#ØØ!Øðð 	ñ 	
ð 	�‰œÑM¸×8LÒ8LÓMÓMÔNØ�‰œÑK°d×6JÒ6JÓKÓKÔLà×Ñœ˜T×1Ñ1×=Ñ=Ó>ÀÔBØ×,Ñ,×8Ñ8‰ˆØ×Ñ˜ KÑ0°.ÔAØ�‰˜
 9Ñ-Ô.à×Ñœ˜T×1Ñ1×;Ñ;Ó<¸aÔ@Ø×*Ñ*×4Ñ4‰ˆØ×Ñ˜ +Ñ.°Õ=r   c                óÖ  • SnU R                  U R                  SUSU/S9  U R                  [        S U R                   5       5      5        U R                  [        U R                  R                  5      S5        U R                  R                  u  nU R                  US   U5        U R                  US   5        U R                  [        U R                  R                  5      5        g	)
zx
Passing the same directory to --image-directory and --dot-directory
writes images and dot files to that one directory.
ÚimagesAndDotr+  r>  r#  c              3  ó,   #   • U  H
  nS U;   v •  M     g7f)zimage and dotNr   r/  s     r   r2  ÚJVisualizeToolTests.test_saveDotAndImagesInSameDirectory.<locals>.<genexpr>×  s   é € ÐUÒ@T¸˜O¨tÖ3Ò@Tùr4  r   rJ  rB  N)r  r
  rC  r7  r	  ru   rª   r  ræ   r'  rç   )r*   rJ  rM  s      r   Ú$test_saveDotAndImagesInSameDirectoryÚ7VisualizeToolTests.test_saveDotAndImagesInSameDirectoryÇ  sÌ   € ð
 #ˆ	Ø�	‰	à—‘Ø#ØØ!Øðð 	ñ 	
ð 	�‰œÑUÀ×@TÒ@TÓUÓUÔVà×Ñœ˜T×1Ñ1×=Ñ=Ó>ÀÔBØ×,Ñ,×8Ñ8‰ˆØ×Ñ˜ KÑ0°)Ô<Ø×Ñ˜ IÑ.Ô/à×Ñœ˜T×1Ñ1×;Ñ;Ó<Õ=r   )r	  r  r  r
  r  r  )NNNNN)r7   r8   r9   r:   ri   r  r  r  r$  r(  r;  rD  rO  rU  r?   r   r   r   r  r  S  s;   † ò$ò4ò<ð PTô
ò2ò/ò?ò$=ò&>õ:>r   r  )rL   zTypeMachine[Sample, Core])'Ú
__future__r   rŸ   r   r   Údataclassesr   Útypingr   Úunittestr   r   Úautomatr   r	   Ú_methodicalr   Ú_typedr   Útest_discoverr   r   r"   rD   rF   rO   ra   rc   rB   r‚   r‹   rŠ   r”   rÁ   rÔ   rß   rê   rú   r  r   r   r   Ú<module>r_     s  ðÝ "ã Û 	Û Ý !Ý ß %ç .å +Ý  Ý -ò	ò	òô<ˆXô ç �ôñ* Ñ%Ó'Ô'Ð)LÓMÙÑÓ Ô Ð"=Ó>ô!=˜ó !=ó ?ó Nð!=ðH ô�&ó ó ðòò"0ñ Ñ%Ó'Ô'Ð)LÓMÙÑÓ Ô Ð"=Ó>ôI
�hó I
ó ?ó NðI
ñX Ñ%Ó'Ô'Ð)LÓMÙÑÓ!Ô!Ð#FÓGÙÑÓ Ô Ð"=Ó>ô*�xó *ó ?ó Hó Nð*ñ" Ñ%Ó'Ô'Ð)LÓMÙÑÓ Ô Ð"=Ó>ô$�ó $ó ?ó Nð$ô<
˜Fô 
ô0�&ô 0ô 	˜Fô 	ñ Ñ%Ó'Ô'Ð)LÓMÙÑÓ!Ô!Ð#FÓGÙÑÓ Ô Ð"=Ó>ôH>˜ó H>ó ?ó Hó NñH>r   