ó
#'Tc           @   sq  d  d l  m Z m Z d  d l m Z m Z m Z m Z m Z m	 Z	 d  d l
 m Z m Z d  d l Z d  d l m Z d d l m Z d  d l Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e j d ƒ d „  ƒ Z e j d ƒ d „  ƒ Z e j d ƒ d „  ƒ Z  e j d ƒ d „  ƒ Z! e j d ƒ d „  ƒ Z" d „  Z# d S(   iÿÿÿÿ(   t   Imaget	   ImageDraw(   t   Resizet   ResizeToFillt   ResizeToFitt	   SmartCropt   SmartResizet
   MakeOpaque(   t   eq_t   assert_trueN(   t	   Thumbnaili   (   t   create_imagec          C   s/   t  d d ƒ j t ƒ  ƒ }  t |  j d ƒ d  S(   Nid   (   id   id   (   R   t   processR   R   t   size(   t   img(    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt   test_smartcrop   s    c          C   s/   t  d d ƒ j t ƒ  ƒ }  t |  j d ƒ d  S(   Nid   (   id   id   (   R   R   R   R   R   (   R   (    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt   test_resizetofill   s    c          C   s>   t  j d d ƒ }  t d d ƒ j |  ƒ }  t |  j d ƒ d  S(   Nt   RGBiÈ   id   i2   (   iÈ   id   (   id   i2   (   R    t   newR   R   R   R   (   R   (    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt   test_resizetofit   s    c          C   s>   t  j d d ƒ }  t d d ƒ j |  ƒ }  t |  j d ƒ d S(   s5   
    Regression test for matthewwithanm/pilkit#1
    R   i_   i   N(   i_   i_   (   i   i   (   R    R   R   R   R   R   (   R   (    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt   test_resize_rounding    s    c          C   sD   t  j d d ƒ }  t d d d d ƒj |  ƒ }  t |  j d ƒ d  S(   NR   iÈ   id   t	   mat_colori    (   iÈ   id   (   id   id   (   R    R   R   R   R   R   (   R   (    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt   test_resizetofit_mat*   s    c       
   C   s¬   t  j d d d ƒ }  |  j d d d d d d d d d g	 ƒ t j |  ƒ } | j d d d	 ƒt d d ƒ j |  ƒ }  t t t	 d
 |  j ƒ  ƒ ƒ ƒ } t | d	 k ƒ d
 S(   s%  
    Test that the Resize processor antialiases.

    The Resize processor is used by all of the Resize* variants, so this should
    cover all of resize processors. Basically, this is to test that it converts
    to RGBA mode before resizing.

    Related: jdriscoll/django-imagekit#192

    t   Piô  i   i    iÿ   id   i  t   filli   N(   iô  iô  (   id   id   i  i  (   R    R   t
   putpaletteR   t   ellipseR   R   t   lent   listt   filtert   Nonet	   histogramR	   (   R   t   dt   color_count(    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt   test_resize_antialiasing0   s    		!c          C   s   t  j d d ƒ }  xv t t t t g D]b } | d d d t ƒj |  ƒ } t | j	 d ƒ | d d d t
 ƒj |  ƒ } t | j	 d ƒ q% Wd S(	   s<   
    Test that the upscale argument works as expected.

    R   id   iô  t   upscaleN(   id   id   (   iô  iô  (   id   id   (   R    R   R   R   R   R   t   TrueR   R   R   t   False(   R   R   t   img2(    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt   test_upscaleN   s    c          C   sV   y) t  d d d d d t d t d d ƒ Wn& t k
 rQ }  t t |  ƒ d ƒ n Xd  S(	   Nt   heightiÈ   t   widthR#   t   cropt   anchort   ts3   You can't specify an anchor point if crop is False.(   R
   R%   t	   ExceptionR   t   str(   t   e(    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pytH   test_should_raise_exception_if_anchor_is_passed_and_crop_is_set_to_false^   s    )c       	   C   s2   t  d d d d d t d d ƒ }  t |  j ƒ d  S(   NR(   iÈ   R)   R#   R+   R,   (   R
   R%   R	   R*   (   t   thumb(    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt=   test_should_set_crop_to_true_if_anchor_is_passed_without_crope   s    !c          C   sY   t  j d d ƒ }  y t d t ƒ j |  ƒ Wn& t k
 rT } t t | ƒ d ƒ n Xd  S(   NR   id   R*   s7   You must provide both a width and height when cropping.(   id   id   (   R    R   R
   R$   R   R-   R   R.   (   R   R/   (    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pytH   test_should_raise_exception_when_crop_is_passed_without_height_and_widthj   s
    s$   pilkit.processors.resize.SmartResizec         C   sE   t  j d d ƒ } t d d d d d t ƒ j | ƒ t |  j ƒ d  S(   NR   id   R(   iÈ   R)   R#   (   id   id   (   R    R   R
   R%   R   R	   t   called(   t   my_mockR   (    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt1   test_should_call_smartresize_when_crop_not_passedr   s    "c         C   sT   t  j d d ƒ } t d d d d d t ƒ j | ƒ |  j d d d t d d ƒ d  S(   NR   id   R(   iÈ   R)   R#   (   id   id   (   R    R   R
   R$   R   t   assert_called_once_with(   R5   R   (    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt&   test_should_repass_upscale_option_truey   s    "c         C   sT   t  j d d ƒ } t d d d d d t ƒ j | ƒ |  j d d d t d d ƒ d  S(   NR   id   R(   iÈ   R)   R#   (   id   id   (   R    R   R
   R%   R   R7   (   R5   R   (    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt'   test_should_repass_upscale_option_false€   s    "s%   pilkit.processors.resize.ResizeToFillc         C   sE   t  j d d ƒ } t d d d d d d ƒ j | ƒ t |  j ƒ d  S(	   NR   id   R(   iÈ   R)   R+   t   fake(   id   id   (   R    R   R
   R   R	   R4   (   R5   R   (    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt;   test_should_call_resizetofill_when_crop_and_ancho_is_passed‡   s    "s$   pilkit.processors.resize.ResizeToFitc         C   sE   t  j d d ƒ } t d d d d d t ƒ j | ƒ t |  j ƒ d  S(   NR   id   R(   iÈ   R)   R*   (   id   id   (   R    R   R
   R%   R   R	   R4   (   R5   R   (    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt4   test_should_call_resizetofit_when_crop_is_not_passed   s    "c          C   sM   t  j j t ƒ }  t  j j |  d d ƒ } t j | ƒ } t ƒ  j | ƒ d  S(   Nt   assetss   cat.gif(	   t   ost   patht   dirnamet   __file__t   joinR    t   openR   R   (   t   dirR?   t   gif(    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt   test_make_gifs_opaque“   s    ($   t
   pilkit.libR    R   t   pilkit.processorsR   R   R   R   R   R   t
   nose.toolsR   R	   R>   t   pilkit.processors.resizeR
   t   utilsR   t   mockR   R   R   R   R   R"   R'   R0   R2   R3   t   patchR6   R8   R9   R;   R<   RF   (    (    (    sH   /Users/mjt/Code/projects/django-imagekit/pilkit/tests/test_processors.pyt   <module>   s,   .				
						