a
    CgU&                     @   s   d dl Z d dlmZmZ d dlmZ d dlmZmZm	Z	m
Z
 G dd dZe	G dd dZG d	d
 d
eZe	e e G dd deZG dd dZG dd deZe	e e G dd deZG dd dZG dd de
Ze	e e G dd deZdS )    N)activategettext_lazy)TestCase)Adapter	JSContextregisterStringAdapterc                   @   s   e Zd Zdd ZdS )Artistc                 C   s
   || _ d S Nname)selfr    r   M/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/telepath/tests.py__init__
   s    zArtist.__init__N)__name__
__module____qualname__r   r   r   r   r   r	   	   s   r	   c                   @   s   e Zd Zdd Zdd ZdS )Albumc                 C   s   || _ || _d S r
   )titleartists)r   r   r   r   r   r   r      s    zAlbum.__init__c                 C   s   |j dd d| j| jgfS )Nmusic_player.js)Zjsmusic.Album)Z	add_mediar   r   )r   contextr   r   r   telepath_pack   s    zAlbum.telepath_packN)r   r   r   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdd ZdS )ArtistAdaptermusic.Artistc                 C   s   |j gS r
   r   r   objr   r   r   js_args   s    zArtistAdapter.js_argsNr   r   r   Zjs_constructorr   r   r   r   r   r      s   r   c                   @   s\   e 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S )TestPackingc                 C   s0   t d}t }||}| |ddgd d S )N   Beyoncér   _type_argsr	   r   packassertEqual)r   beyoncectxresultr   r   r   test_pack_object%   s    
zTestPacking.test_pack_objectc                 C   sT   t dt dt dg}t }||}| |ddgdddgdddgdg d S )Nr"   Kelly RowlandMichelle Williamsr   r#   r&   )r   destinys_childr*   r+   r   r   r   test_pack_list,   s    



zTestPacking.test_pack_listc                 C   sH   t dt dd}t }||}| |ddgdddgdd d S )Nr"   z
Ed Sheeran)Zpyramid_stageZacoustic_stager   r#   r&   )r   Zglastonburyr*   r+   r   r   r   test_pack_dict9   s    


zTestPacking.test_pack_dictc                 C   s@   t ddd}t }||}| |dddgdddi d S )Nr"   zR&B)Z_artistr$   _dictr   r#   r&   )r   Zprofiler*   r+   r   r   r   test_dict_reserved_wordsE   s    

z$TestPacking.test_dict_reserved_wordsc                 C   sV   t dtdg}t }||}| |ddddgdggd | dt|j d S )NDangerously in Lover"   r   r   r#   r   )r   r	   r   r'   r(   assertInstrmedia)r   Zdangerously_in_lover*   r+   r   r   r   test_recursive_arg_packingT   s    


z&TestPacking.test_recursive_arg_packingc              
   C   s   t d}t d}td|gtd||gg}t }||}| |ddddgddggd	ddd
diddgd	ggd	g | dt|j d S )Nr"   zJay-Zr4   zEverything Is Lover   r   r   r$   r%   _idr#   _refr   )r	   r   r   r'   r(   r5   r6   r7   )r   r)   Zjay_zdiscographyr*   r+   r   r   r   test_object_referencesg   s.    



z"TestPacking.test_object_referencesc              
   C   s   t dt dt dg}td|td|g}t }||}| |ddddgdddgdddgdgd	d
gddddd	igdg d S )Nr"   r-   r.   zDestiny's ChildZSurvivorr   r   r#   r   )Z_listr:   r;   r	   r   r   r'   r(   )r   r/   r<   r*   r+   r   r   r   test_list_references   s0    



z TestPacking.test_list_referencesc              	   C   sx   d}t |}td|gt||gg}t }||}| |ddddddgddggd	dd
did
diggd	g d S )Nu   Beyoncé Giselle Knowles-Carterr4   r   r   r   )Z_valr:      r9   r#   r;   r>   r   Zbeyonce_namer)   r<   r*   r+   r   r   r   test_primitive_value_references   s0    



z+TestPacking.test_primitive_value_referencesc              	   C   sn   d}t |}td|gt||gg}t }||}| |ddddgddggdddddiggdg d S )	Nr"   r4   r   r   r@   r9   r#   r;   r>   rA   r   r   r   7test_avoid_primitive_value_references_for_short_strings   s0    


zCTestPacking.test_avoid_primitive_value_references_for_short_stringsc                 C   sh   t td}td t }||}| |ddgd td t }||}| |ddgd d S )NZYesenr   r#   frZOui)r	   r   r   r   r'   r(   )r   yesr*   r+   r   r   r   test_lazy_translation_objects   s    

z)TestPacking.test_lazy_translation_objectsN)r   r   r   r,   r0   r1   r3   r8   r=   r?   rB   rC   rG   r   r   r   r   r!   $   s   "###r!   c                   @   s   e Zd Zdd Zdd ZdS )Arkc                 C   s
   || _ d S r
   )animals)r   rI   r   r   r   r     s    zArk.__init__c                 C   s   t | jdd S )Nc                 S   s   | d S )Ntyper   )Zanimalr   r   r   <lambda>      z%Ark.animals_by_type.<locals>.<lambda>)	itertoolsgroupbyrI   r   r   r   r   animals_by_type  s    zArk.animals_by_typeN)r   r   r   r   rP   r   r   r   r   rH      s   rH   c                   @   s   e Zd ZdZdd ZdS )
ArkAdapter	boats.Arkc                 C   s
   |  gS r
   )rP   r   r   r   r   r     s    zArkAdapter.js_argsNr    r   r   r   r   rQ     s   rQ   c                   @   s   e Zd Zdd ZdS )TestIDCollisionsc                 C   s   dd t ddD }t }||}| t|d t|D ]X\}}| |dddd| ddd	| dggd
d
d| dd
d| dggggd q<dS )ar  
        Certain functions such as itertools.groupby will cause new objects (namely, tuples and
        custom itertools._grouper iterables) to be created in the course of iterating over the
        object tree. If we're not careful, these will be released and the memory reallocated to
        new objects while we're still iterating, leading to ID collisions.
        c              	   S   sD   g | ]<}t d d| dd d| ddd| ddd| dgqS )lionSimba %irJ   r   Nala %idogLady %iTramp %i)rH   ).0ir   r   r   
<listcomp>  s
   zCTestIDCollisions.test_grouper_object_collisions.<locals>.<listcomp>r   d   rR   rT   rU   rV   rW   rX   rY   rZ   r#   N)ranger   r'   r(   len	enumerate)r   Zarksr*   r+   r\   Zarkr   r   r   test_grouper_object_collisions  s    
z/TestIDCollisions.test_grouper_object_collisionsN)r   r   r   rb   r   r   r   r   rS     s   rS   c                   @   s   e Zd Zdd Zdd ZdS )
StringLikec                 C   s   |  | _d S r
   )upperval)r   re   r   r   r   r   5  s    zStringLike.__init__c                 C   s   | j S r
   )re   rO   r   r   r   __str__8  s    zStringLike.__str__N)r   r   r   r   rf   r   r   r   r   rc   4  s   rc   c                       s   e Zd Z fddZ  ZS )StringLikeAdapterc                    s   t  t||S r
   )super
build_noder6   )r   r   r   	__class__r   r   ri   =  s    zStringLikeAdapter.build_node)r   r   r   ri   __classcell__r   r   rj   r   rg   <  s   rg   c                   @   s   e Zd Zdd ZdS )TestPackingToStringc                 C   s0   dt dg}t }||}| |ddg d S )Nzreal stringZ
stringlikeZ
STRINGLIKE)rc   r   r'   r(   )r   re   r*   r+   r   r   r   test_pack_to_stringE  s    
z'TestPackingToString.test_pack_to_stringN)r   r   r   rn   r   r   r   r   rm   D  s   rm   )rM   Zdjango.utils.translationr   r   Zunittestr   Ztelepathr   r   r   r   r	   r   r   r!   rH   rQ   rS   rc   rg   rm   r   r   r   r   <module>   s$    ]"