;
Ëâ"Ic               @   s”   d  Z  d d l Z d d l m Z d „  Z d „  Z d „  Z d „  Z Gd „  d	 e ƒ Z	 Gd
 „  d e j
 ƒ Z d „  Z e d k o e ƒ  n d S(   u9   Tests for binary operators on subtypes of built-in types.i    N(   u   supportc             C   s$   x |  o | |  |  }  } q W| S(   u1   Greatest common divisor using Euclid's algorithm.(    (   u   au   b(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   gcd   s     c             C   s   t  |  t ƒ p t  |  t ƒ S(   u5   Test whether an object is an instance of int or long.(   u
   isinstanceu   int(   u   x(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   isint   s    c             C   s6   x/ t  t  t t f D] } t |  | ƒ o d Sq Wd S(   uA   Test whether an object is an instance of a built-in numeric type.i   i    (   u   intu   floatu   complexu
   isinstance(   u   xu   T(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   isnum   s
     	c             C   s   t  |  t ƒ S(   u6   Test wheter an object is an instance of the Rat class.(   u
   isinstanceu   Rat(   u   x(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   isRat   s    c             B   s  |  Ee  Z d  Z d d g Z d d d „ Z d „  Z e e d ƒ Z d „  Z	 e e	 d ƒ Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z e Z d „  Z d „  Z d „  Z e Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   u:   Rational number implemented as a normalized pair of longs.u	   _Rat__numu	   _Rat__deni    i   c             C   s˜   t  | ƒ p t d | ƒ ‚ n t  | ƒ p t d | ƒ ‚ n | d k o t d ƒ ‚ n t | | ƒ } t | | ƒ |  _ t | | ƒ |  _ d S(   ud   Constructor: Rat([num[, den]]).

        The arguments must be ints or longs, and default to (0, 1).u&   Rat numerator must be int or long (%r)u(   Rat denominator must be int or long (%r)i    u   zero denominatorN(   u   isintu	   TypeErroru   ZeroDivisionErroru   gcdu   intu	   _Rat__numu	   _Rat__den(   u   selfu   numu   denu   g(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __init__!   s    c             C   s   |  j  S(   u7   Accessor function for read-only 'num' attribute of Rat.(   u	   _Rat__num(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   _get_num0   s    c             C   s   |  j  S(   u7   Accessor function for read-only 'den' attribute of Rat.(   u	   _Rat__den(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   _get_den5   s    c             C   s   d |  j  |  j f S(   u=   Convert a Rat to an string resembling a Rat constructor call.u   Rat(%d, %d)(   u	   _Rat__numu	   _Rat__den(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __repr__:   s    c             C   s   t  t |  ƒ ƒ S(   u=   Convert a Rat to a string resembling a decimal numeric value.(   u   stru   float(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __str__>   s    c             C   s   |  j  d |  j S(   u   Convert a Rat to a float.g      ð?(   u	   _Rat__numu	   _Rat__den(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu	   __float__B   s    c          
   C   sl   |  j  d k oB y t |  j ƒ SWqR t k
 o t d t |  ƒ ƒ ‚ YqR Xn t d t |  ƒ ƒ ‚ d S(   u,   Convert a Rat to an int; self.den must be 1.i   u   %s too large to convert to intu   can't convert %s to intN(   u	   _Rat__denu   intu	   _Rat__numu   OverflowErroru   repru
   ValueError(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __int__F   s    c             C   s8   |  j  d k o t |  j ƒ St d t |  ƒ ƒ ‚ d S(   u-   Convert a Rat to an long; self.den must be 1.i   u   can't convert %s to longN(   u	   _Rat__denu   intu	   _Rat__numu
   ValueErroru   repr(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __long__P   s    c             C   sz   t  | ƒ o t | ƒ } n t | ƒ o0 t |  j | j | j |  j |  j | j ƒ St | ƒ o t |  ƒ | St S(   u$   Add two Rats, or a Rat and a number.(   u   isintu   Ratu   isRatu	   _Rat__numu	   _Rat__denu   isnumu   floatu   NotImplemented(   u   selfu   other(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __add__V   s    c             C   sz   t  | ƒ o t | ƒ } n t | ƒ o0 t |  j | j | j |  j |  j | j ƒ St | ƒ o t |  ƒ | St S(   u)   Subtract two Rats, or a Rat and a number.(   u   isintu   Ratu   isRatu	   _Rat__numu	   _Rat__denu   isnumu   floatu   NotImplemented(   u   selfu   other(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __sub__c   s    c             C   sz   t  | ƒ o t | ƒ } n t | ƒ o0 t | j |  j |  j | j |  j | j ƒ St | ƒ o | t |  ƒ St S(   u9   Subtract two Rats, or a Rat and a number (reversed args).(   u   isintu   Ratu   isRatu	   _Rat__numu	   _Rat__denu   isnumu   floatu   NotImplemented(   u   selfu   other(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __rsub__n   s    c             C   st   t  | ƒ o" t |  j | j |  j | j ƒ St | ƒ o t |  j | |  j ƒ St | ƒ o t |  ƒ | St S(   u)   Multiply two Rats, or a Rat and a number.(   u   isRatu   Ratu	   _Rat__numu	   _Rat__denu   isintu   isnumu   floatu   NotImplemented(   u   selfu   other(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __mul__y   s    "c             C   st   t  | ƒ o" t |  j | j |  j | j ƒ St | ƒ o t |  j |  j | ƒ St | ƒ o t |  ƒ | St S(   u'   Divide two Rats, or a Rat and a number.(   u   isRatu   Ratu	   _Rat__numu	   _Rat__denu   isintu   isnumu   floatu   NotImplemented(   u   selfu   other(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __truediv__…   s    "c             C   st   t  | ƒ o" t | j |  j | j |  j ƒ St | ƒ o t | |  j |  j ƒ St | ƒ o | t |  ƒ St S(   u7   Divide two Rats, or a Rat and a number (reversed args).(   u   isRatu   Ratu	   _Rat__numu	   _Rat__denu   isintu   isnumu   floatu   NotImplemented(   u   selfu   other(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __rtruediv__   s    "c             C   sG   t  | ƒ o t | ƒ } n t | ƒ p t S|  | } | j | j S(   u.   Divide two Rats, returning the floored result.(   u   isintu   Ratu   isRatu   NotImplementedu	   _Rat__numu	   _Rat__den(   u   selfu   otheru   x(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __floordiv__™   s    
c             C   s   | |  } | j  | j S(   u>   Divide two Rats, returning the floored result (reversed args).(   u	   _Rat__numu	   _Rat__den(   u   selfu   otheru   x(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __rfloordiv__¢   s    
c             C   sK   t  | ƒ o t | ƒ } n t | ƒ p t S|  | } | |  | | f S(   u2   Divide two Rats, returning quotient and remainder.(   u   isintu   Ratu   isRatu   NotImplemented(   u   selfu   otheru   x(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu
   __divmod__§   s    
c             C   s<   t  | ƒ o t | ƒ } n t | ƒ p t St | |  ƒ S(   uB   Divide two Rats, returning quotient and remainder (reversed args).(   u   isintu   Ratu   isRatu   NotImplementedu   divmod(   u   selfu   other(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __rdivmod__°   s
    c             C   s   t  |  | ƒ d S(   u   Take one Rat modulo another.i   (   u   divmod(   u   selfu   other(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __mod__¸   s    c             C   s   t  | |  ƒ d S(   u,   Take one Rat modulo another (reversed args).i   (   u   divmod(   u   selfu   other(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __rmod__¼   s    c             C   s~   t  | ƒ o |  j d k o |  j | k St | ƒ o$ |  j | j k o |  j | j k St | ƒ o t |  ƒ | k St S(   u   Compare two Rats for equality.i   (   u   isintu	   _Rat__denu	   _Rat__numu   isRatu   isnumu   floatu   NotImplemented(   u   selfu   other(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __eq__À   s    $c             C   s   |  | k S(   u    Compare two Rats for inequality.(    (   u   selfu   other(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   __ne__Ê   s    N(    u   __name__u
   __module__u   __doc__u	   __slots__u   __init__u   _get_numu   propertyu   Noneu   numu   _get_denu   denu   __repr__u   __str__u	   __float__u   __int__u   __long__u   __add__u   __radd__u   __sub__u   __rsub__u   __mul__u   __rmul__u   __truediv__u   __rtruediv__u   __floordiv__u   __rfloordiv__u
   __divmod__u   __rdivmod__u   __mod__u   __rmod__u   __eq__u   __ne__(   u
   __locals__(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   Rat   s8   
						
					
	
	
									
u   Ratc             B   se   |  Ee  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 S(   u3   Unit tests for Rat class and its support utilities.c             C   s[  |  j  t d d ƒ d ƒ |  j  t d d ƒ d ƒ |  j  t d d ƒ d ƒ |  j  t d d ƒ d ƒ |  j  t d	 d ƒ d
 ƒ |  j  t d d
 ƒ d ƒ |  j  t d	 d
 ƒ d
 ƒ x¥ t d d ƒ D]” } x‹ t d d ƒ D]z } |  j t | | ƒ d k ƒ |  j t | | ƒ d k  ƒ |  j t | | ƒ d k ƒ |  j t | | ƒ d k  ƒ qÕ Wq¿ Wd  S(   Ni
   i   i   i   i   i   i   id   iöÿÿÿiþÿÿÿi   i    (   u   assertEqualu   gcdu   rangeu   assert_(   u   selfu   iu   j(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   test_gcdÑ   s      c             C   s  t  d d ƒ } |  j | j d ƒ |  j | j d ƒ t  d d ƒ } |  j | j d ƒ |  j | j d ƒ t  d d ƒ } |  j | j d ƒ |  j | j d ƒ t  d d ƒ } |  j | j d ƒ |  j | j d ƒ t  d d ƒ } |  j | j d ƒ |  j | j d ƒ t  d ƒ } |  j | j d ƒ |  j | j d	 ƒ y t  d	 d
 ƒ } Wn t k
 o Yn X|  j d ƒ xœ d d d d g  i  d  t  t f	 D]y } y t  | ƒ } Wn t k
 o Yn X|  j d | ƒ y t  d	 | ƒ } Wn t k
 o Yq”X|  j d | ƒ q”Wd  S(   Ni
   i   i   i   iñÿÿÿiþÿÿÿiöÿÿÿi   i   i    u(   Rat(1, 0) didn't raise ZeroDivisionErroru   0g        y                u   Rat(%r) didn't raise TypeErroru!   Rat(1, %r) didn't raise TypeError(    (	   u   Ratu   assertEqualu   numu   denu   ZeroDivisionErroru   failu   Noneu   unittestu	   TypeError(   u   selfu   au   bad(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   test_constructorà   sF    " c             C   s°   |  j  t d d ƒ t d d ƒ d ƒ |  j  t d d ƒ d t d d ƒ ƒ |  j  d t d d ƒ t d d ƒ ƒ |  j  d t d d ƒ d ƒ |  j  t d d ƒ d d ƒ d  S(   Ni   i   i   i   g      ð?g      ø?(   u   assertEqualu   Rat(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   test_add  s
    &&&c             C   s¹   |  j  t d d ƒ t d d ƒ t d d ƒ ƒ |  j  t d d ƒ d t d d ƒ ƒ |  j  d t d d ƒ t d d ƒ ƒ |  j  t d d ƒ d d	 ƒ |  j  d t d d ƒ d	 ƒ d  S(
   Ni   i   i   i   i
   i   i   g      ð?g      à?(   u   assertEqualu   Rat(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   test_sub  s
    /&&c             C   s§   |  j  t d d ƒ t d d ƒ t d d ƒ ƒ |  j  t d d ƒ d d ƒ |  j  d t d d ƒ d ƒ |  j  t d d ƒ d d ƒ |  j  d t d d ƒ d ƒ d  S(	   Ni   i   i   i   i
   i   g      à?g      ð?(   u   assertEqualu   Rat(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   test_mul  s
    /c             C   s¶   |  j  t d d ƒ t d d ƒ t d d ƒ ƒ |  j  t d d ƒ d t d d ƒ ƒ |  j  d t d ƒ t d d ƒ ƒ |  j  d t d	 d ƒ d
 ƒ |  j  t d	 d ƒ d d
 ƒ d  S(   Ni
   i   i   i   i   i	   i   g      @i   g      ø?(   u   assertEqualu   Rat(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   test_div  s
    /&#c             C   s~   |  j  t d ƒ t d ƒ d ƒ |  j  t d d ƒ t d d ƒ d ƒ |  j  t d ƒ d d ƒ |  j  d t d ƒ d ƒ d  S(   Ni
   i   i   i   (   u   assertEqualu   Rat(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   test_floordiv#  s     &c             C   s{   |  j  t d ƒ t d d ƒ ƒ |  j  t d ƒ d ƒ |  j  d t d ƒ ƒ |  j  t d ƒ d ƒ |  j  d t d ƒ ƒ d  S(   Ni
   i   i   g      $@(   u   assertEqualu   Rat(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   test_eq)  s
    c             C   sÌ   |  j  t d d ƒ t d d ƒ t d d ƒ ƒ |  j  t d d ƒ d t d d ƒ ƒ |  j  d t d ƒ t d d ƒ ƒ |  j  d t d	 d ƒ d
 ƒ |  j  t d	 d ƒ d d
 ƒ |  j  t d ƒ d ƒ d  S(   Ni
   i   i   i   i   i	   i   g      @i   g      ø?u   1/2g      à?(   u   assertEqualu   Ratu   eval(   u   self(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   test_true_div0  s    /&#N(   u   __name__u
   __module__u   __doc__u   test_gcdu   test_constructoru   test_addu   test_subu   test_mulu   test_divu   test_floordivu   test_equ   test_true_div(   u
   __locals__(    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   RatTestCaseÎ   s   
		'						u   RatTestCasec               C   s   t  j t ƒ d  S(   N(   u   supportu   run_unittestu   RatTestCase(    (    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu	   test_main:  s    u   __main__(   u   __doc__u   unittestu   testu   supportu   gcdu   isintu   isnumu   isRatu   objectu   Ratu   TestCaseu   RatTestCaseu	   test_mainu   __name__(    (    (    u,   /mit/python/lib/python3.0/test/test_binop.pyu   <module>   s   				³l	