
    \e)                     .   d dl Z d dlmZ d dlmZ g dZd Zd Zd%dZ	d 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j"                        Z G d dej"                        Z G d dej"                        Z G d dej"                        Z G d d ej"                        Z G d! d"ej"                        Z G d# d$ej"                        Zy)&    N)base)
reflection)RuntimeError	ExceptionBaseExceptionobjectc                 B     t        j                          fd       }|S )Nc                       | i |S N )argskwargsfs     B/usr/lib/python3/dist-packages/oslo_utils/tests/test_reflection.pywrapperz dummy_decorator.<locals>.wrapper   s    $!&!!    )	functoolswraps)r   r   s   ` r   dummy_decoratorr      s%    __Q" " Nr   c                      y r   r   )abs     r   mere_functionr   &       r   c                      y r   r   r   r   optionals      r   function_with_defsr   *   r   r   c                      y r   r   )r   r   r   s      r   function_with_kwargsr    .   r   r   c                       e Zd Zd Zd Zy)
TestObjectc                      y r   r   selfs    r   _hellozTestObject._hello3       r   c                      y r   r   r$   s    r   hizTestObject.hi6   r'   r   N)__name__
__module____qualname__r&   r)   r   r   r   r"   r"   2   s    r   r"   c                   2    e Zd Zd Zed        Zed        Zy)Classc                      y r   r   r%   cds      r   methodzClass.method<   r'   r   c                      y r   r   )er   s     r   static_methodzClass.static_method?       r   c                      y r   r   )clsghs      r   class_methodzClass.class_methodC   r7   r   N)r*   r+   r,   r3   staticmethodr6   classmethodr<   r   r   r   r.   r.   :   s/        r   r.   c                       e Zd Zd Zd Zy)BadClassc                      y r   r   r$   s    r   do_somethingzBadClass.do_somethingI   r'   r   c                      yNFr   r$   s    r   __nonzero__zBadClass.__nonzero__L   s    r   N)r*   r+   r,   rB   rE   r   r   r   r@   r@   H   s    r   r@   c                       e Zd Zd Zy)CallableClassc                      y r   r   )r%   ijs      r   __call__zCallableClass.__call__Q   r'   r   Nr*   r+   r,   rK   r   r   r   rG   rG   P       r   rG   c                       e Zd Zd Zy)ClassWithInitc                      y r   r   )r%   kllls      r   __init__zClassWithInit.__init__V   r'   r   N)r*   r+   r,   rS   r   r   r   rO   rO   U   rM   r   rO   c                   $    e Zd Zd Zd Zd Zd Zy)MemberGetTestc                     t               }t        t        j                  |d            }| j	                  dt        |             y )NTexclude_hidden   )r"   listr   get_membersassertEquallenr%   objmemberss      r   test_get_members_exclude_hiddenz-MemberGetTest.test_get_members_exclude_hidden[   s4    lz--c$GHCL)r   c                     t               }t        t        j                  |d            }| j	                  t        |      d       y )NFrW   rY   )r"   rZ   r   r[   assertGreaterr]   r^   s      r   "test_get_members_no_exclude_hiddenz0MemberGetTest.test_get_members_no_exclude_hidden`   s4    lz--c%HI3w<+r   c                 ~    t               }t        t        j                  |d            }| j	                  dg|       y )NTrW   r)   )r"   rZ   r   get_member_namesr\   r^   s      r   %test_get_members_names_exclude_hiddenz3MemberGetTest.test_get_members_names_exclude_hiddene   s2    lz223tLM$)r   c                     t               }t        t        j                  |d            }|D cg c]  }|j	                  d      r| }}| j                  ddgt        |             y c c}w )NFrW   __r&   r)   )r"   rZ   r   rf   
startswithr\   sorted)r%   r_   r`   members       r   (test_get_members_names_no_exclude_hiddenz6MemberGetTest.test_get_members_names_no_exclude_hiddenj   s_    lz223uMN(/Ofv7H7H7N6OO(D)6'?; Ps   A*A*N)r*   r+   r,   ra   rd   rg   rm   r   r   r   rU   rU   Z   s    *
,
*
<r   rU   c                       e Zd Zd Zd Zd Zy)CallbackEqualityTestc                 Z    d }d }| j                  t        j                  ||             y )Nc                       y r   r   r   r   r   r   z?CallbackEqualityTest.test_different_simple_callbacks.<locals>.at       r   c                       y r   r   r   r   r   r   z?CallbackEqualityTest.test_different_simple_callbacks.<locals>.bw   rr   r   )assertFalser   is_same_callback)r%   r   r   s      r   test_different_simple_callbacksz4CallbackEqualityTest.test_different_simple_callbacksr   s)    		 	44Q:;r   c                      G d dt               } |       } |       }| j                  t        j                  |j                  |j                               y )Nc                       e Zd Zed        Zy)>CallbackEqualityTest.test_static_instance_callbacks.<locals>.Ac                      y r   r   )r   r   r1   s      r   r   z@CallbackEqualityTest.test_static_instance_callbacks.<locals>.A.b   s    r   N)r*   r+   r,   r=   r   r   r   r   Ary   ~   s     r   r{   )r   
assertTruer   ru   r   )r%   r{   r   r   s       r   test_static_instance_callbacksz3CallbackEqualityTest.test_static_instance_callbacks|   s?    	 	 CC
33ACC=>r   c                 "    G d dt               } |       } |       }| j                  t        j                  |j                  |j                               | j                  t        j                  |j                  |j                               y )Nc                       e Zd Zd Zd Zd Zy)ACallbackEqualityTest.test_different_instance_callbacks.<locals>.Ac                      y r   r   r$   s    r   r   zCCallbackEqualityTest.test_different_instance_callbacks.<locals>.A.b       r   c                      yNTr   r%   others     r   __eq__zHCallbackEqualityTest.test_different_instance_callbacks.<locals>.A.__eq__   s    r   c                 &    | j                  |       S r   )r   r   s     r   __ne__zHCallbackEqualityTest.test_different_instance_callbacks.<locals>.A.__ne__   s    ;;u---r   N)r*   r+   r,   r   r   r   r   r   r   r{   r      s    .r   r{   )r   rt   r   ru   r   r|   )r%   r{   r   r1   s       r   !test_different_instance_callbacksz6CallbackEqualityTest.test_different_instance_callbacks   sb    	. 	. CC44QSS!##>?
33ACC=>r   N)r*   r+   r,   rv   r}   r   r   r   r   ro   ro   q   s    <??r   ro   c                       e Zd Zd Zd Zy)BoundMethodTestc                 t    t               }| j                  t        j                  |j                               y r   )r@   r|   r   is_bound_methodrB   )r%   r   s     r   
test_baddyzBoundMethodTest.test_baddy   s$    J
221>>BCr   c                 h    | j                  t        j                  t        j                               y r   )rt   r   r   r.   r6   r$   s    r   test_static_methodz"BoundMethodTest.test_static_method   s!    33E4G4GHIr   N)r*   r+   r,   r   r   r   r   r   r   r      s    DJr   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
GetCallableNameTestc                     t        j                  t              }| j                  dj	                  t
        df      |       y )N.r   )r   get_callable_namer   r\   joinr*   r%   names     r   test_mere_functionz&GetCallableNameTest.test_mere_function   s0    ++M:8_"=>Er   c                     t        j                  t        j                        }| j	                  dj                  t        ddf      |       y Nr   r.   r3   r   r   r.   r3   r\   r   r*   r   s     r   test_methodzGetCallableNameTest.test_method   s6    ++ELL98Wh"?@$Gr   c                     t        j                  t               j                        }| j	                  dj                  t        ddf      |       y r   r   r   s     r   test_instance_methodz(GetCallableNameTest.test_instance_method   s8    ++EGNN;8Wh"?@$Gr   c                     t        j                  t        j                        }| j	                  dj                  t        ddf      |       y )Nr   r.   r6   )r   r   r.   r6   r\   r   r*   r   s     r   r   z&GetCallableNameTest.test_static_method   s8    ++E,?,?@8Wo"FGNr   c                     t        j                  t        j                        }| j	                  dj                  t        ddf      |       y )Nr   r.   r<   )r   r   r.   r<   r\   r   r*   r   s     r   test_class_methodz%GetCallableNameTest.test_class_method   s8    ++E,>,>?8Wn"EFMr   c                     t        j                  t              }| j                  dj	                  t
        df      |       y Nr   r.   )r   r   r.   r\   r   r*   r   s     r   test_constructorz$GetCallableNameTest.test_constructor   s0    ++E28W"56=r   c                     t        j                  t                     }| j                  dj	                  t
        df      |       y )Nr   rG   )r   r   rG   r\   r   r*   r   s     r   test_callable_classz'GetCallableNameTest.test_callable_class   s2    ++MO<8_"=>Er   c                     t        j                  t               j                        }| j	                  dj                  t        ddf      |       y )Nr   rG   rK   )r   r   rG   rK   r\   r   r*   r   s     r   test_callable_class_callz,GetCallableNameTest.test_callable_class_call   sB    ++MO,D,DE8_#-#/ 015	7r   N)r*   r+   r,   r   r   r   r   r   r   r   r   r   r   r   r   r      s0    FHHON>F7r   r   c                   4    e Zd Z G d de      Zd Zd Zd Zy)GetCallableNameTestExtendedc                       e Zd Zd Zy).GetCallableNameTestExtended.InnerCallableClassc                      y r   r   r$   s    r   rK   z7GetCallableNameTestExtended.InnerCallableClass.__call__   rr   r   NrL   r   r   r   InnerCallableClassr      s    	r   r   c                     | j                         }t        j                  |j                        }dj	                  t
        dddf      }| j                  ||       y )Nr   r   r   rK   )r   r   r   rK   r   r*   r\   r%   r_   r   expected_names       r   test_inner_callable_classz5GetCallableNameTestExtended.test_inner_callable_class   sS    %%'++CLL9(,I"6
"D E-r   c           	          d }t        j                   |             }dj                  t        ddddddf      }| j	                  ||       y )Nc                      d } | S )Nc                       y r   r   r   r   r   r   zNGetCallableNameTestExtended.test_inner_callable_function.<locals>.a.<locals>.b   r   r   r   )r   s    r   r   zCGetCallableNameTestExtended.test_inner_callable_function.<locals>.a   s     Hr   r   r   test_inner_callable_functionz<locals>r   r   )r   r   r   r*   r\   )r%   r   r   r   s       r   r   z8GetCallableNameTestExtended.test_inner_callable_function   sQ    	 ++AC0(,I"@*"%z3"8 9 	-r   c                     | j                         }t        j                  |      }dj                  t        ddf      }| j                  ||       y )Nr   r   r   )r   r   r   r   r*   r\   r   s       r   test_inner_classz,GetCallableNameTestExtended.test_inner_class   sM    %%'++C0("?"6"8 9 	-r   N)r*   r+   r,   r   r   r   r   r   r   r   r   r   r      s    V ...r   r   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
)GetCallableArgsTestc                 ^    t        j                  t              }| j                  ddg|       y )Nr   r   )r   get_callable_argsr   r\   r%   results     r   r   z&GetCallableArgsTest.test_mere_function   s&    --m<#sV,r   c                 ^    t        j                  t              }| j                  g d|       y )Nr   r   r   r   r\   r   s     r   test_function_with_defaultsz/GetCallableArgsTest.test_function_with_defaults   s$    --.@A/8r   c                 b    t        j                  t        d      }| j                  ddg|       y )NT)required_onlyr   r   r   r   s     r   test_required_onlyz&GetCallableArgsTest.test_required_only   s-    --.@<@B#sV,r   c                 r    t        j                  t        j                        }| j	                  g d|       y )Nr0   r   r   r.   r3   r\   r   s     r   r   zGetCallableArgsTest.test_method   s'    --ell;+V4r   c                 z    t        j                  t               j                        }| j	                  ddg|       y )Nr1   r2   r   r   s     r   r   z(GetCallableArgsTest.test_instance_method  s,    --egnn=#sV,r   c                 r    t        j                  t        j                        }| j	                  ddg|       y )Nr:   r;   )r   r   r.   r<   r\   r   s     r   r   z%GetCallableArgsTest.test_class_method  s,    --e.@.@A#sV,r   c                 ^    t        j                  t              }| j                  ddg|       y )NrQ   rR   )r   r   rO   r\   r   s     r   test_class_constructorz*GetCallableArgsTest.test_class_constructor	  s&    --m<#uv.r   c                 f    t        j                  t                     }| j                  ddg|       y )NrI   rJ   )r   r   rG   r\   r   s     r   test_class_with_callz(GetCallableArgsTest.test_class_with_call  s(    --mo>#sV,r   c                 n    t         d        }t        j                  |      }| j                  ddg|       y )Nc                      y r   r   )xys     r   special_funz=GetCallableArgsTest.test_decorators_work.<locals>.special_fun  s    r   r   r   )r   r   r   r\   )r%   r   r   s      r   test_decorators_workz(GetCallableArgsTest.test_decorators_work  s8    		 
	--k:#sV,r   N)r*   r+   r,   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s/    -9-
5--/--r   r   c                       e Zd Zd Zd Zy)AcceptsKwargsTestc                 V    | j                  dt        j                  t                     y rD   )r\   r   accepts_kwargsr   r$   s    r   test_no_kwargsz AcceptsKwargsTest.test_no_kwargs  s    
 9 9- HIr   c                 V    | j                  dt        j                  t                     y r   )r\   r   r   r    r$   s    r   test_with_kwargsz"AcceptsKwargsTest.test_with_kwargs  s    z889MNOr   N)r*   r+   r,   r   r   r   r   r   r   r     s    JPr   r   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
)GetClassNameTestc                 Z    t        j                  t              }| j                  d|       y )Nr   )r   get_class_namer   r\   r   s     r   test_std_exceptionz#GetClassNameTest.test_std_exception$  s"    ((6.r   c                     t        j                  t              }| j                  dj	                  t
        df      |       y r   r   r   r.   r\   r   r*   r   s     r   
test_classzGetClassNameTest.test_class(  s0    ((/8W"56=r   c                      G d dt               }t        j                  |      }| j                  dj	                  t
        df      |       y )Nc                       e Zd Zy)=GetClassNameTest.test_qualified_class.<locals>.QualifiedClassN)r*   r+   r,   r   r   r   QualifiedClassr   -  s    r   r   r   )r   r   r   r\   r   r*   )r%   r   r   s      r   test_qualified_classz%GetClassNameTest.test_qualified_class,  s?    	V 	 ((88-=">?Fr   c                     t        j                  t                     }| j                  dj	                  t
        df      |       y r   r   r   s     r   test_instancezGetClassNameTest.test_instance3  s2    ((18W"56=r   c                 R    t        j                  d      }| j                  d|       y )N*   int)r   r   r\   r   s     r   test_intzGetClassNameTest.test_int7  s"    ((,%r   c                     t        j                  t        j                        }| j	                  dt
        z  |       t        j                  t        j                  d      }| j	                  d|       y Nz%s.ClassF)fully_qualifiedr.   )r   r   r.   r<   r\   r*   r   s     r   r   z"GetClassNameTest.test_class_method;  sY    ((););<h.5((););9>@$'r   c                 j    | j                  t        t        j                  t        j
                         y r   )assertRaises	TypeErrorr   r   r.   r6   r$   s    r   r   z#GetClassNameTest.test_static_methodC  s#    )Z%>%>--	/r   c                 V    | j                  t        t        j                  t               y r   )r   r   r   r   r   r$   s    r   test_unbound_methodz$GetClassNameTest.test_unbound_methodG  s    )Z%>%>'	)r   c                     t               }t        j                  |j                        }| j	                  dt
        z  |       t        j                  |j                  d      }| j	                  d|       y r   )r.   r   r   r3   r\   r*   )r%   r1   r   s      r   test_bound_methodz"GetClassNameTest.test_bound_methodK  sX    G((2h.5((5I$'r   N)r*   r+   r,   r   r   r   r   r   r   r   r   r   r   r   r   r   r   "  s0    />G>&(/)(r   r   c                       e Zd Zd Zd Zy)GetAllClassNamesTestc                 t    t        t        j                  t                    }| j	                  t
        |       y r   )rZ   r   get_all_class_namesr   r\   RUNTIME_ERROR_CLASSESr%   namess     r   test_std_classz#GetAllClassNamesTest.test_std_classV  s(    Z33LAB.6r   c                     t        t        j                  t        t                    }| j                  t        d d |       y )N)up_to)rZ   r   r   r   r   r\   r   r   s     r   test_std_class_up_toz)GetAllClassNamesTest.test_std_class_up_toZ  s8    Z33L:CE F.s3U;r   N)r*   r+   r,   r   r  r   r   r   r   r   T  s    7<r   r   r   )r   oslotestr   	test_base
oslo_utilsr   r   r   r   r   r    r   r"   r.   r@   rG   rO   BaseTestCaserU   ro   r   r   r   r   r   r   r   r   r   r   <module>r	     s  "  & ! 
			 F v F 
F 
<I** <.(?911 (?VJi,, J!7)00 !7H".)"8"8 ".J(-)00 (-VP	.. P/(y-- /(d	<911 	<r   