a
    Dg(                     @   s   d dl Z d dlmZ d dlmZmZmZ G dd dZG dd dZG dd	 d	eZ	ee	 e 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)TestCase)Adapter	JSContextregisterc                   @   s   e Zd Zdd ZdS )Artistc                 C   s
   || _ d S Nname)selfr	    r   Z/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/tests/test_telepath.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S )Albumc                 C   s   || _ || _d S r   titleartists)r
   r   r   r   r   r   r      s    zAlbum.__init__Nr   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   js_constructorr   r   r   r   r   r      s   r   c                   @   s&   e Zd ZdZdd ZG dd dZdS )AlbumAdaptermusic.Albumc                 C   s   |j |jgS r   r   r   r   r   r   r       s    zAlbumAdapter.js_argsc                   @   s   e Zd ZdgZdS )zAlbumAdapter.Mediamusic_player.jsN)r   r   r   Zjsr   r   r   r   Media#   s   r    N)r   r   r   r   r   r    r   r   r   r   r      s   r   c                   @   sT   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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_list2   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_dictD   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_wordsS   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_packinge   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_references~   s2    



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   s<    


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   s6    


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   s4    


zCTestPacking.test_avoid_primitive_value_references_for_short_stringsN)r   r   r   r,   r0   r1   r3   r8   r=   r?   rB   rC   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
   rE   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groupbyrE   )r
   r   r   r   animals_by_type!  s    zArk.animals_by_typeN)r   r   r   r   rK   r   r   r   r   rD     s   rD   c                   @   s   e Zd ZdZdd ZdS )
ArkAdapter	boats.Arkc                 C   s
   |  gS r   )rK   r   r   r   r   r   (  s    zArkAdapter.js_argsNr   r   r   r   r   rL   %  s   rL   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rF   r	   Nala %idogLady %iTramp %i)rD   ).0ir   r   r   
<listcomp>8  s   	zCTestIDCollisions.test_grouper_object_collisions.<locals>.<listcomp>r   d   rM   rO   rP   rQ   rR   rS   rT   rU   r#   N)ranger   r'   r(   len	enumerate)r
   Zarksr*   r+   rW   Zarkr   r   r   test_grouper_object_collisions0  s0    	
z/TestIDCollisions.test_grouper_object_collisionsN)r   r   r   r]   r   r   r   r   rN   /  s   rN   )rI   Zdjango.testr   Zwagtail.telepathr   r   r   r   r   r   r   r!   rD   rL   rN   r   r   r   r   <module>   s   
 t