
    jU                         d Z ddlZddlZddlZddlZddlmZmZm	Z	m
Z
mZmZ ddlmZ dddd	d
ZdZej                            de          d             Zd Zd Zd Zd ZdS )zI
CairoSVG API test suite.

These tests can be used as deployment tests.

    N   )SURFACESVERSIONparsersurfacesvg2pdfsvg2png)mains   <?xmls   PNG

s   %PDFs   %!)SVGPNGPDFPSs   <?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="4in" height="5in">
  <rect x="5" y="10" width="13" height="15"
        fill="lime" stroke="black" stroke-width="1" />
</svg>
format_namec                     t           |                              t                    }|                    t          |                    sJ dS )z;Convert to a given format and test that output looks right.N)r   convert
SVG_SAMPLE
startswithMAGIC_NUMBERS)r   contents     X/home/ubuntu/budget-transfer-bot/.venv/lib/python3.11/site-packages/cairosvg/test_api.pytest_formatsr   !   sA     {#++J77GmK89999999    c                 ~    t          | d          5 }|                                cddd           S # 1 swxY w Y   dS )z@Shortcut to return the whole content of a file as a byte string.rbN)openread)filenamefile_objects     r   	read_filer   (   s    	h		 "!!" " " " " " " " " " " " " " " " " "s   266c                    t          t                    }|                    t          d                   sJ t          t                    |k    sJ t          t                    |k    sJ t	          j        t                    }t          |          |k    sJ t	          j                    }t          t          |           |                                |k    sJ | dz  }|                    t                     t          t          |                    |k    sJ t          d|           |k    sJ |	                    d          5 }t          |          |k    sJ 	 d	d	d	           n# 1 swxY w Y   | d
z  }|	                    d          5 }t          t          |           d	d	d	           n# 1 swxY w Y   t          t          |                    |k    sJ | dz  }t          t          t          |                     t          t          |                    |k    sJ t	          j                    }	 t          |           t          d          # t          $ r Y d	S w xY w)z,Test the Python API with various parameters.r   
bytestring)file_obj)write_tozsample_0.svg)urlzfile://r   Nzresult_1.pngwbresult_2.pngzTypeError not raised)r	   r   r   r   ioBytesIOgetvaluewrite_bytesstrr   r   	Exception	TypeError)tmp_pathexpected_content	file_liketemp_0r   temp_1temp_2s          r   test_apir5   .   s   z**&&}U';<<<<< :"22222j)))-=====
:&&II&&&*:::::
IJ++++#33333&F
z""" s6{{###'77777)))***.>>>>>	T		 Ak,,,0@@@@@@A A A A A A A A A A A A A A A &F	T		 2k
[11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 S[[!!%55555&FJV----S[[!!%55555
I0#### .///    s6   E22E69E6F::F>F>I$ $
I21I2c                  X   t          t                    } t          j        t                    }t	          j                    }t          j        ||d          }|                                 |	                                | k    sJ t          j                            t	          j        |                     }|                                }|                                }t          j        |dd          }|j        |k    sJ |j        |k    sJ t          j        |j
                  sJ dS )z6Test the low-level Python API with various parameters.r!   `   N)r	   r   r   Treer(   r)   r   
PNGSurfacefinishr*   cairoImageSurfacecreate_from_png	get_width
get_heightwidthheightSurfacePattern)r0   treer1   png_surface
png_resultexpected_widthexpected_heights          r   test_low_level_apirH   `   s   z** ;*---D
I$T9b99K#33333#33

#$$& &J))++N ++--O $T444K....0000 12222222r   c                    t          t                    dd         }t          t                    dd         }dd}| dz  }|                    t                     t	          |          } |dgd                              d	          sJ  |d
gd                                          t          j        d          k    sJ  ||g          |k    sJ  ||ddddg          |k    sJ  ||ddg          |k    sJ  |dg|          |k    sJ  ||ddddgd          }t          j
                            t          j        |                    }|                                dk    sJ |                                dk    sJ | dz  } ||dt	          |          g          rJ t!          |          dd         |k    sJ | dz  }	 ||dt	          |	          g          rJ t!          |	          dd         |k    sJ | dz  }
 ||dt	          |
          ddg          rJ t!          t	          |
                    dd         |k    sJ dS )z7Test the ``cairosvg`` script and the ``main`` function.Nd   Fc                 P   dg| z   t           _        t           j        t           j        }}t	          j                    }t	          j        |          t           _        |r5t          |d          t           _        t           j        t           j        _        |r.	 t                       t          d          # t          $ r Y nw xY wt                       t           j                                         |                                }||ct           _        t           _        |r|n	|dd         S )zTest main called with given ``args``.

        If ``exit_`` is ``True``, check that ``SystemExit`` is raised. We then
        assume that the program output is an unicode string.

        If ``input_`` is given, use this stream as input stream.

        cairosvgr   zCairoSVG did not exitNrJ   )sysargvstdinstdoutr(   r)   TextIOWrapperr   bufferr
   r-   
SystemExitflushr*   )argsexit_input_full	old_stdin
old_stdoutoutput_bufferoutputs           r   	test_mainztest_script.<locals>.test_main|   s    <$& #	3::	
%m44
 	)VT**CI"yCI 	9   7888    
 FFF
'')) ):	3:/vv6$3$</s   B1 1
B>=B>ztest.svgz--helpT)rV   s   usage: z	--versionasciiz-d96z-fpdfpng-)rW   10)rX   (   2   result_1z-or'   zresult_3.png)FNF)r	   r   r   r+   r,   r   stripr   encoder;   r<   r=   r(   r)   r>   r?   r   )r/   expected_pngexpected_pdfr]   svg_pathsvg_filenamer\   imager3   r4   temp_3s              r   test_scriptro   w   s   :&&tt,L:&&tt,L 0  0  0  0D *$H$$$x==L9hZt,,,77
CCCCC9k]$///5577w! ! ! ! 9l^$$44449lD$e<==MMMM9lD%011\AAAA9cU<000L@@@@ YdD$>TJJJF..rz&/A/ABBE??""""####
"Fy,c&kk:;;;;;VTcT"l2222&Fy,c&kk:;;;;;VTcT"l2222&Fy,c&kk4GHHHHHS[[!!$3$'<777777r   )__doc__r(   rM   	cairocffir;   pytest r   r   r   r   r   r	   __main__r
   r   r   markparametrizer   r   r5   rH   ro    r   r   <module>rx      s    
			 



      B B B B B B B B B B B B B B B B       
	 
 66: : 76:" " "/0 /0 /0d3 3 3.G8 G8 G8 G8 G8r   