ó
'![c           @   sÈ   d  Z  d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m Z d d l m	 Z	 e j
 d „  ƒ Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   s"   
 for the visitors.diadefs module
iÿÿÿÿN(   t   nodes(   t   bases(   t	   inspector(   t   get_projectc          C   s/   t  d d ƒ }  t j |  ƒ } | j |  ƒ |  S(   Nt   data(   R   R   t   Linkert   visit(   t   projectt   linker(    (    sG   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_inspector.pyR      s    c         C   s‚   |  j  d ƒ d } t | d ƒ s( t ‚ t | j ƒ d k sC t ‚ t | j d t j ƒ sb t ‚ | j d j d k s~ t ‚ d  S(   Ns   data.clientmodule_testt   Ancestort
   implementsi   i    t	   Interface(	   t
   get_modulet   hasattrt   AssertionErrort   lenR
   t
   isinstanceR    t   ClassDeft   name(   R   t   klass(    (    sG   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_inspector.pyt   test_class_implements   s
    c         C   sG   |  j  d ƒ d } t | d ƒ s( t ‚ t | j ƒ d k sC t ‚ d  S(   Ns   data.clientmodule_testt   SpecializationR
   i    (   R   R   R   R   R
   (   R   R   (    (    sG   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_inspector.pyt$   test_class_implements_specialization&   s    c         C   sé   |  j  d ƒ d } t | d ƒ s( t ‚ | j } t | ƒ d k sI t ‚ t | j ƒ  ƒ } | d d g k ss t ‚ t | d ƒ d k s t ‚ | d d j d	 k s¬ t ‚ t | d ƒ d k sÈ t ‚ | d d j d
 k så t ‚ d  S(   Ns   data.clientmodule_testR   t   locals_typei   t   TYPEt   topi   i    s   final classt   class(   R   R   R   R   R   t   sortedt   keyst   value(   R   R   t	   type_dictR   (    (    sG   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_inspector.pyt!   test_locals_assignment_resolution,   s    	c         C   sÛ   |  j  d ƒ d } t | d ƒ s( t ‚ | j } t | ƒ d k sI t ‚ t | j ƒ  ƒ } | d d g k ss t ‚ t | d d t j	 ƒ s t | d ƒ ‚ | d d j
 d k sº t ‚ | d d t j k s× t ‚ d  S(	   Ns   data.clientmodule_testR   t   instance_attrs_typei   t   _idt   relationi    t	   DoNothing(   R   R   R   R    R   R   R   R   R   t   InstanceR   t   astroidt   YES(   R   R   R   R   (    (    sG   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_inspector.pyt   test_instance_attrs_resolution9   s    	c          C   sM   t  j d ƒ }  t j |  ƒ } g  | D] } | j ^ q% d g k sI t ‚ d  S(   Nsv  
        class IMachin: pass

        class Correct2:
            """docstring"""
            __implements__ = (IMachin,)

        class BadArgument:
            """docstring"""
            __implements__ = (IMachin,)

        class InterfaceCanNowBeFound: #@
            """docstring"""
            __implements__ = BadArgument.__implements__ + Correct2.__implements__
    t   IMachin(   R%   t   extract_nodeR   t
   interfacesR   R   (   t   clsR*   t   i(    (    sG   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_inspector.pyt   test_concat_interfacesF   s    	c          C   sž   t  j d ƒ }  xˆ d d g f d d d g f d d d g f d d d g f f D]G \ } } |  | } g  t j | ƒ D] } | j ^ qu | k sO t ‚ qO Wd  S(   Nsw  
    class Interface(object): pass
    class MyIFace(Interface): pass
    class AnotherIFace(Interface): pass
    class Concrete0(object):
        __implements__ = MyIFace
    class Concrete1:                     
        __implements__ = (MyIFace, AnotherIFace)
    class Concrete2:
        __implements__ = (MyIFace, AnotherIFace)
    class Concrete23(Concrete1): pass
    t	   Concrete0t   MyIFacet	   Concrete1t   AnotherIFacet	   Concrete2t
   Concrete23(   R%   t   parseR   R*   R   R   (   t   moduleR   R*   R,   (    (    sG   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_inspector.pyt   test_interfacesZ   s    	
c         C   sL   t  j j d d d d ƒ } |  j d k s0 t ‚ |  j j | ƒ sH t ‚ d  S(   Nt   pylintt   testR   s   __init__.py(   t   ost   patht   joinR   R   t   endswith(   R   t   expected(    (    sG   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_inspector.pyt   test_from_directoryp   s    c         C   s1   d d d g } t  |  j ƒ  ƒ | k s- t ‚ d  S(   NR   s   data.clientmodule_tests   data.suppliermodule_test(   R   R   R   (   R   R=   (    (    sG   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_inspector.pyt   test_project_nodev   s    	(   t   __doc__R9   t   pytestR%   R    R   t   pylint.pyreverseR   t   unittest_pyreverse_writerR   t   fixtureR   R   R   R   R'   R-   R6   R>   R?   (    (    (    sG   lib/python2.7/site-packages/pylint/test/unittest_pyreverse_inspector.pyt   <module>	   s    							