o
    hU&                     @   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                   @      e Zd Zdd ZdS )Artistc                 C   
   || _ d S Nname)selfr    r   N/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/telepath/tests.py__init__
      
zArtist.__init__N)__name__
__module____qualname__r   r   r   r   r   r
   	       r
   c                   @      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)	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                   @      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   js_constructorr'   r   r   r   r   r#          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-   r0   )r   destinys_childr4   r5   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)pyramid_stageacoustic_stager$   r-   r0   )r   glastonburyr4   r5   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)_artistr.   _dictr$   r-   r0   )r   profiler4   r5   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   r1   r2   assertInstrmedia)r   dangerously_in_lover4   r5   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-ZrC   zEverything Is Lover   r$   r   r.   r/   _idr-   _refr   )r
   r   r   r1   r2   rD   rE   rF   )r   r3   jay_zdiscographyr4   r5   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,   r7   r8   zDestiny's ChildSurvivorr   r$   r-   r   )_listrJ   rK   r
   r   r   r1   r2   )r   r9   rM   r4   r5   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-CarterrC   r   r$   r   )_valrJ      rI   r-   rK   rQ   r   beyonce_namer3   rM   r4   r5   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,   rC   r   r$   rT   rI   r-   rK   rQ   rU   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 )NYesenr$   r-   frOui)r
   r   r   r   r1   r2   )r   yesr4   r5   r   r   r   test_lazy_translation_objects   s   

z)TestPacking.test_lazy_translation_objectsN)r   r   r   r6   r:   r>   rB   rH   rN   rR   rW   rX   r^   r   r   r   r   r+   $   s    "###r+   c                   @   r   )Arkc                 C   r   r   )animals)r   r`   r   r   r   r     r   zArk.__init__c                 C   s   t | jdd S )Nc                 S   s   | d S )Ntyper   )animalr   r   r   <lambda>  s    z%Ark.animals_by_type.<locals>.<lambda>)	itertoolsgroupbyr`   r   r   r   r   animals_by_type     zArk.animals_by_typeN)r   r   r   r   rg   r   r   r   r   r_          r_   c                   @   r"   )
ArkAdapter	boats.Arkc                 C   s
   |  gS r   )rg   r%   r   r   r   r'     r   zArkAdapter.js_argsNr(   r   r   r   r   rj     r*   rj   c                   @   r	   )TestIDCollisionsc                 C   s   dd t ddD }t }||}| t|d t|D ],\}}| |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ra   r   Nala %idogLady %iTramp %i)r_   ).0ir   r   r   
<listcomp>  s    zCTestIDCollisions.test_grouper_object_collisions.<locals>.<listcomp>r   d   rk   rm   rn   ro   rp   rq   rr   rs   r-   N)ranger   r1   r2   len	enumerate)r   arksr4   r5   ru   arkr   r   r   test_grouper_object_collisions  s   

z/TestIDCollisions.test_grouper_object_collisionsN)r   r   r   r}   r   r   r   r   rl     r   rl   c                   @   r   )
StringLikec                 C   s   |  | _d S r   )upperval)r   r   r   r   r   r   5  s   zStringLike.__init__c                 C   s   | j S r   )r   rf   r   r   r   __str__8  s   zStringLike.__str__N)r   r   r   r   r   r   r   r   r   r~   4  ri   r~   c                       s   e Zd Z fddZ  ZS )StringLikeAdapterc                    s   t  t||S r   )super
build_noderE   )r   r&   r    	__class__r   r   r   =  rh   zStringLikeAdapter.build_node)r   r   r   r   __classcell__r   r   r   r   r   <  s    r   c                   @   r	   )TestPackingToStringc                 C   s0   dt dg}t }||}| |ddg d S )Nzreal string
stringlike
STRINGLIKE)r~   r   r1   r2   )r   r   r4   r5   r   r   r   test_pack_to_stringE  s   
z'TestPackingToString.test_pack_to_stringN)r   r   r   r   r   r   r   r   r   D  r   r   )rd   django.utils.translationr   r   unittestr   telepathr   r   r   r   r
   r   r#   r+   r_   rj   rl   r~   r   r   r   r   r   r   <module>   s&     ]"