Ñò
à"Ic           @   s    d  Z  d d k Z d d k l Z d „  Z d „  Z d „  Z d „  Z d e f d	 „  ƒ  YZ	 d
 e i
 f d „  ƒ  YZ d Z d „  Z e d j o e ƒ  n d S(   s9   Tests for binary operators on subtypes of built-in types.iÿÿÿÿN(   t   test_supportc         C   s$   x |  o | |  |  }  } q W| S(   s1   Greatest common divisor using Euclid's algorithm.(    (   t   at   b(    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   gcd   s     c         C   s   t  |  t ƒ p t  |  t ƒ S(   s5   Test whether an object is an instance of int or long.(   t
   isinstancet   intt   long(   t   x(    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   isint   s    c         C   s6   x/ t  t t t f D] } t |  | ƒ o d Sq Wd S(   sA   Test whether an object is an instance of a built-in numeric type.i   i    (   R   R   t   floatt   complexR   (   R   t   T(    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   isnum   s
     	c         C   s   t  |  t ƒ S(   s6   Test wheter an object is an instance of the Rat class.(   R   t   Rat(   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   isRat   s    R   c           B   s  e  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 e Z d „  Z e Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! RS(   s:   Rational number implemented as a normalized pair of longs.t	   _Rat__numt	   _Rat__denl    l    c         C   s   t  | ƒ p t d | ‚ n t  | ƒ p t d | ‚ n | d j o t d ‚ n t | | ƒ } t | | ƒ |  _ t | | ƒ |  _ d S(   sd   Constructor: Rat([num[, den]]).

        The arguments must be ints or longs, and default to (0, 1).s&   Rat numerator must be int or long (%r)s(   Rat denominator must be int or long (%r)i    s   zero denominatorN(   R   t	   TypeErrort   ZeroDivisionErrorR   R   R   R   (   t   selft   numt   dent   g(    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __init__!   s    c         C   s   |  i  S(   s7   Accessor function for read-only 'num' attribute of Rat.(   R   (   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   _get_num0   s    c         C   s   |  i  S(   s7   Accessor function for read-only 'den' attribute of Rat.(   R   (   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   _get_den5   s    c         C   s   d |  i  |  i f S(   s=   Convert a Rat to an string resembling a Rat constructor call.s   Rat(%d, %d)(   R   R   (   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __repr__:   s    c         C   s   t  t |  ƒ ƒ S(   s=   Convert a Rat to a string resembling a decimal numeric value.(   t   strR	   (   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __str__>   s    c         C   s   |  i  d |  i S(   s   Convert a Rat to a float.g      ð?(   R   R   (   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt	   __float__B   s    c         C   se   |  i  d j o> y t |  i ƒ SWqN t j
 o t d t |  ƒ ‚ qN Xn t d t |  ƒ ‚ d S(   s,   Convert a Rat to an int; self.den must be 1.i   s   %s too large to convert to ints   can't convert %s to intN(   R   R   R   t   OverflowErrort   reprt
   ValueError(   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __int__F   s    c         C   s5   |  i  d j o t |  i ƒ St d t |  ƒ ‚ d S(   s-   Convert a Rat to an long; self.den must be 1.i   s   can't convert %s to longN(   R   R   R   R    R   (   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __long__P   s    c         C   sz   t  | ƒ o t | ƒ } n t | ƒ o0 t |  i | i | i |  i |  i | i ƒ St | ƒ o t |  ƒ | St S(   s$   Add two Rats, or a Rat and a number.(   R   R   R   R   R   R   R	   t   NotImplemented(   R   t   other(    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __add__V   s    c         C   sz   t  | ƒ o t | ƒ } n t | ƒ o0 t |  i | i | i |  i |  i | i ƒ St | ƒ o t |  ƒ | St S(   s)   Subtract two Rats, or a Rat and a number.(   R   R   R   R   R   R   R	   R#   (   R   R$   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __sub__c   s    c         C   sz   t  | ƒ o t | ƒ } n t | ƒ o0 t | i |  i |  i | i |  i | i ƒ St | ƒ o | t |  ƒ St S(   s9   Subtract two Rats, or a Rat and a number (reversed args).(   R   R   R   R   R   R   R	   R#   (   R   R$   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __rsub__n   s    c         C   st   t  | ƒ o" t |  i | i |  i | i ƒ St | ƒ o t |  i | |  i ƒ St | ƒ o t |  ƒ | St S(   s)   Multiply two Rats, or a Rat and a number.(   R   R   R   R   R   R   R	   R#   (   R   R$   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __mul__y   s    "c         C   st   t  | ƒ o" t |  i | i |  i | i ƒ St | ƒ o t |  i |  i | ƒ St | ƒ o t |  ƒ | St S(   s'   Divide two Rats, or a Rat and a number.(   R   R   R   R   R   R   R	   R#   (   R   R$   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __truediv__…   s    "c         C   st   t  | ƒ o" t | i |  i | i |  i ƒ St | ƒ o t | |  i |  i ƒ St | ƒ o | t |  ƒ St S(   s7   Divide two Rats, or a Rat and a number (reversed args).(   R   R   R   R   R   R   R	   R#   (   R   R$   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __rtruediv__‘   s    "c         C   sG   t  | ƒ o t | ƒ } n t | ƒ p t S|  | } | i | i S(   s.   Divide two Rats, returning the floored result.(   R   R   R   R#   R   R   (   R   R$   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __floordiv__   s    
c         C   s   | |  } | i  | i S(   s>   Divide two Rats, returning the floored result (reversed args).(   R   R   (   R   R$   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __rfloordiv__¦   s    
c         C   sK   t  | ƒ o t | ƒ } n t | ƒ p t S|  | } | |  | | f S(   s2   Divide two Rats, returning quotient and remainder.(   R   R   R   R#   (   R   R$   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt
   __divmod__«   s    
c         C   s<   t  | ƒ o t | ƒ } n t | ƒ p t St | |  ƒ S(   sB   Divide two Rats, returning quotient and remainder (reversed args).(   R   R   R   R#   t   divmod(   R   R$   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __rdivmod__´   s
    c         C   s   t  |  | ƒ d S(   s   Take one Rat modulo another.i   (   R.   (   R   R$   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __mod__¼   s    c         C   s   t  | |  ƒ d S(   s,   Take one Rat modulo another (reversed args).i   (   R.   (   R   R$   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __rmod__À   s    c         C   s~   t  | ƒ o |  i d j o |  i | j St | ƒ o$ |  i | i j o |  i | i j St | ƒ o t |  ƒ | j St S(   s   Compare two Rats for equality.i   (   R   R   R   R   R   R	   R#   (   R   R$   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __eq__Ä   s    $c         C   s   |  | j S(   s    Compare two Rats for inequality.(    (   R   R$   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   __ne__Î   s    N("   t   __name__t
   __module__t   __doc__t	   __slots__R   R   t   propertyt   NoneR   R   R   R   R   R   R!   R"   R%   t   __radd__R&   R'   R(   t   __rmul__R)   t   __div__R*   t   __rdiv__R+   R,   R-   R/   R0   R1   R2   R3   (    (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyR      s<   						
					
	
	
									
t   RatTestCasec           B   s_   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z RS(
   s3   Unit tests for Rat class and its support utilities.c         C   s[  |  i  t d d ƒ d ƒ |  i  t d d ƒ d ƒ |  i  t d d ƒ d ƒ |  i  t d d ƒ d ƒ |  i  t d	 d ƒ d
 ƒ |  i  t d d
 ƒ d ƒ |  i  t d	 d
 ƒ d
 ƒ x¥ t d d ƒ D]” } x‹ t d d ƒ D]z } |  i t | | ƒ d j ƒ |  i t | | ƒ d j  ƒ |  i t | | ƒ d j ƒ |  i t | | ƒ d j  ƒ qÕ Wq¿ Wd  S(   Ni
   i   i   i   i   i   i   id   iöÿÿÿiþÿÿÿi   i    (   t   assertEqualR   t   ranget   assert_(   R   t   it   j(    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   test_gcdÕ   s      c         C   s  t  d d ƒ } |  i | i d ƒ |  i | i d ƒ t  d d ƒ } |  i | i d ƒ |  i | i d ƒ t  d d ƒ } |  i | i d ƒ |  i | i d ƒ t  d	 d ƒ } |  i | i d ƒ |  i | i d ƒ t  d	 d ƒ } |  i | i d ƒ |  i | i d ƒ t  d
 ƒ } |  i | i d
 ƒ |  i | i d ƒ y t  d d ƒ } Wn t j
 o n X|  i d ƒ xš d d d d g  h  d  t  t f	 D]w } y t  | ƒ } Wn t j
 o n X|  i d | ƒ y t  d | ƒ } Wn t j
 o q“X|  i d | ƒ q“Wd  S(   Ni
   i   i   i   l   
 l    iñÿÿÿiþÿÿÿiöÿÿÿi   i   i    s(   Rat(1, 0) didn't raise ZeroDivisionErrort   0g        y                s   Rat(%r) didn't raise TypeErrors!   Rat(1, %r) didn't raise TypeError(    (	   R   R?   R   R   R   t   failR9   t   unittestR   (   R   R   t   bad(    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   test_constructorä   sF    " c         C   s°   |  i  t d d ƒ t d d ƒ d ƒ |  i  t d d ƒ d t d d ƒ ƒ |  i  d t d d ƒ t d d ƒ ƒ |  i  d t d d ƒ d ƒ |  i  t d d ƒ d d ƒ d  S(   Ni   i   i   i   g      ð?g      ø?(   R?   R   (   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   test_add  s
    &&&c         C   s¹   |  i  t d d ƒ t d d ƒ t d d ƒ ƒ |  i  t d d ƒ d t d d ƒ ƒ |  i  d t d d ƒ t d d ƒ ƒ |  i  t d d ƒ d d	 ƒ |  i  d t d d ƒ d	 ƒ d  S(
   Ni   i   i   i   i
   i   i   g      ð?g      à?(   R?   R   (   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   test_sub  s
    /&&c         C   s§   |  i  t d d ƒ t d d ƒ t d d ƒ ƒ |  i  t d d ƒ d d ƒ |  i  d t d d ƒ d ƒ |  i  t d d ƒ d d ƒ |  i  d t d d ƒ d ƒ d  S(	   Ni   i   i   i   i
   i   g      à?g      ð?(   R?   R   (   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   test_mul  s
    /c         C   s¶   |  i  t d d ƒ t d d ƒ t d d ƒ ƒ |  i  t d d ƒ d t d d ƒ ƒ |  i  d t d ƒ t d d ƒ ƒ |  i  d t d	 d ƒ d
 ƒ |  i  t d	 d ƒ d d
 ƒ d  S(   Ni
   i   i   i   i   i	   i   g      @i   g      ø?(   R?   R   (   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   test_div   s
    /&#c         C   s~   |  i  t d ƒ t d ƒ d ƒ |  i  t d d ƒ t d d ƒ d ƒ |  i  t d ƒ d d ƒ |  i  d t d ƒ d ƒ d  S(   Ni
   i   i   i   (   R?   R   (   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   test_floordiv'  s     &c         C   s{   |  i  t d ƒ t d d ƒ ƒ |  i  t d ƒ d ƒ |  i  d t d ƒ ƒ |  i  t d ƒ d ƒ |  i  d t d ƒ ƒ d  S(   Ni
   i   i   g      $@(   R?   R   (   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   test_eq-  s
    c         B   s   e  d  Ud  S(   N(   t   future_test(   R   (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   test_future_div4  s    (   R4   R5   R6   RD   RI   RJ   RK   RL   RM   RN   RO   RQ   (    (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyR>   Ò   s   		'						s  
from __future__ import division
self.assertEqual(Rat(10, 3) / Rat(5, 7), Rat(14, 3))
self.assertEqual(Rat(10, 3) / 3, Rat(10, 9))
self.assertEqual(2 / Rat(5), Rat(2, 5))
self.assertEqual(3.0 * Rat(1, 2), 1.5)
self.assertEqual(Rat(1, 2) * 3.0, 1.5)
self.assertEqual(eval('1/2'), 0.5)
c           C   s   t  i t ƒ d  S(   N(   R    t   run_unittestR>   (    (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt	   test_mainC  s    t   __main__(   R6   RG   t   testR    R   R   R   R   t   objectR   t   TestCaseR>   RP   RS   R4   (    (    (    s,   /mit/python/lib/python2.6/test/test_binop.pyt   <module>   s   				·o	