
    &5Pj                         d dl Z d dlZd dlZd dlZd dlZ eej                  j                  dd            Zde	de	fdZ
de	de	fdZ G d	 d
ej                        Zedk(  r ej                          yy)    NFX_AGENT_PORT9810valuereturnc                     | dk(  ry| dk(  ryt        j                  | j                  d            j                  d      j	                  d      S )N* .utf-8ascii=)base64urlsafe_b64encodeencodedecoderstrip)r   s    tests/test_agent_v5_live.pytokenr      sG    |{##ELL$9:AA'JQQRUVV    commandc                    t        j                  dt        fd      5 }|j                  | dz   j	                  d             |j                  t         j                         g }	 |j                  d      }|sn|j                  |       &	 d d d        dj                        j                  d      j                         S # 1 sw Y   7xY w)Nz	127.0.0.1   )timeout
r   i   r   )socketcreate_connectionPORTsendallr   shutdownSHUT_WRrecvappendjoinr   strip)r   sockchunksblocks       r   sendr(      s    		!	!;"5q	ATgn,,W56fnn%IIe$EMM% 	   
B 88F""7+1133 
B	As   A,CC
c                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)AgentV5LiveTestsc                 P   t        j                  t        d            }| j                  |d   d       | j                  |d   d       |d   d   }| j                  |d   d	       | j	                  t        t        j                  |            d
       |d   D ch c]  }|j                  d       }}| j                  d|       t        d |d   D              }| j                  |d   d       | j                  |d   ddg       | j                  |d   d   ddg       y c c}w )NFXSTATEstatusOK
panelCount   panelsr   	rootClassjavafx.scene.layout.VBoxi N  controlsidMyFxTextFieldc              3   2   K   | ]  }|d    dk(  s|  yw)r5   AdjustmentTableN ).0ts     r   	<genexpr>zNAgentV5LiveTests.test_fxstate_returns_compact_semantic_json.<locals>.<genexpr>*   s     P11T7>O3OQs   tablesrowCount   columnsCodeAmountrows100z-59.00)
jsonloadsr(   assertEqual
assertLesslendumpsgetassertInnext)selfpayloadpanelcontrolidstables         r   *test_fxstate_returns_compact_semantic_jsonz;AgentV5LiveTests.test_fxstate_returns_compact_semantic_json!   s   **T)_-*D1.2!!${+-GHDJJw/0%805j0AB0AWw{{4 0ABos+PhPPz*A.y)FH+=>vq)E8+<= Cs   D#c                    dj                  t        d      t        d      t        d            }t        j                  t	        |            }| j                  |d   d       | j                  |d   d       |d	   d
   }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d          | j                  |d          y )NFXFIND {} 0 {} {} * 10r3   javafx.scene.control.TextFieldr6   r-   r.   countr0   matchesr   classr5   textinitial-valuevisibleeditable)formatr   rE   rF   r(   rG   
assertTrue)rN   r   rO   matchs       r   ;test_fxfind_scopes_exactly_to_panel_class_and_node_identityzLAgentV5LiveTests.test_fxfind_scopes_exactly_to_panel_class_and_node_identity/   s    *11,-23/"

 **T']+*D1)1-	"1%w)IJto6v8i()j)*r   c                 :   dj                  t        d      t        d      t        d      t        d            }t        j                  t	        |            }| j                  |d   d       | j                  |d   d	       | j                  |d
   d   d   d       y )NzFXFIND {} 0 {} {} {} 10zjavafx.scene.control.TabPanezjavafx.scene.control.Tabr	   TabOner-   r.   rX   r0   rY   r   r[   )r_   r   rE   rF   r(   rG   )rN   r   rO   s      r   4test_fxfind_can_scope_to_unique_nested_module_anchorzEAgentV5LiveTests.test_fxfind_can_scope_to_unique_nested_module_anchor?   s    +2201,-"I(O	
 **T']+*D1)1-+A.v6Ar   c                 "   dt        d      dt        d      t        d      ddt        d      t        d      g	}|d d	 t        d      t        d      gz   }	 t        j                  t        d
j	                  |                  }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       t        d
j	                  |             y # t        d
j	                  |             w xY w)N
FXEDITTEXTr3   0rW   r6   r   r\   zedited value r-   r.   before	requestedactualr   rE   rF   r(   r#   rG   )rN   partsrestorerO   s       r   =test_fxedittext_uses_expected_old_value_and_verifies_readbackzNAgentV5LiveTests.test_fxedittext_uses_expected_old_value_and_verifies_readbackK   s    ,-s23U?5KSRU/"E.$9	
 *n 5u_7MNN	$jjchhuo!67GWX.5WX.@W[1>BWX.?'"#D'"#s   BC2 2Dc                 R   dt        d      dt        d      ddddt        d      g	}t        j                  t        dj	                  |                  }| j                  |d	   d
       | j                  |d   d       | j                  |d   d       | j                  |d   d       y )NFXTABLECELLr3   rh   rB   1selectz12.50rj   r-   r.   rm   selectedRowr0   selectedColumnrn   )rN   ro   rO   s      r   Dtest_fxtablecell_selects_specific_row_and_column_with_expected_valuezUAgentV5LiveTests.test_fxtablecell_selects_specific_row_and_column_with_expected_value\   s    ,-sE(OShg

 **T#((5/23*D1*G4/3!12A6r   c                    dt        d      dt        d      t        d      t        d      dg}	 t        j                  t        dj	                  |dt        d	      gz                     }| j                  |d
   d       | j                  d|d   j                                t        dj	                  dt        d      dt        d      t        d      t        d	      dt        d	      t        d      g	             y # t        dj	                  dt        d      dt        d      t        d      t        d	      dt        d	      t        d      g	             w xY w)Nrg   r3   rh   rW   r6   r\   rj   r   SHOULD_NOT_APPEARr-   ERRORwildcardmessage)r   rE   rF   r(   r#   rG   rL   lower)rN   baserO   s      r   @test_fxedittext_rejects_wildcard_expected_value_without_mutatingzQAgentV5LiveTests.test_fxedittext_rejects_wildcard_expected_value_without_mutatingh   s8   % :;S23U?5KUSbMceh

	jjchhtsEBU<V6W/W&X!YZGWX.8MM*gi&8&>&>&@A e$>?679OQVWjQkmp)*E/,B  De$>?679OQVWjQkmp)*E/,B  s   A3C< <AEc                    t        j                  t        dj                  dddt	        d      t	        d      t	        d      dt	        d      t	        d      g	                  }|j                  d	      d
k(  rYt        dj                  dt	        d      dt	        d      t	        d      t	        d      dt	        d      t	        d      g	             | j                  |d	   d       y )Nrj   rg   r   rh   rW   r6   r\   rz   r-   r.   r3   r{   )rE   rF   r(   r#   r   rK   rG   rN   rO   s     r   ,test_fxedittext_rejects_wildcard_panel_scopez=AgentV5LiveTests.test_fxedittext_rejects_wildcard_panel_scopey   s    **T#((#sE*J$K/"E/$:C/"E*=$>,
 #  
 ;;x D(e$>?679OQVWjQkmp)*E/,B  
 	*G4r   c                    t        j                  t        dj                  dt	        d      dt	        d      dddddg	                  }| j                  |d	   d
       | j                  d|d   j                                y )Nrj   rs   r3   rh   rB   rt   ru   r   r-   r{   r|   r}   rE   rF   r(   r#   r   rG   rL   r~   r   s     r   0test_fxtablecell_rejects_wildcard_expected_valuezAAgentV5LiveTests.test_fxtablecell_rejects_wildcard_expected_value   sy    **T#((5!;<c5?TWh,
 #   	*G4j')"4":":"<=r   c                     t        j                  t        d            }| j                  |d   d       | j	                  d|d   j                                y )Nz"FXSETTEXT missing-selector blockedr-   r{   disabledr}   )rE   rF   r(   rG   rL   r~   r   s     r   Atest_legacy_fx_mutation_command_is_disabled_with_structured_errorzRAgentV5LiveTests.test_legacy_fx_mutation_command_is_disabled_with_structured_error   sG    **T"FGH*G4j')"4":":"<=r   c                 L   t        j                  t        dj                  dt	        d      dt	        d      t	        d      t	        d      dt	        d      t	        d      g	                  }| j                  |d   d	       | j                  d
|d   j                                y )Nrj   rg   rW   rh   r6   r\   znever-writtenr-   r{   uniquelyr}   r   r   s     r   3test_mutation_rejects_ambiguous_nested_panel_anchorzDAgentV5LiveTests.test_mutation_rejects_ambiguous_nested_panel_anchor   s    **T#((% @A323U?5KUSbMceh/"E/$:,
 #  
 	*G4j')"4":":"<=r   c                 j    t        j                  t        d            }| j                  |d   d       y )Nz FXFIND * not-an-integer * * * 10r-   r{   )rE   rF   r(   rG   r   s     r   ;test_malformed_protocol_input_returns_structured_json_errorzLAgentV5LiveTests.test_malformed_protocol_input_returns_structured_json_error   s+    **T"DEF*G4r   c                    dt        d      dt        d      ddddt        d      g	}t        j                  t        dj	                  |                  }| j                  |d   d	       d
j                  t        d      t        d      t        d            }t        j                  t        |            d   d   d   }| j                  |d       y )Nrs   r3   rh   rA   doubleclickrD   rj   r-   r.   rV   zjavafx.scene.control.LabelStatusLabelrY   r   r[   zstatus: table doubleclick row=0)r   rE   rF   r(   r#   rG   r_   )rN   ro   rO   find_statusr-   s        r   8test_fxtablecell_doubleclick_fires_only_on_resolved_cellzIAgentV5LiveTests.test_fxtablecell_doubleclick_fires_only_on_resolved_cell   s    ,-sE&M3mU5\

 **T#((5/23*D1.55,-u5Q/RTYZgThjD-.y9!<VD!BCr   N)__name__
__module____qualname__rT   rb   re   rq   rx   r   r   r   r   r   r   r   r9   r   r   r*   r*       s@    >+ 
B$"
7"5>>
>5Dr   r*   __main__)r   rE   osr   unittestintenvironrK   r   strr   r(   TestCaser*   r   mainr9   r   r   <module>r      s      	   2::>>/623W W W
4# 
4# 
4LDx(( LD^ zHMMO r   