
    ]j3                     D    d dl Z d dlZd dlT  G d dej                  ZdS )    N)*c                       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d Zd Zd Zd Zd Zd Zd Zd ZdS )TestElementViewboxc                 p   t          dd          }t          dd          }t          ddddd          }t          |          }t          dddddd          }|                     ||           |                     ||           |                     ||           |                     ||           |                     ||           |                     ||           |                     ||           |                     ||           |                     ||           |                     ||           dS )z2Test various ways of creating a viewbox are equal.0 0 100 100xMid)viewBoxpreserve_aspect_ratior   d   )xywidthheightpreserveAspectRatioN)ViewboxassertEqual)selfv1v2v3v4v5s         L/home/agentuser/manim-venv/lib/python3.11/site-packages/test/test_viewbox.pytest_viewbox_creationz(TestElementViewbox.test_viewbox_creation	   sD   ]F++]&IIIqAS&QQQR[[!C#U[\\]]R   R   R   R   R   R   R   R   R   R         c                    t          j        d          }t                              |          }|                     |j        d           |                     |j        d           |                     |j        d           t          j        d          }t                              |dd          }|                     |j        d           |                     |j        d           |                     |j        d           dS )zA
        Test viewboxes based on incomplete information.
        zF<?xml version="1.0" encoding="utf-8" ?>
                        <svg/>     r   r   NioStringIOSVGparser   viewbox_transformr   r   r   qms      r   test_viewbox_incomplete_nonez/TestElementViewbox.test_viewbox_incomplete_none   s     K " # #IIaLL,b111$'''4(((K " # #IIas3I//,b111#&&&3'''''r   c                    t          j        d          }t                              |          }|                     |j        d           |                     |j        d           |                     |j        d           t          j        d          }t                              |dd          }|                     |j        d           |                     |j        d           |                     |j        d           dS )zN
        Test viewboxes based on incomplete information, only height.
        zS<?xml version="1.0" encoding="utf-8" ?>
                        <svg height="200"/>r   r      r   r    Nr!   r'   s      r   test_viewbox_incomplete_heightz1TestElementViewbox.test_viewbox_incomplete_height-   s     K / 0 0IIaLL,b111$'''3'''K / 0 0IIas3I//,b111#&&&3'''''r   c                    t          j        d          }t                              |          }|                     |j        d           |                     |j        d           |                     |j        d           t          j        d          }t                              |dd          }|                     |j        d           |                     |j        d           |                     |j        d           dS )zM
        Test viewboxes based on incomplete information, only width.
        zR<?xml version="1.0" encoding="utf-8" ?>
                        <svg width="200"/>r   r,   r   r   r    Nr!   r'   s      r   test_viewbox_incomplete_widthz0TestElementViewbox.test_viewbox_incomplete_width>   s     K . / /IIaLL,b111#&&&4(((K . / /IIas3I//,b111#&&&3'''''r   c                    t          j        d          }t                              |          }|                     |j        d           |                     |j        d           |                     |j        d           t          j        d          }t                              |dd          }|                     |j        d           |                     |j        d           |                     |j        d           dS )zL
        Test viewboxes based on incomplete information, only dims.
        z_<?xml version="1.0" encoding="utf-8" ?>
                        <svg width="200" height="200"/>r   r,   r   r    Nr!   r'   s      r   test_viewbox_incomplete_dimsz/TestElementViewbox.test_viewbox_incomplete_dimsO   s     K ; < <IIaLL,b111#&&&3'''K ; < <IIas3I//,b111#&&&3'''''r   c                 <   t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           t          j        d          }t                              |dd          }|                     t          |j                  d           |                     |j        d           |                     |j        d           dS )zO
        Test viewboxes based on incomplete information, only viewbox.
        z_<?xml version="1.0" encoding="utf-8" ?>
                        <svg viewBox="0, 0, 100, 100"/>zscale(1)r   r   r    zscale(5)N	r"   r#   r$   r%   r   Matrixr&   r   r   r'   s      r   test_viewbox_incomplete_viewboxz2TestElementViewbox.test_viewbox_incomplete_viewbox`   s     K ; < <IIaLL 344jAAA#&&&3'''K ; < <IIas3I// 344jAAA#&&&3'''''r   c                 Z   t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           t          j        d          }t                              |dd          }|                     t          |j                  d           |                     |j        d           |                     |j        d           t          j        d          }t                              |dd          }|                     t          |j                  d           |                     |j        d	           |                     |j        d	           d
S )zZ
        Test viewboxes based on incomplete information, only height and viewbox.
        zl<?xml version="1.0" encoding="utf-8" ?>
                        <svg viewBox="0, 0, 100, 100" height="100"/>r   r   r   r    zscale(1) translateX(200)zx<?xml version="1.0" encoding="utf-8" ?>
                        <svg viewBox="0, 0, 100, 100" height="200" width="200"/>zscale(2)r,   Nr3   r'   s      r   &test_viewbox_incomplete_height_viewboxz9TestElementViewbox.test_viewbox_incomplete_height_viewboxq   s    K H I IIIaLL 344b999#&&&3'''K H I IIIas3I// 3446PQQQ#&&&3'''K T U UIIas3I// 344jAAA#&&&3'''''r   c                 N   t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           d S )	Nz<?xml version="1.0" encoding="utf-8" ?>
                        <svg preserveAspectRatio="xMid" viewBox="0 0 100 100" height="100" width="300"/>ztranslateX(100),  r   z<?xml version="1.0" encoding="utf-8" ?>
                        <svg preserveAspectRatio="xMin" viewBox="0 0 100 100" height="100" width="300"/>ztranslateX(0)z<?xml version="1.0" encoding="utf-8" ?>
                        <svg preserveAspectRatio="xMax" viewBox="0 0 100 100" height="100" width="300"/>ztranslateX(200)r3   r'   s      r   !test_viewbox_aspect_ratio_xMinMaxz4TestElementViewbox.test_viewbox_aspect_ratio_xMinMax   u   K l m mIIaLL 3446GHHH#&&&3'''K l m mIIaLL 344oFFF#&&&3'''K l m mIIaLL 3446GHHH#&&&3'''''r   c                 N   t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           d S )Nz<?xml version="1.0" encoding="utf-8" ?>
                        <svg preserveAspectRatio="xMid slice" viewBox="0 0 100 100" height="100" width="300"/>scale(3)r9   r   z<?xml version="1.0" encoding="utf-8" ?>
                        <svg preserveAspectRatio="xMin slice" viewBox="0 0 100 100" height="100" width="300"/>z<?xml version="1.0" encoding="utf-8" ?>
                        <svg preserveAspectRatio="xMax slice" viewBox="0 0 100 100" height="100" width="300"/>r3   r'   s      r   &test_viewbox_aspect_ratio_xMinMaxSlicez9TestElementViewbox.test_viewbox_aspect_ratio_xMinMaxSlice   s   K r s sIIaLL 344jAAA#&&&3'''K r s sIIaLL 344jAAA#&&&3'''K r s sIIaLL 344jAAA#&&&3'''''r   c                 N   t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           d S )	Nz<?xml version="1.0" encoding="utf-8" ?>
                        <svg preserveAspectRatio="yMid" viewBox="0 0 100 100" height="300" width="100"/>ztranslateY(100)r   r9   z<?xml version="1.0" encoding="utf-8" ?>
                        <svg preserveAspectRatio="yMin" viewBox="0 0 100 100" height="300" width="100"/>ztranslateY(0)z<?xml version="1.0" encoding="utf-8" ?>
                        <svg preserveAspectRatio="yMax" viewBox="0 0 100 100" height="300" width="100"/>ztranslateY(200)r3   r'   s      r   !test_viewbox_aspect_ratio_yMinMaxz4TestElementViewbox.test_viewbox_aspect_ratio_yMinMax   r;   r   c                 N   t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           t          j        d          }t                              |          }|                     t          |j                  d           |                     |j        d           |                     |j        d           d S )Nz<?xml version="1.0" encoding="utf-8" ?>
                        <svg preserveAspectRatio="yMid slice" viewBox="0 0 100 100" height="300" width="100"/>r=   r   r9   z<?xml version="1.0" encoding="utf-8" ?>
                        <svg preserveAspectRatio="yMin slice" viewBox="0 0 100 100" height="300" width="100"/>z<?xml version="1.0" encoding="utf-8" ?>
                        <svg preserveAspectRatio="yMax slice" viewBox="0 0 100 100" height="300" width="100"/>r3   r'   s      r   &test_viewbox_aspect_ratio_yMinMaxSlicez9TestElementViewbox.test_viewbox_aspect_ratio_yMinMaxSlice   r?   r   c                     t          dddd          }t          ddi          }|                     |                    |          d           d S )Nr   r   r	   r   r   Rectr   r   	transformr   rvs      r   test_viewbox_simplez&TestElementViewbox.test_viewbox_simple   sM    AsC  Y.//Q,,,,,r   c                 v    |                      t          ddd                                          d           d S )N	0 0 10 1010mmr	   r   r   )z<svg viewBox="0 0 10 10" width="10mm" height="10mm" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" />z<svg height="10mm" version="1.1" viewBox="0 0 10 10" width="10mm" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink" />)assertInr$   
string_xml)r   s    r   test_viewbox_issue_228z)TestElementViewbox.test_viewbox_issue_228   sE    6&AAALLNN	
 	
 	
 	
 	
r   c           
      :   t          ddd          }|                    t          dddddd                     |                    t          dddd	
                     |                    t	          ddddd                     |                    t          ddddd                     |                    t          dddddd                     |                    t          dd                     t          |	                                           d S )NrM   rN   rO   1mm5mm0.5mmredr   r   r   r   rxstrokeblue)cxcyrI   rZ   z0.8mmlime)r\   r]   rY   ryrZ   5emz10%z15%gray)x1y1x2y2rZ      
         (      zM10,10zyellow)rZ   )
r$   appendrF   CircleEllipse
SimpleLinePolygonPathprintrQ   )r   svgs     r   test_issue_228bz"TestElementViewbox.test_issue_228b   s   +VFCCC

4%5eX]^^^___

6UuGGGHHH

7e'gfUUUVVV

:5UuVTTTUUU

71b"b"a00111

4	(333444cnnr   c                 r    t          dddddd          }t          |                                           d S )NrT   rU   rV   rW   rX   )rF   rs   length)r   rects     r   test_issue_228cz"TestElementViewbox.test_issue_228c   s9    euE%GTYZZZdkkmmr   c                     t          dddd          }t          d          }|                     |                    |          d           d S )Nr   r,   r   zscale(2, 2)rE   rH   s      r   test_viewbox_scalez%TestElementViewbox.test_viewbox_scale   sH    AsC  M""Q77777r   c                     t          dddd          }t          t          d                    }|                     |                    |          d           d S )Nr   r   z-50 -50 100 100ztranslate(50, 50)rE   rH   s      r   test_viewbox_translatez)TestElementViewbox.test_viewbox_translate  sR    AsC  G-..//Q)<=====r   c                     t          j        d          }t                              |          }t	          |                                          }|                     t          |          d           |                     d |j                   d S )Nzd<?xml version="1.0" encoding="utf-8" ?>
                        <svg>
                        </svg>   )	r"   r#   r$   r%   listelementsr   lenviewboxr'   s      r   test_viewbox_parse_emptyz+TestElementViewbox.test_viewbox_parse_empty  sx    K " # # IIaLLQ###qy)))))r   c                 n   t          j        d          }t                              |dd          }t	          |                                          }|                     t          |          d           |                     t          |j	                  t          
                                           d S )Nzz<?xml version="1.0" encoding="utf-8" ?>
                        <svg viewBox="0 0 100 100">
                        </svg>r   r    r   )r"   r#   r$   r%   r   r   r   r   r4   r&   identityr'   s      r   test_viewbox_parse_100z)TestElementViewbox.test_viewbox_parse_100  s    K " # # IIas3I//Q### 344foo6G6GHHHHHr   c                 l   t          j        d          }t                              |          }t	          |                                          }|                     t          |          d           |                     t          |j	                  t          
                    dd                     d S )Nz<?xml version="1.0" encoding="utf-8" ?>
                        <svg viewBox="-1 -1 100 100" width="100" height="100">
                        </svg>r   )r"   r#   r$   r%   r   r   r   r   r4   r&   	translater'   s      r   test_viewbox_parse_translatez/TestElementViewbox.test_viewbox_parse_translate  s    K " # # IIaLLQ### 344f6F6Fq!6L6LMMMMMr   N)__name__
__module____qualname__r   r*   r-   r/   r1   r5   r7   r:   r>   rA   rC   rK   rR   ru   ry   r{   r}   r   r   r    r   r   r   r      sH       ! ! !$( ( ($( ( ("( ( ("( ( ("( ( ("( ( (0( ( (,( ( (,( ( (,( ( (,- - -

 
 
       8 8 8
> > >
* * *I I IN N N N Nr   r   )r"   unittestsvgelementsTestCaser   r   r   r   <module>r      sn    				     YN YN YN YN YN* YN YN YN YN YNr   