???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
hc           @   s  d  Z  d Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l	 Z	 y d d l
 Z Wn e k
 r d d l Z n Xy e Wn e k
 r d   Z n Xd d l m Z d d l m Z d d l m Z d d l m Z d d	 l m Z d d
 l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z e j  re! Z" n  d   Z# d   Z$ d   Z% d   Z& e j' Z' e j( d e f d e f  d e' f d     Y Z) d e' f d     YZ* d e' f d     YZ+ d  e' f d!     YZ, d" e' f d#     YZ- e j. e j/   d$ k pe j0 d% d& f k  d'  d( e' f d)     Y Z1 e2 d* k re j3   n  d S(+   s  Tests python protocol buffers against the golden message.

Note that the golden messages exercise every known field type, thus this
test ends up exercising and verifying nearly all of the parsing and
serialization code in the whole library.

TODO(kenton):  Merge with wire_format_test?  It doesn't make a whole lot of
sense to call this a test of the "message" module, which only declares an
abstract interface.
s!   gps@google.com (Gregory P. Smith)iNc         C   s   |  | k |  | k  S(   N(    (   t   xt   y(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   <lambda>>   t    (   t   map_proto2_unittest_pb2(   t   map_unittest_pb2(   t   unittest_pb2(   t   unittest_proto3_arena_pb2(   t   descriptor_pb2(   t   descriptor_pool(   t   message_factory(   t   text_format(   t   api_implementation(   t   encoder(   t   packed_field_test_pb2(   t	   test_util(   t   testing_refleaks(   t   message(   t   _parameterizedc         C   s
   |  |  k S(   N(    (   t   val(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   isnanV   s    c         C   s   t  |   o t  |  d  S(   Ni    (   R   (   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   isinfY   s    c         C   s   t  |   o |  d k S(   Ni    (   R   (   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   IsPosInf\   s    c         C   s   t  |   o |  d k  S(   Ni    (   R   (   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   IsNegInf^   s    t   _proto2t   _proto3t   MessageTestc        
   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 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 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( d'   Z) d(   Z* d)   Z+ d*   Z, d+   Z- d,   Z. d-   Z/ dF e1 d. d/ d0 d1 e2   g  i  e3   g
 Z4 d2   Z5 d3   Z6 d4   Z7 d5   Z8 d6   Z9 d7   Z: d8   Z; d9 e< f d:     YZ= d;   Z> d<   Z? d=   Z@ d>   ZA d?   ZB d@   ZC dA   ZD dB   ZE dC   ZF dD   ZG dE   ZH RS(G   c         C   sv   t  j   d k r" |  j d  n  t j d  } |  j t   } | j j |  Wd  QX|  j	 d t
 | j   d  S(   Nt   pythons   Skipping testBadUtf8String, currently only the python api implementation raises UnicodeDecodeError when a string field contains bad utf-8.t   bad_utf8_strings   TestAllTypes.optional_string(   R   t   Typet   skipTestR   t   GoldenFileDatat   assertRaisest   UnicodeDecodeErrort   TestAllTypest
   FromStringt   assertInt   strt	   exception(   t   selft   message_modulet   bad_utf8_datat   context(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testBadUtf8Stringj   s    c         C   s   | t  k r t j d  } n t j d  } | j   } | j |  | t  k re t j |  |  n  |  j | | j    t j	 |  } |  j | | j    d  S(   Nt    golden_message_oneof_implementedt   golden_message_proto3(
   R   R   R   R"   t   ParseFromStringt   ExpectAllFieldsSett   assertEqualt   SerializeToStringt   copyt   deepcopy(   R'   R(   t   golden_datat   golden_messaget   golden_copy(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testGoldenMessaget   s    c         C   s   t  j d  } | j   } | j |  | j   } t  j |  |  j | |  |  j | | j    t j |  } |  j | | j    d  S(   Nt   golden_packed_fields_message(	   R   R   t   TestPackedTypesR.   t   SetAllPackedFieldsR0   R1   R2   R3   (   R'   R(   R4   R5   t   all_setR6   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testGoldenPackedMessage   s    c      	   C   s   | j    } |  j t | j d  |  j t | j d  t j d d  } t j   d k r |  j t	 j
   } | j |  Wd  QX|  j d t | j   nR t j d t  > } t j d  | j |  |  j d	 t | d
 j	   Wd  QXd  S(   Ni    t   0i   i   R   s   Unexpected end-group tag.t   recordt   alwayss4   Unexpected end-group tag: Not all data was convertedi(   R"   R    t	   TypeErrorR#   t	   ExceptionR   t   TagBytesR   R   R   t   DecodeErrorR0   R%   R&   t   warningst   catch_warningst   Truet   simplefilter(   R'   R(   t   msgt   end_tagR*   t   w(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testParseErrors   s    	c            s   d } | j    } | j j d d d d g  |  j | | j d d    |  j | | j d t   |  j | | j d t   d t f d     Y  d	 t	 f   f d
     Y} |  j
     | j d |    Wd  QXd  S(   Ns5   
One string
Two string
Red stringBlue strings
   One strings
   Two strings
   Red strings   Blue stringt   deterministict   BadArgErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyRM      s   t   BadArgc              s&   e  Z   f d    Z   f d   Z RS(   c            s        d  S(   N(    (   R'   (   RM   (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   __nonzero__   s    c            s        d  S(   N(    (   R'   (   RM   (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   __bool__   s    (   RN   RO   RQ   RR   (    (   RM   (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyRP      s   (   R"   t   repeated_stringt   extendR0   R1   t   Nonet   FalseRF   RA   t   objectR    (   R'   R(   R4   R5   RP   (    (   RM   sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testDeterminismParameters   s"    	
			c         C   sZ   t  j d  } | j   } | j |  t j |  } t j |  } |  j | |  d  S(   NR5   (   R   R   R"   R.   t   picklet   dumpst   loadsR0   (   R'   R(   R4   R5   t   pickled_messaget   unpickled_message(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testPickleSupport   s    c         C   s   | t  k r d } n d } | j   } | j |  |  j t | j   |  j t | j   |  j t | j d   |  j t | j d   |  j	 | | j
    d  S(   Ns   ]  a              s    ]  a              i    (   R   R"   R.   t
   assertTrueR   t   optional_floatt   optional_doublet   repeated_floatt   repeated_doubleR0   R1   (   R'   R(   R4   R5   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testPositiveInfinity   s    	c         C   s   | t  k r d } n d } | j   } | j |  |  j t | j   |  j t | j   |  j t | j d   |  j t | j d   |  j	 | | j
    d  S(   Ns   ]  a              s    ]  a              i    (   R   R"   R.   R_   R   R`   Ra   Rb   Rc   R0   R1   (   R'   R(   R4   R5   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testNegativeInfinity   s    	c         C   s  d } | j    } | j |  |  j t | j   |  j t | j   |  j t | j d   |  j t | j d   | j   } | j    } | j |  |  j t | j   |  j t | j   |  j t | j d   |  j t | j d   d  S(   Ns   ]  a              i    (	   R"   R.   R_   R   R`   Ra   Rb   Rc   R1   (   R'   R(   R4   R5   t
   serializedR   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testNotANumber   s    c         C   sm   d } | j    } | j |  |  j t | j d   |  j t | j d   |  j | | j    d  S(   Ns           i    (   R9   R.   R_   R   t   packed_floatt   packed_doubleR0   R1   (   R'   R(   R4   R5   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testPositiveInfinityPacked  s    c         C   sm   d } | j    } | j |  |  j t | j d   |  j t | j d   |  j | | j    d  S(   Ns           i    (   R9   R.   R_   R   Rh   Ri   R0   R1   (   R'   R(   R4   R5   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testNegativeInfinityPacked  s    c         C   s   d } | j    } | j |  |  j t | j d   |  j t | j d   | j   } | j    } | j |  |  j t | j d   |  j t | j d   d  S(   Ns           i    (   R9   R.   R_   R   Rh   Ri   R1   (   R'   R(   R4   R5   Rf   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testNotANumberPacked%  s    c         C   s  | j    } t j d d  } | | _ | j | j    |  j | j | k  d t j d d  } | | _ | j | j    |  j | j | k  | | _ | j | j    |  j | j | k  | | _ | j | j    |  j | j | k  t j d d  } | | _ | j | j    |  j | j | k  d t j d d  } | | _ | j | j    |  j | j | k  | | _ | j | j    |  j | j | k  | | _ | j | j    |  j | j | k  d  S(   Ni   i   g      ?i(   R"   t   matht   powR`   R.   R1   R_   (   R'   R(   R   t   kMostPosExponentNoSigBitst   kMostPosExponentOneSigBitt   kMostNegExponentNoSigBitst   kMostNegExponentOneSigBit(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testExtremeFloatValues3  s:    		

		

c         C   s  | j    } t j d d  } | | _ | j | j    |  j | j | k  d t j d d  } | | _ | j | j    |  j | j | k  | | _ | j | j    |  j | j | k  | | _ | j | j    |  j | j | k  t j d d  } | | _ | j | j    |  j | j | k  d t j d d  } | | _ | j | j    |  j | j | k  | | _ | j | j    |  j | j | k  | | _ | j | j    |  j | j | k  d  S(   Ni   i  g      ?i(   R"   Rm   Rn   Ra   R.   R1   R_   (   R'   R(   R   Ro   Rp   Rq   Rr   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testExtremeDoubleValues`  s:    		

		

c         C   s/   | j    } d | _ |  j t |  d  d  S(   Ng       @s   optional_float: 2.0
(   R"   R`   R0   R%   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testFloatPrinting  s    	c         C   sW   | j    } d | _ t j d k r= |  j t |  d  n |  j t |  d  d  S(   Ng^!7ݚ?i   s%   optional_double: 0.12345678912345678
s    optional_double: 0.123456789123
(   i   (   R"   Ra   t   syst   version_infoR0   R%   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testHighPrecisionFloatPrinting  s
    	c         C   sR   | j    } t j |  | j   } | j | j    |  j t |  d  d  S(   NR   (   R"   R   t   SetAllNonLazyFieldst   TestEmptyMessageR.   R1   R0   R%   (   R'   R(   t	   populatedt   empty(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testUnknownFieldPrinting  s
    c         C   s  | j    } | j j d d  | j j d d  | j j d d  | j j d d  |  j d d d d g g  | j D] } | j ^ qw  |  j d d d d g g  t | j  D] } | j ^ q  |  j d d d d g g  | j d  d  d  D] } | j ^ q  d  S(   Nt   bbi   i   i   i   i(   R"   t   repeated_nested_messaget   addR0   R~   t   reversed(   R'   R(   RH   t   m(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt    testRepeatedNestedFieldIteration  s     &c         C   s  | j    } | j j d  | j j d  | j j d  | j j   |  j | j d d  |  j | j d d  |  j | j d d  |  j t | j  t d d d g   | j j d  | j j d  | j j d  | j j   |  j | j d d  |  j | j d d  |  j | j d d  | j j d  | j j d	  | j j d
  | j j   |  j | j d d  |  j | j d d
  |  j | j d d	  |  j t | j  t d d d g   | j	 j d  | j	 j d	  | j	 j d
  | j	 j   |  j | j	 d d  |  j | j	 d d
  |  j | j	 d d	  |  j t | j	  t d d
 d	 g   d S(   s7   Check some different types with the default comparator.i   i   i   i    g?g?g333333?t   at   ct   bu   au   bu   cN(
   R"   t   repeated_int32t   appendt   sortR0   R%   Rb   t   assertAlmostEqualRS   t   repeated_bytes(   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt0   testSortingRepeatedScalarFieldsDefaultComparator  s@    ((c         C   s   | j    } | j j d  | j j d  | j j d  | j j d t  |  j | j d d  |  j | j d d  |  j | j d d  | j j d  | j j d	  | j j d
  | j j d t  |  j | j d d
  |  j | j d d	  |  j | j d d  d S(   s2   Check some different types with custom comparator.iiit   keyi    i   i   t   aaaR~   R   N(   R"   R   R   R   t   absR0   RS   t   len(   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt/   testSortingRepeatedScalarFieldsCustomComparator  s    c         C   sM  | j    } d | j j   _ d | j j   _ d | j j   _ d | j j   _ d | j j   _ d | j j   _ | j j d t j d   |  j | j d	 j d  |  j | j d j d  |  j | j d j d  |  j | j d j d  |  j | j d j d  |  j | j d j d  |  j t | j  d
  d S(   sE   Check passing a custom comparator to sort a repeated composite field.i   i   i   i   i   i   R   R~   i    s0   [bb: 1
, bb: 2
, bb: 3
, bb: 4
, bb: 5
, bb: 6
]N(	   R"   R   R   R~   R   t   operatort
   attrgetterR0   R%   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt2   testSortingRepeatedCompositeFieldsCustomComparator  s     c         C   sC  | j    } d | j j   _ d | j j   _ d | j j   _ d | j j   _ d | j j   _ d | j j   _ d | j j   _ | j j d d	    |  j d d d d d d d g g  | j D] } | j ^ q  | j   } | j   | j |  |  j d d d d d d d g g  | j D] } | j ^ q) d
 S(   sE   Check passing a custom comparator to sort a repeated composite field.i   i   i   i!   i   i   i
   R   c         S   s   |  j  d S(   Ni
   (   R~   (   t   z(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyR   
  R   N(	   R"   R   R   R~   R   R0   R1   t   Cleart   MergeFromString(   R'   R(   R   t   nt   pb(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt(   testSortingRepeatedCompositeFieldsStable  s$     
c         C   s  | j    } t j d  } d   } d | j j   _ d | j j   _ d | j j   _ d | j j   _ d | j j   _ d | j j   _ | j j d	 |  |  j g  | j D] } | j ^ q d d d d d d g  | j j d	 | d
 t  |  j g  | j D] } | j ^ qd d d d d d g  t	 j
 d k rEd S| j j d |  |  j g  | j D] } | j ^ qhd d d d d d g  | j j d | d
 t  |  j g  | j D] } | j ^ qd d d d d d g  d S(   sE   Check sorting a repeated composite field using list.sort() arguments.R~   c         S   s   t  |  j | j  S(   N(   t   cmpR~   (   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyR     R   i   i   i   i   i   i   R   t   reverseNt   sort_functionR   (   i   (   R"   R   R   R   R   R~   R   R0   RF   Rv   Rw   (   R'   R(   R   t   get_bbt   cmp_bbt   k(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt'   testRepeatedCompositeFieldSortArguments  s.    	"" ""c         C   sf  | j    } | j j d  | j j d  | j j d  | j j d t  |  j t | j  d d d g  | j j d t d t  |  j t | j  d d d g  t j	 d k  r7d   } | j j d |  |  j t | j  d d d g  | j j d	 | d t  |  j t | j  d d d g  n  | j
 j d
  | j
 j d  | j
 j d  | j
 j d t  |  j t | j
  d d d
 g  | j
 j d t d t  |  j t | j
  d
 d d g  t j	 d k  rbd   } | j
 j d |  |  j t | j
  d d d
 g  | j
 j d	 | d t  |  j t | j
  d
 d d g  n  d S(   s9   Check sorting a scalar field using list.sort() arguments.iiiR   R   i   c         S   s   t  t |   t |   S(   N(   R   R   (   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyR   >  R   R   R   R   R~   R   c         S   s   t  t |   t |   S(   N(   R   R   (   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyR   L  R   N(   i   (   i   (   R"   R   R   R   R   R0   t   listRF   Rv   Rw   RS   R   (   R'   R(   R   t   abs_cmpt   len_cmp(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt$   testRepeatedScalarFieldSortArguments2  s6    ""	"%""	"c         C   s  | j    } | j    } | j j d  | j j d  | j j d  | j j d  | j j d  | j j d  d | j j   _ d | j j   _ d | j j   _ d | j j   _ d | j j   _ d | j j   _ t j d k r d  S| | k  } | j | j k  } |  j t	 | |  d  |  j t	 | j | j  d  |  j t	 | j d d d g  d  |  j t	 | j | j  d  |  j
 t   t	 | j | j  Wd  QXd  S(   Ni    i   i   i   (   i   (   R"   R   R   R   R   R~   Rv   Rw   R0   R   R    R@   (   R'   R(   t   m1t   m2t   _(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testRepeatedFieldsComparableR  s2     %c         C   s<   | j    } |  j | j t j  |  j | j t j  d  S(   N(   R"   t   assertIsInstanceR   t   collectionst   MutableSequenceR   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testRepeatedFieldsAreSequencesu  s    c         C   sV   | j    } |  j t   t | j  Wd  QX|  j t   t | j  Wd  QXd  S(   N(   R"   R    R@   t   hashR   R   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testRepeatedFieldsNotHashable{  s
    c         C   s9   | j    } | j j j g   |  j | j d   d  S(   Nt   payload(   t   NestedTestAllTypesR   R   RT   R_   t   HasField(   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt$   testRepeatedFieldInsideNestedMessage  s    c         C   s'   t  | |  |  j | j |   d S(   s   Make sure that a nested message object exists.

    As soon as a nested message attribute is accessed, it will be present in the
    _fields dict, without being marked as actually being set.
    N(   t   getattrt   assertFalseR   (   R'   RH   t	   attribute(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   ensureNestedMessageExists  s    c         C   s<   | j    } |  j t | j d  |  j t | j d  d  S(   Nt   no_such_oneof_fieldi    (   R"   R    t
   ValueErrort
   WhichOneofRA   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt    testOneofGetCaseNonexistingField  s    c         C   s   | j    } |  j d  | j d   |  j | j d   d | _ |  j d | j d   |  j | j d   |  j | j d   d | _	 |  j d | j d   |  j | j d   |  j | j d   d  S(   Nt   oneof_fieldt   oneof_uint32i    t   oneof_stringR   (
   R"   t   assertIsRU   R   R   R   R   R0   R_   R   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testOneofDefaultValues  s    		c         C   s  | j    } |  j d  | j d   d | _ |  j d | j d   |  j | j d   d | _ |  j d | j d   |  j	 | j d   |  j | j d   | j
 |  j d | j d   |  j | j d   |  j	 | j d   | j
 j |  j d | j d   |  j | j d   |  j	 | j d   d | j
 _ |  j d | j d   |  j	 | j d   |  j | j d   d | _ |  j d | j d   |  j	 | j d   |  j | j d   d  S(	   NR   i   R   u   fooR   t   oneof_nested_messageR~   t   oneof_bytes(   R"   R   RU   R   R   R0   R_   R   R   R   R   R~   R   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testOneofSemantics  s2    		
	c         C   sU   | j    } d | _ |  j | d  |  j d | j d   |  j d | j  d  S(   Ni   R   R   R   (   R"   R   R   R0   R   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt!   testOneofCompositeFieldReadAccess  s
    	c         C   s  | j    } |  j d  | j d   | t k rJ |  j | j d   n  d | _ |  j d | j d   | t k r |  j	 | j d   n  d | _
 |  j d | j d   | j d  |  j d  | j d   | t k r |  j | j d   n  d  S(   NR   i   R   R~   R   (   R"   R   RU   R   R   R   R   R   R0   R_   R   t
   ClearField(   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testOneofWhichOneof  s    		c         C   sz   | j    } d | _ | j d  | t k rG |  j | j d   n  |  j | j d   |  j d  | j d   d  S(   Ni   R   R   (	   R"   R   R   R   R   R   R   RU   R   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testOneofClearField  s    	c         C   sz   | j    } d | _ | j d  | t k rG |  j | j d   n  |  j | j d   |  j d  | j d   d  S(   Ni   R   R   (	   R"   R   R   R   R   R   R   RU   R   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testOneofClearSetField  s    	c         C   s   | j    } d | _ |  j | d  | j d  |  j d | j  | t k rj |  j | j d   n  |  j | j d   |  j d | j d   d  S(   Ni   R   R   R   (	   R"   R   R   R   R0   R   R_   R   R   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testOneofClearUnsetField  s    	c         C   sQ   | j    } d | _ | j    } | j | j    |  j d | j d   d  S(   Ni   R   R   (   R"   R   R.   R1   R0   R   (   R'   R(   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testOneofDeserialize   s
    	c         C   sK   | j    } d | _ | j    } | j |  |  j d | j d   d  S(   Ni   R   R   (   R"   R   t   CopyFromR0   R   (   R'   R(   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testOneofCopyFrom  s
    	c         C   s   | j    } d | j _ | j    } d | j _ d | j j _ | j |  |  j d | j j d   |  j d | j j j d   d  S(   Ni   R~   R   R   R   (   R   R   R   R   t   childt	   MergeFromR0   R   (   R'   R(   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testOneofNestedMergeFrom  s    c         C   s   | j    } d | j j _ d | j j j _ | j    } d | j _ | j |  |  j d | j j d   |  j d | j j j d   d  S(   Ni   i   i   R   R   (	   R   R   R   R~   R   R   R   R0   R   (   R'   R(   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testOneofMessageMergeFrom  s    		c         C   s8   | j  d | j  j    } |  j d | j d   d  S(   NR   R   (   R"   t   NestedMessageR0   R   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testOneofNestedMessageInit$  s    	c         C   s[   | j    } d | _ | j   |  j | j d   d | _ |  j d | j d   d  S(   Ni   R   R~   R   (   R"   R   R   t   assertIsNoneR   R   R0   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testOneofClear)  s    	
	c         C   s5   | j    } t d  | _ |  j | j t j  d S(   sm   Assigning a byte string to a string field should result
    in the value being converted to a Unicode string.R   N(   R"   R%   t   optional_stringR   t   sixt	   text_type(   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt"   testAssignByteStringToUnicodeField1  s    c         C   s   | j    } | j j d  | j t d  t t | j   !} |  j t | j  t |   d | j j   _ | j t d  t t | j   !} |  j t | j  t |   d S(   s|   It should be possible to use long-valued indicies in slices

    This didn't used to work in the v2 C++ implementation.
    i   i    i   N(	   R"   R   R   t   longR   R0   R   R   R~   (   R'   R(   R   t   sl(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testLongValuedSlice8  s    %%c      	   C   s   | j    } |  j t  ' } | j j d   t d  D  Wd QX|  j t  ' } | j j d   t d  D  Wd QXd S(   s5   This didn't use to work in the v2 C++ implementation.c         s   s   |  ] } t  Vq d  S(   N(   R   (   t   .0t   i(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pys	   <genexpr>M  s    i
   Nc         s   s   |  ] } t  Vq d  S(   N(   R   (   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pys	   <genexpr>P  s    (   R"   R    t	   NameErrorR   RT   t   ranget   repeated_nested_enum(   R'   R(   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt$   testExtendShouldNotSwallowExceptionsI  s    &	i    g        R   u    c         C   s}   | j    } |  j g  | j  x4 t j D]) } | j j |  |  j g  | j  q) W| j j g   |  j g  | j  d S(   s,   Test no-ops extending repeated int32 fields.N(   R"   t   assertSequenceEqualR   R   t   FALSY_VALUESRT   (   R'   R(   R   t   falsy_value(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testExtendInt32WithNothingT  s    c         C   s}   | j    } |  j g  | j  x4 t j D]) } | j j |  |  j g  | j  q) W| j j g   |  j g  | j  d S(   s,   Test no-ops extending repeated float fields.N(   R"   R   Rb   R   R   RT   (   R'   R(   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testExtendFloatWithNothinga  s    c         C   s}   | j    } |  j g  | j  x4 t j D]) } | j j |  |  j g  | j  q) W| j j g   |  j g  | j  d S(   s-   Test no-ops extending repeated string fields.N(   R"   R   RS   R   R   RT   (   R'   R(   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testExtendStringWithNothingn  s    c         C   s   | j    } |  j g  | j  | j j d g  |  j d g | j  | j j d d g  |  j d d d g | j  | j j d d g  |  j d d d d d g | j  d S(   s7   Test extending repeated int32 fields with python lists.i    i   i   i   i   N(   R"   R   R   RT   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testExtendInt32WithPythonList{  s    c         C   s   | j    } |  j g  | j  | j j d g  |  j d g | j  | j j d d g  |  j d d d g | j  | j j d d g  |  j d d d d d g | j  d S(   s7   Test extending repeated float fields with python lists.g        g      ?g       @g      @g      @N(   R"   R   Rb   RT   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testExtendFloatWithPythonList  s    c         C   s   | j    } |  j g  | j  | j j d g  |  j d g | j  | j j d d g  |  j d d d g | j  | j j d d g  |  j d d d d d g | j  d S(   s8   Test extending repeated string fields with python lists.R   t   11t   22t   33t   44N(   R"   R   RS   RT   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testExtendStringWithPythonList  s    c         C   sO   | j    } |  j g  | j  | j j d  |  j d d d g | j  d S(   sD   Test extending repeated string fields with characters from a string.t   abcR   R   R   N(   R"   R   RS   RT   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testExtendStringWithString  s    t   TestIterablec           B   s5   e  Z d  Z d d  Z d   Z d   Z d   Z RS(   s   This iterable object mimics the behavior of numpy.array.

    __nonzero__ fails for length > 1, and returns bool(item[0]) for length == 1.

    c         C   s   | p	 g  |  _  d  S(   N(   t   _list(   R'   t   values(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   __init__  s    c         C   sL   t  |  j  } | d k r t S| d k r< t |  j d  St d   d  S(   Ni    i   s   Truth value is ambiguous.(   R   R   RV   t   boolR   (   R'   t   size(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyRQ     s    c         C   s   t  |  j  S(   N(   R   R   (   R'   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   __len__  s    c         C   s   |  j  j   S(   N(   R   t   __iter__(   R'   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyR     s    N(   RN   RO   t   __doc__RU   R   RQ   R   R   (    (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyR     s
   		c         C   s   | j    } |  j g  | j  | j j t j g    |  j g  | j  | j j t j d g   |  j d g | j  | j j t j d d g   |  j d d d g | j  | j j t j d d g   |  j d d d d d g | j  d S(   s3   Test extending repeated int32 fields with iterable.i    i   i   i   i   N(   R"   R   R   RT   R   R   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testExtendInt32WithIterable  s    c         C   s   | j    } |  j g  | j  | j j t j g    |  j g  | j  | j j t j d g   |  j d g | j  | j j t j d d g   |  j d d d g | j  | j j t j d d g   |  j d d d d d g | j  d S(   s3   Test extending repeated float fields with iterable.g        g      ?g       @g      @g      @N(   R"   R   Rb   RT   R   R   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testExtendFloatWithIterable  s    c         C   s   | j    } |  j g  | j  | j j t j g    |  j g  | j  | j j t j d g   |  j d g | j  | j j t j d d g   |  j d d d g | j  | j j t j d d g   |  j d d d d d g | j  d S(   s4   Test extending repeated string fields with iterable.R   t   1t   2t   3t   4N(   R"   R   RS   RT   R   R   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testExtendStringWithIterable  s    c         C   si   t  j   d k s$ t  j   d k r( d  S| j   } |  j t j   } t j | j t j	  Wd  QXd  S(   Nt   cppi   (
   R   R   t   VersionR"   R    RY   t   PickleErrorRZ   R   t   HIGHEST_PROTOCOL(   R'   R(   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt!   testPickleRepeatedScalarContainer  s    c         C   s   | j    } | j j   d S(   s?   Exercise a scenario that has led to segfaults in the past.
    N(   R"   R   R   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt'   testSortEmptyRepeatedCompositeContainer  s    c         C   s5   | j    } |  j t   } | j d  Wd QXd S(   sB   Using HasField on a repeated field should raise an exception.
    R   N(   R"   R    R   R   (   R'   R(   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testHasFieldOnRepeatedField  s    c         C   s   | j    } |  j t   } | j j   Wd  QX| j j t d   |  j d | j j    |  j d | j j d   |  j d | j j d   |  j d d g | j  d  S(   Ni   i   i    i   i   i   (   R"   R    t
   IndexErrorR   t   popRT   R   R0   (   R'   R(   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testRepeatedScalarFieldPop  s    c         C   s  | j    } |  j t   } | j j   Wd  QX|  j t   } | j j d  Wd  QXx, t d  D] } | j j   } | | _ qf W|  j	 d | j j   j  |  j	 d | j j d  j  |  j	 d | j j d  j  |  j	 d d g g  | j D] } | j ^ q  d  S(   NR=   i   i   i    i   i   i   (
   R"   R    R  R   R	  R@   R   R   R~   R0   (   R'   R(   R   R   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testRepeatedCompositeFieldPop  s    c         C   s~   | j    } x? t d  D]1 } | j j | |  | j j   } | | _ q W|  j | j | j  |  j | j | j  d  S(   Ni   (	   R"   R   R   t   insertR   R   R~   R   R0   (   R'   R(   R   R   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testRepeatedCompareWithSelf  s    c         C   sM   | j    } | j j   } | j } | j j   } |  j | j j d  d S(   sw   A case that lead to a segfault when a message detached from its parent
    container has itself a child container.
    i    N(   R   t   repeated_childR   R   R0   R   t   optional_int32(   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testReleasedNestedMessages  s
    	c         C   s   | j    } |  j t   g  | _ Wd  QX| j j d  t j   d k ro |  j t   g  | _ Wd  QXn |  j t   g  | _ Wd  QXd  S(   Ni   R  (   R"   R    t   AttributeErrorR   R   R   R   R@   (   R'   R(   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testSetRepeatedComposite(  s    N(I   RN   RO   R+   R7   R<   RK   RX   R^   Rd   Re   Rg   Rj   Rk   Rl   Rs   Rt   Ru   Rx   R}   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   RU   RV   t	   bytearrayt   setR   R   R   R   R   R   R   R   RW   R   R   R   R   R  R  R  R
  R  R  R  R  (    (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyR   e   s   	
				$											-	-					(					 	#								#										
							*														
				
t
   Proto2Testc           B   sY   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   c         C   s\  t  j   } |  j | j d   |  j | j d   |  j | j d   |  j t   | j d  Wd  QX|  j t   | j d  Wd  QX|  j t   | j d  Wd  QX|  j d | j  |  j t | j	  |  j d | j
 j  d | _ t | _	 d | j
 _ |  j | j d   |  j | j d   |  j | j d   d | _ t | _	 d	 | j
 _ |  j | j d   |  j | j d   |  j | j d   | j d  | j d  | j d  |  j | j d   |  j | j d   |  j | j d   |  j d | j  |  j t | j	  |  j d | j
 j  d  S(
   NR  t   optional_boolt   optional_nested_messaget   field_doesnt_existR   R   i    i   i   (   R   R"   R   R   R    R   R0   R  RV   R  R  R~   R_   RF   R   (   R'   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testFieldPresence:  sD    				c         C   s]  t  j   } |  j t   } d | _ Wd QX|  j t | j j d  | j j d  d | j d <|  j t   d | j d <Wd QXt j   } d | _ | j j d  | j   } t  j   } | j	 |  |  j
 | j d   |  j d | j  |  j d t | j   | j   | j	 | j    |  j d | j  |  j d | j d  d S(	   s:   Assigning an invalid enum number is not allowed in proto2.i Ni   i    i@ it t   optional_nested_enumi   (   R   R"   R    R   R  R   R   R   R1   R.   R   R   R0   R   R   (   R'   R   R   R   Rf   t   m3(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testAssignInvalidEnumj  s*    	
c         C   s@   t  j   } d | j d <|  j t   d | j d <Wd  QXd  S(   Ni    i{   i   (   R   t   TestEnumMapt   known_map_fieldR    R   t   unknown_map_field(   R'   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testUnknownEnumMap  s    c         C   s&   t  j   } |  j t t | d  d  S(   Nt
   Extensions(   R   R"   R    R  R   (   R'   RH   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testExtensionsErrors  s    c         C   s   t  j d  } t j   } | j |  t j   } t  j |  |  j | |  |  j | | j    t j	 |  } |  j | | j    d  S(   NR5   (
   R   R   R   t   TestAllExtensionsR.   t   SetAllExtensionsR0   R1   R2   R3   (   R'   R4   R5   R;   R6   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testGoldenExtensions  s    c         C   s   t  j d  } t j   } | j |  t j   } t  j |  |  j | |  |  j | | j    t j	 |  } |  j | | j    d  S(   NR8   (
   R   R   R   t   TestPackedExtensionsR.   t   SetAllPackedExtensionsR0   R1   R2   R3   (   R'   R4   R5   R;   R6   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testGoldenPackedExtensions  s    c         C   sm   t  j d d  } t j |  } t j |  } |  j | |  |  j | j d  |  j t j	 | j
  d  S(   NR   i   (   R   t   TestRequiredRY   RZ   R[   R0   R   R    R   t   EncodeErrorR1   (   R'   R5   R\   R]   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testPickleIncompleteProto  s    c         C   s`  t  j   t  j   t  j   g } d | d _ d | d _ d | d _ d | d _ t  j   } d | _ d | _ d | _ t  j j   } | j j |  | j	 j |  | j
 j |  | j j |  | j j |  | j j   j j | d  | j j   j j | d  | j j   j j | d  | j j   j j | d  | j j   j j | d  | j j   j j | d  | j   } t  j   } | j |  |  j | j |  |  j | j |  |  j | j j |  |  j | j t  j j |  |  j t | j  d  |  j t | j  d  |  j t | j t  j j  d  d S(   sc   Check the merge behavior when a required or optional field appears
    multiple times in the input.i   i    i   i   t   helloN(   R   R"   R  t   optional_int64R   t   TestParsingMerget   RepeatedFieldsGeneratort   field1RT   t   field2t   field3t   ext1t   ext2t   group1R   R   t   group2R1   R.   R0   t   required_all_typest   optional_all_typest   optionalgroupt   optional_group_all_typesR!  t   optional_extR   t   repeated_all_typest   repeatedgroupt   repeated_ext(   R'   t   messagest   merged_messaget	   generatort   datat   parsing_merge(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testParsingMerge  sJ    					
c         C   sK  t  j d d d d d d d d d	 i d
 d 6d i d d 6d i  d d d i d d 6i d d 6g d d t  j j g d d d d  } |  j | t  j  |  j d | j  |  j d | j  |  j d | j  |  j d | j  |  j d
 | j	 j
  |  j | j t  j j  |  j d | j j  |  j | j d   |  j | j t  j    |  j t  j j | j  |  j d t | j   |  j d | j d j
  |  j d | j d j
  |  j d t | j   |  j t  j j | j d  |  j t  j j | j d  |  j d | j  |  j d | j  |  j | j d   |  j d t | j   |  j d | j  t  j d d   } |  j t  j j | j  |  j t   t  j d i d! d" 6 Wd  QX|  j t   t  j d i d# d 6 Wd  QX|  j t   t  j d d$  Wd  QX|  j t   t  j d d  Wd  QXd  S(%   NR  id   t   optional_fixed32i   R`   g     r@t   optional_bytesR    R9  i  R   R  i  R~   t   optional_foreign_messageR  t   BAZR=  iX  i  R   t   FOOt   default_int32i   R   R   i   i    i   R-  i*   u   BAZi   t   INVALID_NESTED_FIELDt   INVALID_VALUE_TYPEt   INVALID_LABEL(    R   R"   t   BARR   R0   R  RE  R`   RF  R9  R   R  R   R~   R_   R   RG  t   ForeignMessageRH  R  R   R=  R   RI  RJ  R   R   Rb   t   default_int64R    R   R@   (   R'   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testPythonicInit  sl    	
	

		(   RN   RO   R  R  R   R"  R%  R(  R+  RD  RQ  (    (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyR  8  s   	0							1t
   Proto3Testc           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 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 d   Z d   Z d   Z d   Z d   Z  d   Z! RS(    c         C   sR   t  |  } x/ | D]' \ } } |  j | | |  | | =q W|  j i  |  d  S(   N(   t   dictR0   (   R'   t   map_itert
   dict_valueR   t   v(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   assertMapIterEquals+  s
    c         C   sr  t  j   } |  j t   | j d  Wd  QX|  j t   | j d  Wd  QX|  j t   | j d  Wd  QX|  j t   | j d  Wd  QX|  j | j d   |  j t   | j d  Wd  QX|  j t   | j d  Wd  QX|  j t   | j d  Wd  QX|  j d	 | j  |  j d	 | j  |  j d
 | j	  |  j t
 | j  |  j d	 | j j  d	 | j _ |  j | j d   d | _ d | _ d | _	 t | _ d | j _ | j d  | j d  | j d  | j d  | j d  |  j d	 | j  |  j d	 | j  |  j d
 | j	  |  j t
 | j  |  j d	 | j j  d  S(   NR  R`   R   R  R  R  R   R   i    R   i   g?R   i   (   R   R"   R    R   R   R   R0   R  R`   R   RV   R  R  R~   R_   RF   R   (   R'   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyR  5  sL    				c         C   s   t  j   } d | _ |  j d | j  | j j d  |  j d | j d  d | j d <|  j d | j d  | j   } t  j   } | j |  |  j d | j  |  j d | j d  d S(   sC   Assigning an unknown enum value is allowed and preserves the value.i iTi    it N(   R   R"   R  R0   R   R   R1   R.   (   R'   R   Rf   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testAssignUnknownEnumn  s    	c         C   s  t  j   } |  j d | j k  |  j d | j k  |  j d | j k  |  j d | j k  |  j d | j k  |  j t | j	 k  |  j d | j
 k  |  j d | j k  |  j d | j k  |  j d | j d  |  j d | j d  |  j d | j d  |  j d | j d  |  j d	 | j d  |  j t | j d t   |  j t | j	 t  |  j t | j	 t t   |  j d
 | j
 d  |  j d
 | j d  |  j d | j d  |  j d | j k  |  j d | j k  |  j d | j k  |  j d | j k  |  j d | j k  |  j t | j	 k  |  j d | j
 k  |  j d | j k  |  j d | j k  |  j | j
 d t j  |  j t   | j
 d Wd  QX|  j t   d | j
 k Wd  QXd  S(   Nii   i!   i{   R   io   ix  i    g        R   l        l     l        l        l     l        l        l     l        (   R   t   TestMapR   t   map_int32_int32t   map_int64_int64t   map_uint32_uint32t   map_uint64_uint64t   map_int32_doubleRV   t   map_bool_boolt   map_string_stringt   map_int32_bytest   map_int32_enumR0   R_   t
   isinstancet   floatR   R   R   R   R    R@   (   R'   RH   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testScalarMapDefaults  sF    c         C   s  t  j   } |  j | j j d   |  j d | j j d d   |  j | j j d   d | j d <|  j d | j j d   |  j d | j j d   |  j t   | j j d  Wd  QX|  j | j j d   |  j d | j j d d   | j d } |  j	 | | j j d   t
 j   d k rd|  j t   | j j d  Wd  QXn |  j d  | j j d   d  S(   Ni   i
   i   R   R  (   R   RY  R   RZ  t   getR0   R    R@   t   map_int32_foreign_messageR   R   R   RU   (   R'   RH   t   submsg(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt
   testMapGet  s"    c      
   C   s  t  j   } |  j d t | j   |  j d | j k  d | j d <d | j d <d | j d	 <d | j d <d
 | j	 d <d | j
 d <d | j d <t | j t <d | j d <d | j d	 <|  j g  | j    |  j d t | j   |  j t   d | j d	 <Wd  QX|  j d t | j   |  j t   d	 | j d <Wd  QX| j   } t  j   } | j |  |  j t   d | j d	 <Wd  QX|  j t   d	 | j d <Wd  QX|  j d | j d  |  j d | j d  |  j d | j d	  |  j d | j d  |  j d
 | j	 d  |  j d | j
 d  |  j d | j d  |  j t | j t  |  j d | j d  |  j d | j d	  t j   d k r|  j d t | j   n  d  S(   Ni    i   i8ii   i"   i!   i  i{   g333333?gffffff
@i   t   123R   ix  R   s   {-123: -456}l        l     l        l     l        l        l        l     l        l     l        l        (   R   RY  R0   R   RZ  R   R[  R\  R]  t   map_int32_floatR^  R`  RF   R_  Rb  t   FindInitializationErrorsR    R@   R1   R.   R   R   R   R%   (   R'   RH   Rf   t   msg2(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testScalarMap  sP    	c         C   sV   t  j   } d | j d <d | j d <|  j | j   d  |  j d | j    d  S(   Ni    R   i   s   
  r
  (   R   RY  RZ  R`  R0   t   ByteSizeR1   (   R'   RH   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMapEntryAlwaysSerialized  s    	c         C   s   t  j   } d } | j d  } | | j | <t | j j    d \ } } |  j | |  |  j | |  |  j | t j	  |  j | t j	  d  S(   Nu   ሴt   utf8i    (
   R   RY  t   encodeR`  R   t   itemsR0   R   R   R   (   R'   RH   t   unicode_objt	   bytes_objR   t   value(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt    testStringUnicodeConversionInMap  s    c         C   s  t  j   } |  j d t | j   |  j d | j k  | j d | j j d  |  j d t | j   |  j d | j  |  j d | j  |  j d t | j   |  j t	   | j d Wd  QX|  j t
   | j d | j d <Wd  QX|  j d t | j   | j   } t  j   } | j |  |  j d t | j   |  j d | j  |  j d | j  |  j d t | j   t j   d k r|  j d	 t t | j    n  d  S(
   Ni    i   i{   i8i   Rj  i  R   i   (   R   RY  R0   R   Rg  R   t   get_or_createR$   R    R@   R   R1   R.   R   R   R%   (   R'   RH   Rf   Rm  (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMessageMap&  s0    	c         C   s   t  j   } d | j d j _ | j d =d | j d j _ |  j d t | j   d | j d j _ |  j d t | j   | j   } t  j   } | j |  d d g } x | D] } | j | =q Wd  S(   Ni   i   (	   R   RY  t   map_int32_all_typesR  R~   R0   R   R1   R.   (   R'   RH   Rf   Rm  t   keysR   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testNestedMessageMapItemDeleteO  s    
c         C   s   t  j   } d | j d <| j   } d | j d <|  j | j   | d  d | j d _ | j   } d | j d _ |  j | j   | d  d  S(   Ni   i   i   (   R   RY  RZ  Ro  R0   Rg  R   (   R'   RH   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMapByteSize`  s    c         C   s  t  j   } d | j d <d | j d <d | j d <d | j d _ d	 | j d
 _ t  j   } d | j d <d | j d <d | j d
 _ d | j d
 _ | j d
 } | j |  |  j d | j d  |  j d | j d  |  j d | j d  |  j d | j d  |  j d | j d j  |  j d	 | j d
 j  |  j	 | j d
 j
 d   t j   d k r|  j d | j  n  i  } x8 | j D]- } |  j	 | | k  | j | j | | <qW|  j i d d 6d	 d
 6|  | j d =|  j	 d | j k  | j d
 =|  j	 d
 | j k  t j   d k r\|  j t   | j d =Wd  QXn  |  j t   | j d =Wd  QXd  S(   Ni"   i   iN   i8   i!   i   i   io   i
   i   i7   ic   iX   i   i   t   dR  R   (   R   RY  RZ  R[  Rg  R   R~  R   R0   R   R   R   R   R    R@   t   KeyError(   R'   RH   Rm  t   old_map_valuet   as_dictR   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMergeFroml  sH    

c         C   s6   t  j   } |  j t d   | j d  Wd  QXd  S(   NsW   Parameter to MergeFrom\(\) must be instance of same class: expected .*TestMap got int\.i   (   R   RY  t   assertRaisesRegexpR@   R   (   R'   RH   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMergeFromBadType  s
    
c         C   s6   t  j   } |  j t d   | j d  Wd  QXd  S(   Ns[   Parameter to [A-Za-z]*From\(\) must be instance of same class: expected .*TestMap got int\.i   (   R   RY  R  R@   R   (   R'   RH   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testCopyFromBadType  s
    
c         C   s   t  j   } t d  | j t d  <t d	  | j t d  <t d  | j t d  <t d  | j t d  <| j   } t  j   } | j |  |  j	 d | j d  |  j	 d | j d  |  j	 d | j d  |  j	 d | j d  d  S(   Ni8ii   i"   i!   i  i{   l        l     l        l     l        l        l        l     l        l     l        l        (
   R   RY  R   RZ  R[  R\  R]  R1   R.   R0   (   R'   RH   Rf   Rm  (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testIntegerMapWithLongs  s    c         C   s   t  j   } d | j j d <| j   } t  j   } | j |  |  j | |  d | j j d <| j   } | j |  |  j | |  | j j j   | j   } | j |  |  j | |  d  S(   Ni  i{   i  ix  (   R   t   TestMapSubmessaget   test_mapRZ  R1   R.   R0   t   clear(   R'   RH   Rf   Rm  (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMapAssignmentCausesPresence  s    c         C   s  t  j   } d | j j d _ | j   } t  j   } | j |  |  j | |  d | j j d _ | j   } | j |  |  j | |  | j j d j | j j d  | j   } | j |  |  j | |  | j j j	   | j   } | j |  |  j | |  d  S(   Ni   i{   i   ix  (
   R   R  R  Rg  R   R1   R.   R0   R   R  (   R'   RH   Rf   Rm  (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt-   testMapAssignmentCausesPresenceForSubmessages  s&    c         C   s   t  j   } t | j  } t | j  } d | j d <d | j d _ |  j t   x | D] } q^ WWd  QX|  j t   x | D] } q WWd  QXd  S(   NRj  R   i   (   R   RY  t   iterR`  Rg  R   R    t   RuntimeError(   R'   RH   t   string_string_itert   int32_foreign_iterR   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testModifyMapWhileIterating  s    
c         C   s   t  j   } | j d } |  j | | j d  |  j | t j  d | _ | j   } t  j   } | j	 |  |  j
 d | j d j  |  j t   t j   | j d <Wd  QXd  S(   Nio   i   iX   (   R   RY  Rg  R   R   R   RO  R   R1   R.   R0   R    R   (   R'   RH   Rh  Rf   Rm  (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testSubmessageMap  s    	c         C   s   t  j   } x* | j j   D] \ } } |  j t  q Wd | j d <d | j d <d | j d <|  j d t | j   i d d 6d d 6d d 6} |  j | j j   |  d  S(   Ni   i   i   i   i   (	   R   RY  RZ  Rs  R_   RV   R0   R   RW  (   R'   RH   R   RV  t   matching_dict(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMapIteration  s    c      
      s  t  j d k  rt j   } d | j d <d | j d <d | j d <d | j d <| j }   j d t |   t j   } | j | j      f d   } | | j	   | j
    | | j   | j    | | j   | j      j d | j d     j d  | j d	     j d | j d     j d
 | j d     j d t |   | j   \ } }   j d | |    j d t |   | j     j d
 t |     j t   | j   Wd  QX  j d
 | j d     j d t |   | j | j    j d t |     j t   | j | j | j  Wd  QX  j t   | j d
  Wd  QX  j t   | j d d  Wd  QXn  d  S(   Ni   i   i   i   i   i
   i   c            s8     j  t |  |  d    j  t |  |  d  d  S(   Ni    i   (   R0   t   nextR   (   t   seqt   iterator(   R'   (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt
   CheckItems9  s    i  i    i   Rv  i   (   i   (   Rv   Rw   R   RY  RZ  R0   R   R.   R1   Rs  t	   iteritemsR{  t   iterkeysR   t
   itervaluesRf  RU   R	  t   popitemR  R    R  t
   setdefaultt   updateR@   (   R'   RH   t	   map_int32Rm  R  R   Rv  (    (   R'   sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testPython2Map-  sJ    	
c         C   s   t  j   } d | j d <d | j d <d | j d <d | j d <d | j d <| j j   } | j j   } |  j | |  d  S(   NR   t   local_init_opt   trainable_variablest	   variablest   init_opt	   summaries(   R   RY  R`  Rs  R0   (   R'   RH   t   items1t   items2(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMapItems]  s    c         C   s   d } t  j   } d | j d <d | j d <d | j d <d | j d	 <d
 | j d <d
 | j d <d | j d <d | j d <d | j d <|  j | | j d t   d  S(   Ns   r
init_opdr

item1er

item2fr

item3gr
item4QQr
local_init_opar
	summarieser
trainable_variablesbr
	variablescR   R  R   R  R   R  R~  R  t   eR  t   item1t   ft   item2t   gt   item3t   QQt   item4RL   (   R   RY  R`  R0   R1   RF   (   R'   R4   RH   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt!   testMapDeterministicSerializationl  s    	c         C   st   t  j   } d | j d <d | j d <d | j d <| j j   } ~ i d d 6d d 6d d 6} |  j | |  d  S(   Ni   i   i   i   i   (   R   RY  RZ  Rs  RW  (   R'   RH   t   itR  (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMapIterationClearMessage  s    c         C   s   t  j d i d d 6d d 6 } |  j d | j d  |  j d | j d  t  j d i t j d d  d 6 } |  j d | j d j  d  S(	   NRZ  i   i   i   i   Rg  R   i   (   R   RY  R0   RZ  R   RO  Rg  R   (   R'   RH   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMapConstruction  s     	c         C   s   t  j   } | j } d | d <d | d <d | d <| j d  |  j d | j    i d d 6d d 6d d 6} |  j | j   |  d  S(   Ni   i   i   i   i   RZ  R   (   R   RY  RZ  R   R0   R1   RW  Rs  (   R'   RH   t	   int32_mapR  (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMapValidAfterFieldCleared  s    	


c         C   sb   t  j   } | j } d | d _ | j d  |  j d | j    |  j d | j   k  d  S(   Ni   i   Rg  R   (	   R   RY  Rg  R   R   R0   R1   R_   R{  (   R'   RH   t   int32_foreign_message(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt$   testMessageMapValidAfterFieldCleared  s    	c         C   s   t  j   } t | j  } | j d  |  j t   x | D] } q? WWd  QXt | j  } | j d  |  j t   x | D] } q WWd  QXd  S(   NRZ  Rg  (   R   RY  R  RZ  R   R    R  Rg  (   R'   RH   R  R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt"   testMapIterInvalidatedByClearField  s    
c         C   s   t  j   } |  j d t | j   d | j d <|  j d t | j   |  j t   | j d =Wd  QX| j d =|  j d t | j   |  j t   | j d =Wd  QXd  S(   Ni    i   i   i   iX   i    (   R   RY  R0   R   RZ  R    R  Rz  (   R'   RH   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMapDelete  s    
c         C   sh   t  j   } |  j | j t j  |  j | j t j  |  j | j t j  |  j | j t j  d  S(   N(   R   RY  R   RZ  R   t   Mappingt   MutableMappingRg  (   R'   RH   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMapsAreMapping  s    c         C   s\   t  j   } d | j d <|  j | j | j  |  j | j | j  |  j | j d  d  S(   Ni8ii    (   R   RY  RZ  R0   Rg  t   assertNotEqual(   R'   RH   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testMapsCompare  s    
c         C   sV   t  j   } d | j d <d | j d <d | j d _ |  j d t | j     d  S(   NRj  R   i@   i#   i   t   fooi    (	   R   RY  R`  RZ  t   map_string_foreign_messageR   R0   R   Rl  (   R'   RH   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt(   testMapFindInitializationErrorsSmokeTest  s
    ("   RN   RO   RW  R  RX  Re  Ri  Rn  Rp  Rw  Ry  R|  R}  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  (    (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyRR  (  s@   	
	9		0		=			)			<									0											t   ValidTypeNamesTestc           B   s   e  Z d    Z d   Z RS(   c            s   t  t |   j d  d   d | d | f } |  j t   f d   | D  d   | f    j d  } | d } d j | d   } t | d	 | g d  S(
   Nt   'i   s   Repeated%sContainers   Repeated%sFieldContainerc         3   s   |  ] }   j  |  Vq d  S(   N(   t   endswith(   R   RV  (   t   tp_name(    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pys	   <genexpr>  s    s   %r does end with any of %rt   .it   fromlist(   R%   t   typet   splitR_   t   anyt   joint
   __import__(   R'   RH   t	   base_namet   valid_namest   partst
   class_namet   module_name(    (   R  sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   assertImportFromName  s    
c         C   s6   t  j   } |  j | j d  |  j | j d  d  S(   Nt   Scalart	   Composite(   R   R"   R  R   R   (   R'   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testTypeNamesCanBeImported
  s    (   RN   RO   R  R  (    (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyR    s   	t   PackedFieldTestc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s   | j  j d  | j j d  | j j d  | j j d  | j j d  | j j d  | j j d  | j j d  | j	 j d  | j
 j d  | j j d  | j j d  | j j t  | j j d  d  S(   Ni   g      ?(   R   R   t   repeated_int64t   repeated_uint32t   repeated_uint64t   repeated_sint32t   repeated_sint64t   repeated_fixed32t   repeated_fixed64t   repeated_sfixed32t   repeated_sfixed64Rb   Rc   t   repeated_boolRF   R   (   R'   R   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt
   setMessage  s    c         C   s9   t  j   } |  j |  d } |  j | | j    d  S(   NsH   
"*2:   B       J   R       Z  ?b      ?jr(   R   R9   R  R0   R1   (   R'   R   R4   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testPackedFields"  s    c         C   s9   t  j   } |  j |  d } |  j | | j    d  S(   Ns:    (0=   A       M   Q       ]  ?a      ?hp(   R   t   TestUnpackedTypesR  R0   R1   (   R'   R   R4   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testUnpackedFields5  s    (   RN   RO   R  R  R  (    (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyR    s   		R  i   i   s;   explicit tests of the C++ implementation for PY27 and abovet   OversizeProtosTestc           B   s2   e  Z e d     Z d   Z d   Z d   Z RS(   c         C   sc   d } t  j   } t j   } t j | |  | j |  t j |  j	 | j
 d   |  _ d  S(   Ns  
      name: "f/f.msg2"
      package: "f"
      message_type {
        name: "msg1"
        field {
          name: "payload"
          number: 1
          label: LABEL_OPTIONAL
          type: TYPE_STRING
        }
      }
      message_type {
        name: "msg2"
        field {
          name: "field"
          number: 1
          label: LABEL_OPTIONAL
          type: TYPE_MESSAGE
          type_name: "msg1"
        }
      }
    s   f.msg2(   R	   t   DescriptorPoolR   t   FileDescriptorProtoR   t   Parset   AddR
   t   MessageFactoryt   GetPrototypet   FindMessageTypeByNamet	   proto_cls(   t   clst	   file_desct   poolt   desc(    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt
   setUpClassN  s    c         C   s8   |  j    |  _ d d |  j j _ |  j j   |  _ d  S(   NR   i   i@   i   i   i   i  (   R  t   pt   fieldR   R1   t   p_serialized(   R'   (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   setUpq  s    c         C   sm   d d l  m } | t  |  j   } y | j |  j  Wn, t j k
 rh } |  j t	 |  d  n Xd  S(   Ni(   t   SetAllowOversizeProtoss   Error parsing message(
   t   google.protobuf.pyext._messageR  RV   R  R.   R  R   RC   R0   R%   (   R'   R  t   qR  (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testAssertOversizeProtov  s    
c         C   sY   d d l  m } | t  |  j   } | j |  j  |  j |  j j j	 | j j	  d  S(   Ni(   R  (
   R  R  RF   R  R.   R  R0   R  R  R   (   R'   R  R  (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   testSucceedOversizeProto  s
    
(   RN   RO   t   classmethodR  R  R  R  (    (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyR  I  s   #			t   __main__(4   R   t
   __author__R   R2   Rm   R   RY   R   Rv   RD   t	   unittest2t   unittestt   ImportErrorR   R   t   google.protobufR   R   R   R   R   R	   R
   R   t   google.protobuf.internalR   R   R   R   R   R   R   t   PY3t   intR   R   R   R   R   t   BaseTestCaset   NamedParametersR   R  RR  R  R  t   skipIfR   Rw   R  RN   t   main(    (    (    sI   /usr/lib/python2.7/site-packages/google/protobuf/internal/message_test.pyt   <module>)   st   								     9	: