ó
¬«Y]c           @@  sú  d  d l  m Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  e j d <d e j k rq e j d =n  d  d l Z	 e j d =e j d =d  d l Z
 d e f d „  ƒ  YZ d	 e j f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e j f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d d& d „  ƒ  YZ d d' d „  ƒ  YZ d d( d „  ƒ  YZ d e j f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d  „  ƒ  YZ d! Z i e d" 6Z d d# „ Z e d$ k röe d% e ƒ n  d S()   i    (   t   absolute_importN(   t   test_support(   t   UserListt   _bisectt   bisectt   Rangec           B@  s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   sE   A trivial xrange()-like object without any integer width limitations.c         C@  s   | |  _  | |  _ d  |  _ d  S(   N(   t   startt   stopt   Nonet   last_insert(   t   selfR   R   (    (    s!   lib/python2.7/test/test_bisect.pyt   __init__   s    		c         C@  s   |  j  |  j S(   N(   R   R   (   R
   (    (    s!   lib/python2.7/test/test_bisect.pyt   __len__"   s    c         C@  sO   |  j  |  j } | d k  r) | | 7} n  | | k rD t | ƒ ‚ n  |  j | S(   Ni    (   R   R   t
   IndexError(   R
   t   idxt   n(    (    s!   lib/python2.7/test/test_bisect.pyt   __getitem__%   s    c         C@  s   | | f |  _  d  S(   N(   R	   (   R
   R   t   item(    (    s!   lib/python2.7/test/test_bisect.pyt   insert-   s    (   t   __name__t
   __module__t   __doc__R   R   R   R   (    (    (    s!   lib/python2.7/test/test_bisect.pyR      s
   			t
   TestBisectc           B@  sb   e  Z d
 Z d  „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z	 d „  Z
 d „  Z d	 „  Z RS(   c      X   C@  su
  |  j  j g  d d f |  j  j d g d d f |  j  j d g d d f |  j  j d g d d f |  j  j d d g d d f |  j  j d d g d d f |  j  j d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d d g d d f |  j  j d d d d g d d f |  j  j d d d d g d d f |  j  j d d g d d f |  j  j d d g d d f |  j  j d d g d d f |  j  j d d g d d f |  j  j d d g d d f |  j  j d d d d g d d f |  j  j d d d d g d d f |  j  j d d d d g d d f |  j  j d d d d g d d f |  j  j d d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d d d d d d d d g
 d d f |  j  j d d d d d d d d d d g
 d d f |  j  j d d d d d d d d d d g
 d d f |  j  j d d d d d d d d d d g
 d d f |  j  j d d d d d d d d d d g
 d d f |  j  j d d d d d d d d d d g
 d d f |  j  j d d d d d d d d d d g
 d	 d f |  j  j d d d d d d d d d d g
 d d
 f |  j  j d d d d d d d d d d g
 d d
 f |  j  j g  d d f |  j  j d g d d f |  j  j d g d d f |  j  j d g d d f |  j  j d d g d d f |  j  j d d g d d f |  j  j d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d d g d d f |  j  j d d d d g d d f |  j  j d d d d g d d f |  j  j d d g d d f |  j  j d d g d d f |  j  j d d g d d f |  j  j d d g d d f |  j  j d d g d d f |  j  j d d d d g d d f |  j  j d d d d g d d f |  j  j d d d d g d d f |  j  j d d d d g d d f |  j  j d d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d g d d f |  j  j d d d d d d d d d d g
 d d f |  j  j d d d d d d d d d d g
 d d f |  j  j d d d d d d d d d d g
 d d f |  j  j d d d d d d d d d d g
 d d f |  j  j d d d d d d d d d d g
 d d f |  j  j d d d d d d d d d d g
 d d f |  j  j d d d d d d d d d d g
 d	 d f |  j  j d d d d d d d d d d g
 d d f |  j  j d d d d d d d d d d g
 d d
 f gN |  _ d  S(   Ni   i    i   i   i   g      ø?g      @i   g      @i
   i   (   t   modulet   bisect_rightt   bisect_leftt   precomputedCases(   R
   (    (    s!   lib/python2.7/test/test_bisect.pyt   setUp4   sœ    !!!!!!!!333333333!!!!!!!!33333333c         C@  s\   xU |  j  D]J \ } } } } |  j | | | ƒ | ƒ |  j | t | ƒ | ƒ | ƒ q
 Wd  S(   N(   R   t   assertEqualR   (   R
   t   funct   datat   elemt   expected(    (    s!   lib/python2.7/test/test_bisect.pyt   test_precomputed‡   s    c         C@  s¹   |  j  } |  j t | j d d d g d d d ƒ f |  j t | j d d d g d d d ƒ f |  j t | j d d d g d d d ƒ f |  j t | j d d d g d d d ƒ f d  S(   Ni   i   i   i   iÿÿÿÿ(   R   t   assertRaisest
   ValueErrorR   R   t   insort_leftt   insort_right(   R
   t   mod(    (    s!   lib/python2.7/test/test_bisect.pyt   test_negative_loŒ   s
    	+++c         C@  sï   |  j  } t j } y t | d ƒ } Wn t k
 rF |  j d ƒ n X|  j | j | | d ƒ | d ƒ |  j | j | | d ƒ | d ƒ |  j | j | | d | d | ƒ | d ƒ |  j | j | | d | d | ƒ | d ƒ d  S(   Ni   s4   can't create a xrange() object of size `sys.maxsize`i   i   i
   (	   R   t   syst   maxsizet   xranget   OverflowErrort   skipTestR   R   R   (   R
   R&   R   R   (    (    s!   lib/python2.7/test/test_bisect.pyt   test_large_range”   s    		$$.c         C@  sS  |  j  } t j } t d | d ƒ } |  j | j | | d ƒ | d ƒ |  j | j | | d ƒ | d ƒ |  j | j | | d | d | ƒ | d ƒ |  j | j | | d | d | ƒ | d ƒ | d } | j | | | d | d ƒ |  j | j | | f ƒ | d } | j	 | | | d | d ƒ |  j | j | d | f ƒ d  S(	   Ni    i   i   i   i
   id   i2   iÈ   (
   R   R(   R)   R   R   R   R   R$   R	   R%   (   R
   R&   R   R   t   x(    (    s!   lib/python2.7/test/test_bisect.pyt   test_large_pyrange¡   s    		$$..

i   c         C@  sI  d d l  m } x2t | ƒ D]$} g  t | ƒ D] } | d | d ƒ ^ q0 } | j ƒ  | d | d ƒ } |  j j | | ƒ } | t | ƒ k  r¬ |  j | | | k ƒ n  | d k rÖ |  j | | d | k  ƒ n  |  j j | | ƒ } | t | ƒ k  r|  j | | | k  ƒ n  | d k r |  j | | d | k ƒ q q Wd  S(   Ni    (   t	   randrangei   iÿÿÿÿi   (	   t   randomR0   R*   t   sortR   R   t   lent
   assertTrueR   (   R
   R   R0   t   it   jR   R   t   ip(    (    s!   lib/python2.7/test/test_bisect.pyt   test_random±   s    +
c      
   C@  sÁ  xº|  j  D]¯\ } } } } xšt d ƒ D]Œ} t t | ƒ | ƒ } xnt d d ƒ D]]} t t | ƒ | ƒ } | | | | | ƒ } |  j | | k o¡ | k n ƒ | |  j j k rß | | k  rß |  j | | | k ƒ n  | |  j j k r| | k r|  j | | d | k  ƒ n  | |  j j k rS| | k  rS|  j | | | k  ƒ n  | |  j j k r| | k r|  j | | d | k ƒ n  |  j | t	 | t | | ƒ ƒ ƒ qT Wq) Wq
 Wd  S(   Ni   i   i   i   (
   R   R*   t   minR3   R4   R   R   R   R   t   max(   R
   R   R   R   R    t   lot   hiR7   (    (    s!   lib/python2.7/test/test_bisect.pyt   test_optionalSlicingÂ   s     #c         C@  s    |  j  |  j j |  j j ƒ d  S(   N(   R   R   R   R   (   R
   (    (    s!   lib/python2.7/test/test_bisect.pyt   test_backcompatibilityÔ   s    c      
   C@  sC  d d d d d g } |  j  |  j j d | d d d	 d
 d d ƒ d ƒ |  j  |  j j d | d d d	 d
 d d ƒ d ƒ |  j  |  j j d | d d d	 d
 d d ƒ d ƒ |  j j d | d d d	 d
 d d ƒ |  j j d | d d d	 d
 d d ƒ |  j j d | d d d	 d
 d d ƒ |  j  | d d d d d d d d g ƒ d  S(   Ni
   i   i   i(   i2   t   aR.   i   R;   i   R<   i   i   (   R   R   R   R   R   R$   R%   t   insort(   R
   R   (    (    s!   lib/python2.7/test/test_bisect.pyt   test_keyword_args×   s    111%%%N(   R   R   R   R   R   R!   R'   R-   R/   R8   R=   R>   RA   (    (    (    s!   lib/python2.7/test/test_bisect.pyR   1   s   	S						t   TestBisectPythonc           B@  s   e  Z e Z RS(    (   R   R   t	   py_bisectR   (    (    (    s!   lib/python2.7/test/test_bisect.pyRB   á   s   t   TestBisectCc           B@  s   e  Z e Z RS(    (   R   R   t   c_bisectR   (    (    (    s!   lib/python2.7/test/test_bisect.pyRD   ä   s   t
   TestInsortc           B@  s,   e  Z d Z d  d „ Z d „  Z d „  Z RS(   iô  c         C@  sž   d d l  m } x‡ t ƒ  t ƒ  f D]s } xT t | ƒ D]F } | d ƒ } | d k rc |  j j } n |  j j } | | | ƒ q6 W|  j t	 | ƒ | ƒ q# Wd  S(   Ni    (   t   choicet
   0123456789t   02468(
   R1   RG   t   listR   R*   R   R$   R%   R   t   sorted(   R
   R   RG   t   insortedR5   t   digitt   f(    (    s!   lib/python2.7/test/test_bisect.pyt   test_vsBuiltinSortì   s    c         C@  s    |  j  |  j j |  j j ƒ d  S(   N(   R   R   R@   R%   (   R
   (    (    s!   lib/python2.7/test/test_bisect.pyR>   ø   s    c         C@  sb   d t  f d „  ƒ  Y} | ƒ  } |  j j | d ƒ |  j j | d ƒ |  j d d g | j ƒ d  S(   Nt   Listc           B@  s   e  Z g  Z d  „  Z RS(   c         S@  s   |  j  j | | ƒ d  S(   N(   R   R   (   R
   t   indexR   (    (    s!   lib/python2.7/test/test_bisect.pyR   þ   s    (   R   R   R   R   (    (    (    s!   lib/python2.7/test/test_bisect.pyRP   ü   s   i
   i   (   RJ   R   R$   R%   R   R   (   R
   RP   t   lst(    (    s!   lib/python2.7/test/test_bisect.pyt   test_listDerivedû   s
    	N(   R   R   R   R   RO   R>   RS   (    (    (    s!   lib/python2.7/test/test_bisect.pyRF   é   s   	t   TestInsortPythonc           B@  s   e  Z e Z RS(    (   R   R   RC   R   (    (    (    s!   lib/python2.7/test/test_bisect.pyRT     s   t   TestInsortCc           B@  s   e  Z e Z RS(    (   R   R   RE   R   (    (    (    s!   lib/python2.7/test/test_bisect.pyRU   	  s   t   LenOnlyc           B@  s   e  Z d  Z d „  Z RS(   s:   Dummy sequence class defining __len__ but not __getitem__.c         C@  s   d S(   Ni
   (    (   R
   (    (    s!   lib/python2.7/test/test_bisect.pyR     s    (   R   R   R   R   (    (    (    s!   lib/python2.7/test/test_bisect.pyRV     s   t   GetOnlyc           B@  s   e  Z d  Z d „  Z RS(   s:   Dummy sequence class defining __getitem__ but not __len__.c         C@  s   d S(   Ni
   (    (   R
   t   ndx(    (    s!   lib/python2.7/test/test_bisect.pyR     s    (   R   R   R   R   (    (    (    s!   lib/python2.7/test/test_bisect.pyRW     s   t   CmpErrc           B@  s   e  Z d  Z d „  Z RS(   s;   Dummy element that always raises an error during comparisonc         C@  s
   t  ‚ d  S(   N(   t   ZeroDivisionError(   R
   t   other(    (    s!   lib/python2.7/test/test_bisect.pyt   __cmp__  s    (   R   R   R   R\   (    (    (    s!   lib/python2.7/test/test_bisect.pyRY     s   t   TestErrorHandlingc           B@  s;   e  Z d Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C@  sO   xH |  j  j |  j  j |  j  j |  j  j f D] } |  j t | d d ƒ q+ Wd  S(   Ni
   (   R   R   R   R$   R%   R"   t	   TypeError(   R
   RN   (    (    s!   lib/python2.7/test/test_bisect.pyt   test_non_sequence!  s    c         C@  sR   xK |  j  j |  j  j |  j  j |  j  j f D] } |  j t | t ƒ  d ƒ q+ Wd  S(   Ni
   (   R   R   R   R$   R%   R"   t   AttributeErrorRV   (   R
   RN   (    (    s!   lib/python2.7/test/test_bisect.pyt   test_len_only&  s    c         C@  sR   xK |  j  j |  j  j |  j  j |  j  j f D] } |  j t | t ƒ  d ƒ q+ Wd  S(   Ni
   (   R   R   R   R$   R%   R"   R`   RW   (   R
   RN   (    (    s!   lib/python2.7/test/test_bisect.pyt   test_get_only+  s    c         C@  sg   t  ƒ  t  ƒ  t  ƒ  g } xH |  j j |  j j |  j j |  j j f D] } |  j t | | d ƒ qC Wd  S(   Ni
   (   RY   R   R   R   R$   R%   R"   RZ   (   R
   t   seqRN   (    (    s!   lib/python2.7/test/test_bisect.pyt   test_cmp_err0  s    c         C@  sL   xE |  j  j |  j  j |  j  j |  j  j f D] } |  j t | d ƒ q+ Wd  S(   Ni
   (   R   R   R   R$   R%   R"   R^   (   R
   RN   (    (    s!   lib/python2.7/test/test_bisect.pyt   test_arg_parsing6  s    N(	   R   R   R   R   R_   Ra   Rb   Rd   Re   (    (    (    s!   lib/python2.7/test/test_bisect.pyR]     s   				t   TestErrorHandlingPythonc           B@  s   e  Z e Z RS(    (   R   R   RC   R   (    (    (    s!   lib/python2.7/test/test_bisect.pyRf   ;  s   t   TestErrorHandlingCc           B@  s   e  Z e Z RS(    (   R   R   RE   R   (    (    (    s!   lib/python2.7/test/test_bisect.pyRg   >  s   s_  
Example from the Library Reference:  Doc/library/bisect.rst

The bisect() function is generally useful for categorizing numeric data.
This example uses bisect() to look up a letter grade for an exam total
(say) based on a set of ordered numeric breakpoints: 85 and up is an `A',
75..84 is a `B', etc.

    >>> grades = "FEDCBA"
    >>> breakpoints = [30, 44, 66, 75, 85]
    >>> from bisect import bisect
    >>> def grade(total):
    ...           return grades[bisect(breakpoints, total)]
    ...
    >>> grade(66)
    'C'
    >>> map(grade, [33, 99, 77, 44, 12, 88])
    ['E', 'A', 'B', 'D', 'F', 'A']

t
   libreftestc         C@  sÃ   d d l  m } t t t t t t g } t j	 | Œ  t j
 | |  ƒ |  r¿ t t d ƒ r¿ d d  l } d  g d } xA t t | ƒ ƒ D]- } t j	 | Œ  | j ƒ  t j ƒ  | | <q† W| GHn  d  S(   Ni    (   t   test_bisectt   gettotalrefcounti   (   t   testRi   RB   RD   RT   RU   Rf   Rg   R   t   run_unittestt   run_doctestt   hasattrR(   t   gcR   R*   R3   t   collectRj   (   t   verboseRi   t   test_classesRo   t   countsR5   (    (    s!   lib/python2.7/test/test_bisect.pyt	   test_main\  s    
t   __main__Rq   (    (    (    (    t
   __future__R    R(   t   unittestRk   R   R   t   modulesR   RC   RE   t   objectR   t   TestCaseR   RB   RD   RF   RT   RU   RV   RW   RY   R]   Rf   Rg   Rh   t   __test__R   Rt   R   t   True(    (    (    s!   lib/python2.7/test/test_bisect.pyt   <module>   s:   

°