3
2Ol2                 @   s  d Z ddlmZ ddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlmZ dd	 Zd
d Zdd Zejjddd eeegD dd Zejjdddg fddg fdddgfddg fddd gfd!dd gfd"dd gfgd#d$ Zejjddg g fd%d&g fd'g dfd(g g fgg fd)d*dgdfgg fd-d*dgdfgg fd.d*dgdfgg fd/g d0gfd1d2d3dgfgfgg fd6d7g ddddddddgfgg fd&g d@gfdAdBg fgdCgfdDd&dEdgfgfgdGgfdHd&dBdgfgfgdKgfdLd&dMdgfgfgdOgfdPd&dMdQdRdgfddQddgfgfgfgfgdUgfdVd&dMdWdXdgfgfgfgdZgfd[d&dMdgfgfgd^gfgd_d` Zejjddg g fdbd3dgfgg fdcg ddgfdeg dfgfdgdBdgfgdKgfdhdMdgfgdOgfdidMdQdRdgfddQddgfgfgfgdUdUgfdjdMdWdXdgfgfgdZgfdkdMdgfgd^gfg	dldm Zejjddg g fdnd2dgdfd3dgdfgg fdod2dddgdfd3dgdfgg fdqd2dgdpfd3dgdfgg fdrd2dgdpfd3dgdfgg fdsd3dgdfgdtgfgdudv Zejjddg g fdwd,dxgfgg fdyd,dxgfgg fdzd,d{d|gfgg fd}d,dxgfd~dxgfgg fdg dgfdg dgfdg dgfdg dgfdg dgfg
dd Zejjddddg fg fdddg fg fdddg fg fdddg fg fdddgfdddgfdddgfdddgfdddd2dgfd3dgfgfg fdddd2dgfd3dgfgfdZgfdddd2dgfd3dgfgfdgfdddd2dgfd3dgfgfdgfgdd Zejjddg g fddxgg fgg fdd{d|gg fgg fdg dgfdg dgfdg dgfdg dgfdg dgfdg dgfddxgd&d2dgfgfgfgdddgfg
dd ZdS )z
    Tests for the CSS 2.1 parser
    ----------------------------

    :copyright: (c) 2012 by Simon Sapin.
    :license: BSD, see LICENSE for more details.
    )unicode_literalsN)CSS21Parser   )jsonify)assert_errorsc             C   s   t  j| f|S )N)r   Zparse_stylesheet_bytes)	css_byteskwargs r	   X/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/tinycss/tests/test_css21.pyparse_bytes   s    r   c             C   s   t j| }t j|f|S )N)ioBytesIOr   parse_stylesheet_file)r   r   css_filer	   r	   r
   parse_bytesio_file   s    
r   c             C   sD   t jdd}z$|j|  |j  t j|jf|S tj|j X d S )NF)delete)	tempfileNamedTemporaryFilewritecloser   r   nameosremove)r   r   r   r	   r	   r
   parse_filename!   s    
r   r   r   expected_resultparsec             C   s   g | ]}d j di dfd j di dfd j di dfdj di dfdj di d	fd
j di dfdj dddid	fdj dddidfdj dddid	fdj dddidfd j dddidfgD ]}||f qqS )u   @import "é";utf8   éutf16latin1u   @import "£";z	Shift-JISu   u"   @charset "Shift-JIS";@import "£";   £u#    @charset "Shift-JIS";@import "£";Zdocument_encodingu   @charset "utf8"; @import "£";u    @charset "utf8"; @import "é";u   Ã©)encode).0r   paramsr	   r	   r
   
<listcomp>.   s"   




r$   c             C   s6   || |}|j d jdkst|j d j|ks2td S )Nr   z@import)rules
at_keywordAssertionErroruri)r   r   r   r   
stylesheetr	   r	   r
   
test_bytes-   s    
r*   
css_sourceexpected_rulesexpected_errorsz /* hey */
zfoo {}zfoo{} @lipsum{} bar{}   z.unknown at-rule in stylesheet context: @lipsumz@charset "ascii"; foo {}z @charset "ascii"; foo {}z%mis-placed or malformed @charset rulez@charset ascii; foo {}zfoo {} @charset "ascii";c             C   s6   t  j| dd}t|j| t|j}||ks2td S )Nr   )encoding)r   parse_stylesheetr   errorslenr%   r'   )r+   r,   r-   r)   resultr	   r	   r
   test_at_rulesJ   s    
r4   zfoo{} /* hey */
@bar;@baz{}Zfooz@barz@bazz@import "foo.css"/**/;z@importSTRINGfoo.cssz@import "foo.css"/**/z@import "foo.cssz{}zempty selectorza{b:4}abINTEGER   z@page {	 b: 4; @margin}z@pageS	 IDENT: ;	ATKEYWORD@marginzno declaration block foundzfoo @page {} bar {}Zbarz&unexpected ATKEYWORD token in selectorzBfoo { content: "unclosed string;
 color:red; ; margin/**/
: 2cm; }margin	DIMENSIONz-unexpected BAD_STRING token in property valuezfoo { 4px; bar: 12% }
PERCENTAGE   z'expected a property name, got DIMENSIONz foo { bar! 3cm auto ; baz: 7px }Zbaz   zexpected ':', got DELIMz0foo { bar ; baz: {("}"/* comment */) {0@fizz}} }{(}@fizzzexpected ':'zfoo { bar: ; baz: not(z) }ZFUNCTIONnotzzexpected a property valuezfoo { bar: (]) ; baz: U+20 }UNICODE-RANGEU+20zunmatched ] token in (c             C   sH   G dd dt }| j| }t|j| dd |jD }||ksDtd S )Nc               @   s   e Zd ZdZdd ZdS )z$test_core_parser.<locals>.CoreParserz/A parser that always accepts unparsed at-rules.c             S   s   |S )Nr	   )selfruleZstylesheet_rulesr1   contextr	   r	   r
   parse_at_rule   s    z2test_core_parser.<locals>.CoreParser.parse_at_ruleN)__name__
__module____qualname____doc__rS   r	   r	   r	   r
   
CoreParser   s   rX   c             S   sZ   g | ]R}|j r<|j tt|j|jd k	r6tt|jnd fn|jj dd |jD fqS )Nc             S   s    g | ]}|j tt|jfqS r	   )r   listr   value)r"   declr	   r	   r
   r$      s   z/test_core_parser.<locals>.<listcomp>.<listcomp>)r&   rY   r   headbodyselectoras_cssdeclarations)r"   rQ   r	   r	   r
   r$      s   z$test_core_parser.<locals>.<listcomp>)r   r0   r   r1   r%   r'   )r+   r,   r-   rX   r)   r3   r	   r	   r
   test_core_parser\   s    9
ra   expected_declarationszb:4z{b:4}zexpected a property name, got {zb:4} c:3z#unmatched } token in property valuez 4px; bar: 12% zbar! 3cm auto ; baz: 7pxz-foo; bar ; baz: {("}"/* comment */) {0@fizz}}zbar: ; baz: not(z)zbar: (]) ; baz: U+20c             C   s8   t  j| \}}t|| dd |D }||ks4td S )Nc             S   s    g | ]}|j tt|jfqS r	   )r   rY   r   rZ   )r"   r[   r	   r	   r
   r$      s   z)test_parse_style_attr.<locals>.<listcomp>)r   parse_style_attrr   r'   )r+   rb   r-   r`   r1   r3   r	   r	   r
   test_parse_style_attr   s
    "
rd   za:1; b:2za:1 important; b: important	importantza:1 !important; b:2za:1!	 Im\50 O\RTant; b:2za: !important; b:2z"expected a value before !importantc             C   s8   t  j| \}}t|| dd |D }||ks4td S )Nc             S   s$   g | ]}|j tt|j|jfqS r	   )r   rY   r   rZ   priority)r"   r[   r	   r	   r
   r$      s   z"test_important.<locals>.<listcomp>)r   rc   r   r'   )r+   rb   r-   r`   r1   r3   r	   r	   r
   test_important   s
    
rg   z@import "foo.css";allz@import url(foo.css);z @import "foo.css" screen, print;Zscreenprintz7@charset "ascii"; @import "foo.css"; @import "bar.css";zbar.csszfoo {} @import "foo.css";z(@import rule not allowed after a rulesetz@page {} @import "foo.css";z,@import rule not allowed after an @page rulez	@import ;z'expected URI or STRING for @import rulez@import foo.css;z2expected URI or STRING for @import rule, got IDENTz@import "foo.css" {}zexpected ';', got a blockc             C   s<   t  j| dd}t|j| dd |jD }||ks8td S )Nr   )r/   c             S   s"   g | ]}|j d kr|j|jfqS )z@import)r&   r(   media)r"   rQ   r	   r	   r
   r$     s   z"test_at_import.<locals>.<listcomp>)r   r0   r   r1   r%   r'   )r+   r,   r-   r)   r3   r	   r	   r
   test_at_import   s
    
rk   cssz@page {}z@page:first {}firstz@page :left{}leftz@page	
:right {}rightz@page :last {}zinvalid @page selectorz@page : right {}z@page table:left {}z@page;z!invalid @page rule: missing blockz@page { a:1; ; b: 2 }z@page { a:1; c: ; b: 2 }z @page { a:1; @top-left {} b: 2 }z+unknown at-rule in @page context: @top-leftz!@page { a:1; @top-left {}; b: 2 }c             C   s   t  j| }t|j| |d kr.|j stn^t|jdks@t|jd }|jdksXt|jg ksft|j	|j
dd |jD f}||kstd S )Nr   r   z@pagec             S   s    g | ]}|j tt|jfqS r	   )r   rY   r   rZ   )r"   r[   r	   r	   r
   r$   8  s   z test_at_page.<locals>.<listcomp>)r   r0   r   r1   r%   r'   r2   r&   Zat_rulesr^   Zspecificityr`   )rl   r   r-   r)   rQ   r3   r	   r	   r
   test_at_page  s    
rp   z@media all {}z@media screen, print {}z@media all;z"invalid @media rule: missing blockz
@media  {}zexpected media types for @mediaz@media 4 {}z"expected a media type, got INTEGERz@media , screen {}zexpected a media typez@media screen, {}z@media screen print {}z'expected a media type, got IDENT, IDENTz;@media all { @page { a: 1 } @media; @import; foo { a: 1 } }z @page rule not allowed in @mediaz!@media rule not allowed in @mediaz"@import rule not allowed in @mediac             C   sV   t  j| }t|j| x|jD ]}|jdks tq W dd |jD }||ksRtd S )Nz@mediac             S   s"   g | ]}|j d d |jD fqS )c             S   s&   g | ]}|j j d d |jD fqS )c             S   s    g | ]}|j tt|jfqS r	   )r   rY   r   rZ   )r"   r[   r	   r	   r
   r$   Z  s   z7test_at_media.<locals>.<listcomp>.<listcomp>.<listcomp>)r^   r_   r`   )r"   Zsub_ruler	   r	   r
   r$   Y  s   z,test_at_media.<locals>.<listcomp>.<listcomp>)rj   r%   )r"   rQ   r	   r	   r
   r$   X  s   z!test_at_media.<locals>.<listcomp>)r   r0   r   r1   r%   r&   r'   )r+   r,   r-   r)   rQ   r3   r	   r	   r
   test_at_media>  s    
rq   )r   r   r   r   )r+   r,   r-   )r+   r,   r-   )r5   r6   )r5   r6   )r5   r6   )r9   r:   )r;   r<   )r=   r8   )r>   r>   )r;   r?   )r9   r:   )r@   r@   )r;   r?   )rA   rB   )rD   r.   )rE   rF   )rD   rG   )r5   rJ   )r;   r?   )r9   r   )rA   rK   )r=   rM   )rN   rO   )r+   rb   r-   )r9   r:   )rE   rF   )rD   rG   )r5   rJ   )r;   r?   )r9   r   )rA   rK   )r=   rM   )rN   rO   )r+   rb   r-   )r9   r   )r9   r.   )r9   r   )r;   r?   )r=   re   )r=   re   )r9   r   )r9   r.   )r9   r   )r9   r.   )r9   r.   )r+   r,   r-   )rl   r   r-   )r   r   )r   r   )r   r   )r   r   )r   r   )r9   r   )r9   r.   )r   r   )r9   r   )r9   r.   )r   r   )r9   r   )r9   r.   )r   r   )r9   r   )r9   r.   )r+   r,   r-   )r9   r   )rW   
__future__r   r   r   r   ZpytestZtinycss.css21r   Ztest_tokenizerr    r   r   r   r   ZmarkZparametrizer*   r4   ra   rd   rg   rk   rp   rq   r	   r	   r	   r
   <module>   s<  























