ó
'![c           @   sÎ   d  Z  d d l Z d d l Z d d l Z d d l m Z d d l Td d l m Z m	 Z	 d „  Z
 d „  Z e j d „  ƒ Z e j d	 d
 ƒ d „  ƒ Z d „  Z d e f d „  ƒ  YZ d „  Z d „  Z d S(   s1   
unit test for the extensions.diadefslib modules
iÿÿÿÿN(   t   Linker(   t   *(   t   Configt   get_projectc         C   s5   t  g  |  D]$ } t | j t j ƒ | j f ^ q
 ƒ S(   s   extract class names of a list(   t   sortedt
   isinstancet   nodet   astroidt   ClassDeft   title(   t   classest   c(    (    sE   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_diadefs.pyt   _process_classes   s    c         C   sg   g  } xP t  j |  ƒ D]? \ } } x0 | D]( } | j | | j j | j j f ƒ q) Wq W| j ƒ  | S(   s-   extract relation indices from a relation list(   t   sixt	   iteritemst   appendt   from_objectR	   t	   to_objectt   sort(   t	   relationst   resultt   rel_typet   relst   rel(    (    sE   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_diadefs.pyt   _process_relations   s    
c           C   s   t  t ƒ  ƒ S(   N(   t   DiadefsHandlerR   (    (    (    sE   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_diadefs.pyt   HANDLER*   s    t   scopet   modulec           C   s
   t  d ƒ S(   Nt   data(   R   (    (    (    sE   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_diadefs.pyt   PROJECT/   s    c         C   sÛ  t  t | ƒ |  ƒ } t ƒ  } d g | _ t  t | ƒ t | ƒ ƒ } d | j ƒ  k s] t ‚ t | j k sr t ‚ d | j ƒ  k sŠ t ‚ t	 | j k sŸ t ‚ xo | | g D]a } t	 | j
 _ t	 | j
 _ t	 | j
 _ | j ƒ  d	 | j ƒ  k sø t ‚ t	 | j k s¬ t ‚ q¬ Wt t ƒ  ƒ } t  t | ƒ | ƒ } t ƒ  } d g | _ t  t | ƒ t | ƒ ƒ } xo | | g D]a } d | j
 _ d | j
 _ t | j
 _ | j ƒ  d
 | j ƒ  k s¾t ‚ t | j k srt ‚ qrWd S(   s0   test for ancestor, associated and module optionst   Specializationi    iÿÿÿÿi   i   N(   i    i    (   iÿÿÿÿiÿÿÿÿ(   iÿÿÿÿiÿÿÿÿ(   i   i   (   t   DiaDefGeneratorR    R   R
   R   t   _get_levelst   AssertionErrort   Falset   module_namest   Truet   configt   all_ancestorst   all_associatedt   _set_default_optionst   show_ancestorst   show_associated(   R   R   t   df_ht	   cl_configt   cl_ht   hndlt   handler(    (    sE   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_diadefs.pyt   test_option_values4   s8    	
	
t   TestDefaultDiadefGeneratorc           B   s>   e  Z d  „  Z d d d d g Z d „  Z d	 „  Z d
 „  Z RS(   c         C   sX  t  t | ƒ | ƒ j | ƒ } t | ƒ d k s6 t ‚ g  | D] } | j ^ q= } | d d g k sj t ‚ | d } | j d k s‰ t ‚ t g  | j D]$ } t	 | j
 t j ƒ | j f ^ q– ƒ } | t d f t d f t d f g k sð t ‚ | d	 }	 |	 j d
 k st ‚ t |	 j ƒ }
 |
 t d f t d f t d f t d f g k sTt ‚ d  S(   Ni   t   packaget   classi    s   packages No NameR   s   data.clientmodule_tests   data.suppliermodule_testi   s   classes No Namet   Ancestort	   DoNothingt	   InterfaceR   (   t   DefaultDiadefGeneratorR    t   visitt   lenR"   t   TYPER	   R   t   objectsR   R   R   t   ModuleR%   R   (   t   selfR   R   t   ddt   dt   keyst   pdt   mt   modulest   cdR
   (    (    sE   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_diadefs.pyt   test_known_values1X   s$    
4	
		t   associationR6   R5   R   t
   implementsR7   t   specializationc         C   sT   t  t | ƒ | ƒ j | ƒ d } | j ƒ  t | j ƒ } | |  j k sP t ‚ d S(   s&   test extract_relations between classesi   N(   R8   R    R9   t   extract_relationshipsR   t   relationshipst   _should_relsR"   (   R>   R   R   RE   R   (    (    sE   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_diadefs.pyt   test_exctract_relationsp   s    "
c         C   sk   t  d ƒ } t t ƒ  ƒ } | j | t | d t ƒƒ } | d } t | j ƒ } | |  j k sg t	 ‚ d S(   s`   functional test of relations extraction;
        different classes possibly in different modulesR   t   tagi   N(
   R   R   R   t   get_diadefsR    R%   R   RK   RL   R"   (   R>   t   projectR0   t   diadefsRE   R   (    (    sE   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_diadefs.pyt#   test_functional_relation_extractionw   s    
c         C   sÉ   t  d ƒ } t t | ƒ | ƒ j | ƒ } t | ƒ d k sB t ‚ g  | D] } | j ^ qI } | d g k ss t ‚ | d } | j d k s’ t ‚ t | j	 ƒ } | t
 d f t
 d f g k sÅ t ‚ d  S(   Ns   data.clientmodule_testi   R4   i    s   classes No NameR5   R   (   R   R8   R    R9   R:   R"   R;   R	   R   R<   R%   (   R>   R   RP   R?   R@   RA   RE   R
   (    (    sE   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_diadefs.pyt   test_known_values2ƒ   s    
(   RG   R6   R5   (   RG   R6   R   (   RH   R5   R7   (   RI   R   R5   (   t   __name__t
   __module__RF   RL   RM   RR   RS   (    (    (    sE   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_diadefs.pyR2   W   s   				c         C   s‘   d g |  j  _ t t | ƒ |  ƒ } d } | j | | ƒ } | j | k sQ t ‚ t | j ƒ } | t	 d f t	 | f t	 d f g k s t ‚ d  S(   NR   s%   data.clientmodule_test.Specializations   data.clientmodule_test.Ancestors"   data.suppliermodule_test.DoNothing(
   R&   R
   t   ClassDiadefGeneratorR    t   class_diagramR	   R"   R   R<   R%   (   R   R   t   cdgt   specialRE   R
   (    (    sE   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_diadefs.pyRF      s    	c         C   s‘   d g |  j  _ t |  j  _ t t | ƒ |  ƒ j | d ƒ } | j d k sQ t ‚ t	 | j
 ƒ } | t d f t d f t d f g k s t ‚ d  S(   NR   s%   data.clientmodule_test.SpecializationR5   R6   (   R&   R
   R#   R$   RV   R    RW   R	   R"   R   R<   R%   (   R   R   RE   R
   (    (    sE   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_diadefs.pyRS   œ   s    !	(   t   __doc__R   t   pytestR   t   pylint.pyreverse.inspectorR    t   pylint.pyreverse.diadefslibt   unittest_pyreverse_writerR   R   R   R   t   fixtureR   R   R1   t   objectR2   RF   RS   (    (    (    sE   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_diadefs.pyt   <module>   s   
			#9	