
     h4                     V    d Z ddlZddlZddlZddlmZ  G d dej                        Zy)z&Testcases for cssutils.css.CSSPageRule    N   )test_cssrulec                   `     e Zd Zd Z fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Z xZS )TestCSSPageRulec                     t         j                  j                         | _        t         j                  j                  d      | _        t         j                  j                  j
                  | _        d| _        y )NT)readonly	PAGE_RULE)cssutilscssCSSPageRulerrROr	   r_typer_typeString)selfs    _/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/cssutils/tests/test_csspagerule.py_setup_rulezTestCSSPageRule._setup_rule   sN    ))+<<++T+:ll..88'    c                 6   t         |           t        j                  j	                         }d|j
                  k(  sJ t        |j                  t        j                  j                        sJ ||j                  j                  k(  sJ d|j                  k(  sJ t        j                  t        j                  j                        5  | j                   j#                  d       ddd       d } |t        j                  j	                  t        j                  j                  d                   t        j                  j	                         }d|_
         ||       t        j                  j	                         }|j                  j%                  dd	        ||       t        j                  j	                         }d
|j                  d<    ||       t        j                  j	                         }d|j                  _         ||       y# 1 sw Y   ,xY w)zCSSPageRule.__init__() xNc                     | | j                   j                  k(  sJ | j                   D ]  }| j                   |j                  k(  rJ  y )N)style
parentRuleparent)ffps     r   	checkrefsz,TestCSSPageRule.test_init.<locals>.checkrefs#   s>    ,,,,,XXxx188+++ r   zfont-family: x)r   z@page { font-family: x }zfont-familyyza)super	test_initr
   r   r   selectorText
isinstancer   CSSStyleDeclarationr   cssTextpytestraisesxmldomInvalidModificationErrr   _setAtkeywordsetProperty
fontFamily)r   r   r   	__class__s      r   r#   zTestCSSPageRule.test_init   s   LL$$&Q^^###!''8<<#C#CDDDAGG&&&&& QYY ]]37799:FF  % ;	,
 	LL$$ll667GH % 	
 LL$$&.	!LL$$&	M3/!LL$$&!$!LL$$& !9 ;:s   HHc                     | j                  d       dt        j                  j                  i}| j	                  |       y)z*CSSPageRule.cssText InvalidModificationErrz@pagez@pag {}N)_test_InvalidModificationErrr*   r+   r,   
do_raise_rr   testss     r   test_InvalidModificationErrz+TestCSSPageRule.test_InvalidModificationErr>   s4    ))'2sww55
 	r   c                 0    ddd}| j                  |       y)zCSSPageRule (incomplete)r   z"@page :left {
    color: red
    })z@page :left { z@page :left { color: redN)
do_equal_pr4   s     r   test_incompletezTestCSSPageRule.test_incompleteF   s     !(N
 	r   c                    d}i ddddddddd|d	z  d
|dz  d|dz  d|dz  d|dz  d|dz  d|dz  d|dz  d|dz  ddddddddddd d!d"}| j                  |       | j                  |       t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  d#
}| j                  |       |j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  d$       | j                  |       y%)&zCSSPageRule.cssTextz@page %s {
    margin: 0
    }@page {}r   z@page:left{}z@page :right {}z@page {margin:0;}z@page {
    margin: 0
    }z@page name { margin: 0 }namez@page name:left { margin: 0 }	name:leftz@page name:right { margin: 0 }
name:rightz@page name:first { margin: 0 }
name:firstz@page :left { margin: 0 }:leftz@page:left { margin: 0 }z@page :right { margin: 0 }:rightz@page :first { margin: 0 }:firstz!@page :UNKNOWNIDENT { margin: 0 }:UNKNOWNIDENTz@PAGE:left{margin:0;}z!@page :left {
    margin: 0
    }z@\page:left{margin:0;}z)@page/*1*//*2*/:left/*3*//*4*/{margin:0;}z9@page /*1*/ /*2*/ :left /*3*/ /*4*/ {
    margin: 0
    }z@page:left{margin:0;}z=@page {
    @top-right {
        content: "2"
        }
    }z@page {
    padding: 1cm;
    margin: 1cm;
    @top-left {
        content: "1"
        }
    @top-right {
        content: "2";
        left: 1
        }
    }z@page {
    @top-right {
        content: "1a";
        content: "1b";
        x: 1;
        content: "2";
        y: 2
        }
    })z@page
	 :left
	 {margin:0;}z9@page {    @top-right {        content: "2"        }    }z\@page {padding: 1cm; margin: 1cm; @top-left {content: "1"}@top-right {content: "2";left: 1}}zZ@page {@top-right { content: "1a"; content: "1b"; x: 1 }@top-right { content: "2"; y: 2 }})
z@page AUto {}z@page AUto:left {}z
@page : {}z@page :/*1*/left {}z@page : left {}z@page :left :right {}z@page :left a {}z@page a :left  {}z@page :left;z@page :left })z@page :right :left {}z@page :right X {}z@page X Y {}z@page :left {z@page :left {}1z@page :left {}/**/z@page :left {} N)
do_equal_rr8   r*   r+   	SyntaxErr
do_raise_pupdater3   )r   EXPr5   s      r   test_cssTextzTestCSSPageRule.test_cssTextN   sP   0

B
 r
  !@	

 'f
 ,S;->
 -cL.@
 -cL.@
 (w
 'g
 )#.
 )#.
 01F
 $%J
 &'L
" 89v#
& $%J'
( 8] JM mYk1
@ 	 !WW.."%''"3"3''++#&77#4#4"ww00%(WW%6%6 # 1 1!$!2!2GG-- WW..
 	%(WW%6%6!$!2!2GG-- WW.."ww00"%''"3"3"ww00

 
	 	r   c                    t         j                  j                         }d}||_        |j                  |k(  sJ d}||_        |j                  j
                  |k(  sJ t        j                  t        j                  j                        5  |j                  d       ddd       |j                  |k(  sJ |j                  j
                  |k(  sJ t        j                  t        j                  j                        5  |j                  d       ddd       |j                  |k(  sJ |j                  j
                  |k(  sJ t        j                  t        j                  j                        5  |j                  d       ddd       |j                  |k(  sJ |j                  j
                  |k(  sJ t        j                  t        j                  j                        5  |j                  d       ddd       |j                  |k(  sJ |j                  j
                  |k(  sJ y# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   xY w# 1 sw Y   \xY w)zCSSPageRule.cssText 2a:leftzsize: a4$Nz@page $ { color: red }z@page b:right { x })r
   r   r   r$   r   r'   r(   r)   r*   r+   rE   	_setStyle_setCssText_setSelectorText)r   r   ssts       r   test_cssText2zTestCSSPageRule.test_cssText2   s   LL$$&~~"""ww"$$$ ]]377,,-KK .~~"""ww"$$$]]377,,-MM23 .~~"""ww"$$$ ]]377,,-s# .~~"""ww"$$$]]377,,-MM/0 .~~"""ww"$$$' .-
 .- .-
 .-s0   
H*=H70I#I*H47IIIc                    t         j                  j                         }d|_        |j                  dk(  sJ ddddddddddddd}| j	                  |d	
       t
        j                  j                  t
        j                  j                  t
        j                  j                  t
        j                  j                  t
        j                  j                  t
        j                  j                  d}| j                  |d
       y)zCSSPageRule.selectorTextrK   r   Nr@   z/*1*/ :left /*a*/z:left /*a*/z/*1*/ :left)r   r<   rA   rB   rC   r=   z :leftr@   z/*1*/:left/*a*/z/*1*/ :left /*a*/ /*b*/z
:left/*a*/z
/*1*/:leftr$   )att):z
:/*1*/leftz: leftz:left :rightz:left az
name :leftrO   )	r
   r   r   r$   rD   r*   r+   rE   r3   )r   r   r5   s      r   test_selectorTextz!TestCSSPageRule.test_selectorText   s    LL$$&!~~))) !2'+''
 	>2 ""''++gg''GG--ww((''++
 	#56r   c                 >   t         j                  j                         }ddddddddddd
}t        |j	                               D ]V  \  }}||_        |j                  |k(  sJ t         j                  j                         }d|z  |_        |j                  |k(  rVJ  y	)
zCSSPageRule.specificity)r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )
r   r<   rB   r@   rA   rC   r?   r=   r>   zname:Xz@page %s {}N)r
   r   r   listitemsr$   specificityr'   )r   r   r5   selexps        r   test_specificityz TestCSSPageRule.test_specificity   s    LL$$&&#"#
 U[[]+HC AN==C'''((*A%+AI==C''' ,r   c                    t        j                  d      }|j                  d   }t        |j                        dk(  sJ t         j                  j                  dd      }|j                  |      }|dk(  sJ t        |j                        dk(  sJ t         j                  j                         }d|_        |j                  |      }|dk(  sJ t        |j                        dk(  sJ t         j                  j                         }d|_	        d	|_
        |j                  |d      }|dk(  sJ t        |j                        d
k(  sJ |j                  dk(  sJ d|v sJ d|vsJ t        |j                               g dk(  sJ |d   J |d   j                  dk(  sJ d|d<   |d   j                  dk(  sJ |j                  |       t        |j                        dk(  sJ |j                  dk(  sJ |j                  d       t        |j                        dk(  sJ ||j                  d   k(  sJ |j                  dk(  sJ |d= t        |j                        dk(  sJ y)zCSSPageRule.cssRulesr;   r   	@top-leftz
color: redr   z@top-right { color: blue }   @top-centerzcolor: green   z@page {
    @top-left {
        color: red
        }
    @top-center {
        color: green
        }
    @top-right {
        color: blue
        }
    }z@bottom-left)r_   ra   
@top-rightNzcolor: #f00zj@page {
    @top-left {
        color: #f00
        }
    @top-right {
        color: blue
        }
    }z<@page {
    @top-right {
        color: blue
        }
    }rc   )r
   parseStringcssRuleslenr   
MarginRuleaddr'   
insertRulemarginr   rX   keys
deleteRule)r   rP   r   m1im3m2s          r   test_cssRuleszTestCSSPageRule.test_cssRules   sd     ,JJqM1::!### \\$$[,?EE"IAvv1::!###\\$$&1
LLAvv1::!###\\$$&!	!LLQAvv1::!### II
			
	 aQ&&&AFFH~!KKKK (((~%%555&+~%%666 	
R1::!###II		
	
	 	
Q1::!###QZZ]"""II			
	 lO1::!###r   c                    t         j                  j                         }|j                  }||j                  k(  sJ d|j
                  k(  sJ d|_        |j                  |k7  sJ ||j                  j                  k(  sJ |j
                  dk(  sJ |j                  j
                  dk(  sJ |j
                  dk(  sJ |j                  }	 d|_        |j                  |k(  sJ ||j                  j                  k(  sJ |j
                  dk(  sJ |j                  j
                  dk(  sJ |j
                  dk(  sJ |j                  }d|j                  _        |j                  |k(  sJ ||j                  j                  k(  sJ |j
                  dk(  sJ |j                  j
                  dk(  sJ t         j                  j                  d      }||_        |j                  |k(  sJ ||j                  k(  sJ |j
                  d	k(  sJ |j
                  dk(  sJ |j                  j
                  dk(  sJ |j
                  dk(  sJ d
|_        |j                  |k(  sJ |j
                  dk(  sJ |j                  j
                  d
k(  sJ |j
                  dk(  sJ 	 d|_        |j                  |k(  sJ |j
                  dk(  sJ |j                  j
                  d
k(  sJ |j
                  dk(  sJ d|_        |j                  |k7  sJ |j
                  dk(  sJ |j                  j
                  dk(  sJ y# t        j                  j                  $ r Y w xY w# t        j                  j                  $ r Y w xY w)z"CSSPageRule.style (and references)r   z@page { font-family: x1 }z!@page {
    font-family: x1
    }zfont-family: x1z@page { $ }zfont-family: x2z!@page {
    font-family: x2
    }zfont-family: y1z!@page {
    font-family: y1
    }zfont-family: y2z!@page {
    font-family: y2
    }rL   zfont-family: zz @page {
    font-family: z
    }N)
r
   r   r   r   r   r'   r*   r+   rE   r&   )r   r   s1s2s3s        r   
test_stylezTestCSSPageRule.test_style:  sS   LL$$&WWBMM!!!RZZ 0	ww"}}AGG&&&&&yyAAAAww"3333zzRWW	%AI ww"}}AGG&&&&&yyAAAAww"3333zz....WW ,ww"}}AGG&&&&&yyAAAAww"3333 \\--.?@ww"}}BMM!!!yyAAAAzz....ww"3333zz.... '
ww"}}yyAAAAww"3333zz....	BJ ww"}}yyAAAAww"3333zz.... #ww"}}yy@@@@ww"2222] ww   		F ww   		s$   
L5 M 5MMM98M9c                     t         j                  j                         }d|j                  _        d}||j                  k(  sJ y)zCSSPageRule.style propertiesa	  
        margin-top: 0;
        margin-right: 0;
        margin-bottom: 0;
        margin-left: 0;
        margin: 0;

        page-break-before: auto;
        page-break-after: auto;
        page-break-inside: auto;

        orphans: 3;
        widows: 3;
        z@page {
    margin-top: 0;
    margin-right: 0;
    margin-bottom: 0;
    margin-left: 0;
    margin: 0;
    page-break-before: auto;
    page-break-after: auto;
    page-break-inside: auto;
    orphans: 3;
    widows: 3
    }N)r
   r   r   r   r'   )r   r   r\   s      r   test_propertieszTestCSSPageRule.test_properties}  s<    LL$$&	 aiir   c                     d}t         j                  j                  |      }|t        |      v sJ t	        t        |            }t        ||j                        sJ ||j                  k(  sJ y)z"CSSPageRule.__repr__(), .__str__()r@   )r$   N)	r
   r   r   strevalreprr%   r0   r$   )r   r[   rP   rt   s       r   test_reprANDstrzTestCSSPageRule.test_reprANDstr  sa    LL$$#$6c!f}}$q']"akk***boo%%%r   )__name__
__module____qualname__r   r#   r6   r9   rI   rR   rV   r]   rq   rv   rx   r}   __classcell__)r0   s   @r   r   r      sH    ()V@D%B7@(.P$dA3F >
&r   r   )	__doc__xml.domr*   r(   r
   r   r   TestCSSRuler    r   r   <module>r      s(    ,    Z&l.. Z&r   