ó
BwLc           @   ss   d  Z  d Z d d l Td d l Z d e j f d „  ƒ  YZ i  d „ Z e d k ro d	 „  Z e j	 d
 d ƒ n  d S(   s"   Self-tests for Crypto.Util.Counters   $Id$iÿÿÿÿ(   t   *Nt   CounterTestsc           B   s}   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z RS(   c         C   s   d d l  m a d  S(   Niÿÿÿÿ(   t   Counter(   t   Crypto.UtilR   (   t   self(    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   setUp"   s    c         C   s˜   t  j d ƒ } |  j | j ƒ t  j d d t ƒ} |  j | j ƒ t  j d d t ƒ} |  j | j ƒ t  j d d t d t ƒ} |  j | j ƒ d S(   s   Big endian, shortcut enabledi€   t   little_endiant   disable_shortcutN(   R   t   newt   assert_t   __PCT_CTR_SHORTCUT__t   False(   R   t   c(    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   test_BE_shortcut&   s    c         C   sT   t  j d d t ƒ} |  j | j ƒ t  j d d t d t ƒ} |  j | j ƒ d S(   s   Little endian, shortcut enabledi€   R   R   N(   R   R   t   TrueR	   R
   R   (   R   R   (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   test_LE_shortcut1   s    c         C   s`   t  j d d t ƒ} |  j t t | d ƒ t  j d d t d t ƒ} |  j t t | d ƒ d S(   s   Big endian, shortcut disabledi€   R   R
   R   N(   R   R   R   t   assertRaisest   AttributeErrort   getattrR   (   R   R   (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   test_BE_no_shortcut8   s    c         C   s5   t  j d d t d t ƒ} |  j t t | d ƒ d S(   s    Little endian, shortcut disabledi€   R   R   R
   N(   R   R   R   R   R   R   (   R   R   (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   test_LE_no_shortcut?   s    c         C   sÛ   t  j d ƒ } |  j d | j ƒ  ƒ |  j d | ƒ  ƒ |  j d | j ƒ  ƒ |  j d | ƒ  ƒ xJ t d d ƒ D]9 } |  j | | j ƒ  ƒ |  j d t | ƒ | ƒ  ƒ qq W|  j d | j ƒ  ƒ |  j d	 | ƒ  ƒ d
 S(   s   128-bit, Big endian, defaultsi€   i   t                  i   t                  i   i   t                  t                  N(   R   R   t   assertEqualt
   next_valuet   xranget   chr(   R   R   t   i(    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   test_BE_defaultsD   s    !c         C   sá   t  j d d t ƒ} |  j d | j ƒ  ƒ |  j d | ƒ  ƒ |  j d | j ƒ  ƒ |  j d | ƒ  ƒ xJ t d d ƒ D]9 } |  j | | j ƒ  ƒ |  j t | ƒ d	 | ƒ  ƒ qw W|  j d | j ƒ  ƒ |  j d
 | ƒ  ƒ d S(   s    128-bit, Little endian, defaultsi€   R   i   s                  i   s                  i   i   R   t                  N(   R   R   R   R   R   R   R   (   R   R   R   (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   test_LE_defaultsQ   s    !c         C   s¢   t  j d ƒ } xF t d d ƒ D]5 } |  j | | j ƒ  ƒ |  j t | ƒ | ƒ  ƒ q W|  j t | j ƒ |  j t | ƒ |  j t | j ƒ |  j t | ƒ d S(   s   8-bit, Big endian, wraparoundi   i   i   N(   R   R   R   R   R   R   R   t   OverflowError(   R   R   R   (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   test_BE8_wraparound^   s    c         C   s¨   t  j d d t ƒ} xF t d d ƒ D]5 } |  j | | j ƒ  ƒ |  j t | ƒ | ƒ  ƒ q% W|  j t | j ƒ |  j t | ƒ |  j t | j ƒ |  j t | ƒ d S(   s    8-bit, Little endian, wraparoundi   R   i   i   N(	   R   R   R   R   R   R   R   R   R!   (   R   R   R   (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   test_LE8_wraparoundi   s    c         C   s¡   t  j d d t ƒ} xF t d d ƒ D]5 } |  j | | j ƒ  ƒ |  j t | ƒ | ƒ  ƒ q% W|  j d | j ƒ  ƒ |  j d | ƒ  ƒ |  j d | j ƒ  ƒ d S(   s8   8-bit, Big endian, wraparound with allow_wraparound=Truei   t   allow_wraparoundi   i   i    t    N(   R   R   R   R   R   R   R   (   R   R   R   (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   test_BE8_wraparound_allowedt   s    c         C   s§   t  j d d t d t ƒ} xF t d d ƒ D]5 } |  j | | j ƒ  ƒ |  j t | ƒ | ƒ  ƒ q+ W|  j d | j ƒ  ƒ |  j d | ƒ  ƒ |  j d | j ƒ  ƒ d S(	   s;   8-bit, Little endian, wraparound with allow_wraparound=Truei   R   R$   i   i   i    R%   N(   R   R   R   R   R   R   R   (   R   R   R   (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   test_LE8_wraparound_allowed~   s    c         C   s‚   t  j d ƒ } xY t d d ƒ D]H } |  j d | j ƒ |  j | | j ƒ  ƒ |  j t | ƒ | ƒ  ƒ q W|  j d | j ƒ d S(   s"   8-bit, Big endian, carry attributei   i   i   i    N(   R   R   R   R   t   carryR   R   (   R   R   R   (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   test_BE8_carryˆ   s    c         C   sˆ   t  j d d t ƒ} xY t d d ƒ D]H } |  j d | j ƒ |  j | | j ƒ  ƒ |  j t | ƒ | ƒ  ƒ q% W|  j d | j ƒ d S(   s%   8-bit, Little endian, carry attributei   R   i   i   i    N(   R   R   R   R   R   R(   R   R   (   R   R   R   (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   test_LE8_carry‘   s    (   t   __name__t
   __module__R   R   R   R   R   R   R    R"   R#   R&   R'   R)   R*   (    (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyR   !   s   										
	
		c         C   s   d d l  m } | t ƒ S(   Niÿÿÿÿ(   t   list_test_cases(   t   Crypto.SelfTest.st_commonR-   R   (   t   configR-   (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt	   get_testsš   s    t   __main__c           C   s   t  j t ƒ  ƒ S(   N(   t   unittestt	   TestSuiteR0   (    (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   <lambda>Ÿ   s    t   defaultTestt   suite(
   t   __doc__t   __revision__t   Crypto.Util.python_compatR2   t   TestCaseR   R0   R+   R6   t   main(    (    (    sE   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Util/test_Counter.pyt   <module>   s   
y	