
    Wpf"                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddl
mZ ej        Zej        Z G d	 d
ej                  Zedk    r ej                     dS dS )z@Tests for mediapipe.python._framework_bindings.calculator_graph.    )absltest)text_format)calculator_pb2)packet_creator)packet_getter)calculator_graphvalidated_graph_configc                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )	GraphTestc                     |                      t          d          5  t          d           d d d            d S # 1 swxY w Y   d S )Nz3(No such file or directory|The path does not exist)z/tmp/abc.binarypb)binary_graph_path)assertRaisesRegexFileNotFoundErrorCalculatorGraph)selfs    f/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/mediapipe/python/calculator_graph_test.pytest_invalid_binary_graph_filez(GraphTest.test_invalid_binary_graph_file    s    			=
? 
? = = (;<<<<= = = = = = = = = = = = = = = = = =s   :>>c                     d}t          j                    }t          j        ||           |                     t
          d          5  t          |           d d d            d S # 1 swxY w Y   d S )Nz
      node {
        calculator: 'PassThroughCalculator'
        input_stream: 'in'
        input_stream: 'in'
        output_stream: 'out'
      }
    zUInput and output streams to PassThroughCalculator must use matching tags and indexes.graph_config)r   CalculatorGraphConfigr   Parser   
ValueErrorr   r   text_configconfig_protos      r   test_invalid_node_configz"GraphTest.test_invalid_node_config&   s    K "799Lk<000			_
 
 1 1 <0000	1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1   A$$A(+A(c                     d}t          j                    }t          j        ||           |                     t
          d          5  t          |           d d d            d S # 1 swxY w Y   d S )Nz~
      node {
        calculator: 'SomeUnknownCalculator'
        input_stream: 'in'
        output_stream: 'out'
      }
    z1Unable to find Calculator "SomeUnknownCalculator"r   )r   r   r   r   r   RuntimeErrorr   r   s      r   test_invalid_calculator_typez&GraphTest.test_invalid_calculator_type7   s    K "799Lk<000			K
M 
M 1 1<00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1r   c                    d}t          j                    }t          j        ||           t	          |          }t          j        d          }g t	          |          }|                    dfd           |                                 |	                    d|d           |	                    d|
                    d	          
           |                                 |                     |j        t          j        j                   |                     |j        d	           |                     |                                           |                     d           |                     d         j        d           |                     d	         j        d	           |                     t-          j        d                   d           |                     t-          j        d	                   d           d S )N
      max_queue_size: 1
      input_stream: 'in'
      output_stream: 'out'
      node {
        calculator: 'PassThroughCalculator'
        input_stream: 'in'
        output_stream: 'out'
      }
    r   hello worldoutc                 .                         |          S Nappend_packetr&   s     r   <lambda>zDGraphTest.test_graph_initialized_with_proto_config.<locals>.<lambda>W       F9K9K     inr   streamr-   	timestamp   r3   r-      )r   r   r   r   r   r   create_stringobserve_output_stream	start_runadd_packet_to_input_streamatcloseassertEqualgraph_input_stream_add_moder   GraphInputStreamAddModeWAIT_TILL_NOT_FULLmax_queue_sizeassertFalse	has_error	assertLenr4   r   get_str)r   r   r   graphhello_world_packetr&   s        @r   (test_graph_initialized_with_proto_configz2GraphTest.test_graph_initialized_with_proto_configE   s   	K "799Lk<000666E'5mDD
C666E	'K'K'K'KLLL	OO	$$.! % = = =	$$.11!44 % 6 6 6	KKMMM)0CE E E 	U)1---U__&&'''NN3SV%q)))SV%q)))]*3q622MBBB]*3q622MBBBBBr0   c                    d}t          j        d          }g t          |          }|                    dfd           |                                 |                    d|                    d                     |                    d|d	
           |                                 |                     |j	        t          j        j                   |                     |j        d	           |                     |                                           |                     d           |                     d         j        d           |                     d	         j        d	           |                     t%          j        d                   d           |                     t%          j        d	                   d           d S )Nr$   r%   r   r&   c                 .                         |          S r(   r)   r+   s     r   r.   zCGraphTest.test_graph_initialized_with_text_config.<locals>.<lambda>x   r/   r0   r1   r   r6   r5   r2   r7   )r   r8   r   r9   r:   r;   r<   r=   r>   r?   r   r@   rA   rB   rC   rD   rE   r4   r   rF   )r   r   rH   rG   r&   s       @r   'test_graph_initialized_with_text_configz1GraphTest.test_graph_initialized_with_text_configi   s   	K (5mDD
C555E	'K'K'K'KLLL	OO	$$.11!44 % 6 6 6	$$.! % = = =	KKMMM)0CE E E 	U)1---U__&&'''NN3SV%q)))SV%q)))]*3q622MBBB]*3q622MBBBBBr0   c                    d}t          j        d          }g t                      }|                     |                                           |                    |           |                     |                                           t          |          }|                    dfd           |	                                 |
                    d|                    d          	           |
                    d|d
           |                                 |                     |j        t          j        j                   |                     |j        d
           |                     |                                           |                     d           |                     d         j        d           |                     d
         j        d
           |                     t-          j        d                   d           |                     t-          j        d
                   d           d S )Nr$   r%   r   r	   r&   c                 .                         |          S r(   r)   r+   s     r   r.   zDGraphTest.test_graph_validation_and_initialization.<locals>.<lambda>   r/   r0   r1   r   r6   r5   r2   r7   )r   r8   ValidatedGraphConfigrC   initialized
initialize
assertTruer   r9   r:   r;   r<   r=   r>   r?   r   r@   rA   rB   rD   rE   r4   r   rF   )r   r   rH   validated_graphrG   r&   s        @r   (test_graph_validation_and_initializationz2GraphTest.test_graph_validation_and_initialization   s&   	K (5mDD
C*,,O_0022333K888OOO//11222?CCCE	'K'K'K'KLLL	OO	$$.11!44 % 6 6 6	$$.! % = = =	KKMMM)0CE E E 	U)1---U__&&'''NN3SV%q)))SV%q)))]*3q622MBBB]*3q622MBBBBBr0   c                 b   d}t          j                    }t          j        ||           t	          j        d          }g t          |          }|                    dfd           |                                 |	                    d|
                    d                     |                                 |	                    d|
                    d                     |                     t          d	          5  |                                 d d d            d S # 1 swxY w Y   d S )
Nr$   r%   r   r&   c                 .                         |          S r(   r)   r+   s     r   r.   zCGraphTest.test_insert_packets_with_same_timestamp.<locals>.<lambda>   r/   r0   r1   r   r6   z7Current minimum expected timestamp is 1 but received 0.)r   r   r   r   r   r8   r   r9   r:   r;   r<   wait_until_idler   r   )r   r   r   rH   rG   r&   s        @r   'test_insert_packets_with_same_timestampz1GraphTest.test_insert_packets_with_same_timestamp   s   	K "799Lk<000'5mDD
C666E	'K'K'K'KLLL	OO	$$.11!44 % 6 6 6		$$.11!44 % 6 6 6			M
O 
O                   s   D$$D(+D(c                    d}t          j                    }t          j        ||           t	          |          }|                    dt          j        d          i           |                                 | 	                    |
                                           |                     t          j        |                    d                    d           d S )Nz
      node {
        calculator: 'StringToUint64Calculator'
        input_side_packet: "string"
        output_side_packet: "number"
      }
    r   string42)input_side_packetsnumber*   )r   r   r   r   r   r:   r   r8   wait_until_donerC   rD   r>   r   get_uintget_output_side_packet)r   r   r   rG   s       r   test_side_packet_graphz GraphTest.test_side_packet_graph   s    K "799Lk<000666E	OO$n&B4&H&HI  K K K	U__&&'''u;;HEEFFL L L L Lr0   c                     d}t          j        d          }g t          |          }|                    dfd           |                                 d}t          |          D ]}|                    d||           |                                 |                     |           t          |          D ]Q}| 	                    |         j
        |           | 	                    t          j        |                   d           Rd S )	Nr$   r%   r   r&   c                 .                         |          S r(   r)   r+   s     r   r.   z/GraphTest.test_sequence_input.<locals>.<lambda>   r/   r0   i  r1   r2   )r   r8   r   r9   r:   ranger;   rW   rE   r>   r4   r   rF   )r   r   rH   rG   sequence_sizeir&   s         @r   test_sequence_inputzGraphTest.test_sequence_input   s8   	K (5mDD
C555E	'K'K'K'KLLL	OOM=!! ? ?&&0A ' ? ? ? ?	NN3&&&=!! E E
s1v'+++
},SV44mDDDDE Er0   N)__name__
__module____qualname__r   r   r"   rI   rL   rT   rX   rb   rh    r0   r   r   r      s        = = =1 1 1"1 1 1"C "C "CHC C CB$C $C $CL  8L L L$E E E E Er0   r   __main__N)__doc__absl.testingr   google.protobufr   mediapipe.frameworkr   mediapipe.pythonr   r   $mediapipe.python._framework_bindingsr   r
   r   rO   TestCaser   ri   mainrl   r0   r   <module>rv      s   G F ! ! ! ! ! ! ' ' ' ' ' ' . . . . . . + + + + + + * * * * * * A A A A A A G G G G G G"2-B YE YE YE YE YE! YE YE YEx z(-///// r0   