o
    b                     @   s   d Z ddlZddlZddlmZ ddlT ddlmZmZ dd Z	dd	 Z
ejd
d Zejdddd Zdd ZG dd deZdd Zdd ZdS )z1
unit test for the extensions.diadefslib modules
    N)Linker)*)Configget_projectc                 C   s   t dd | D S )zextract class names of a listc                 S       g | ]}t |jtj|jfqS  )
isinstancenodeastroidClassDeftitle).0cr   r   e/var/www/secure340b-portal/env/lib/python3.10/site-packages/pylint/test/unittest_pyreverse_diadefs.py
<listcomp>        z$_process_classes.<locals>.<listcomp>)sorted)classesr   r   r   _process_classes   s   r   c                 C   sD   g }|   D ]\}}|D ]}|||jj|jjf qq|  |S )z-extract relation indices from a relation list)itemsappendZfrom_objectr   Z	to_objectsort)	relationsresultZrel_typeZrelsrelr   r   r   _process_relations   s   r   c                   C   s
   t t S )N)DiadefsHandlerr   r   r   r   r   HANDLER)   s   
r   module)scopec                   C   s   t dS )Ndata)r   r   r   r   r   PROJECT.   s   r!   c                 C   s>  t t|| }t }dg|_t t|t|}d| ksJ d|jks&J d| ks.J d|jks5J ||fD ]!}d|j_d|j_	d|j_|
  d| ksSJ d|jksZJ q9tt }t t||}t }dg|_t t|t|}||fD ]!}d|j_d|j_d|j_|
  d| ksJ d|jksJ q{d	S )
z0test for ancestor, associated and module optionsSpecialization)r   r   F)r#   T      )r$   r%   N)ZDiaDefGeneratorr   r   r   r   Z_get_levelsmodule_namesconfigZall_ancestorsZall_associatedZ_set_default_optionsZshow_ancestorsZshow_associated)r   r!   Zdf_hZ	cl_configZcl_hZhndlhandlerr   r   r   test_option_values3   s8   
r)   c                   @   s4   e Zd Zdd Zg dZdd Zdd Zdd	 Zd
S )TestDefaultDiadefGeneratorc           	      C   s   t t|||}t|dksJ dd |D }|ddgks!J |d }|jdks,J tdd |jD }|g d	ks>J |d
 }|jdksIJ t|j}|g dksVJ d S )Nr$   c                 S      g | ]}|j qS r   ZTYPEr   dr   r   r   r   [       zATestDefaultDiadefGenerator.test_known_values1.<locals>.<listcomp>packageclassr   zpackages No Namec                 S   r   r   )r   r	   r
   Moduler   )r   mr   r   r   r   `   r   ))Tr    )Tdata.clientmodule_test)Tzdata.suppliermodule_testr%   classes No Name)TAncestorT	DoNothing)T	InterfaceTr"   )DefaultDiadefGeneratorr   visitlenr   r   objectsr   )	selfr   r!   ddkeyspdmodulescdr   r   r   r   test_known_values1X   s   
z-TestDefaultDiadefGenerator.test_known_values1))associationr9   r7   )rG   r9   r"   )Z
implementsr7   r:   )Zspecializationr"   r7   c                 C   s<   t t|||d }|  t|j}|| jksJ dS )z&test extract_relations between classesr%   N)r<   r   r=   Zextract_relationshipsr   relationships_should_rels)r@   r   r!   rE   r   r   r   r   test_exctract_relationsx   s   
z2TestDefaultDiadefGenerator.test_exctract_relationsc                 C   sJ   t d}tt }||t|dd}|d }t|j}|| jks#J dS )z`functional test of relations extraction;
        different classes possibly in different modulesr    T)tagr%   N)r   r   r   Zget_diadefsr   r   rH   rI   )r@   projectr(   ZdiadefsrE   r   r   r   r   #test_functional_relation_extraction   s   

z>TestDefaultDiadefGenerator.test_functional_relation_extractionc                 C   s|   t d}tt|||}t|dksJ dd |D }|dgks$J |d }|jdks/J t|j}|dd	gks<J d S )
Nr4   r%   c                 S   r+   r   r,   r-   r   r   r   r      r/   zATestDefaultDiadefGenerator.test_known_values2.<locals>.<listcomp>r1   r   r5   r6   r;   )r   r<   r   r=   r>   r   r   r?   )r@   r   rL   rA   rB   rE   r   r   r   r   test_known_values2   s   
z-TestDefaultDiadefGenerator.test_known_values2N)__name__
__module____qualname__rF   rI   rJ   rM   rN   r   r   r   r   r*   W   s    r*   c                 C   sZ   dg| j _tt|| }d}|||}|j|ksJ t|j}|dd|fdgks+J d S )Nr"   %data.clientmodule_test.Specialization)Tzdata.clientmodule_test.AncestorT)Tz"data.suppliermodule_test.DoNothing)r'   r   ClassDiadefGeneratorr   class_diagramr   r   r?   )r   r!   ZcdgZspecialrE   r   r   r   r   rF      s   

rF   c                 C   sT   dg| j _d| j _tt|| |d}|jdksJ t|j}|g dks(J d S )Nr"   FrR   )r6   r8   r;   )	r'   r   r&   rS   r   rT   r   r   r?   )r   r!   rE   r   r   r   r   rN      s   

rN   )__doc__Zpytestr
   Zpylint.pyreverse.inspectorr   Zpylint.pyreverse.diadefslibZunittest_pyreverse_writerr   r   r   r   Zfixturer   r!   r)   objectr*   rF   rN   r   r   r   r   <module>   s    



$@