B
    v9a                 @   s   d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	 G dd de	Z
G dd dZd	d
 ZG dd dee	Zdd Zdd ZG dd dee	Zedkre  dS )    N)MessageEmailMessage)default)TestEmailBasec               @   s:   e Zd ZG dd deZejjddZdd Z	dd Z
d	S )
TestCustomMessagec                   s   e Zd Z fddZ  ZS )zTestCustomMessage.MyMessagec                s   || _ t   d S )N)check_policysuper__init__)selfpolicy)	__class__ !/usr/lib/python3.7/test_parser.pyr	      s    z$TestCustomMessage.MyMessage.__init__)__name__
__module____qualname__r	   __classcell__r   r   )r   r   	MyMessage   s   r   Zboo)linesepc             C   s6   t jd| j| jd}| || j | |j| j d S )NzSubject: bogus

msg
)r   )emailmessage_from_stringr   MyPolicyassertIsInstanceassertIsr   )r
   msgr   r   r   7test_custom_message_gets_policy_if_possible_from_string   s
    
zITestCustomMessage.test_custom_message_gets_policy_if_possible_from_stringc             C   s@   t d}tj|| j| jd}| || j | |j| j d S )NzSubject: bogus

msg
)r   )	ioStringIOr   message_from_filer   r   r   r   r   )r
   Zsource_filer   r   r   r   5test_custom_message_gets_policy_if_possible_from_file   s    

zGTestCustomMessage.test_custom_message_gets_policy_if_possible_from_fileN)r   r   r   r   r   r   r   cloner   r   r   r   r   r   r   r   	   s   r   c               @   s4   e Zd Zdd ZG dd deZdd Zdd Zd	S )
TestParserBasec             C   sl   xf| j D ]\}| j|jdD |dtd}| | dddddd	d
ddg	 | | d W d Q R X qW d S )N)parseru   Next-Line: notbroken
Null: not broken
Vertical-Tab: notbroken
Form-Feed: notbroken
File-Separator: notbroken
Group-Separator: notbroken
Record-Separator: notbroken
Line-Separator: not broken
Paragraph-Separator: not broken

)r   )z	Next-Lineu   notbroken)ZNullz
not broken)zVertical-Tabz
notbroken)z	Form-Feedz
notbroken)zFile-Separatorz
notbroken)zGroup-Separatorz
notbroken)zRecord-Separatorz
notbroken)zLine-Separatoru   not broken)zParagraph-Separatoru   not broken )parserssubTestr   r   ZassertEqualitemsZget_payload)r
   r"   r   r   r   r   test_only_split_on_cr_lf&   s     

z'TestParserBase.test_only_split_on_cr_lfc               @   s   e Zd ZdS )zTestParserBase.MyMessageN)r   r   r   r   r   r   r   r   F   s   r   c          
   C   sV   xP| j D ]F}| j|jd. tj| jd}|d|d}| || j W d Q R X qW d S )N)r"   )message_factoryzTo: foo

test)r   )r$   r%   r   r   r    r   r   )r
   r"   r   r   r   r   r   %test_custom_message_factory_on_policyI   s
    z4TestParserBase.test_custom_message_factory_on_policyc          
   C   sd   x^| j D ]T}| j|jd< tj| jd}|dt|d}| || j | |t W d Q R X qW d S )N)r"   )r(   zTo: foo

test)r   )	r$   r%   r   r   r    r   r   ZassertNotIsInstancer   )r
   r"   r   r   r   r   r   !test_factory_arg_overrides_policyP   s    z0TestParserBase.test_factory_arg_overrides_policyN)r   r   r   r'   r   r   r)   r*   r   r   r   r   r!   $   s    r!   c             O   s   t | }tj|f||S )N)r   r   r   r   )sargskwfr   r   r   r   [   s    
r   c               @   s   e Zd ZejefZdS )
TestParserN)r   r   r   r   r   r   r$   r   r   r   r   r/   _   s   r/   c             O   s   t j|  f||S )N)r   message_from_bytesencode)r+   r,   r-   r   r   r   r0   b   s    r0   c             O   s    t |  }tj|f||S )N)r   BytesIOr1   r   message_from_binary_file)r+   r,   r-   r.   r   r   r   r3   e   s    r3   c               @   s   e Zd ZeefZdS )TestBytesParserN)r   r   r   r0   r3   r$   r   r   r   r   r4   i   s   r4   __main__)r   r   ZunittestZemail.messager   r   Zemail.policyr   Ztest.test_emailr   r   r!   r   r/   r0   r3   r4   r   mainr   r   r   r   <module>   s   7