ó
Š*Pc           @   s™   d  Z  d d l m Z m Z m Z m Z d d l m Z d e j f d „  ƒ  YZ	 d e j f d „  ƒ  YZ
 d „  Z d	 d
 „ Z e d k r• e ƒ  n  d S(   ss   
Distance and Area objects to allow for sensible and convienient calculation
and conversions. Here are some tests.
iÿÿÿÿ(   t   Distancet   Areat   Dt   A(   t   unittestt   DistanceTestc           B   sh   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   s   Testing the Distance objectc   
      C   s\  t  d d ƒ } |  j | j d ƒ t d d ƒ t d d ƒ t d d ƒ } } } x* | | | f D] } |  j | j d ƒ qa Wt d d ƒ } |  j | j d ƒ t d d ƒ t d d ƒ t d	 d ƒ } } } x* | | | f D] } |  j | j d ƒ qß Wt d
 d ƒ t d d ƒ } }	 x: | |	 f D], } |  j | j d ƒ |  j | j d ƒ q(Wd S(   s'   Testing initialisation from valid unitst   mid   t   metert   metret   nmipÓ t   ydt   yardt   Yardt
   millimeteriè  t
   MiLLiMeTeRg      ð?g     @@N(   R    t   assertEqualR   R   R
   t   mm(
   t   selft   dt   d1t   d2t   d3t   y1t   y2t   y3t   mm1t   mm2(    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt   testInit   s    //c         C   s   |  j  t t d d ƒd S(   s)   Testing initialisation from invalid unitst   bananaid   N(   t   assertRaisest   AttributeErrorR   (   R   (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt   testInitInvalid#   s    c         C   s<   t  d d ƒ } |  j | j d ƒ |  j | j d d ƒ d S(   s!   Testing access in different unitsR   id   gš™™™™™¹?gÓMbXt@i   N(   R   R   t   kmt   assertAlmostEqualt   ft(   R   R   (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt
   testAccess'   s    c         C   s)   t  d d ƒ } |  j t | d ƒ ƒ d S(   s   Testing access in invalid unitsR   id   R   N(   R   t   assertFalset   hasattr(   R   R   (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt   testAccessInvalid-   s    c      	   C   sJ  t  d d ƒ } t  d d ƒ } | | } |  j | j d ƒ | | 7} |  j | j d ƒ | | } |  j | j d ƒ | | 8} |  j | j d ƒ |  j t ƒ  | d } |  j d	 ƒ Wd
 QX|  j t ƒ  | d } |  j d ƒ Wd
 QX|  j t ƒ  | d 7} |  j d ƒ Wd
 QX|  j t ƒ  | d 8} |  j d ƒ Wd
 QXd
 S(   s   Test addition & subtractionR   id   iÈ   i,  i  iœÿÿÿi8ÿÿÿi   s(   Distance + number should raise TypeErrorNs(   Distance - number should raise TypeErrors)   Distance += number should raise TypeErrors)   Distance -= number should raise TypeError(   R   R   R   R   t	   TypeErrort   fail(   R   R   R   R   t   d4t   d5(    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt   testAddition2   s,    







c      	   C   so  t  d d ƒ } | d } |  j | j d ƒ d | } |  j | j d ƒ | d 9} |  j | j d ƒ | d } |  j | j d ƒ | d :} |  j | j d ƒ | t  d d ƒ } |  j | d ƒ | t  d d ƒ } |  j t | t ƒ ƒ |  j | j d ƒ |  j t ƒ % | t  d d	 ƒ 9} |  j	 d
 ƒ Wd QX|  j t ƒ % | t  d d	 ƒ :} |  j	 d ƒ Wd QXd S(   s   Test multiplication & divisionR   id   i   iÈ   i   iè  i2   i
   i   s+   Distance *= Distance should raise TypeErrorNs+   Distance /= Distance should raise TypeErroriè  (
   R   R   R   t
   assertTruet
   isinstanceR   t   sq_mR   R'   R(   (   R   R   R   R)   R*   t   a5(    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt   testMultiplicationQ   s,    




c         C   s–   t  d d ƒ } t  d d ƒ } | | } |  j | j d ƒ | | } |  j | j d ƒ | d } |  j | j d ƒ | d } |  j | j d ƒ d S(   s"   Testing default units during mathsR   id   R    i   i   N(   R   R   t   _default_unit(   R   R   R   R   R)   R*   t   d6(    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt   testUnitConversionso   s    



c         C   sw   t  d d ƒ } t  d d ƒ } t  d d ƒ } |  j | | k ƒ |  j | | k ƒ |  j | | k  ƒ |  j | ƒ d S(   s   Testing comparisonsR   id   R    i   i    N(   R   R,   R$   (   R   R   R   R   (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt   testComparisons}   s    c         C   sz   t  d d ƒ } t  d d ƒ } |  j t | ƒ d ƒ |  j t | ƒ d ƒ |  j t | ƒ d ƒ |  j t | ƒ d ƒ d	 S(
   s   Testing conversion to stringsR   id   R    g      @s   100.0 ms   3.5 kms   Distance(m=100.0)s   Distance(km=3.5)N(   R   R   t   strt   repr(   R   R   R   (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt   testUnitsStrˆ   s    c         C   sL   d d d d d d g } x- | D]% \ } } |  j  | t j | ƒ ƒ q Wd S(   s'   Testing the `unit_attname` class methodR   R
   s   Nautical MileR	   s   German legal metret   german_ms   Indian yardt	   indian_yds   Chain (Sears)t   chain_searst   Chaint   chainN(   s   Yards   yd(   s   Nautical Miles   nm(   s   German legal metreR8   (   s   Indian yardR9   (   s   Chain (Sears)R:   (   R;   s   chain(   R   R   t   unit_attname(   R   t
   unit_tupleR	   t   att(    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt   testUnitAttName’   s    	(   t   __name__t
   __module__t   __doc__R   R   R#   R&   R+   R0   R3   R4   R7   R@   (    (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyR   
   s   									
t   AreaTestc           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(
   s   Testing the Area objectc         C   sj   t  d d ƒ } |  j | j d ƒ t d d ƒ } |  j | j d ƒ t d d ƒ } |  j | j d ƒ d S(   s'   Testing initialisation from valid unitsR.   id   t   sq_mig46à®AN(   R   R   R.   R   (   R   t   a(    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyR   œ   s    c         C   s   |  j  t t d d ƒd S(   s)   Testing initialisation from invalid unitsR   id   N(   R   R   R   (   R   (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt   testInitInvaliA§   s    c         C   s<   t  d d ƒ } |  j | j d ƒ |  j | j d d ƒ d S(   s!   Testing access in different unitsR.   id   g-Cëâ6?gòÒMbÑ@i   N(   R   R   t   sq_kmR!   t   sq_ft(   R   RF   (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyR#   «   s    c         C   s)   t  d d ƒ } |  j t | d ƒ ƒ d S(   s   Testing access in invalid unitsR.   id   R   N(   R   R$   R%   (   R   RF   (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt   testAccessInvaliA±   s    c      	   C   sJ  t  d d ƒ } t  d d ƒ } | | } |  j | j d ƒ | | 7} |  j | j d ƒ | | } |  j | j d ƒ | | 8} |  j | j d ƒ |  j t ƒ  | d } |  j d	 ƒ Wd
 QX|  j t ƒ  | d } |  j d ƒ Wd
 QX|  j t ƒ  | d 7} |  j d ƒ Wd
 QX|  j t ƒ  | d 8} |  j d ƒ Wd
 QXd
 S(   s   Test addition & subtractionR.   id   iÈ   i,  i  iœÿÿÿi8ÿÿÿi   s$   Area + number should raise TypeErrorNs$   Area - number should raise TypeErrors%   Area += number should raise TypeErrors%   Area -= number should raise TypeError(   R   R   R.   R   R'   R(   (   R   t   a1t   a2t   a3t   a4R/   (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyR+   ¶   s,    







c         C   s|  t  d d ƒ } | d } |  j | j d ƒ d | } |  j | j d ƒ | d 9} |  j | j d ƒ | d } |  j | j d ƒ | d :} |  j | j d ƒ |  j t ƒ % | t  d d	 ƒ } |  j d
 ƒ Wd QX|  j t ƒ % | t  d d	 ƒ 9} |  j d ƒ Wd QX|  j t ƒ % | t  d d	 ƒ } |  j d ƒ Wd QX|  j t ƒ % | t  d d	 ƒ :} |  j d ƒ Wd QXd S(   s   Test multiplication & divisionR.   id   i   iÈ   i   iè  i2   i
   i   s"   Area * Area should raise TypeErrorNs#   Area *= Area should raise TypeErrors"   Area / Area should raise TypeErrors#   Area /= Area should raise TypeError(   R   R   R.   R   R'   R(   (   R   RK   RM   RN   R/   (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyR0   Õ   s.    




c         C   s–   t  d d ƒ } t  d d ƒ } | | } |  j | j d ƒ | | } |  j | j d ƒ | d } |  j | j d ƒ | d } |  j | j d ƒ d S(   s"   Testing default units during mathsR.   id   RH   i   i   N(   R   R   R1   (   R   RK   RL   RM   RN   R/   t   a6(    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyR3   õ   s    



c         C   sw   t  d d ƒ } t  d d ƒ } t  d d ƒ } |  j | | k ƒ |  j | | k ƒ |  j | | k  ƒ |  j | ƒ d S(   s   Testing comparisonsR.   id   RH   i   i    N(   R   R,   R$   (   R   RK   RL   RM   (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyR4     s    c         C   sz   t  d d ƒ } t  d d ƒ } |  j t | ƒ d ƒ |  j t | ƒ d ƒ |  j t | ƒ d ƒ |  j t | ƒ d ƒ d	 S(
   s   Testing conversion to stringsR.   id   RH   g      @s
   100.0 sq_ms	   3.5 sq_kms   Area(sq_m=100.0)s   Area(sq_km=3.5)N(   R   R   R5   R6   (   R   RK   RL   (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyR7     s    (   RA   RB   RC   R   RG   R#   RJ   R+   R0   R3   R4   R7   (    (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyRD   ™   s   						 		c          C   s<   t  j ƒ  }  |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ |  S(   N(   R   t	   TestSuitet   addTestt	   makeSuiteR   RD   (   t   s(    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt   suite  s    i   c         C   s    t  j d |  ƒ j t ƒ  ƒ d  S(   Nt	   verbosity(   R   t   TextTestRunnert   runRT   (   RU   (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyRW     s    t   __main__N(   RC   t   django.contrib.gis.measureR    R   R   R   t   django.utilsR   t   TestCaseR   RD   RT   RW   RA   (    (    (    s>   ../Django//lib/python/django/contrib/gis/tests/test_measure.pyt   <module>   s   "	