
    f"                     z   d dl Z d dlZd dlZd dlZ G d de      Z G d de      Z G d de      Z G d d	e      Z G d
 de      Z	 G d de      Z
 G d dej                        Z G d dej                        Z G d dee
ej                        Z G d deej                        Z G d de      Z G d dej                        Z G d de	ej                        Z G d dee
ej                        Z G d dee
ej                        Z G d  d!ee
ej                        Z G d" d#ee
ej                        Z G d$ d%eeeej                        Z G d& d'e      Z G d( d)e
e      Z G d* d+e      Z G d, d-e      Z G d. d/e      Z G d0 d1e      Z G d2 d3ee
ej                        Z G d4 d5e      Zd6 Z y)7    Nc                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)InterfaceConformanceTestsMixinc                     t         NNotImplementedErrorselfs    /var/dept/share/cheung/public_html/OutSchool/python/env/lib/python3.12/site-packages/zope/schema/tests/test__bootstrapfields.py_getTargetClassz.InterfaceConformanceTestsMixin._getTargetClass       !!    c                     t         r   r   r	   s    r   _getTargetInterfacez2InterfaceConformanceTestsMixin._getTargetInterface   r   r   c                 $    | j                         gS r   )r   r	   s    r   _getTargetInterfacesz3InterfaceConformanceTestsMixin._getTargetInterfaces    s    ((*++r   c                 J     | j                   | j                         g|i |S r   )_makeOneFromClassr   )r
   argskwargss      r   _makeOnez'InterfaceConformanceTestsMixin._makeOne$   s2    %t%%d&:&:&< 0'+0(.0 	0r   c                      ||i |S r    )r
   clsr   r   s       r   r   z0InterfaceConformanceTestsMixin._makeOneFromClass)   s    D#F##r   c                 p    ddl m} | j                         }|}| j                         D ]  } |||        y )Nr   verifyClass)zope.interface.verifyr   r   r   )r
   r   r   __traceback_info__ifaces        r   test_class_conforms_to_ifacez;InterfaceConformanceTestsMixin.test_class_conforms_to_iface,   s;    5""$ ..0 	$Es#	$r   c                 p    ddl m} | j                         }|}| j                         D ]  } |||        y )Nr   verifyObject)r   r$   r   r   )r
   r$   instancer   r    s        r   test_instance_conforms_to_ifacez>InterfaceConformanceTestsMixin.test_instance_conforms_to_iface3   s8    6==?%..0 	*E)	*r   c                     ddl m}  || j                               }|j                  }| j	                  ||j                  d          | j	                  | j                         |j                  d          y )Nr   implementedBy   )zope.interfacer)   r   __sro__assertIsr   )r
   r)   implementedr   s       r   test_iface_is_first_in_sroz9InterfaceConformanceTestsMixin.test_iface_is_first_in_sro:   s_    0#D$8$8$:;(00k;#6#6q#9:d..0+2E2Ea2HIr   c                     ddl m} ddl m}  || j                               j                  }| j                  |j                   || j                                            y )Nr   r(   ro)r+   r)   r2   r   r,   
assertTrueis_consistent)r
   r)   r2   r   s       r   !test_implements_consistent__sro__z@InterfaceConformanceTestsMixin.test_implements_consistent__sro__A   sK    0%*4+?+?+ABJJ]4+?+?+ABC	Er   c                     ddl m} | j                         j                  }| j	                  |j                  | j                                      y )Nr   r1   )r+   r2   r   __iro__r3   r4   )r
   r2   r   s      r   test_iface_consistent_roz7InterfaceConformanceTestsMixin.test_iface_consistent_roH   s:    %!557??(()A)A)CDEr   N)__name__
__module____qualname__r   r   r   r   r   r!   r&   r/   r5   r8   r   r   r   r   r      s7    "",0
$$*JEFr   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	EqualityTestsMixinc                 :    | j                         }t        |       y r   )r   hashr
   fields     r   test_is_hashablez#EqualityTestsMixin.test_is_hashableP   s    Ur   c                     | j                         }| j                         }| j                  ||       | j                  ||       | j                  t        |      t        |             y r   )r   assertIsNotassertEqualr?   )r
   field1field2s      r   #test_equal_instances_have_same_hashz6EqualityTestsMixin.test_equal_instances_have_same_hashT   sP    ((ftF|4r   c                    ddl m} | j                         | j                         | j                         | j                  t	              t	                      G fdd|j
                        } G fdd|j
                        }| j                         | j                         | j                         | j                  t	              t	                     y )Nr   	interfacec                       e Zd ZW  Zy)QEqualityTestsMixin.test_instances_in_different_interfaces_not_equal.<locals>.IOneN)r9   r:   r;   one)rF   s   r   IOnerM   d       Cr   rO   c                       e Zd ZW  Zy)QEqualityTestsMixin.test_instances_in_different_interfaces_not_equal.<locals>.ITwoN)r9   r:   r;   two)rG   s   r   ITworR   g   rP   r   rT   )zoperK   r   rE   r?   	InterfaceassertNotEqual)r
   rK   rO   rT   rF   rG   s       @@r   0test_instances_in_different_interfaces_not_equalzCEqualityTestsMixin.test_instances_in_different_interfaces_not_equal\   s    "(ftF|4	9&& 		9&& 	 	((FF+DL$v,7r   c                    | j                  d      }| j                  d      }| j                  ||       | j                  ||       | j                  t	        |      t	        |             |di}| j                  ||       | j                  d||          | j                  ||       | j                  t              5  |j                  |       d d d        y # 1 sw Y   y xY w)Nfootitlebar*   )
r   rD   rW   rE   r?   assertInassertNotInassertRaisesKeyError__getitem__)r
   rF   rG   ds       r   "test_hash_across_unequal_instancesz5EqualityTestsMixin.test_hash_across_unequal_instanceso   s     V,V,(FF+ftF|4RLfa QvY'#x( 	"MM&!	" 	" 	"s   ?CC#c                     | j                         } G d d| j                               }| j                  |      }| j                  ||       | j	                  ||k7         y )Nc                       e Zd Zy)>EqualityTestsMixin.test___eq___different_type.<locals>.DerivedNr9   r:   r;   r   r   r   Derivedrh          r   rj   )r   r   r   rW   r3   )r
   leftrj   rights       r   test___eq___different_typez-EqualityTestsMixin.test___eq___different_type   sR    }}	d**, 	&&w/D%(&r   c                     | j                  d      }| j                  d      }| j                  ||       | j                  ||k7         y )NTrequiredF)r   rW   r3   r
   rl   rm   s      r   %test___eq___same_type_different_attrsz8EqualityTestsMixin.test___eq___same_type_different_attrs   sB    }}d}+u-D%(&r   c                     | j                         }| j                  ||       | j                         }| j                  ||       | j                  ||k7         y r   )r   rE   assertFalserr   s      r    test___eq___same_type_same_attrsz3EqualityTestsMixin.test___eq___same_type_same_attrs   sJ    }}t$u%'r   N)
r9   r:   r;   rB   rH   rX   re   rn   rs   rv   r   r   r   r=   r=   N   s%    58&""''(r   r=   c                       e Zd ZdZdZd Zy)OrderableMissingValueMixinr   c                    | j                         }| j                  |j                  j                         | j                  |j                  j                         | j                  | j                  | j                        }| j                  |j                         | j                  |j                         | j                  | j                  |j                         y )N)missing_valuedefault)r   r3   min_allow_nonemaxr   mvm_missing_valuemvm_defaultassertIsNonerE   r{   )r
   KindrA   s      r    test_missing_value_no_min_or_maxz;OrderableMissingValueMixin.test_missing_value_no_min_or_max   s    
 ##%,,-,,-D,B,B&*&6&6  8%))$%))$//1D1DEr   N)r9   r:   r;   r   r   r   r   r   r   rx   rx      s    KFr   rx   c                   >    e Zd Zd Zd ZdZdZdZdZdZ	d Z
d	 Zd
 Zy)OrderableTestsMixinc                 f   ddl m} | j                  |      5 }|j                  |       d d d        j                  }| j                  ||j                         | j                  |j                  |j                         | j                  |j                  |j                         y # 1 sw Y   ~xY w)Nr   TooBig)zope.schema.interfacesr   ra   validate	exceptionrE   valuer   bound	TOO_LARGEviolation_direction)r
   rA   r   r   excexs         r   assertRaisesTooBigz&OrderableTestsMixin.assertRaisesTooBig   s    1v& 	"#NN5!	" ]])BHH-))2+A+AB	" 	"   B''B0c                 f   ddl m} | j                  |      5 }|j                  |       d d d        j                  }| j                  ||j                         | j                  |j                  |j                         | j                  |j                  |j                         y # 1 sw Y   ~xY w)Nr   TooSmall)r   r   ra   r   r   rE   r   r}   r   	TOO_SMALLr   )r
   rA   r   r   r   r   s         r   assertRaisesTooSmallz(OrderableTestsMixin.assertRaisesTooSmall   s    3x( 	"CNN5!	" ]])BHH-++R-C-CD	" 	"r   
      )r         r   )	   i)      c                     | j                  | j                        }| j                  | j                  z   D ]  }|j	                  |        | j
                  D ]  }| j                  ||        y )Nr}   )r   MINVALIDTOO_BIGr   r   r   r
   rA   r   s      r   test_validate_minz%OrderableTestsMixin.test_validate_min   sa    $((+ZZ$,,. 	"ENN5!	"^^ 	4E%%eU3	4r   c                     | j                  | j                        }| j                  | j                  z   D ]  }|j	                  |        | j
                  D ]  }| j                  ||        y )Nr   )r   MAXr   r   r   r   r   r   s      r   test_validate_maxz%OrderableTestsMixin.test_validate_max   sa    $((+ZZ$..0 	"ENN5!	"\\ 	2E##E51	2r   c                 "   | j                  | j                  | j                        }| j                  D ]  }| j	                  ||        | j
                  D ]  }|j                  |        | j                  D ]  }| j                  ||        y )Nr}   r   )	r   r   r   r   r   r   r   r   r   r   s      r   test_validate_min_and_maxz-OrderableTestsMixin.test_validate_min_and_max   s    $((9^^ 	4E%%eU3	4ZZ 	"ENN5!	"\\ 	2E##E51	2r   N)r9   r:   r;   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s8    CE C
CEIG422r   r   c                       e Zd Zd Zd Zy)LenTestsMixinc                 f   ddl m} | j                  |      5 }|j                  |       d d d        j                  }| j                  ||j                         | j                  |j                  |j                         | j                  |j                  |j                         y # 1 sw Y   ~xY w)Nr   )TooLong)r   r   ra   r   r   rE   r   
max_lengthr   r   r   )r
   rA   r   r   r   r   s         r   assertRaisesTooLongz!LenTestsMixin.assertRaisesTooLong   s    2w' 	"3NN5!	" ]])))2884**B,B,BC	" 	"r   c                 f   ddl m} | j                  |      5 }|j                  |       d d d        j                  }| j                  ||j                         | j                  |j                  |j                         | j                  |j                  |j                         y # 1 sw Y   ~xY w)Nr   )TooShort)r   r   ra   r   r   rE   r   
min_lengthr   r   r   )r
   rA   r   r   r   r   s         r   assertRaisesTooShortz"LenTestsMixin.assertRaisesTooShort   s    3x( 	"CNN5!	" ]])))2884++R-C-CD	" 	"r   N)r9   r:   r;   r   r   r   r   r   r   r      s    DEr   r   c                       e Zd Zd Zd Zy)WrongTypeTestsMixinc                    ddl m} d }| j                  |      5 }t        |d      r|} |j                  |i | n ||i | d d d        j
                  }| j                  |j                  |       || j                  |j                  |       t        |      dk(  r!|s| j                  |j                  |d          |s=t        |      dk(  r.| j                  |j                  |j                         d          y y y # 1 sw Y   xY w)Nr   	WrongTyper   r*   )r   r   ra   hasattrr   r   r-   expected_typerA   lenr   popitem)	r
   field_or_methr   r   r   r   rA   r   r   s	            r   assertRaisesWrongTypez)WrongTypeTestsMixin.assertRaisesWrongType   s    4y) 	/S}j1%//t.v.	/ ]]b&&6MM"((E*t9>&MM"((DG,Fq(MM"((FNN$4Q$78 )t	/ 	/s   *DD
c                 <    |D ]  }|}| j                  |||        y r   )r   )r
   rA   r   valuesr   r   s         r   assertAllRaiseWrongTypez+WrongTypeTestsMixin.assertAllRaiseWrongType  s+     	DE!&&&umUC	Dr   N)r9   r:   r;   r   r   r   r   r   r   r      s    9,Dr   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)ValidatedPropertyTestsc                     ddl m} |S )Nr   )ValidatedProperty)zope.schema._bootstrapfieldsr   )r
   r   s     r   r   z&ValidatedPropertyTests._getTargetClass  s    B  r   c                 .     | j                         |i |S r   r   r
   r   kws      r   r   zValidatedPropertyTests._makeOne      %t##%t2r22r   c                      g fd G  fddt               } |       }d|_         j                  |j                  d        j                  |dfg       y )Nc                 ,    j                  | |f       y r   appendinstr   _checkeds     r   _checkzGValidatedPropertyTests.test___set___not_missing_w_check.<locals>._check!      OOT5M*r   c                   :    e Zd ZdZW j	                  dW        Zy)EValidatedPropertyTests.test___set___not_missing_w_check.<locals>.TestN_propr9   r:   r;   r   r   propr   r
   s   r   Testr   $      E==&1Dr   r   PROP)	DummyInstr   rE   r   )r
   r   r   r   r   s   `  @@r    test___set___not_missing_w_checkz7ValidatedPropertyTests.test___set___not_missing_w_check  sT    	+	29 	2 v	V,T6N#34r   c                       G  fddt               } |t              }d } j                  t        ||        j                  |j                  d        y )Nc                   6    e Zd ZdZW  j	                  d      Zy)FValidatedPropertyTests.test___set___not_missing_wo_check.<locals>.TestNr   r   r	   s   r   r   r   -      E==)Dr   r   c                     d| _         y Nr   r   r   s    r   _provokezJValidatedPropertyTests.test___set___not_missing_wo_check.<locals>._provoke2  s	    DIr   )r   
ValueErrorra   rE   r   r
   r   r   r   s   `   r   !test___set___not_missing_wo_checkz8ValidatedPropertyTests.test___set___not_missing_wo_check,  sF    	*9 	* J	*h5T*r   c                       G  fddt               } |t              }t         j                  |_         j	                  |j
                  t         j                         y )Nc                   6    e Zd ZdZW  j	                  d      Zy)DValidatedPropertyTests.test___set___w_missing_wo_check.<locals>.TestNr   r   r	   s   r   r   r   8  r   r   r   )r   r   r{   r   rE   r   r
   r   r   s   `  r   test___set___w_missing_wo_checkz6ValidatedPropertyTests.test___set___w_missing_wo_check7  sB    	*9 	* J++	Y%<%<=r   c                 |      G  fddt               } |       }d|_         j                  |j                  d       y )Nc                   6    e Zd ZdZW  j	                  d      Zy)1ValidatedPropertyTests.test___get__.<locals>.TestNr   r   r	   s   r   r   r   @  r   r   r   r   r   r   rE   r   r   s   `  r   test___get__z#ValidatedPropertyTests.test___get__?  3    	*9 	* v
F+r   N)	r9   r:   r;   r   r   r   r   r   r   r   r   r   r   r     s     !35	+>,r   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	DefaultPropertyTestsc                     ddl m} |S )Nr   )DefaultProperty)r   r   )r
   r   s     r   r   z$DefaultPropertyTests._getTargetClassJ  s    @r   c                 .     | j                         |i |S r   r   r   s      r   r   zDefaultPropertyTests._makeOneN  r   r   c                 x      G  fddt               } |       }d |_        d } j                  t        ||       y )Nc                   6    e Zd ZdZW  j	                  d      Zy)FDefaultPropertyTests.test___get___wo_defaultFactory_miss.<locals>.TestNr   r   r	   s   r   r   r  R  r   r   r   c                     | j                   S r   r   r   s    r   r   zJDefaultPropertyTests.test___get___wo_defaultFactory_miss.<locals>._provokeX      99r   )r   defaultFactoryra   rb   r   s   `   r   #test___get___wo_defaultFactory_missz8DefaultPropertyTests.test___get___wo_defaultFactory_missQ  s7    	*9 	* v"	(Hd3r   c                       G  fddt               } |       }d |_        d|_         j                  |j                  d       y )Nc                   6    e Zd ZdZW  j	                  d      Zy)EDefaultPropertyTests.test___get___wo_defaultFactory_hit.<locals>.TestNr   r   r	   s   r   r   r
  ]  r   r   r   r   )r   r  r   rE   r   r   s   `  r   "test___get___wo_defaultFactory_hitz7DefaultPropertyTests.test___get___wo_defaultFactory_hit\  s;    	*9 	* v"
F+r   c                 |      G  fddt               } |       }d|_         j                  |j                  d       y )Nc                   6    e Zd ZdZW  j	                  d      Zy)HDefaultPropertyTests.test__get___wo_defaultFactory_in_dict.<locals>.TestNr   r   r	   s   r   r   r  f  r   r   r   r   r   r   s   `  r   %test__get___wo_defaultFactory_in_dictz:DefaultPropertyTests.test__get___wo_defaultFactory_in_dicte  r   r   c                       G  fddt               } |t              }d }||_        d } j                  t        ||       y )Nc                   6    e Zd ZdZW  j	                  d      Zy)RDefaultPropertyTests.test___get___w_defaultFactory_not_ICAF_no_check.<locals>.TestNr   r   r	   s   r   r   r  n  r   r   r   c                       yr   r   r   r   r   _factoryzVDefaultPropertyTests.test___get___w_defaultFactory_not_ICAF_no_check.<locals>._factorys  s    r   c                     | j                   S r   r   r   s    r   r   zVDefaultPropertyTests.test___get___w_defaultFactory_not_ICAF_no_check.<locals>._provokew  r  r   )r   r   r  ra   )r
   r   r   r  r   s   `    r   /test___get___w_defaultFactory_not_ICAF_no_checkzDDefaultPropertyTests.test___get___w_defaultFactory_not_ICAF_no_checkm  s?    	*9 	* J	&	*h5r   c                 V    ddl m} ddlm} g fd G  fddt              } |t
              }t               |_        g fd} |||       ||_         j                  |j                  d        j                  |dfg        j                  |j                  g       y )	Nr   )directlyProvides)IContextAwareDefaultFactoryc                 ,    j                  | |f       y r   r   r   s     r   r   zQDefaultPropertyTests.test___get___w_defaultFactory_w_ICAF_w_check.<locals>._check  r   r   c                   :    e Zd ZdZW j	                  dW        Zy)ODefaultPropertyTests.test___get___w_defaultFactory_w_ICAF_w_check.<locals>.TestNr   r   r   s   r   r   r    r   r   r   c                 (    j                  |        yr   r   )context_called_withs    r   r  zSDefaultPropertyTests.test___get___w_defaultFactory_w_ICAF_w_check.<locals>._factory  s    (r   r   )r+   r   zope.schema._bootstrapinterfacesr  r   r   objectr  r  rE   r   )	r
   r  r  r   r   r  r  r   r   s	   `     @@@r   ,test___get___w_defaultFactory_w_ICAF_w_checkzADefaultPropertyTests.test___get___w_defaultFactory_w_ICAF_w_check{  s    3	(	+	29 	2 Jx	 	#>?&F+T6N#34~6r   N)
r9   r:   r;   r   r   r  r  r  r  r"  r   r   r   r   r   H  s%    3	4,,67r   r   c                       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y)
FieldTestsc                     ddl m} |S )Nr   Field)r   r'  )r
   r'  s     r   r   zFieldTests._getTargetClass  s
    6r   c                     ddl m} |S )Nr   )IField)r   r)  )r
   r)  s     r   r   zFieldTests._getTargetInterface  s
    1r   c                    dd l }| j                  dd      }|j                         }| j                  d|       | j                  d|       | j                  d|       | j	                  d|       t
        |_        |j                         }| j                  d	|       | j	                  d|       d
|_        |j                         }| j	                  d|       | j                  d|       t
        t        f|_        |j                         }| j                  d|       | j	                  d|       | j                         |_	        | j                  d      |_
        |j                         }| j                  d|       | j                  d|       | j                  ||j                  d             | j                  dd      }|j                         }| j                  |j                         |j                  d             y )Nr   TF)readonlyrq   z:Read Only: Truez:Required: Falsez:Default Value:z:Default Factory:z:Allowed Type: :class:`str`r|   z,:Allowed Type: :class:`str`, :class:`object`z..rubriczKey Typer[   z.. rubric:: Key Typez.. rubric:: Value Typeag  
            :Implementation: :class:`zope.schema.Field`
            :Read Only: True
            :Required: False
            :Default Factory: 'default'
            :Allowed Type: :class:`str`, :class:`object`

            .. rubric:: Key Type

            Key Type

            :Implementation: :class:`zope.schema.Field`
            :Read Only: False
            :Required: True
            :Default Value: None


            .. rubric:: Value Type


            :Implementation: :class:`zope.schema.Field`
            :Read Only: False
            :Required: True
            :Default Value: None

            A titlegMultiline description.

        Some lines have leading whitespace.

        It gets stripped.
        r\   description(              A title

            Multiline description.

            Some lines have leading whitespace.

            It gets stripped.

            :Implementation: :class:`zope.schema.Field`
            :Read Only: False
            :Required: True
            :Default Value: None
            )textwrapr   getDocr_   r`   str_typer  r!  
value_typekey_typerE   dedent)r
   r1  rA   docs       r   test_getDoczFieldTests.test_getDoc  s   te<lln(#.(#.'-,c2lln3S9,c2(lln*C0)3/FmllnDcJS)  ==?[9lln,c2.4OO  	
<    llnLLNOO  	
r   c                 <   dd l }ddlm}  |d      } |d      } |d      }| j                  ||      }| j	                  |j
                  |       | j	                  |j                  |       | j                  |j                         |j                  d             y )Nr   )MessageFactoryrU   r-  r,  r.  r0  )
r1  zope.i18nmessageidr;  r   r-   r\   r/  rE   r2  r7  )r
   r1  r;  msg_factoryr/  r\   rA   s          r   test_ctor_description_preservedz*FieldTests.test_ctor_description_preserved  s     	5$V,! #  J'E{Cekk5)e''5LLNOO  	
r   c                    dd l }d }d}| j                  ||      }| j                  |j                  |       | j                  |j                  |       | j                  |j                         |j                  d             y )Nr   r,  r.  z            A title

            :Implementation: :class:`zope.schema.Field`
            :Read Only: False
            :Required: True
            :Default Value: None
            )r1  r   r-   r\   r/  rE   r2  r7  )r
   r1  r/  r\   rA   s        r   test_ctor_description_nonez%FieldTests.test_ctor_description_none$  so    E{Cekk5)e''5LLNOO  
	
r   c                    | j                         }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  t                     d       | j                  |j                  d        | j                  |j                  d        | j                  |j                  d        | j                  |j                  d        y )N TF)r   rE   r9   __doc__r\   r/  rq   r+  
constraintr!  r|   r  r{   r  r@   s     r   test_ctor_defaultszFieldTests.test_ctor_defaults=  s    -,c***C0./))&(3T:---t4,,d3-r   c                    | j                  d      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       y )NTITLErB  r   rE   r9   rC  r\   r/  r@   s     r    test_ctor_w_title_wo_descriptionz+FieldTests.test_ctor_w_title_wo_descriptionL  sb    h'-1h/**C0r   c                    | j                  d      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       y )NDESC)r/  rB  rH  r@   s     r    test_ctor_wo_title_w_descriptionz+FieldTests.test_ctor_wo_title_w_descriptionT  sd    '2-0c***G4r   c                 
   | j                  ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       y )NrG  rK  NAMEzTITLE

DESCrH  r@   s     r   &test_ctor_w_both_title_and_descriptionz1FieldTests.test_ctor_w_both_title_and_description\  sg    h91(89h/**G4r   c                     | j                         }|j                  }| j                         }|j                  }| j                  ||dz          | j                  |j                  |       y )Nr*   )r   orderr   rE   )r
   klassorder_beforerA   order_afters        r   test_ctor_order_madnessz"FieldTests.test_ctor_order_madnessd  sV    $$&{{kklQ&67k2r   c                     t               }| j                  dd|      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  |       y )NFT)rq   r+  r{   )r!  r   rE   rq   r+  r{   )r
   objrA   s      r   ,test_explicit_required_readonly_missingValuez7FieldTests.test_explicit_required_readonly_missingValuel  s[    hut3O/.,,c2r   c                    g t               fd}| j                  dd|      }| j                  |j                  d       | j                  |j                  d       | j                  g       | j                  |j                  |       d       | j                  | g       | j                  |j                         y )Nc                 .    j                  |        | u S r   r   r   r  rW  s    r   _constraintz@FieldTests.test_explicit_constraint_default.<locals>._constraintw      &C<r   FT)rq   r+  rD  r|   )r!  r   rE   rq   r+  rD  r|   )r
   r\  rA   r  rW  s      @@r    test_explicit_constraint_defaultz+FieldTests.test_explicit_constraint_defaults  s    h	  Tk3  
 	/.u-))$/7T{3,r   c                    g t               fd}fd}| j                  dd||      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  |       d       | j                  | g       | j                  |j                         | j                  | g       | j                  |j                  |       y )Nc                 .    j                  |        | u S r   r   r[  s    r   r\  z<FieldTests.test_explicit_defaultFactory.<locals>._constraint  r]  r   c                       S r   r   )rW  s   r   r  z9FieldTests.test_explicit_defaultFactory.<locals>._factory  s    Jr   FT)rq   r+  rD  r  )r!  r   rE   rq   r+  rD  r|   r  )r
   r\  r  rA   r  rW  s       @@r   test_explicit_defaultFactoryz'FieldTests.test_explicit_defaultFactory  s    h	 	"#	  
 	/.))$/7v.,c{3--x8r   c                 h    d }| j                  d|      }| j                  |j                  d        y )Nc                       y r   r   r   r   r   r  zQFieldTests.test_explicit_defaultFactory_returning_missing_value.<locals>._factory  s    r   T)rq   r  )r   rE   r|   )r
   r  rA   s      r   4test_explicit_defaultFactory_returning_missing_valuez?FieldTests.test_explicit_defaultFactory_returning_missing_value  s3    	t-5  7-r   c                 x   t               }| j                         }|j                  |      }| j                  |j                  |       t        |j                        }t        |j                        }|j                  d       | j                  ||       | j                  |j                  |j                         y )Nr  )	r!  r   bindrE   r  dict__dict__pop	__class__)r
   rW  rA   r   expectedfounds         r   	test_bindzFieldTests.test_bind  s    h

3,'U^^$		))%//:r   c                     t               }| j                  d|d       }| j                  |j                  |      d        y )NFc                      yNFr   xs    r   <lambda>z?FieldTests.test_validate_missing_not_required.<locals>.<lambda>      r   rq   r{   rD  )r!  r   rE   r   )r
   missingrA   s      r   "test_validate_missing_not_requiredz-FieldTests.test_validate_missing_not_required  s>    ('o  
 	0$7r   c                     ddl m} t               }| j                  d|d       }| j	                  ||j
                  |       y )Nr   RequiredMissingTc                      yrq  r   rr  s    r   rt  z?FieldTests.test_validate_missing_and_required.<locals>.<lambda>  ru  r   rv  )r   r{  r!  r   ra   r   )r
   r{  rw  rA   s       r   "test_validate_missing_and_requiredz-FieldTests.test_validate_missing_and_required  s>    D(_  
 	/5>>7Cr   c                 p    | j                  dd       }t        |_        | j                  |t        d       y )NTc                      yrq  r   rr  s    r   rt  z5FieldTests.test_validate_wrong_type.<locals>.<lambda>  ru  r   rq   rD  r*   )r   r3  r4  r   r@   s     r   test_validate_wrong_typez#FieldTests.test_validate_wrong_type  s5    o  
 ""5#q1r   c                     ddl m} | j                  dd       }t        |_        | j                  ||j                  d       y )Nr   ConstraintNotSatisfiedTc                      yrq  r   rr  s    r   rt  z;FieldTests.test_validate_constraint_fails.<locals>.<lambda>  ru  r   r  r*   )r   r  r   intr4  ra   r   )r
   r  rA   s      r   test_validate_constraint_failsz)FieldTests.test_validate_constraint_fails  s5    KtH0%..!Dr   c                 z    ddl m fd}| j                  d|      }t        |_        |j                  d       y )Nr   )StopValidationc                     r   r   )r   r  s    r   _failzHFieldTests.test_validate_constraint_raises_StopValidation.<locals>._fail  s	      r   Tr  r*   )r   r  r   r  r4  r   )r
   r  rA   r  s      @r   .test_validate_constraint_raises_StopValidationz9FieldTests.test_validate_constraint_raises_StopValidation  s0    C	!t>qr   c                 F   ddl m fd}| j                  |      }| j                        5 }|j	                  d       d d d        | j                  j                  j                  |       | j                  |j                  j                  d       y # 1 sw Y   VxY w)Nr   ValidationErrorc                     r   r   )r   r  s    r   r  zJFieldTests.test_validate_constraint_raises_custom_exception.<locals>._fail  s	    !!r   rD  r*   )
r   r  r   ra   r   r-   r   rA   rE   r   r
   r  rA   r   r  s       @r   0test_validate_constraint_raises_custom_exceptionz;FieldTests.test_validate_constraint_raises_custom_exception  s    D	"// 	3NN1	 	cmm))51,,a0		 	s   BB c                 J    ddl m  fd} j                  |      } j                        5 }|j	                  d       d d d         j                  j                  j                           j                  |j                  j                          y # 1 sw Y   VxY w)Nr   r  c                 4     |       j                        r   )with_field_and_value)r   r  r
   s    r   r  zWFieldTests.test_validate_constraint_raises_custom_exception_no_overwrite.<locals>._fail  s    !%(==dDIIr   r  r*   )	r   r  r   ra   r   r-   r   rA   r   r  s   `   @r   =test_validate_constraint_raises_custom_exception_no_overwritezHFieldTests.test_validate_constraint_raises_custom_exception_no_overwrite  s    D	J// 	3NN1	 	cmm))40cmm))40		 	s   BB"c                 ~    | j                  d      }t               }| j                  t        |j                  |       y Nnonesuchr9   )r   r   ra   AttributeErrorgetr
   rA   r   s      r   test_get_misszFieldTests.test_get_miss  s/    z2{.%))T:r   c                     | j                  d      }t               }d|_        | j                  |j	                  |      d       y Nextantr  EXTANT)r   r   r  rE   r  r  s      r   test_get_hitzFieldTests.test_get_hit  s8    x0{4(3r   c                 ~    | j                  d      }t               }| j                  |j                  |      d        y r  r   r   rE   queryr  s      r   test_query_miss_no_defaultz%FieldTests.test_query_miss_no_default  s2    z2{T*D1r   c                     | j                  d      }t               }| j                  |j                  |d      d       y )Nr  r  DEFAULTr  r  s      r   test_query_miss_w_defaultz$FieldTests.test_query_miss_w_default  s4    z2{T95yAr   c                     | j                  d      }t               }d|_        | j                  |j	                  |      d       y r  )r   r   r  rE   r  r  s      r   test_query_hitzFieldTests.test_query_hit  s9    x0{T*H5r   c                     | j                  dd      }t               }| j                  t        |j                  |d       y )NlirameT)r9   r+  VALUE)r   r   ra   	TypeErrorsetr  s      r   test_set_readonlyzFieldTests.test_set_readonly
  s3    x$?{)UYYg>r   c                     | j                  d      }t               }d|_        |j                  |d       | j	                  |j                  d       y )Nr  r  BEFOREAFTER)r   r   r  r  rE   r  s      r   test_set_hitzFieldTests.test_set_hit  sB    x0{		$ g.r   N) r9   r:   r;   r   r   r9  r>  r@  rE  rI  rL  rO  rU  rX  r^  rb  re  rn  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r$  r$    s    W
r'
R
2.15533-"90.	;8D2E
1
1;
42
B
6?
/r   r$  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
ContainerTestsc                     ddl m} |S )Nr   )	Container)r   r  )r
   r  s     r   r   zContainerTests._getTargetClass      :r   c                     ddl m} |S )Nr   )
IContainer)r   r  )r
   r  s     r   r   z"ContainerTests._getTargetInterface  s    5r   c                 J    | j                  d      }|j                  d        y NFrp   r   r   r@   s     r   test_validate_not_requiredz)ContainerTests.test_validate_not_required"  s    u-tr   c                 j    ddl m} | j                         }| j                  ||j                  d        y )Nr   rz  r   r{  r   ra   r   r
   r{  rA   s      r   test_validate_requiredz%ContainerTests.test_validate_required&  s&    :/5>>4@r   c                 :   ddl m} | j                         }t               }| j	                  |      5 }|j                  |       d d d        j                  }| j                  |j                  |       | j                  |j                  |       y # 1 sw Y   NxY w)Nr   )NotAContainer)
r   r  r   r!  ra   	_validater   r-   rA   r   )r
   r  cont	bad_valuer   not_conts         r   *test__validate_not_collection_not_iterablez9ContainerTests.test__validate_not_collection_not_iterable+  sw    B}}H	}- 	&NN9%	& ==hnnd+hnni0	& 	&s   BBc                 n    | j                         } G d dt              }|j                   |              y )Nc                       e Zd Zd Zy)HContainerTests.test__validate_collection_but_not_iterable.<locals>.Dummyc                     t        d      Nz
Not calledAssertionErrorr
   items     r   __contains__zUContainerTests.test__validate_collection_but_not_iterable.<locals>.Dummy.__contains__:      $\22r   Nr9   r:   r;   r  r   r   r   Dummyr  9      3r   r  r   r!  r  r
   r  r  s      r   *test__validate_collection_but_not_iterablez9ContainerTests.test__validate_collection_but_not_iterable6  s)    }}	3F 	3 	uwr   c                 n    | j                         } G d dt              }|j                   |              y )Nc                       e Zd Zd Zy)HContainerTests.test__validate_not_collection_but_iterable.<locals>.Dummyc                     t        d      S Nr   )iterr	   s    r   __iter__zQContainerTests.test__validate_not_collection_but_iterable.<locals>.Dummy.__iter__B  s    Bxr   N)r9   r:   r;   r  r   r   r   r  r  A  s     r   r  r  r  s      r   *test__validate_not_collection_but_iterablez9ContainerTests.test__validate_not_collection_but_iterable>  s)    }}	 F 	  	uwr   c                     | j                         }|j                  d       |j                  g        |j                  d       |j                  i        y )Nr   rB  r   r  )r
   r  s     r   test__validate_w_collectionsz+ContainerTests.test__validate_w_collectionsF  s=    }}rrrrr   N)r9   r:   r;   r   r   r  r  r  r  r  r  r   r   r   r  r    s+    A
	1  r   r  c                       e Zd Zd Zd Zd Zy)IterableTestsc                     ddl m} |S )Nr   )Iterable)r   r  )r
   r  s     r   r   zIterableTests._getTargetClassP  
    9r   c                     ddl m} |S )Nr   )	IIterable)r   r  )r
   r  s     r   r   z!IterableTests._getTargetInterfaceT      4r   c                 R   ddl m} | j                         } G d dt              } |       }| j	                  |      5 }|j                  |       d d d        j                  }| j                  |j                  |       | j                  |j                  |       y # 1 sw Y   NxY w)Nr   )NotAnIteratorc                       e Zd Zd Zy)GIterableTests.test__validate_collection_but_not_iterable.<locals>.Dummyc                     t        d      r  r  r  s     r   r  zTIterableTests.test__validate_collection_but_not_iterable.<locals>.Dummy.__contains__]  r  r   Nr  r   r   r   r  r  \  r  r   r  )
r   r  r   r!  ra   r  r   r-   rA   r   )r
   r  itrr  dummyr   not_its          r   r  z8IterableTests.test__validate_collection_but_not_iterableX  s    Bmmo	3F 	3 }- 	!MM% 	! fllC(fllE*	! 	!s   BB&N)r9   r:   r;   r   r   r  r   r   r   r  r  N  s    +r   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)OrderableTestsc                     ddl m} |S )Nr   )	Orderable)r   r  )r
   r  s     r   r   zOrderableTests._getTargetClassj  r  r   c                 R    ddl m}  G d d| j                         |      } ||i |S )Nr   r&  c                       e Zd Zy)&OrderableTests._makeOne.<locals>.MixedNri   r   r   r   Mixedr   r  rk   r   r  r   r'  r   r
   r   r   r'  r  s        r   r   zOrderableTests._makeOnen  ,    6	D((*E 	d!b!!r   c                     | j                         }| j                  |j                  d        | j                  |j                  d        | j                  |j                  d        y r   )r   rE   r}   r   r|   )r
   ordbs     r   rE  z!OrderableTests.test_ctor_defaultsv  sI    }}4(4(t,r   c                 N    ddl m} | j                  || j                  dd       y )Nr   r   ry   )r}   r|   )r   r   ra   r   )r
   r   s     r   test_ctor_default_too_smallz*OrderableTests.test_ctor_default_too_small|  s     =(DMMq"Er   c                 N    ddl m} | j                  || j                  dd       y )Nr   r   r   r   )r   r|   )r   r   ra   r   )r
   r   s     r   test_ctor_default_too_largez*OrderableTests.test_ctor_default_too_large  s     ;&$--RDr   N)r9   r:   r;   r   r   rE  r  r
  r   r   r   r  r  h  s    "-F
Er   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)MinMaxLenTestsc                     ddl m} |S )Nr   )	MinMaxLen)r   r  )r
   r  s     r   r   zMinMaxLenTests._getTargetClass  r  r   c                 R    ddl m}  G d d| j                         |      } ||i |S )Nr   r&  c                       e Zd Zy)&MinMaxLenTests._makeOne.<locals>.MixedNri   r   r   r   r  r    rk   r   r  r  r  s        r   r   zMinMaxLenTests._makeOne  r  r   c                     | j                         }| j                  |j                  d       | j                  |j                  d        y Nr   )r   rE   r   r   r
   mmls     r   rE  z!MinMaxLenTests.test_ctor_defaults  s5    mmo+.r   c                 L    | j                  d      }| j                  |d       y )Nr*   )r   r   )r   r   r  s     r   test_validate_too_shortz&MinMaxLenTests.test_validate_too_short  s"    mmqm)!!#r*r   c                 L    | j                  d      }| j                  |d       y )N   )r   )r   r*   r  )r   r   r  s     r   test_validate_too_longz%MinMaxLenTests.test_validate_too_long  s"    mmqm)  i0r   N)r9   r:   r;   r   r   rE  r  r  r   r   r   r  r    s    "/
+1r   r  c                   N    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y)	TextTestsc                     ddl m} |S )Nr   Text)r   r  )r
   r  s     r   r   zTextTests._getTargetClass  
    5r   c                     ddl m} |S )Nr   )IText)r   r"  )r
   r"  s     r   r   zTextTests._getTargetInterface  
    0r   c                 d    | j                         }| j                  |j                  t               y r   )r   rE   r4  r3  r
   txts     r   rE  zTextTests.test_ctor_defaults  !    mmoC(r   c                     | j                         }| j                  ||j                  ddddg i t               t	               t                      y Nr   r*         ?r   r   r   r4  r  	frozensetr!  r@   s     r   test_validate_wrong_typesz#TextTests.test_validate_wrong_types  F    $$KKEKH	r   c                 L    ddl m} | j                  || j                  d       y )Nr   r  r   )r|   )r   r  ra   r   )r
   r  s     r   test_validate_w_invalid_defaultz)TextTests.test_validate_w_invalid_default  s    :/4==#Fr   c                     | j                  d      }|j                  d       |j                  d       |j                  d       |j                  d        y )NFrp   rB  abcabc
defr  r@   s     r   r  z$TextTests.test_validate_not_required  sB    u-sv{#tr   c                     ddl m} | j                         }|j                  d       |j                  d       |j                  d       | j	                  ||j                  d        y )Nr   rz  rB  r2  r3  r   r{  r   r   ra   r  s      r   r  z TextTests.test_validate_required  sJ    :sv{#/5>>4@r   c                 v    d}| j                         }| j                  |j                  |j                  |       y )Ns   DEADBEEF)r   r   fromUnicoder4  r
   deadbeefr&  s      r   test_fromUnicode_misszTextTests.test_fromUnicode_miss  s,    mmo""3??CIIxHr   c                 j    d}| j                         }| j                  |j                  |      |       y )NDEADBEEFr   rE   r7  r8  s      r   test_fromUnicode_hitzTextTests.test_fromUnicode_hit  s+    mmo2H=r   c                 &   t        j                  ddj                  d            }| j                         }| j	                  |j
                  d       | j	                  |j                  |      D cg c]  }t        j                  |       c}g d       | j                  d       }| j	                  |j
                  d        | j	                  |j                  |      D cg c]  }t        j                  |       c}g d       y c c}w c c}w )NNFDs   ÄÖÜzutf-8NFC)z%LATIN CAPITAL LETTER A WITH DIAERESISz%LATIN CAPITAL LETTER O WITH DIAERESISz%LATIN CAPITAL LETTER U WITH DIAERESIS)unicode_normalization)zLATIN CAPITAL LETTER ACOMBINING DIAERESISzLATIN CAPITAL LETTER OrC  zLATIN CAPITAL LETTER UrC  )unicodedata	normalizedecoder   rE   rB  r7  name)r
   r9  r&  cs       r   test_normalizationzTextTests.test_normalization  s    ((.55g>@mmo22E:*-//(*CDQ[a D	
 mm$m722D9*-//(*CDQ[a D
	
 E Es   0D	"Dc                 b    dd l | j                  fd}|| _        | j                          y )Nr   c                       di | }| s|j                   j                          j                  j                  |            }|S r  )ri  clearloadsdumps)r   resultorig_makeOnepickles     r   makeOnez:TextTests.test_normalization_after_pickle.<locals>.makeOne  s?    !+F+F%%'\\&,,v"67FMr   )rQ  r   rI  )r
   rR  rP  rQ  s     @@r   test_normalization_after_picklez)TextTests.test_normalization_after_pickle  s+     	}}	  !r   N)r9   r:   r;   r   r   rE  r-  r0  r  r  r:  r>  rI  rS  r   r   r   r  r    s<    )G
AI
>

6"r   r  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TextLineTestsc                     ddl m} |S )Nr   )TextLine)zope.schema._fieldrW  )r
   rW  s     r   r   zTextLineTests._getTargetClass  s
    /r   c                     ddl m} |S )Nr   )	ITextLine)r   rZ  )r
   rZ  s     r   r   z!TextLineTests._getTargetInterface  r  r   c                     | j                         }| j                  ||j                  ddddg i t               t	               t                      y r)  r+  r@   s     r   r-  z'TextLineTests.test_validate_wrong_types  r.  r   c                     | j                  d      }|j                  d       |j                  d       |j                  d        y NFrp   rB  r2  r  r@   s     r   r  z(TextLineTests.test_validate_not_required,  6    u-svtr   c                     ddl m} | j                         }|j                  d       |j                  d       | j	                  ||j                  d        y Nr   rz  rB  r2  r5  r  s      r   r  z$TextLineTests.test_validate_required3  >    :sv/5>>4@r   c                     | j                         }| j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       y NrB  Tr2  r3  Fr   rE   rD  r@   s     r   test_constraintzTextLineTests.test_constraint;  ^    ))#.5))&148))+6>r   N)	r9   r:   r;   r   r   r-  r  r  re  r   r   r   rU  rU    s!    A?r   rU  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)PasswordTestsc                     ddl m} |S )Nr   )Password)r   rj  )r
   rj  s     r   r   zPasswordTests._getTargetClassG  r  r   c                     ddl m} |S )Nr   )	IPassword)r   rl  )r
   rl  s     r   r   z!PasswordTests._getTargetInterfaceK  r  r   c                    | j                         }| j                         }t               }t        |j                        }|j                  ||j                         t        |j                        }| j                  ||       y r   )r   r   r   rh  ri  r  UNCHANGED_PASSWORDrE   )r
   rR  pwr   beforeafters         r   test_set_unchangedz PasswordTests.test_set_unchangedO  sb    $$&]]_{dmm$
tU--.T]]#'r   c                     | j                  d      }t               }|j                  |d       | j                  |j                  d       y )Npasswordr  PASSWORD)r   r   r  rE   rt  )r
   ro  r   s      r   test_set_normalzPasswordTests.test_set_normalX  s;    ]]J]/{
tZ 
3r   c                     | j                  d      }|j                  d       |j                  d       |j                  d        y r]  r  r@   s     r   r  z(PasswordTests.test_validate_not_required^  r^  r   c                     ddl m} | j                         }|j                  d       |j                  d       | j	                  ||j                  d        y r`  r5  r  s      r   r  z$PasswordTests.test_validate_requirede  ra  r   c                     | j                         }t               }| j                  d      j                  |      }| j	                  ||j
                  |j                         y )Nrt  r  )r   r   r   rg  r   r4  rn  r
   rR  r   ro  s       r   'test_validate_unchanged_not_already_setz5PasswordTests.test_validate_unchanged_not_already_setm  sN    $$&{]]J]/44T:""2rxx1I1IJr   c                     | j                         }t               }d|_        | j                  d      j	                  |      }|j                  |j                         y )Nfoobarrt  r  )r   r   rt  r   rg  r   rn  rz  s       r   #test_validate_unchanged_already_setz1PasswordTests.test_validate_unchanged_already_sets  sK    $$&{ ]]J]/44T:
E,,-r   c                     | j                         }| j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       y rc  rd  r@   s     r   re  zPasswordTests.test_constraintz  rf  r   N)r9   r:   r;   r   r   rr  rv  r  r  r{  r~  re  r   r   r   rh  rh  C  s1    (4AK.?r   rh  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)	BoolTestsc                     ddl m} |S )Nr   )Bool)r   r  )r
   r  s     r   r   zBoolTests._getTargetClass  r   r   c                     ddl m} |S )Nr   )IBool)r   r  )r
   r  s     r   r   zBoolTests._getTargetInterface  r#  r   c                 d    | j                         }| j                  |j                  t               y r   )r   rE   r4  boolr%  s     r   rE  zBoolTests.test_ctor_defaults  s!    mmoD)r   c                 ^    | j                         }| j                  ||j                  d       y )NrB  )r   r   r4  r
   boos     r   r  z"BoolTests.test_validate_wrong_type  s#    mmo""3		26r   c                 h    | j                         }|j                  d       |j                  d       y )Nr   r*   r  r  s     r   test__validate_w_intzBoolTests.test__validate_w_int  s%    mmoaar   c                 h    | j                         }|j                  d       |j                  d       y )NFTr  r  s     r   test__validate_w_boolzBoolTests.test__validate_w_bool  s%    mmoedr   c                     | j                  d      }t               }|j                  |d       | j                  |j                  d       |j                  |d       | j                  |j                  d       y )Nr  r  r   Fr*   Tr   r   r  rE   r  r
   r  r   s      r   test_set_w_intzBoolTests.test_set_w_int  s]    mmUm+{a5)a4(r   c                     | j                  d      }t               }|j                  |d       | j                  |j                  d       |j                  |d       | j                  |j                  d       y )Nr  r  FTr  r  s      r   test_set_w_boolzBoolTests.test_set_w_bool  s]    mmUm+{e5)d4(r   c                 n   | j                         }| j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       y )NrB  F01Falsefalser=  r%  s     r   r:  zBoolTests.test_fromUnicode_miss  s    mmo-u5.6.62E:2E:r   c                     | j                         }| j                  |j                  d      d       | j                  |j                  d      d       y )NTrueTtruer=  r%  s     r   r>  zBoolTests.test_fromUnicode_hit  s?    mmo148148r   N)r9   r:   r;   r   r   rE  r  r  r  r  r  r:  r>  r   r   r   r  r    s4    *7

));9r   r  c                   4     e Zd Zd Zd Z fdZ fdZ xZS )NumberTestsc                     ddl m} |S )Nr   )Number)r   r  )r
   r  s     r   r   zNumberTests._getTargetClass  s
    7r   c                     ddl m} |S )Nr   )INumber)r   r  )r
   r  s     r   r   zNumberTests._getTargetInterface  
    2r   c                     ddl m} ddlm} ddlm} t
        t        |            ||| j                                 ||| j                                y )Nr   r   
IFromBytesIFromUnicode)	r   r   r   r  r  superr  r!   r   )r
   r   r  r  rk  s       r   r!   z(NumberTests.test_class_conforms_to_iface  s?    5?Ak4=?L$"6"6"89J 4 4 67r   c                     ddl m} ddlm} ddlm} t
        t        |            ||| j                                 ||| j                                y )Nr   r#   r  r  )	r   r$   r   r  r  r  r  r&   r   )r
   r$   r  r  rk  s       r   r&   z+NumberTests.test_instance_conforms_to_iface  s9    6?Ak4@B\4==?3Z1r   )r9   r:   r;   r   r   r!   r&   __classcell__rk  s   @r   r  r    s    
82 2r   r  c                       e Zd Zd Zd Zy)ComplexTestsc                     ddl m} |S )Nr   )Complex)r   r  )r
   r  s     r   r   zComplexTests._getTargetClass  
    8r   c                     ddl m} |S )Nr   )IComplex)r   r  )r
   r  s     r   r   z ComplexTests._getTargetInterface  
    3r   Nr9   r:   r;   r   r   r   r   r   r  r    s    r   r  c                       e Zd Zd Zd Zd Zy)	RealTestsc                     ddl m} |S )Nr   )Real)r   r  )r
   r  s     r   r   zRealTests._getTargetClass  r   r   c                     ddl m} |S )Nr   )IReal)r   r  )r
   r  s     r   r   zRealTests._getTargetInterface  r#  r   c                    ddl m} | j                  | j                  | j	                         j
                  d       | j                  | j                  | j	                         j
                  d       | j                   |dd      d      }|j                  d	       |j                  d
       | j                  |d       | j                  |d       | j                  |d       y )Nr   )FractionrB  r   r   r*   r  r   r*  g       @g?g @)		fractionsr  r   r   r   r4  r   r   r   )r
   r  rA   s      r   test_ctor_real_min_maxz RealTests.test_ctor_real_min_max  s    &""MM4//177R 	# 	A""MM4//177R 	# 	A (1a.a8ss!!%+!!%-s+r   N)r9   r:   r;   r   r   r  r   r   r   r  r    s    ,r   r  c                       e Zd Zd Zd Zy)RationalTestsc                     ddl m} |S )Nr   )Rational)r   r  )r
   r  s     r   r   zRationalTests._getTargetClass  r  r   c                     ddl m} |S )Nr   )	IRational)r   r  )r
   r  s     r   r   z!RationalTests._getTargetInterface  r  r   Nr  r   r   r   r  r    s    r   r  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)IntegralTestsc                     ddl m} |S )Nr   )Integral)r   r  )r
   r  s     r   r   zIntegralTests._getTargetClass  r  r   c                     ddl m} |S )Nr   )	IIntegral)r   r  )r
   r  s     r   r   z!IntegralTests._getTargetInterface  r  r   c                     | j                  d      }|j                  d        |j                  d       |j                  d       |j                  d       y )NFrp   r   r   ry   r  r@   s     r   r  z(IntegralTests.test_validate_not_required  sB    u-trqrr   c                     ddl m} | j                         }|j                  d       |j                  d       |j                  d       | j	                  ||j                  d        y )Nr   rz  r   ry   r5  r  s      r   r  z$IntegralTests.test_validate_required"  sJ    :rqr/5>>4@r   c                     | j                         }| j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       y )NrB  r  r  )r   ra   r   r7  r%  s     r   r:  z#IntegralTests.test_fromUnicode_miss*  sO    mmo*coos;*coox@*coow?r   c                     | j                         }| j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       y )Nr  r   r  r*   -1ry   r=  r%  s     r   r>  z"IntegralTests.test_fromUnicode_hit0  sX    mmo.2.2/4r   N)	r9   r:   r;   r   r   r  r  r:  r>  r   r   r   r  r    s"    A@5r   r  c                       e Zd Zd Zd Zd Zy)IntTestsc                     ddl m} |S )Nr   )Int)r   r  )r
   r  s     r   r   zIntTests._getTargetClass:  s
    4
r   c                     ddl m} |S )Nr   )IInt)r   r  )r
   r  s     r   r   zIntTests._getTargetInterface>  s
    /r   c                 d    | j                         }| j                  |j                  t               y r   )r   rE   r4  r  r%  s     r   rE  zIntTests.test_ctor_defaultsB  r'  r   N)r9   r:   r;   r   r   rE  r   r   r   r  r  8  s    )r   r  c                   ~   e Zd Z ej                  d      Z ej                  d      Z ej                  ej                        Z ej                  ej                        Z	 e
d ej                  D              Z e
d ej                  D              Z e
d ej                  D              Zd Zd Zd Zd	 Zd
 Zd Zy)DecimalTestsr  r  c              #   F   K   | ]  }t        j                  |        y wr   decimalDecimal.0rs  s     r   	<genexpr>zDecimalTests.<genexpr>N  s     @'//!$@   !c              #   F   K   | ]  }t        j                  |        y wr   r  r  s     r   r  zDecimalTests.<genexpr>O  s     HQgooa(Hr  c              #   F   K   | ]  }t        j                  |        y wr   r  r  s     r   r  zDecimalTests.<genexpr>P  s     D1GOOA&Dr  c                     ddl m} |S )Nr   r  )r   r  )r
   r  s     r   r   zDecimalTests._getTargetClassR  r  r   c                     ddl m} |S )Nr   )IDecimal)r   r  )r
   r  s     r   r   z DecimalTests._getTargetInterfaceV  r  r   c                 "   | j                  d      }|j                  t        j                  d             |j                  t        j                  d             |j                  t        j                  d             |j                  d        y )NFrp   10.00.93	1000.0003)r   r   r  r  r@   s     r   r  z'DecimalTests.test_validate_not_requiredZ  s]    u-wv./wv./w{34tr   c                 B   ddl m} | j                         }|j                  t	        j
                  d             |j                  t	        j
                  d             |j                  t	        j
                  d             | j                  ||j                  d        y )Nr   rz  r  r  r  )r   r{  r   r   r  r  ra   r  s      r   r  z#DecimalTests.test_validate_requireda  se    :wv./wv./w{34/5>>4@r   c                    ddl m} | j                         }| j                  t        |j
                  d       | j                  t        |j
                  d       | j                  t              5 }|j                  d       d d d        j                  }| j                  |j                  |       | j                  |j                  d       | j                  ||       y # 1 sw Y   `xY w)Nr   r  rB  r2  z1.4G)r   r  r   ra   r   r7  r   r-   rA   rE   r   assertIsInstance)r
   r  fltr   value_errors        r   r:  z"DecimalTests.test_fromUnicode_missi  s    :mmo*coos;*coov>z* 	%cOOG$	% mmk''-**G4k?;	% 	%s   .CC(c                    ddl m} | j                         }| j                  |j	                  d       |d             | j                  |j	                  d       |d             | j                  |j	                  d       |d             y )Nr   r  r  z0.0z1.23z12345.6)r  r  r   rE   r7  )r
   r  r  s      r   r>  z!DecimalTests.test_fromUnicode_hitv  sh    #mmo.?176?C4gi6HIr   N)r9   r:   r;   r  r  r   r   r  r   r   tupler   r   r   r   r   r  r  r:  r>  r   r   r   r  r  G  s    '-!'//#&K
'//+//
*C
'//+//
*C@k.?.?@@EH+2G2GHHID0C0CDDGA<Jr   r  c                        e Zd Zd Zd Zd Zd Zd f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 xZS )ObjectTestsc                 $    ddl m} |d d  | _        y Nr   subscribers
zope.eventr  _beforer
   r  s     r   setUpzObjectTests.setUp  s    *"1~r   c                 .    ddl m} | j                  |d d  y r  r  r  s     r   tearDownzObjectTests.tearDown  s    *Ar   c                     ddl m} |S )Nr   Object)rX  r  )r
   r  s     r   r   zObjectTests._getTargetClass  s
    -r   c                     ddl m} |S )Nr   IObject)r   r  )r
   r  s     r   r   zObjectTests._getTargetInterface  r  r   c                 X    || j                         }t        t        |   ||g|i |S r   )_makeSchemar  r  r   )r
   r   schemar   r   rk  s        r   r   zObjectTests._makeOneFromClass  s?    >%%'F[$9&&"$& 	&r   c                 0    ddl m} ddlm}  |d|f|      S )Nr   rV   )InterfaceClassISchema)r+   rV   zope.interface.interfacer  )r
   r   rV   r  s       r   r  zObjectTests._makeSchema  s    ,;i)r::r   c                     ddl m} | j                  |      5 } ||i | d d d        |j                  j                  S # 1 sw Y   j                  j                  S xY w)Nr   SchemaNotCorrectlyImplemented)r   r  ra   r   errors)r
   fr   r   r  es         r   
_getErrorszObjectTests._getErrors  sQ    H<= 	tNrN	{{!!!	{{!!!s	   	?Ac                 4  	 ddl m ddl m} ddlm ddlm ddlm	  G 	fdd       G 	fd	d
      }|d   _        |d   j                  _         |       G d dt                     } ||       G d dt                     }||fS )Nr   r
  implementer)Listr  )_c                       e Zd ZdZ W W   W d       W d      d      Z W  W W         W d       W d      d	      Zy
)&ObjectTests._makeCycles.<locals>.IUnit$A schema that participate to a cycleBosszBoss descriptionFr  r\   r/  rq   r  zMember ListzMember list description)r5  r\   r/  rq   N)r9   r:   r;   rC  bossmembers)rV   r  r  r  s   r   IUnitr    sN    6 i01	D !3&78	Gr   r"  c                   J    e Zd ZdZ W W   W d       W d      d      Zy)(ObjectTests._makeCycles.<locals>.IPersonr  UnitzUnit descriptionFr  N)r9   r:   r;   rC  unit)r"  r  r  s   r   IPersonr$    s&    6i01	Dr   r'  r   r!  c                       e Zd Zd Zy)%ObjectTests._makeCycles.<locals>.Unitc                      || _         || _        y r   )r   r!  )r
   personperson_lists      r   __init__z.ObjectTests._makeCycles.<locals>.Unit.__init__  s    "	*r   Nr9   r:   r;   r-  r   r   r   r%  r)    s    +r   r%  c                       e Zd Zd Zy)'ObjectTests._makeCycles.<locals>.Personc                     || _         y r   )r&  )r
   r&  s     r   r-  z0ObjectTests._makeCycles.<locals>.Person.__init__  s	     	r   Nr.  r   r   r   Personr0    s    !r   r2  )r+   rV   r  zope.schemar  r  zope.schema._messageidr  r  r5  r!  )
r
   r  r'  r%  r2  r"  rV   r  r  r  s
        @@@@@r   _makeCycleszObjectTests._makeCycles  s    ,.$&,	 	I 		 	i 	  'f-4i##*	U		+6 	+ 
	+
 
W		!V 	! 
	! fd""r   c                 J    ddl m} ddlm}  ||| j	                                y )Nr   r   r  )r   r   r   r  r   )r
   r   r  s      r   test_class_conforms_to_IObjectz*ObjectTests.test_class_conforms_to_IObject  s    52GT1134r   c                 J    ddl m} ddlm}  ||| j	                                y )Nr   r#   r  )r   r$   r   r  r   )r
   r$   r  s      r   !test_instance_conforms_to_IObjectz-ObjectTests.test_instance_conforms_to_IObject  s    62Wdmmo.r   c                 Z    ddl m} | j                  | j                  |t	                      y )Nr   )
IInterface)zope.interface.interfacesr;  r   r   r!  )r
   r;  s     r   test_ctor_w_bad_schemaz"ObjectTests.test_ctor_w_bad_schema  s    8""4==*fhGr   c                 l    | j                         }| j                  |d      }|j                  d        y r  )r  r   r   )r
   r  objfs      r   r  z&ObjectTests.test_validate_not_required  s.    !!#}}Ve}4dr   c                 n    ddl m} | j                  d      }| j                  ||j                  d        y )Nr   rz  Trp   r  r  s      r   r  z"ObjectTests.test_validate_required  s+    :t,/5>>4@r   c                 d    ddl m} | j                  |      }|j                  t	                      y )Nr   r
  )r+   rV   r   r   r!  )r
   rV   r?  s      r   test__validate_w_empty_schemaz)ObjectTests.test__validate_w_empty_schema  s!    ,}}Y'fhr   c                    ddl m} ddlm} | j	                   |        |             }| j                  |      }t               }| j                  |      5 }|j                  |       d d d        j                  }| j                  |j                  |       | j                  |j                  |       | j                  |j                  ||f       y # 1 sw Y   lxY w)Nr   r  SchemaNotProvidedrZ   r]   )r   r  r   rE  r  r   r!  ra   r   r   r-   rA   r   rE   r   )r
   r  rE  r  r?  r  r   not_provideds           r   +test__validate_w_value_not_providing_schemaz7ObjectTests.test__validate_w_value_not_providing_schema  s    5<!!df$&!9}}V$H	01 	%SMM)$	% }}l(($/l(()4**VY,?B	% 	%s   CCc                    ddl m} ddlm} ddlm} ddlm} | j                   |        |             } ||       G d dt                     }| j                  |      } |       }| j                  |      5 }	|j                  |       d d d        	j                  }
| j                  |
j                  |       | j                  |
j                  |       | j!                  |
j"                  g        | j!                  t%        |
j&                        d	d
g       dD ]]  }|
j&                  |   }| j)                  ||       | j!                  ||   |j                         | j+                  |j                         _ | j-                  |j                   |             }| j!                  t/        |      d       t%        |d       }|d   }| j)                  ||       |j0                  d   }| j)                  |t2               | j5                  dt7        |             |d   }| j)                  ||       |j0                  d   }| j)                  |t2               | j5                  dt7        |             y # 1 sw Y   xY w)Nr   r  r  r  )SchemaNotFullyImplementedrF  c                       e Zd Zy)VObjectTests.test__validate_w_value_providing_schema_but_missing_fields.<locals>.BrokenNri   r   r   r   BrokenrL  	  s    r   rM  r]   rZ   r  c                 \    t        |       j                  t        | j                  d         fS r  )typer9   r3  r   rr  s    r   rt  zXObjectTests.test__validate_w_value_providing_schema_but_missing_fields.<locals>.<lambda>%  s!    tAw'7'7QVVAY&H r   keyz'bar'r*   z'foo')r+   r  r   r  r   r  rJ  r  r!  r   ra   r   r   r-   rA   r   rE   invariant_errorssortedschema_errorsr  r   r  r   r   r  r_   r3  )r
   r  r  r  rJ  r  rM  r?  brokenr   wctrG  errorr  errnesteds                   r   :test__validate_w_value_providing_schema_but_missing_fieldszFObjectTests.test__validate_w_value_providing_schema_but_missing_fields  s#   .5HD!!df$&!9	V		V 	 
	 }}V$<= 	"MM&!	" mmcii&cii(--r23$$%EN	
 # 	+D%%d+E!!%";=VD\5;;7ekk*	+ 9Va(HJQic#<=!fn5gs6{+Qic#<=!fn5gs6{+A	" 	"s   9I55I?c                 F   ddl m} ddlm} ddlm} ddlm} ddlm} | j                   |        |             } ||       G d d	t                     }| j                  |      } |       }	| j                  |      5 }
|j                  |	       d d d        
j                  }| j                  |j                  |       | j                  |j                   |	       | j#                  |j$                  g        | j#                  t'        |j(                        d
dg       | j+                  |j(                  d   |       | j+                  |j(                  d
   |       | j-                  |j                   |             }| j#                  t/        |      d       t'        |d       }|d   }| j+                  ||       | j#                  |j0                  d       |d   }| j+                  ||       | j#                  |j0                  dt2        d
f       y # 1 sw Y   xY w)Nr   r  r  rz  r  r   rF  c                       e Zd ZdZdZy)VObjectTests.test__validate_w_value_providing_schema_but_invalid_fields.<locals>.BrokenNr*   r9   r:   r;   rZ   r]   r   r   r   rM  r]  :  s    CCr   rM  r]   rZ   r  c                 ,    t        |       j                  S r   )rO  r9   rr  s    r   rt  zXObjectTests.test__validate_w_value_providing_schema_but_invalid_fields.<locals>.<lambda>R  s    d1g.>.> r   rP  rZ   r*   )r+   r  r   r  r   r{  r  r   r  r!  r   ra   r   r   r-   rA   r   rE   rR  rS  rT  r  r  r   r   r3  )r
   r  r  r{  r  r   r  rM  r?  rU  r   rV  r  rX  s                 r   :test__validate_w_value_providing_schema_but_invalid_fieldszFObjectTests.test__validate_w_value_providing_schema_but_invalid_fields1  s   .5:H4!!df$&!9	V		V 	 
	 }}V$<= 	"MM&!	" mmcii&cii(--r23$$%EN	
 	c//6Hc//6	B 9Va($>?Qic?38,Qic9-AsE?3/	" 	"s   ?HH c                     ddl m} ddlm} ddlm} | j                   |        |        |g d            } ||       G d d	t                     }| j                  |      }|j                   |              y )
Nr   r  r  Choicer*   r     r   rZ   r]   bazc                       e Zd ZdZdZdZy)?ObjectTests.test__validate_w_value_providing_schema.<locals>.OKFooBarr  Nr9   r:   r;   rZ   r]   ri  r   r   r   OKrk  f      CCCr   ro  )
r+   r  r   r  rX  rd  r  r!  r   r   )r
   r  r  rd  r  ro  r?  s          r   'test__validate_w_value_providing_schemaz3ObjectTests.test__validate_w_value_providing_schemaZ  sp    .5-!!i( " 
 
V		 	 
	 }}V$bdr   c                     | j                         \  }}}| j                  |      } |d       } |d       } ||||g      }||_        ||_        |j                  |       y )Nr  )r5  r   r&  r   )r
   r"  r2  r%  rA   person1person2r&  s           r   test_validate_w_cyclesz"ObjectTests.test_validate_w_cyclesn  sd    "..0vtU+,,Ggw/0tr   c                    ddl m} ddl m} | j                         \  }}}| j	                  |      } |d       } |d       }t               }	 ||	      }
 ||
||g      }||_        ||_        | j                  |      5 }|j                  |       d d d        j                  }| j                  dt        |j                               | j                  dt        |j                               | j                  dt        |j                               |j                  d   }| j                  ||       | j                  dt        |j                               | j                  dt        |j                               | j                  dt        |j                               |j                  d   }| j                  ||       | j!                  ||j"                         | j!                  |	|j$                         y # 1 sw Y   oxY w)Nr   r  rD  r  r*   r   r&  )r   r  rE  r5  r   r!  r&  ra   r   r   rE   r   rT  r  rR  r  r-   r  r   )r
   r  rE  r"  r2  r%  rA   rs  rt  	boss_unitr   r&  r   r   
boss_error
unit_errors                   r   'test_validate_w_cycles_object_not_validz3ObjectTests.test_validate_w_cycles_object_not_validx  s   H<"..0vtU+,,H	i D7G,-<= 	!NN4 	! ]]C 0 012C		N+C 3 345%%f-
j*GHC
 8 89:C
 1 123C
 ; ;<=--f5
j*;<eZ../i!1!12%	! 	!s   ?G>>Hc                    ddl m} | j                         \  }}}| j                  |      } |d       } |d       } |t	                     } ||||g      }	|	|_        |	|_        | j                  ||j                  |	       y )Nr   r  r  )r   r  r5  r   r!  r&  ra   r   )
r
   r  r"  r2  r%  rA   rs  rt  person3r&  s
             r   +test_validate_w_cycles_collection_not_validz7ObjectTests.test_validate_w_cycles_collection_not_valid  s~    H"..0vtU+,,"Ggw/07Nr   c                    ddl m} ddlm} ddlm} ddlm} ddlm	} | j                   |        |        |g d      	      } ||       G d
 dt                     }g }|j                  |j                         | j                  |d      }	t               }
 |       }|	j                  |
|       | j!                  |
j"                  |       | j%                  t'        |      d       | j%                  |j)                  |d         d       | j%                  |d   j                  |       | j%                  |d   j*                  d       | j%                  |d   j,                  |
       y )Nr   r  r  r  rc  )IBeforeObjectAssignedEventre  rg  rh  c                       e Zd ZdZdZdZy),ObjectTests.test_set_emits_IBOAE.<locals>.OKrl  rm  r  Nrn  r   r   r   ro  r    rp  r   ro  rA   r     ry   T)r  r  r+   r  r   r  rX  rd  r   r  r  r!  r   r   r   r  r-   rA   rE   r   
providedByrG  r  )r
   r  r  r  rd  r  r  ro  logr?  r   r   s               r   test_set_emits_IBOAEz ObjectTests.test_set_emits_IBOAE  s-   *.5-E!!i( " 
 
V		 	 
	 3::&}}Vg}6{udjj%(S1%3>>s2wGNR/Rw/R$/r   c                    ddl m} ddlm} ddlm} ddlm} | j                   |        |        |g d            } ||       G d	 d
t                     } |       } |ddd      g }|j                  |j                         fd}	|j                  |	       | j                  |d      }
t               }| j                  t        |      d       |
j                  ||       | j!                  |j"                         | j                  t        |      d       | j                  |d   j                         | j                  |d   j$                  d       | j                  |d   j&                  |       y )Nr   r  r  r  rc  re  rg  rh  c                       e Zd ZddZy)EObjectTests.test_set_allows_IBOAE_subscr_to_replace_value.<locals>.OKc                 .    || _         || _        || _        y r   rh  )r
   rZ   r]   ri  s       r   r-  zNObjectTests.test_set_allows_IBOAE_subscr_to_replace_value.<locals>.OK.__init__  s    r   N)rl  rm  r  r.  r   r   r   ro  r    s    r   ro  Foo2Bar2rf  c                     | _         y r   )r!  )eventok2s    r   _replacezKObjectTests.test_set_allows_IBOAE_subscr_to_replace_value.<locals>._replace  s
    ELr   rA   r     r  ry   )r  r  r+   r  r   r  rX  rd  r  r!  r   r   r   rE   r   r  r-   rA   rG  r  )r
   r  r  r  rd  r  ro  ok1r  r  r?  r   r  s               @r   -test_set_allows_IBOAE_subscr_to_replace_valuez9ObjectTests.test_set_allows_IBOAE_subscr_to_replace_value  s@   *.5-!!i( " 
 
V		 	 
	
 d'1%3::&	8$}}Vg}6{S1%sdjj#&S1%R-Rw/R$/r   c                   	
 ddl m} ddl m	 ddl m} ddl m ddlm ddlm
  G 	
fdd	|      } ||       G d
 dt                     }| j                  |      } |       }|j                  |       d|_        | j                  |j                  |      }| j                  t        |      d       | j                  |d   j                  d   d       |`d|_        | j                  |j                  |      }| j                  t        |      d       | j                  |d   j                  d   d       d|_        | j                  |j                  |      }| j                  t        |      d       |j#                  d        | j                  |d   j                  d   d       | j                  |d   j                  d   d       | j                  |d      }|j                  |       y )Nr   r
  )Invalidr  )	invariant)Bytesr  c                   Z    e Zd Z W        Z W         ZW fd       ZW fd       Zy)AObjectTests.test_validates_invariants_by_default.<locals>.ISchemac                 4    | j                   dk(  r d      y )Nr]   Foo is not validr`  r
   r  s    r   	check_foozKObjectTests.test_validates_invariants_by_default.<locals>.ISchema.check_foo       88v%!"455 &r   c                 4    | j                   dk(  r d      y )N   fooBar is not valid)r]   r  s    r   	check_barzKObjectTests.test_validates_invariants_by_default.<locals>.ISchema.check_bar  r  r   N)r9   r:   r;   rZ   r]   r  r  )r  r  r  r  s   r   r  r    s7    &C'C6 6 6 6r   r  c                       e Zd ZdZdZy)=ObjectTests.test_validates_invariants_by_default.<locals>.ObjrB  r   Nr^  r   r   r   Objr    s    CCr   r  r]   r*   r  r  r  r  c                     | j                   S r   )r   )is    r   rt  zBObjectTests.test_validates_invariants_by_default.<locals>.<lambda>  s
    !&& r   rP  F)validate_invariants)r+   rV   r  r  r  r3  r  r  r!  r   r   rZ   r  rE   r   r   r]   sort)r
   rV   r  r  r  rA   r   r  r  r  r  r  s           @@@@r   $test_validates_invariants_by_defaultz0ObjectTests.test_validates_invariants_by_default  s   ,*.,%$	6 	6i 	6 
W		& 	 
	 g&u 	t6Va(*,>?H6Va(*,>? 6Va(()*,>?*,>? g5Atr   c                     ddl m} ddlm}  G d d|j                         G fdd| j                               } |       }| j                  |j                         | j                  |      5 }|j                  t                      d d d        | j                  j                  j                         |j                         G d d	t                     }|j                   |              y # 1 sw Y   ixY w)
Nr   rJ   rD  c                       e Zd ZdZy)?ObjectTests.test_schema_defined_by_subclass.<locals>.IValueTypezThe value type schemaNr9   r:   r;   rC  r   r   r   
IValueTyper  '  s    #r   r  c                       e Zd ZW  Zy):ObjectTests.test_schema_defined_by_subclass.<locals>.FieldN)r9   r:   r;   r  )r  s   r   r'  r  *  s    Fr   r'  c                       e Zd ZdZy)>ObjectTests.test_schema_defined_by_subclass.<locals>.ValueTypezThe value typeNr  r   r   r   	ValueTyper  7  s    r   r  )rU   rK   r   rE  rV   r   r-   r  ra   r   r!  r   r  )r
   rK   rE  r'  rA   r   r  r  s          @r   test_schema_defined_by_subclassz+ObjectTests.test_schema_defined_by_subclass#  s    "<	$,, 	$	 D((* 	  ellJ/ 01 	%SNN68$	% 	j#--"6"67 
		z	*	 	 
+	 	y{#	% 	%s   2C44C=c                 <   ddl m ddl m} ddl m} ddlm ddlm ddlm ddlm	 dd	l
m} dd
l
m} ddl
m} ddl
m} ddlm  ||       G fddt"                      G fdd|       |       G d dt"                     } G fdd|       |       G fddt"                     } |ddh      }	d   j%                  |	        |ddh      }
| j'                  |      5 }d   j%                  |
       d d d        j(                  }| j+                  d   |j,                         | j+                  |
|j.                         | j+                  dt1        |j2                               | j+                  dt1        |j4                               | j+                  dt1        |j6                               |j2                  d   }| j9                  ||j6                  d          | j;                  ||       | j=                  ||       | j+                  d|j,                  j>                         | j+                  |
|j,                  j@                         | j+                  ddh|j.                         | j+                  dt1        |j6                               | j;                  |j6                  d   |        |       }|	|_!               }|j%                  |       | j'                  |      5 }|
|_!        d d d        |j(                  }| j+                  d   |j,                         | j+                  |
|j.                         | j+                  dgtE        |j2                               y # 1 sw Y   vxY w# 1 sw Y   xY w)Nr   )	Attributer
  r  rc  r  )Set)FieldPropertyr  )IContextSourceBinderr  )WrongContainedTypeSimpleVocabularyc                       e Zd Z fdZy)KObjectTests.test_bound_field_of_collection_with_choice.<locals>.EnumContextc                 8    j                  t        |            S r   )
fromValueslist)r
   r  r  s     r   __call__zTObjectTests.test_bound_field_of_collection_with_choice.<locals>.EnumContext.__call__O  s    '224=AAr   N)r9   r:   r;   r  r  s   r   EnumContextr  M  s	    Br   r  c                   P    e Zd Z W  W  W                    Z W  d      Zy)OObjectTests.test_bound_field_of_collection_with_choice.<locals>.IMultipleChoice)source)r5  zAn attributeN)r9   r:   r;   choices	non_field)r  rd  r  r  s   r   IMultipleChoicer  R  s     V;=%ABG ".1Ir   r  c                       e Zd Zd Zd Zy)GObjectTests.test_bound_field_of_collection_with_choice.<locals>.Choicesc                     || _         y r   )r  )r
   r  s     r   r-  zPObjectTests.test_bound_field_of_collection_with_choice.<locals>.Choices.__init__\  s	    &r   c                 *    t        t        d            S )Nr  )r  ranger	   s    r   r  zPObjectTests.test_bound_field_of_collection_with_choice.<locals>.Choices.__iter___  s     E!H~%r   N)r9   r:   r;   r-  r  r   r   r   Choicesr  Y  s    '&r   r  c                   &    e Zd Z W dW        Zy)JObjectTests.test_bound_field_of_collection_with_choice.<locals>.IFavoriteszFavorites number)r\   r  Nr9   r:   r;   fav)r  r  s   r   
IFavoritesr  e  s    2?KCr   r  c                   (    e Zd Z W  W d         Zy)IObjectTests.test_bound_field_of_collection_with_choice.<locals>.Favoritesr  Nr  )r  r  s   r   	Favoritesr  h  s    
5 12Cr   r  r*   rf  r     r  )#r+   r  rV   r  r3  rd  r  r  zope.schema.fieldpropertyr  r   r  r  r  r  zope.schema.vocabularyr  r!  r   ra   r   rE   rA   r   r   rT  rR  r  r-   r  assertNotIsInstancer9   r  r  r  )r
   rV   r  r  r  r  r  r  r  good_choicesbad_choicesr   r  	fav_error	favoritesfavorites_fieldr  rd  r  r  r  r  r  r  r  s                   @@@@@@@@@r   *test_bound_field_of_collection_with_choicez6ObjectTests.test_bound_field_of_collection_with_choice=  s   ,,.&&#;A?H=;	)	*	B& 	B 
+	B	2 	2i 	2 
_	%		&f 		& 
&		&	L 	L 
Z	 	3 	3 
!	3 1v5""<0 q!fo<= 	4u&&{3	4 MME*AGG4agg.C01C 2 234CM*OOI.	i!-i);<  ,IJ 	IOO$<$<=ioo&=&=>!Q1C	 0 012i..q13IJ K	$	 !,  + <= 	('IM	( MME*AGG4agg.)d1??&;<M	4 	4@	( 	(s   <NNNNc                 h    | j                         }|j                         }| j                  d|       y )Nz:Must Provide: :class:)r   r2  r_   )r
   rA   r8  s      r   r9  zObjectTests.test_getDoc  s'    lln.4r   r   )r9   r:   r;   r  r  r   r   r   r  r  r5  r7  r9  r=  r  r  rB  rH  rZ  ra  rq  ru  rz  r}  r  r  r  r  r  r9  r  r  s   @r   r  r    s    &&&;
".#`5/H
A
 
C.,`'4R(3@
O0@#0J8t$4[=z5r   r  c                   (    e Zd Z e       ZddZd Zy)r   Nc                     || _         y r   _exc)r
   r   s     r   r-  zDummyInst.__init__  s	    	r   c                 <    | j                   | j                         y r   r  )r
   r   s     r   r   zDummyInst.validate  s    99 ))+ !r   r   )r9   r:   r;   r!  r{   r-  r   r   r   r   r   r     s    HMr   r   c                      dd l } t        j                  j                  t              }|j                  t        j                  | j                  j                  t        j                               |S )Nr   )optionflags)r   unittestdefaultTestLoaderloadTestsFromNamer9   addTestsdoctestDocTestSuiter  _bootstrapfieldsELLIPSIS)rU   suites     r   
test_suiter    sQ    '&&88BE	NN7''$$$$  Lr   )!r  r  rD  r  r!  r   r=   rx   r   r   r   TestCaser   r   r$  r  r  r  r  r  rU  rh  r  r  r  r  r  r  r  r  r  r   r  r   r   r   <module>r     s      3FV 3FlG(7 G(TF F(12& 12hEF E.D& D<0,X.. 0,fK78,, K7\~/#$""~/B4'&&4n+N +4EX&& E>1]&&1:j""#!!j"Z/?&'%%/?d<?&'%%<?~;9"#!!;9|2$,%##2@; ,#,6K $5M $5N)} )5J; 5Jp^5$%##^5B r   