3 C\? @sddlmZyeWnek r0eZeZYnXddlZddlZddl Z ddl Z ddl Z ddl mZmZddlmZGddde jZedkre jdS))divisionN)Mock MagicMock)_magicsc@s\eZdZddZddZddZddZd d Zd d Ze j e j d ddZ ddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Ze j e j d&d'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Z e j d7e!j"kd8d9d:Z#d;d<Z$d=d>Z%d?d@Z&e j e!j'dMkdCdDdEZ(dFdGZ)dHdIZ*dJdKZ+dLS)NTestMockingMagicMethodscCsFt}|jt|dt|_|jt|d|`|jt|ddS)N __getitem__)r assertFalsehasattrr assertTrue)selfmockr q/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-emcbgzcf/mock/mock/tests/testmagicmethods.pytest_deleting_magic_methodss z3TestMockingMagicMethods.test_deleting_magic_methodscsHt`|jtfddtd`|jtfdddS)NcsdS)Nfoor r )r r r+sz.rcsdS)Nrr r )r r rr1s)rr assertRaises TypeError)r r )r rtest_magicmock_del'sz*TestMockingMagicMethods.test_magicmock_delcCsdt}dd}||_|j|j||j|d|df|j|jd|df||_|j|j|dS)NcSs|dfS)Nfishr )r namer r rf6sz=TestMockingMagicMethods.test_magic_method_wrapping..frr)rrZ assertIsNot assertEqualZassertIs)r r rr r rtest_magic_method_wrapping4sz2TestMockingMagicMethods.test_magic_method_wrappingcsDt}tttgd|_|jt|g|jtfdddS)N) return_valuecstS)N)listr )mock2r rrHszSTestMockingMagicMethods.test_magic_methods_isolated_between_mocks..)riter__iter__rrrr)r Zmock1r )rr)test_magic_methods_isolated_between_mocksBs zATestMockingMagicMethods.test_magic_methods_isolated_between_mockscCs<t}|jt|dt|dd|_|jt|ddS)NzcSsdS)Nrr )sr r rrNsz3TestMockingMagicMethods.test_repr..r)rrreprid__repr__)r r r r r test_reprKs z!TestMockingMagicMethods.test_reprcCs:t}|jt|tj|dd|_|jt|ddS)NcSsdS)Nrr )r r r rrUsz2TestMockingMagicMethods.test_str..r)rrstrobject__str__)r r r r rtest_strRs z TestMockingMagicMethods.test_strzno unicode in Python 3cCs@t}|jt|tt|dd|_|jt|tddS)NcSstdS)Nr)unicode)r r r rr^sz6TestMockingMagicMethods.test_unicode..r)rrr)r% __unicode__)r r r r r test_unicodeYs z$TestMockingMagicMethods.test_unicodecst|jtfddfdd}fdd}|jt||jt|ifdd}fd d }fd d }|_|_|_|jtfd ddd<|jddi|jddd=|jidS)NcsdS)Nrr r )r r rresz;TestMockingMagicMethods.test_dict_methods..cs d=dS)Nrr r )r r r_delfsz7TestMockingMagicMethods.test_dict_methods.._delcs dd<dS)Nrr r )r r r_sethsz7TestMockingMagicMethods.test_dict_methods.._setcs|S)Nr )r r)_dictr rgetitemnsz:TestMockingMagicMethods.test_dict_methods..getitemcs ||<dS)Nr )r rvalue)r/r rsetitempsz:TestMockingMagicMethods.test_dict_methods..setitemcs |=dS)Nr )r r)r/r rdelitemrsz:TestMockingMagicMethods.test_dict_methods..delitemcsdS)Nrr r )r r rrysbarr)rrr __setitem__r __delitem__KeyErrorr)r r,r.r0r2r3r )r/r rtest_dict_methodsbs&       z)TestMockingMagicMethods.test_dict_methodscst}d_|jtfddfdd}|_|jd|jjd`dd}|jt||_d 7|j||jjd |jtfd d|_|jd |jjd dS)NrcsdS)Nr-r r )r r rrsz6TestMockingMagicMethods.test_numeric..csj|7_|S)N)r1)r other)r r raddsz1TestMockingMagicMethods.test_numeric..addr-cSs |d7}dS)Nr-r )r r r riaddsz2TestMockingMagicMethods.test_numeric..iadd csdS)Nr-r r )r r rrs)rr1rr__add__r__iadd____radd__)r originalr:r;r )r r test_numerics$   z$TestMockingMagicMethods.test_numericcst}d_|jtfddfdd}|_|jd|jjd`tjrdd }|jt||_d |j||jjdnd_|jtfd d|_ |jd |jjd dS)N csdS)Nr r )r r rrsz7TestMockingMagicMethods.test_division..csj|_|S)N)r1)r r9)r r rtruedivsz6TestMockingMagicMethods.test_division..truedivrFr?cSs |d}dS)Nr )r r r ritruedivsz7TestMockingMagicMethods.test_division..itruedivcsdS)NrJr r )r r rrsg?rH) rr1rr __truediv__rsixPY3 __itruediv__ __rtruediv__)r rCrGrIr )r r test_divisions(   z%TestMockingMagicMethods.test_divisioncCs>t}|jt|tj|dd}||_|jt|ddS)NcSsdS)Nr-r )r r r r_hashsz0TestMockingMagicMethods.test_hash.._hashr-)rrhash__hash__)r r rQr r r test_hashs z!TestMockingMagicMethods.test_hashcCsBt}|jt|dd}tjr*||_n||_|jt|dS)NcSsdS)NFr )r r r rrsz6TestMockingMagicMethods.test_nonzero..)rr boolrLPY2 __nonzero____bool__r)r mZnonzeror r r test_nonzerosz$TestMockingMagicMethods.test_nonzerocCst}dd}||_|_|_|_|j|dk|j|dk|j|dk|j|dktjr|jtdkt dk|jtdkt dk|jtdkt dk|jtdkt dkn|j t dd|j t dd|j t dd|j t dd|j t d d|j t d d|j t d d|j t d d|j t d d|j t dd|j t dd|j t dddS)NcSsdS)NTr )r or r rcompsz5TestMockingMagicMethods.test_comparison..compr-cSs ttkS)N)rr&r r r rrsz9TestMockingMagicMethods.test_comparison..cSs ttkS)N)r&rr r r rrscSs ttkS)N)rr r r rrscSs ttkS)N)rr&r r r rrscSs ttkS)N)r&rr r r rrscSs ttkS)N)rr r r rrscSs ttkS)N)rr&r r r rrscSs ttkS)N)r&rr r r rrscSs ttkS)N)rr r r rrscSs ttkS)N)rr&r r r rrscSs ttkS)N)r&rr r r rrscSs ttkS)N)rr r r rrs) r__lt____gt____le____ge__r rLrVrr&rr)r r r\r r rtest_comparisons0z'TestMockingMagicMethods.test_comparisoncCs(xttfD]}|j||kd|j||kt|j||kd|j||kt|j|tkd|j|tkddd}||_|j|dk|j|dkdd}||_ |j|dk|j|dkqWt}d|j_ |j|dkt|j|dkdd|j _ |j|dkt|j|dkddS) NTFcSs|dkS)Nr-r )r r9r r reqsz1TestMockingMagicMethods.test_equality..eqr-rHcSs|dkS)Nr-r )r r9r r rnesz1TestMockingMagicMethods.test_equality..ne) rrrassertIsInstancerUr&__eq__r r__ne__r)r r rbrcr r r test_equalitys,z%TestMockingMagicMethods.test_equalitycst|jtt|jtt|jtfdddd_|jtddd_|jd|j ddd_ |jt t ddS) NcsdkS)Nrr r )r r rrsz@TestMockingMagicMethods.test_len_contains_iter..cSsdS)Nr<r )r r r rrsr<cSs|dkS)Nr-r )r r[r r rrsr-cSstdS)N foobarbaz)r)r r r rrsrh) rrrlenr__len__r __contains__ZassertIn assertNotInrr)r r )r rtest_len_contains_iters     z.TestMockingMagicMethods.test_len_contains_itercCst}tdddg|j_|jt|dddgd}d}tjrF||}}dt||_|j t |||j t |xt D]}|j t ||qvW|j t |ddS)NrFr-rWrXFZ __imaginery__)rrrrrrrLrMgetattrrr rUrr )r r rr9entryr r rtest_magicmock!s   z&TestMockingMagicMethods.test_magicmockcCsrt}|j|tkt|j|tkt|j|tkd|j|tkd|j||kd|j||kddS)NFT)rrdr&rUr)r r r r rtest_magic_mock_equality4sz0TestMockingMagicMethods.test_magic_mock_equalitycCst}|jt|d|jt|d|jt|d|jt|td|jt||jt|d|jt |g|jt |tj ||jt |tj ||jt|tj ||jt|t|jt|tjr|jt|dn|jt|d|jt|ddS)Nrny?g?r1Z0o1Z0x1)rrintcomplexfloatlongrlr&rirrRrSr%r'r)rdr rUrLrVocthex)r r r r rtest_magicmock_defaults?s"z/TestMockingMagicMethods.test_magicmock_defaultszno __cmp__ in Python 3cs<t|jtfddtdd_|jtdS)NcsjS)N)__cmp__r )r r rrZszHTestMockingMagicMethods.test_non_default_magic_methods..cSsdS)Nrr )r r[r r rr]s)rrAttributeErrorrr{rr&)r r )r rtest_non_default_magic_methodsWs  z6TestMockingMagicMethods.test_non_default_magic_methodscsGdddt}t|d|jtfddttgd_|jtgGdddt}t|d|jtfd dfd d }|jt|t|d|jtg|jt|dS) Nc@seZdZddZdS)zETestMockingMagicMethods.test_magic_methods_and_spec..IterablecSsdS)Nr )r r r rrdszNTestMockingMagicMethods.test_magic_methods_and_spec..Iterable.__iter__N)__name__ __module__ __qualname__rr r r rIterablecsr)speccsjS)N)rr )r r rrhszETestMockingMagicMethods.test_magic_methods_and_spec..)rc@s eZdZdS)zHTestMockingMagicMethods.test_magic_methods_and_spec..NonIterableN)r~rrr r r r NonIterablemsrcsjS)N)rr )r r rrpscsttgd_dS)N)r)rr__int__r )r r rset_intrszDTestMockingMagicMethods.test_magic_methods_and_spec..set_int) r&rrr|rrrrr)r rrrr )r rtest_magic_methods_and_specbs     z3TestMockingMagicMethods.test_magic_methods_and_speccsGdddt}t|d|jtfddttgd_|jtgGdddt}t|d|jtfd dfd d }|jt|t|d|jtg|jt|dS) Nc@seZdZddZdS)zITestMockingMagicMethods.test_magic_methods_and_spec_set..IterablecSsdS)Nr )r r r rr}szRTestMockingMagicMethods.test_magic_methods_and_spec_set..Iterable.__iter__N)r~rrrr r r rr|sr)Zspec_setcsjS)N)rr )r r rrszITestMockingMagicMethods.test_magic_methods_and_spec_set..)rc@s eZdZdS)zLTestMockingMagicMethods.test_magic_methods_and_spec_set..NonIterableN)r~rrr r r rrsrcsjS)N)rr )r r rrscsttgd_dS)N)r)rrrr )r r rrszHTestMockingMagicMethods.test_magic_methods_and_spec_set..set_int) r&rrr|rrrrr)r rrrr )r rtest_magic_methods_and_spec_set{s     z7TestMockingMagicMethods.test_magic_methods_and_spec_setcs$tfdd}|jtd|dS)Ncsdd_dS)NcSsdS)Nr )r rr r rrszdTestMockingMagicMethods.test_setting_unsupported_magic_method..set_setattr..) __setattr__r )r r r set_setattrszRTestMockingMagicMethods.test_setting_unsupported_magic_method..set_setattrz9Attempting to set unsupported magic method '__setattr__'.)rassertRaisesRegexr|)r rr )r r%test_setting_unsupported_magic_methods  z=TestMockingMagicMethods.test_setting_unsupported_magic_methodcCs>t}|j}dd}|j||t|}|j||tdS)NcSst|jdS)Nrn)type__mro__)objr r r _get_typeszKTestMockingMagicMethods.test_attributes_and_return_value.._get_type)rrr)r r attrrZreturnedr r r test_attributes_and_return_values z8TestMockingMagicMethods.test_attributes_and_return_valuecCs@t}|j|jtd|ddj_|j|dddddS)Nr-rnrF)rrdrrr)r r r r r"test_magic_methods_are_magic_mockssz:TestMockingMagicMethods.test_magic_methods_are_magic_mockscCs6t}t||j|jj|j|j|jjdS)N)rr%r r'calledZ reset_mockr)r r r r rtest_magic_method_reset_mocks z4TestMockingMagicMethods.test_magic_method_reset_mockcCs:x4ttfD]$}dd}||_|jt|dgqWdS)NcSsdgS)Nrr )r r r r_dirsz.TestMockingMagicMethods.test_dir.._dirr)rr__dir__rdir)r r rr r rtest_dirsz TestMockingMagicMethods.test_dirPyPyzThis fails differently on pypycCs"t}dgj|_|jtt|dS)Nr-)rrrrr)r rYr r rtest_bound_methodss z*TestMockingMagicMethods.test_bound_methodscCs(Gdddt}|}|j|j|dS)Nc@s eZdZdS)z;TestMockingMagicMethods.test_magic_method_type..FooN)r~rrr r r rFoosr)rrdr)r rrr r rtest_magic_method_typesz.TestMockingMagicMethods.test_magic_method_typecCs&t}dt|j_|jt|ddS)Nr)rrr'rrr%)r rYr r rtest_descriptor_from_classs z2TestMockingMagicMethods.test_descriptor_from_classcCs|t}dddg|j_|jt|dddg|jt|dddgtdddg|j_|jt|dddg|jt|gdS)NrnrFr-rHr<)rrrrrr)r rYr r r"test_iterable_as_iter_return_valuesz:TestMockingMagicMethods.test_iterable_as_iter_return_valuer-rz@ added in Python 3.5cCstjd}t|dS)Nae m = MagicMock() self.assertIsInstance(m @ 1, MagicMock) m.__matmul__.return_value = 42 m.__rmatmul__.return_value = 666 m.__imatmul__.return_value = 24 self.assertEqual(m @ 1, 42) self.assertEqual(1 @ m, 666) m @= 24 self.assertEqual(m, 24) )textwrapdedentexec)r srcr r r test_matmuls z#TestMockingMagicMethods.test_matmulcCst}|jtd|td|j_|jt|ddt}td|}|j|t|jd}|j|tt|d}|j|t|jd}|j|tdS)NrrFrn)rFrn)rFrn)rrddivmod __divmod__rr __rdivmod__)r rYrZ foo_directr4Z bar_directr r rtest_divmod_and_rdivmods       z/TestMockingMagicMethods.test_divmod_and_rdivmodcCs"tfddi}|jt|ddS)Nz__str__.return_value12)rrr%)r rYr r rtest_magic_in_initializationsz4TestMockingMagicMethods.test_magic_in_initializationcCsXtfddi}d|j_|jt|dtfddi}|jfddi|jt|ddS)Nz__str__.return_valuerZ13Z14)rr'rrr%Zconfigure_mock)r rYr r r)test_changing_magic_set_in_initialization s zATestMockingMagicMethods.test_changing_magic_set_in_initializationN)r-r),r~rrrrrrr$r(unittestZskipIfrLrMr+r8rDrPrTrZrargrmrqrrrzr}rrrrrrrsysversionrrrr version_inforrrrr r r rrsD             r__main__) __future__rr) NameErrorr%rtrwinspectrrrLZ unittest2rr rrZ mock.mockrZTestCaserr~mainr r r rs$   }