a
    ze                     @   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__ 1/usr/lib/python3.9/test/test_email/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 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   sn   | j D ]b}| j|jd@ |dtd}| | g d | | d W d    q1 s^0    Y  q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   sf   | j D ]Z}| j|jd8 tj| jd}|d|d}| || j W d    q1 sV0    Y  qd S Nr&   )Zmessage_factoryzTo: foo

testr   )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   st   | j D ]h}| j|jdF tj| jd}|dt|d}| || j | |t W d    q1 sd0    Y  qd S r-   )	r)   r*   r   r   r$   r   r   ZassertNotIsInstancer   r.   r   r   r   !test_factory_arg_overrides_policyP   s    
z0TestParserBase.test_factory_arg_overrides_policyN)r   r   r   r,   r   r   r/   r0   r   r   r   r   r%   $   s    r%   c                 O   s"   t | }tj|g|R i |S r   )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   r6   _   s   r6   c                 O   s   t j|  g|R i |S r   )r   message_from_bytesencode)r2   r3   r4   r   r   r   r7   b   s    r7   c                 O   s&   t |  }tj|g|R i |S r   )r    BytesIOr8   r   message_from_binary_filer1   r   r   r   r:   e   s    r:   c                   @   s   e Zd ZeefZdS )TestBytesParserN)r   r   r   r7   r:   r)   r   r   r   r   r;   i   s   r;   __main__)r    r   ZunittestZemail.messager   r   Zemail.policyr   Ztest.test_emailr   r   r%   r"   r6   r7   r:   r;   r   mainr   r   r   r   <module>   s   7