ó
\K]c           @  s,  d  Z  d d l m Z d d l Z d d l j Z d d l m	 Z	 m
 Z
 d d l m Z d d l m Z m Z m Z m Z m Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e e f d „  ƒ  YZ e d k r(e j  ƒ  n  d S(   s   
Tests for enum support.
iÿÿÿÿ(   t   print_functionN(   t   jitt	   vectorizei   (   t   TestCase(   t   Colort   Shapet   Shaket   Planett   RequestErrorc         C  s(   |  | k |  | k |  | k |  | k	 f S(   N(    (   t   at   b(    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   compare_usecase   s    c         C  s   |  t  j k S(   N(   R   t   red(   R	   (    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   getattr_usecase   s    c         C  s   |  t  d k S(   s!   Lookup enum member by string nameR   (   R   (   R	   (    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   getitem_usecase   s    c         C  s(   |  t  j k | t j k | t j k f S(   N(   R   t   mintR   t   circleR   t   internal_error(   R	   R
   t   c(    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   identity_usecase   s    c           s   ‡  f d †  } | S(   Nc           s
   |  ˆ  k S(   N(    (   R	   (   t   const(    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   constant_usecase%   s    (    (   R   R   (    (   R   s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   make_constant_usecase$   s    c         C  s   | r
 |  S| S(   N(    (   R	   R
   t   pred(    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   return_usecase*   s    c         C  s)   |  t  j k r |  t  j S|  t j Sd  S(   N(   R   R   t	   not_foundR   R   (   t   x(    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   int_coerce_usecase.   s    c         C  s"   |  t  j k r t  d St  j Sd  S(   NR   (   R   R   t   dummy(   R   (    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   vectorize_usecase6   s    t   BaseEnumTestc           B  s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C  sO   t  } t d t ƒ | ƒ } x- |  j D]" } |  j | | Œ  | | Œ  ƒ q% Wd  S(   Nt   nopython(   R   R   t   Truet   pairst   assertPreciseEqual(   t   selft   pyfunct   cfunct   args(    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   test_compare?   s    c         C  ss   t  } t d t ƒ | ƒ } xQ |  j D]F } x= t t f D]/ } | | f } |  j | | Œ  | | Œ  ƒ q8 Wq% Wd S(   s5   
        Passing and returning enum members.
        R   N(   R   R   R    R!   t   Falset   assertIs(   R#   R$   R%   t   pairR   R&   (    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   test_returnF   s    c         C  sI   t  d t ƒ | ƒ } x- |  j D]" } |  j | | ƒ | | ƒ ƒ q Wd  S(   NR   (   R   R    t   valuesR"   (   R#   R$   R%   t   arg(    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   check_constant_usecaseR   s    c         C  s8   |  j  t ƒ |  j  t ƒ |  j  t |  j d ƒ ƒ d  S(   Ni    (   R.   R   R   R   R,   (   R#   (    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   test_constantX   s    (   t   __name__t
   __module__R'   R+   R.   R/   (    (    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyR   =   s   			t   TestEnumc           B  sz   e  Z d  Z e j e j g Z e j e j f e j e j f e j e j	 f e
 j e
 j f e
 j e
 j f g Z d „  Z RS(   s-   
    Tests for Enum classes and members.
    c         C  sS   t  } t d t ƒ | ƒ } t j t j t j f } |  j | | Œ  | | Œ  ƒ d S(   sE   
        Enum with equal values should not compare identical
        R   N(	   R   R   R    R   t   bluet   greenR   t   squareR"   (   R#   R$   R%   R&   (    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   test_identityl   s    (   R0   R1   t   __doc__R   R   R4   R,   R   R   t   vanillaR   t   VENUSt   MARSt   EARTHR!   R6   (    (    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyR2   ^   s   t   TestIntEnumc           B  st   e  Z d  Z e j e j g Z e j e j f e j e j f e j e j f e j	 e j f g Z
 d „  Z d „  Z RS(   s0   
    Tests for IntEnum classes and members.
    c         C  sU   t  } t d t ƒ | ƒ } x3 d d d g D]" } |  j | | ƒ | | ƒ ƒ q+ Wd  S(   NR   i,  iÂ  i&  (   R   R   R    R"   (   R#   R$   R%   R-   (    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   test_int_coerceƒ   s    c         C  s{   t  d t ƒ t ƒ } t j d d d d g ƒ } t j g  | D] } t | ƒ ^ q= d | j ƒ} |  j | | | ƒ ƒ d  S(   NR   i   i”  iô  t   dtype(   R   R    R   t   npt   arrayR>   R"   (   R#   R%   R-   t   it   sol(    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   test_vectorizeŠ   s    1(   R0   R1   R7   R   R   R5   R,   R   R   R   R!   R=   RC   (    (    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyR<   v   s   	t   __main__(!   R7   t
   __future__R    t   numpyR?   t   numba.unittest_supportt   unittest_supportt   unittestt   numbaR   R   t   supportR   t   enum_usecasesR   R   R   R   R   R   R   R   R   R   R   R   R   t   objectR   R2   R<   R0   t   main(    (    (    s5   lib/python2.7/site-packages/numba/tests/test_enums.pyt   <module>   s&   (								!