U
    vhU&                     @   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   V/var/www/dating/data/www/fatepal.com/env/lib/python3.8/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)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-Zr5   zEverything Is Lover   r   r   r%   r&   _idr$   _refr   )r	   r   r   r(   r)   r6   r7   r8   )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   r0   r=   r+   r,   r   r   r   test_list_references   s4      



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-Carterr5   r   r   r   )Z_valr;      r:   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#   r5   r   r   rA   r:   r$   r<   r?   rB   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-   r1   r2   r4   r9   r>   r@   rC   rD   rH   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   rJ   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groupbyrJ   r   r   r   r   animals_by_type  s    zArk.animals_by_typeN)r   r   r   r   rQ   r   r   r   r   rI      s   rI   c                   @   s   e Zd ZdZdd ZdS )
ArkAdapter	boats.Arkc                 C   s
   |  gS r
   )rQ   r   r   r   r   r      s    zArkAdapter.js_argsNr!   r   r   r   r   rR     s   rR   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rK   r   Nala %idogLady %iTramp %i)rI   ).0ir   r   r   
<listcomp>  s     zCTestIDCollisions.test_grouper_object_collisions.<locals>.<listcomp>r   d   rS   rU   rV   rW   rX   rY   rZ   r[   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   rc   r   r   r   r   rT     s   rT   c                   @   s   e Zd Zdd Zdd ZdS )
StringLikec                 C   s   |  | _d S r
   )upperval)r   rf   r   r   r   r   5  s    zStringLike.__init__c                 C   s   | j S r
   )rf   rP   r   r   r   __str__8  s    zStringLike.__str__N)r   r   r   r   rg   r   r   r   r   rd   4  s   rd   c                       s   e Zd Z fddZ  ZS )StringLikeAdapterc                    s   t  t||S r
   )super
build_noder7   )r   r   r   	__class__r   r   rj   =  s    zStringLikeAdapter.build_node)r   r   r   rj   __classcell__r   r   rk   r   rh   <  s   rh   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)rd   r   r(   r)   )r   rf   r+   r,   r   r   r   test_pack_to_stringE  s    
z'TestPackingToString.test_pack_to_stringN)r   r   r   ro   r   r   r   r   rn   D  s   rn   )rN   Zdjango.utils.translationr   r   Zunittestr   Ztelepathr   r   r   r   r	   r   r   r"   rI   rR   rT   rd   rh   rn   r   r   r   r   <module>   s$    ]"