o
    ed                     @   s<   d Z ddlmZ ddlZG dd dejZG dd dZdS )	z$Testcases for cssutils.CSSSerializer   )basetest    Nc                   @   s   e Zd Z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 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% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8S )9TestPreferencesz6
    testcases for cssutils.serialize.Preferences
    c                 C      t jj  d S NcssutilsserprefsuseDefaultsself r   MD:\Projects\ConvertPro\env\Lib\site-packages\cssutils/tests/test_serialize.pysetup_method      zTestPreferences.setup_methodc                 C   r   r   r   r   r   r   r   teardown_method   r   zTestPreferences.teardown_methodc                 C   sx   t jjjsJ dt jj_d}ddddd}dt jj_t| D ]\}}t || }| |jks4J q dt jj_d	S )
zPreferences.resolveVariablesFz
            @variables {
                c1: red;
                c2: #0f0;
                px: 1px 2px;
            }
        za {
    color: red
    }z)a {
    color: red;
    color: #0f0
    }za {
    margin: 1px 2px
    }zt@media all {
    a {
        margin: 1px 2px 1px 2px;
        color: red;
        left: var(unknown)
        }
    })za {
    color: var(c1)
    }z1a {
    color: var(c1)
; color: var(  c2   )    }za {
    margin: var(px)
    }z@media all {
                a {
                    margin: var(px) var(px);
                    color: var(c1);
                    left: var(unknown)
                    }
            }TN)	r   r	   r
   resolveVariableslistitemsparseStringencodecssText)r   varsteststestexpsr   r   r   test_resolveVariables   s   

z%TestPreferences.test_resolveVariablesc                 C   s  t jj  t jj  t jjjsJ t jjjsJ t jjjs!J t jjjdu s*J t jjj	dks3J t jjj
s:J t jjjsAJ t jjjsHJ t jjjdu sQJ t jjjsXJ t jjjdu saJ t jjjdu sjJ t jjjdkssJ t jjjdks|J t jjjsJ t jjjsJ t jjjdu sJ t jjjdksJ t jjjdksJ t jjjdksJ t jjjdksJ t jjjdu sJ d}d}t |}|j| ksJ dd	i}t jj  t| D ]\}}t d
| }d|  |jksJ qdS )zPreferences.useDefaults()N    F
 a]  
    /*1*/
    @import url(x) tv , print;
    @namespace prefix "uri";
    @namespace unused "unused";
    @media all {}
    @media all {
        a {}
    }
    @media   all  {
    a { color: red; }
        }
    @page     { left: 0; }
    a {}
    prefix|x, a  +  b  >  c  ~  d  ,  b { top : 1px ;
        font-family : arial ,'some'
        }
    z/*1*/
@import url(x) tv, print;
@namespace prefix "uri";
@namespace unused "unused";
@media all {
    a {
        color: red
        }
    }
@page {
    left: 0
    }
prefix|x, a + b > c ~ d, b {
    top: 1px;
    font-family: arial, "some"
    }\0.1 .1 0.1px .1px 0.1% .1% +0.1 +.1 +0.1px +.1px +0.1% +.1% -0.1 -.1 -0.1px -.1px -0.1% -.1%ze0.1 0.1 0.1px 0.1px 0.1% 0.1% +0.1 +0.1 +0.1px +0.1px +0.1% +0.1% -0.1 -0.1 -0.1px -0.1px -0.1% -0.1%a{x:%s}za {
    x: %s
    }) r   r	   r
   useMinifiedr   defaultAtKeyworddefaultPropertyNamedefaultPropertyPriorityimportHrefFormatindentindentClosingBracekeepAllPropertieskeepCommentskeepEmptyRuleskeepUnknownAtRuleskeepUsedNamespaceRulesOnlylineNumberslineSeparatorlistItemSpacerminimizeColorHashomitLastSemicolonomitLeadingZeroparanthesisSpacerpropertyNameSpacerselectorCombinatorSpacerspacer	validOnlyr   r   r   r   r   )r   cssZ	parsedcssr   r   r   r   r   r   r   test_useDefaults?   sH   
z TestPreferences.test_useDefaultsc                 C   s  t jj  t jj  t jjjsJ t jjjsJ t jjjdks#J t jjjdks,J t jjj	s3J t jjj
du s<J t jjjdu sEJ t jjjdu sNJ t jjjsUJ t jjjdu s^J t jjjdksgJ t jjjdkspJ t jjjswJ t jjjs~J t jjjdksJ t jjjdksJ t jjjdksJ t jjjdksJ t jjjdu sJ d}t |}dt jj_|jdksJ dt jj_|jdksJ dd	d
d
ddddddddddd}t| D ]\}}t d| }d|  |jksJ qdS )zPreferences.useMinified()string Fav  
    /*1*/
    @import   url(x) tv , print;
    @namespace   prefix "uri";
    @namespace   unused "unused";
    @media  all {}
    @media  all {
        a {}
    }
    @media all "name" {
        a { color: red; }
    }
    @page:left {
    left: 0
    }
    a {}
    prefix|x, a + b > c ~ d , b { top : 1px ;
        font-family : arial ,  'some'
        }
    @x  x;
    Ts   @import"x"tv,print;@namespace prefix"uri";@media all"name"{a{color:red}}@page :left{left:0}prefix|x,a+b>c~d,b{top:1px;font-family:arial,"some"}@x x;s   @import"x"tv,print;@namespace prefix"uri";@media all"name"{a{color:red}}@page :left{left:0}prefix|x,a+b>c~d,b{top:1px;font-family:arial,"some"}za a1 a-1 a-1aa b 1 c 1em d -1em e1em/5z#a 0 a 0 a 0 a 0 a 0 a 0 a 0 a 0 a 0z7a 1 a .1 a 1 a .1 a -1 a -.1 a -1 a -.1 a +1 a +.1 a +1z
url(x) f()#123#112234#123 url() f()
1 +2 +3 -4zS.1 .1 .1px .1px .1% .1% +.1 +.1 +.1px +.1px +.1% +.1% -.1 -.1 -.1px -.1px -.1% -.1%)z  a  a1  a-1  a-1a  r?   z  1em  /  5  r@   z2a 0 a .0 a 0.0 a -0 a -.0 a -0.0 a +0 a +.0 a +0.0zVa  0px  a  .0px  a  0.0px  a  -0px  a  -.0px  a  -0.0px  a  +0px  a  +.0px  a  +0.0px zTa  1  a  .1  a  1.0  a  0.1  a  -1  a  -.1  a  -1.0  a  -0.1  a  +1  a  +.1  a  +1.0z  url(x)  f()#112233rB   rA   rC   rD   r"   r#   N)r   r	   r
   r   r$   r%   r&   r(   r)   r+   r,   r-   r.   r/   r0   r1   r2   r4   r5   r6   r7   r8   r9   r:   r   r   r   r   r   )r   r;   r   Z
valuetestsr   r   r   r   r   test_useMinified   sd   


z TestPreferences.test_useMinifiedc                 C   sL   t d}d|jksJ dt jj_d|jksJ dt jj_d|jks$J dS )zPreferences.defaultAtKeywordz@im\port "x";s   @import "x";TFs   @im\port "x";N)r   r   r   r	   r
   r%   r   r   r   r   r   test_defaultAtKeyword   s   


z%TestPreferences.test_defaultAtKeywordc                 C   s   dt jj_t d}d|jksJ dt jj_d|jksJ dt jj_d|jks)J t d}d|jks5J dt jj_d|jksAJ dt jj_d|jksMJ dS )zPreferences.defaultPropertyNameFza { c\olor: green; }   a {
    color: green
    }Ts   a {
    c\olor: green
    }z a { color: red; c\olor: green; }N)r   r	   r
   r+   r   r   r&   rG   r   r   r   test_defaultPropertyName   s   






z(TestPreferences.test_defaultPropertyNamec                 C   s<   d}t |}|jdksJ dt jj_|j| ksJ dS )z#Preferences.defaultPropertyPriorityz&a {
    color: green !IM\portant
    }s%   a {
    color: green !important
    }FN)r   r   r   r	   r
   r'   r   r   r;   r   r   r   r   test_defaultPropertyPriority   s
   

z,TestPreferences.test_defaultPropertyPriorityc                 C   s   t j }d|_t j }d|_d|jksJ d|jksJ dt jj_d|jks*J d|jks1J dt jj_d|jks=J d|jksDJ dt jj_d|jksPJ d|jksWJ d	S )
zPreferences.importHrefFormatz@import url("not");z@import "str";z@import url(not);r=   z@import "not";uriz@import url(str);znot definedN)r   r;   ZCSSImportRuler   r	   r
   r(   )r   Zr0r1r   r   r   test_importHrefFormat  s   




z%TestPreferences.test_importHrefFormatc                 C   sN   t d}d}d}dt jj_| |jksJ dt jj_| |jks%J dS )zPreferences.identza { left: 0 }za {
    left: 0
    }za {
 left: 0
 }r!   r   N)r   r   r	   r
   r)   r   r   )r   r   Zexp4exp1r   r   r   test_indent  s   


zTestPreferences.test_indentc                 C   sP   t d}d}d}t jj  | |jksJ dt jj_| |jks&J dS )zPreferences.indentClosingBracez%@media all {a {left: 0}} b { top: 0 }zI@media all {
    a {
        left: 0
        }
    }
b {
    top: 0
    }z=@media all {
    a {
        left: 0
    }
}
b {
    top: 0
}FN)r   r   r	   r
   r   r   r   r*   )r   r   ZexpTZexpFr   r   r   test_indentClosingBrace&  s   

z'TestPreferences.test_indentClosingBracec                 C   sB   d}t |}dt jj_d|jksJ dt jj_d|jksJ dS )zPreferences.keepAllPropertieszwa {
            color: pink;
            color: red;
            c\olor: blue;
            c\olor: green;
            }FrI   TsN   a {
    color: pink;
    color: red;
    c\olor: blue;
    c\olor: green
    }N)r   r   r	   r
   r+   r   rK   r   r   r   test_keepAllProperties>  s   


z&TestPreferences.test_keepAllPropertiesc                 C   s>   t d}dt jj_d|jksJ dt jj_d|jksJ dS )zPreferences.keepCommentsz/*1*/ a { /*2*/ }F    Ts   a {}N)r   r   r	   r
   r,   r   r-   rG   r   r   r   test_keepCommentsQ  s
   


z!TestPreferences.test_keepCommentsc                 C   s   d}t |}t jj  dt jj_| |jksJ dt jj_d|jks'J dt jj_d|jks3J d}t |}t jj  dt jj_dt jj_d|jksQJ dt jj_d|jks]J d	S )
zPreferences.keepEmptyRulesz1a {}
a {
    /*1*/
    }
a {
    color: red
    }TFs,   a {
    /*1*/
    }
a {
    color: red
    }s   a {
    color: red
    }z@media tv {
    }
@media all {
    /*1*/
    }
@media print {
    a {}
    }
@media print {
    a {
        /*1*/
        }
    }
@media all {
    a {
        color: red
        }
    }s   @media all {
    /*1*/
    }
@media print {
    a {
        /*1*/
        }
    }
@media all {
    a {
        color: red
        }
    }s7   @media all {
    a {
        color: red
        }
    }N)	r   r   r	   r
   r   r-   r   r   r,   rK   r   r   r   test_keepEmptyRulesY  s*   







z#TestPreferences.test_keepEmptyRulesc                 C   sd   ddi}|D ])}t |}|| \}}dt jj_|j| ks!J dt jj_|j| ks/J qdS )zPreferences.keepUnknownAtRulesz@three-dee {
              @background-lighting {
                azimuth: 30deg;
                elevation: 190deg;
              }
              h1 { color: red }
            }
            h1 { color: blue })z@three-dee {
    @background-lighting {
        azimuth: 30deg;
        elevation: 190deg;
        } h1 {
        color: red
        }
    }
h1 {
    color: blue
    }zh1 {
    color: blue
    }TFN)r   r   r	   r
   r.   r   r   r   r   r   r   ZexpwithZ
expwithoutr   r   r   test_keepUnknownAtRules  s   


z'TestPreferences.test_keepUnknownAtRulesc                 C   sn   ddddddd}|D ])}t |}|| \}}dt jj_|j| ks&J d	t jj_|j| ks4J qd
S )z&Preferences.keepUsedNamespaceRulesOnly)'@namespace "u";
a, a {
    top: 0
    }rY   )-@namespace p "u";
p|a, p|a {
    top: 0
    }rZ   );@namespace p "u";
@namespace "d";
p|a, a {
    top: 0
    }r[   )z8@namespace p "u";
@namespace "d";
p|a {
    top: 0
    }(@namespace p "u";
p|a {
    top: 0
    })z6@namespace p "u";
@namespace "d";
a {
    top: 0
    }z$@namespace "d";
a {
    top: 0
    })z:@namespace p "u";
@namespace d "d";
p|a {
    top: 0
    }r\   )z1@namespace p "u"; @namespace "u"; p|a, a {top: 0}z1@namespace "u"; @namespace p "u"; p|a, a {top: 0}z1@namespace p "u"; @namespace "d"; p|a, a {top: 0}z.@namespace p "u"; @namespace "d"; p|a {top: 0}z,@namespace p "u"; @namespace "d"; a {top: 0}z0@namespace p "u"; @namespace d "d"; p|a {top: 0}FTN)r   r   r	   r
   r/   r   r   rW   r   r   r   test_keepUsedNamespaceRulesOnly  s   


z/TestPreferences.test_keepUsedNamespaceRulesOnlyc                 C   s`   t d}d}d}t jjjrJ | |jksJ dt jj_t jjjs%J | |jks.J dS )zPreferences.lineNumbersza {top: 1; left: 2}z!a {
    top: 1;
    left: 2
    }z-1: a {
2:     top: 1;
3:     left: 2
4:     }TN)r   r   r	   r
   r0   r   r   )r   r   Zexp0rP   r   r   r   test_lineNumbers  s   

z TestPreferences.test_lineNumbersc                 C   sL   t d}d|jksJ dt jj_d|jksJ dt jj_d|jks$J dS )zPreferences.lineSeparatorza { x:1;y:2}   a {
    x: 1;
    y: 2
    }r>   s   a {x: 1;y: 2    }XXXs"   a {XXX    x: 1;XXX    y: 2XXX    }N)r   r   r   r	   r
   r1   rG   r   r   r   test_lineSeparator  s   


z"TestPreferences.test_lineSeparatorc                 C   sB   dt jj_d}t |}d|jksJ dt jj_d|jksJ dS )zPreferences.listItemSpacerTz'
        @import "x" print, tv;
a, b {}s   @import "x" print, tv;
a, b {}r>   s   @import "x" print,tv;
a,b {}N)r   r	   r
   r-   r   r   r2   rK   r   r   r   test_listItemSpacer  s   


z#TestPreferences.test_listItemSpacerc                 C   8   d}t |}d|jksJ dt jj_d|jksJ dS )zPreferences.minimizeColorHashza { color: #ffffff }s   a {
    color: #fff
    }Fs   a {
    color: #ffffff
    }N)r   r   r   r	   r
   r3   rK   r   r   r   test_minimizeColorHash  
   

z&TestPreferences.test_minimizeColorHashc                 C   rc   )zPreferences.omitLastSemicolona { x: 1; y: 2 }r_   Fs   a {
    x: 1;
    y: 2;
    }N)r   r   r   r	   r
   r4   rK   r   r   r   test_omitLastSemicolon  re   z&TestPreferences.test_omitLastSemicolonc                 C   sL   dt jj_d}t |}d|jksJ dt jj_d|jksJ dt jj_dS )zPreferences.normalizedVarNamesFz@variables { A: 1 }s   @variables {
    a: 1
    }s   @variables {
    A: 1
    }TN)r   r	   r
   r   r   r   ZnormalizedVarNamesrK   r   r   r   test_normalizedVarNames#  s   


z'TestPreferences.test_normalizedVarNamesc                 C   rc   )zPreferences.paranthesisSpacerrf   r_   r>   s   a{
    x: 1;
    y: 2
    }N)r   r   r   r	   r
   r6   rK   r   r   r   test_paranthesisSpacer/  re   z&TestPreferences.test_paranthesisSpacerc                 C   rc   )zPreferences.propertyNameSpacerrf   r_   r>   s   a {
    x:1;
    y:2
    }N)r   r   r   r	   r
   r7   rK   r   r   r   test_propertyNameSpacer7  re   z'TestPreferences.test_propertyNameSpacerc                 C   s8   t jjdd}d|jksJ dt jj_d|jksJ dS )z$Preferences.selectorCombinatorSpacerz
a+b>c~d  e)selectorTextza + b > c ~ d er>   z	a+b>c~d eN)r   r;   ZSelectorrk   r	   r
   r8   rG   r   r   r   test_selectorCombinatorSpacer?  s   
z-TestPreferences.test_selectorCombinatorSpacerc              	   C   sR   dt jj_dddddddd	d
}t| D ]\}}| t |jks&J qd S )Nr>   z@font-face {
    a: 1
    }z@import url(a);z7@media all {
    a {
        color: red
        }
    }z@namespace"a";z@namespace a"a";z@page :left {
    a: 1
    }z@x x;z@import"x"tv;)z@font-face {a:1}z@import  url( a );z@media  all{a{color:red}}z@namespace "a";z@namespace a  "a";z@page  :left {   a  :1  }z@x  x;z@import"x"tv)	r   r	   r
   r9   r   r   r   r   r   )r   r   r;   r   r   r   r   test_spacerF  s   

zTestPreferences.test_spacerc                 C   s   t jdd}|jdksJ d|_dt jj_|jdksJ dt jj_|jdks)J t j }d|_|jdks8J dt jj_|jdksDJ t jj	  dt jj_
dt jj_d	d
d}| j|dd dS )zPreferences.validOnlycolorZ1pxz
color: 1pxTr>   Fzleft: x;top: xzleft: x;
top: xzh1 {
    color: red;
    }zimg {
    float: left
    })z&h1 { color: red; rotation: 70minutes }zimg { float: left }       /* correct CSS 2.1 */
img { float: left here }  /* "here" is not a value of 'float' */
img { background: "red" } /* keywords cannot be quoted */
img { border-width: 3 }   /* a unit must be specified for length values */)ZraisingN)r   r;   Propertyr   valuer	   r
   r:   ZCSSStyleDeclarationr   r,   Z
do_equal_p)r   pr   r   r   r   r   test_validOnlyU  s&   





zTestPreferences.test_validOnlyN)__name__
__module____qualname____doc__r   r   r   r<   rF   rH   rJ   rL   rO   rQ   rR   rS   rU   rV   rX   r]   r^   ra   rb   rd   rg   rh   ri   rj   rl   rm   rr   r   r   r   r   r      s:    "IU	E#)r   c                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )TestCSSSerializerz.
    testcases for cssutils.CSSSerializer
    c                 C   r   r   r   r   r   r   r   r   z  r   zTestCSSSerializer.setup_methodc                 C   r   r   r   r   r   r   r   r   }  r   z!TestCSSSerializer.teardown_methodc                 C   s   i ddddddddddddddddd	dd
ddddddddddddddddddddddddddd }t | D ]\}}tj|}||jksZJ qId S )!N1z+10z+0z-0z0.0z00.0z00.0pxz00.0pcz00.0emz00.0exz00.0cmz00.0mmz00.0inz00.0%z0%z00.0msZ0msz00.0sZ0sZ0khzZ0hzZ0degZ0radZ0gradZ0xxza, "b\"", serifzurl("h)i") "\[\]"rgb(18, 52, 86)#123456rA   )z00.0khzz00.0hzz00.0degz00.0radz00.0gradz00.0xxza, 'b"', serifzurl('h)i') '\[\]'rz   r{   rE   )r   r   r   r;   ZPropertyValuer   )r   r   r   r   vr   r   r   test_canonical  sf   	
&z TestCSSSerializer.test_canonicalc                 C   sb   d}t |}|t|jdksJ d}t |}|t|jdks"J d|jd _d|jks/J dS )zCSSSerializer.do_CSSStyleSheetu   /* κουρος */zutf-8u$   @charset "utf-8";
/* κουρος */asciir   s6   @charset "ascii";
/* \3BA \3BF \3C5 \3C1 \3BF \3C2  */N)r   r   strr   ZcssRulesencoding)r   r;   sheetr   r   r   test_CSSStyleSheet  s   

z$TestCSSSerializer.test_CSSStyleSheetc                 C   s^   d}d}d}t jjj|||d}dt j|ksJ t jjj||d}dt j|ks-J dS )	zCSSSerializer.do_Propertyrn   redz
!important)namerp   priorityzcolor: red !important)r   rp   z
color: redN)r   r;   propertyro   r	   Zdo_Property)r   r   rp   r   r   r   r   r   test_Property  s   zTestCSSSerializer.test_Propertyc                 C   s(   d}d}t |}|j| ksJ dS )zCSSSerializer._escapestringz@import url("ABC\a");
@import "ABC\a";
@import 'ABC\a';
a[href='"\a\22\27"'] {
    a: "\a\d\c";
    b: "\a \d \c ";
    c: "\"";
    d: "\22";
    e: '\'';
    f: "\\";
    g: "2\\ 1\ 2\\";
    content: '\27';
    }z@import url("ABC\a ");
@import "ABC\a ";
@import "ABC\a ";
a[href="\"\a \"'\""] {
    a: "\a \d \c ";
    b: "\a \d \c ";
    c: "\"";
    d: "\"";
    e: "'";
    f: "\\";
    g: "2\\ 1\ 2\\";
    content: "'"
    }N)r   r   r   r   )r   r;   r   r   r   r   r   test_escapestring  s   
z#TestCSSSerializer.test_escapestringN)
rs   rt   ru   rv   r   r   r}   r   r   r   r   r   r   r   rw   u  s    +rw   )rv   r>   r   r   ZBaseTestCaser   rw   r   r   r   r   <module>   s        r