From 41a0f3ce0a671062efcdc3efc6df15f78ccf18a1 Mon Sep 17 00:00:00 2001 From: Marko Lahma Date: Sat, 18 Feb 2012 14:24:00 +0200 Subject: [PATCH] Remove DotNetMock --- .../SpringAir.Core.Tests.2008.csproj | 4 - .../SpringAir.Core.Tests.2010.csproj | 4 - .../SpringAir.Data.Ado.Tests.2008.csproj | 4 - .../SpringAir.Data.Ado.Tests.2010.csproj | 4 - lib/Net/2.0/DotNetMock.Framework.dll | Bin 45056 -> 0 bytes lib/Net/2.0/DotNetMock.dll | Bin 61440 -> 0 bytes .../Aop/Framework/ProxyFactoryTests.cs | 26 +- .../DelegatingIntroductionInterceptorTests.cs | 41 +- .../Spring.Aop.Tests.2008.csproj | 4 - .../Spring.Aop.Tests.2010.csproj | 4 - .../Spring.Core.Tests.2010.csproj | 4 - .../Spring.Data.Integration.Tests.2008.csproj | 4 - .../Spring.Data.Integration.Tests.2010.csproj | 4 - ...NHibernate21.Integration.Tests.2008.csproj | 4 - ...NHibernate21.Integration.Tests.2010.csproj | 4 - .../Spring.Data.Tests.2008.csproj | 4 - .../Spring.Data.Tests.2010.csproj | 4 - .../Transaction/CommonTypes.cs | 429 +++++------------- ...AbstractPlatformTransactionManagerTests.cs | 98 ++-- .../Support/DefaultTransactionStatusTests.cs | 201 ++++---- .../TransactionSynchronizationManagerTests.cs | 5 +- .../Support/TransactionTemplateTests.cs | 157 ++++--- .../Spring.Services.Tests.2008.csproj | 4 - .../Spring.Services.Tests.2010.csproj | 4 - ...pring.Services.WindowsService.Tests.csproj | 322 ------------- 25 files changed, 382 insertions(+), 957 deletions(-) delete mode 100644 lib/Net/2.0/DotNetMock.Framework.dll delete mode 100644 lib/Net/2.0/DotNetMock.dll delete mode 100644 test/Spring/Spring.Services.Tests/Spring.Services.WindowsService.Tests.csproj diff --git a/examples/Spring/SpringAir/test/SpringAir.Core.Tests/SpringAir.Core.Tests.2008.csproj b/examples/Spring/SpringAir/test/SpringAir.Core.Tests/SpringAir.Core.Tests.2008.csproj index ae7c5001..bd154402 100644 --- a/examples/Spring/SpringAir/test/SpringAir.Core.Tests/SpringAir.Core.Tests.2008.csproj +++ b/examples/Spring/SpringAir/test/SpringAir.Core.Tests/SpringAir.Core.Tests.2008.csproj @@ -76,10 +76,6 @@ prompt - - False - ..\..\..\..\..\lib\Net\2.0\DotNetMock.dll - False ..\..\..\..\..\lib\Net\2.0\nunit.framework.dll diff --git a/examples/Spring/SpringAir/test/SpringAir.Core.Tests/SpringAir.Core.Tests.2010.csproj b/examples/Spring/SpringAir/test/SpringAir.Core.Tests/SpringAir.Core.Tests.2010.csproj index a9a81aae..e29a6f8d 100644 --- a/examples/Spring/SpringAir/test/SpringAir.Core.Tests/SpringAir.Core.Tests.2010.csproj +++ b/examples/Spring/SpringAir/test/SpringAir.Core.Tests/SpringAir.Core.Tests.2010.csproj @@ -93,10 +93,6 @@ prompt - - False - ..\..\..\..\..\lib\Net\2.0\DotNetMock.dll - False ..\..\..\..\..\lib\Net\2.0\nunit.framework.dll diff --git a/examples/Spring/SpringAir/test/SpringAir.Data.Ado.Tests/SpringAir.Data.Ado.Tests.2008.csproj b/examples/Spring/SpringAir/test/SpringAir.Data.Ado.Tests/SpringAir.Data.Ado.Tests.2008.csproj index 3122dff8..8f4842c2 100644 --- a/examples/Spring/SpringAir/test/SpringAir.Data.Ado.Tests/SpringAir.Data.Ado.Tests.2008.csproj +++ b/examples/Spring/SpringAir/test/SpringAir.Data.Ado.Tests/SpringAir.Data.Ado.Tests.2008.csproj @@ -76,10 +76,6 @@ prompt - - False - ..\..\..\..\..\lib\Net\2.0\DotNetMock.dll - False ..\..\..\..\..\lib\Net\2.0\nunit.framework.dll diff --git a/examples/Spring/SpringAir/test/SpringAir.Data.Ado.Tests/SpringAir.Data.Ado.Tests.2010.csproj b/examples/Spring/SpringAir/test/SpringAir.Data.Ado.Tests/SpringAir.Data.Ado.Tests.2010.csproj index bf2993d0..3dd51c0f 100644 --- a/examples/Spring/SpringAir/test/SpringAir.Data.Ado.Tests/SpringAir.Data.Ado.Tests.2010.csproj +++ b/examples/Spring/SpringAir/test/SpringAir.Data.Ado.Tests/SpringAir.Data.Ado.Tests.2010.csproj @@ -93,10 +93,6 @@ prompt - - False - ..\..\..\..\..\lib\Net\2.0\DotNetMock.dll - False ..\..\..\..\..\lib\Net\2.0\nunit.framework.dll diff --git a/lib/Net/2.0/DotNetMock.Framework.dll b/lib/Net/2.0/DotNetMock.Framework.dll deleted file mode 100644 index 7831d4eb7a8dcfd343801682ccc560176db0f662..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45056 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 diff --git a/lib/Net/2.0/DotNetMock.dll b/lib/Net/2.0/DotNetMock.dll deleted file mode 100644 index 4ebee5ccfd0f32e675349971876879bdbdfe561b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61440 zcmeIb3wV{qwLiS(-S?df?46JV5@4f%+XRpxBA_UN1PJARQ@n*uvVlmFH|(7tNJB$w zy`oi*TIJZ*yKU80kJekY)mE`LPieK)wo0{HYfnAawzj7|w)+3AHS=C}643Vleb4hf z&qpBh&RVl(&6+i9)~uO#_Ri8XuA~4F1@ZgA2Sg9!$v<-?J$%xS;?l8?meK>UXU9FP zmOMLd&6f6jsyk3+Pf8I1|M+5se$D-~0D!%x zKFm z14lG)L<2`Oa6|(~G;l-%M>KFm14lIQ{~rz9i+wHs@ZQv-5dF0sTg)6$Ot4X>IEv@< z_ctt`I&ywIvGLs{Prhewf8oH#e_0j($t!ORpOv}l*Q@?GV&-QOv!_1u=oJsPUHu9*0ccprB9L8|?+OFVLD;(!fKn%WBV;hY4Oh^nWC z=sIWs>=Kl#1k-?B1iCaf-|=`LsghPYiMGkw#qES6(flZYB~~Df-Fvt!NQt0b0@|`j z-N;15E=9Iy82FWiD3%D>W4SJ&0JwNrG!dQr^Mj)kk=|pOB$kMkzpn%vO~h<4jMGbG z#e!*2hs(lsln6scg#wFCrP_8H&4X12nX`C8poEbtZ~z@p=>$0JhPZJNGETvgin3tc z#8@J@uZY4C`(Ch(*!M~LRit(b3Ah9+PcI85g0U;w-w&3B5~0b@TH%lgQCvq+h=4W& z)Ql(emY{$=hU*3FYCKrm(3Fi6m2fy{mvbkqU94a9tvEWl91xF~#@QpdoWezQ6mj@Y z17Do^Fy9K4R=lrDVv|Qu9-|R2vH}tAR+u7js*8c73fMS>jbJR-Ow<9)=8o@|D5L%VCA8 zC{khF5?M)gB^0n$1}g-)l1)f-GZD`S*H1$a@pv8s6)%e9#<7(`Sr9m4u`$Gba{mZw z0c&nE#U;_n#k3nW;zctbM$vBQgmnmg6h~+G14H?vP}wL;AtBr@O_+3{`xBTbv%Mc!paHQyH zqR8YDIGuov&cfx@u?MozGvsT#IQ!RpnVFBTj(r{s6^r4t? zHpuf(Tl{=$7xRzT5wA;3j|oOV71BR5fL_|O=YWCK2_pC z8?qF0huv1jE{K=%B$bjRg`v&4;GJT}-LipKI#y^P91PhFz!!PMa|pEafGe&jsXLmY zv3+I1NUZX7#0&F*#iJ1qy9voe0=^^`mF1UXgdb7FUVs8#i+N?QmX+OJ$h3*j?nPWt zEC~R{GH&hS5wsU0OF(@L&jS!syU^To=#5^l(o0ZMZZ9=-%kT_c(Z1PUZV)T*^dbpu zxZt-EXt%vpE`X{P?^{M~v+u-+Qbozk&+s#Z-i8z5vIuIgb}InjCSzWMYZ$CN-9d!y zwLmxnF#_R_y$%RwlZd1%cpy2JO8JNq+~L!J0A5ctz^4N?Q%y7rNfFpUv$HpTfHz~H zSPzQb7{j2^M(_ZXtMw%-u8gD@CE&_&gPzWmI&w%h$|xj186Ye38fu zwlC%_A?7GI#5{*C;T{{!h()J?ZB0|>#i>(g04)-JB_egIRk=wNsvRTLdWd<%W@UIZzjp)lNt z;@BB_Gx|M^<$leU0>@7%~7CN!RaFNnx2yNDF3iPlWhF(}I z$roV*5r$vUk_pvZ>@{i#n~iXEpWP0w9)k(KO^0A#tSqS;Zo~)(aY-G;um%U@-87nk zyPi^puxD!6n>$lO*!7ixGnQYG1u;cfi-F;E#@CX5895m5BbJ$CY~G?B zXdmq0XFAZIcx4e;WxI3eJ}h{3RT91g>bW zJU$ty*ymXhWUNz_h@>VF@I8w#FXD&<^JwmJ7?tWn{UBx^KPv1Vpb;#_5Uxl8f<^W< z2xw>o>jZuy#MY**kwdn{*u%8-kZy~a4X^{&6_ztk_pme1SNPYWUw*j$t3BB;#Eu>qt7R+T z?bpQz;BD>FgtA7uOP+tJ!#MF$hoSX+j&F_TV%^SUtkF!RAsDdk5wB(58jYhpw5coU zHCk6GT%-Nwg^)!WW}W%Qnb86JY>bdQ&KCPOf*HXl2htC)jif+jIdT-#=aK*GXm+K8#Je;eCI_>i@XE4a{h45RI z_AY=3BjwmNEGMpg%nX8Iu|X?~tza7SQ8%MetXoJ!m=?UAVR%i90G{xf>B}^^6c}|w zE`9IItUZX*^bU3+tAL?emR-{row68GU1%8c(HK6gAE8-Hf!qn`p7bF9adhf@oGS+i zD>h-`iO*&Y+I=XJ!{U;eccLt&Pm9qp#T!W`3CrP9PYkG{h`n3XB|9v3;_$u^ebyYR zI|&OR!nJr0+8;lluiWt* zn*^q!!=ST)#NNIXgHax|KP}@|Hw;kzTIB6Z1W|h_7ncWe_qck#4t=T2-{8{JE&xd| zl>e-USsh}{nrI7=*t zZOkJggH=+O#A<#ih>N3P`x-nYh%kH?;t9XSw#wrhu&)MzH^_2~sAojA*;e@p!&*pQ z`y|D9!xu{7{I3hP}J*hko(Gmj@S+H7DPi_!xPtHyAAj8bgezZlKo>J z;zvw%Gr>8W@S}ri_zJX01Ic$9H0u>}>;gRDU|GM+&o^b@5D+OEG+M{W`^=~}XW)RG zIRnbklp7JkG_m)AeQr6jX>g94Zex1!6ad{f4pv6R`b+rD4GWIp;tadfYeTAt=P2mZAHg9AXE!a1b~ zDuXzotVr`bX7Zoo2y+@6hV$w#&^MXEP~Q}O1pBbK1+CIx-&A>q`s(qNn6AKoa~<)` zj$cpdelm3dUa!Hsn5)4Tti3FXo=Z}y*9kau-cvzu>6;+7eHRi_Eb9oD>vcqz-%(Jm z&sedfaQ)Ar2v&q6$A3WC&KWDW>b7UmEbtS5X?DH(B(yV(3UHS=lod8G6;rZ($sJ)urh# zF#ZxS<--{^0dxodx$DfUmU5R5$xDx~oLmgW5kBALh^5!Z5z;+3BuCjWIJ`t?qaloMaCI<~nG?{X-C`YE;<15-_i3gQD2g{3b+y)=Wv>42AWM4^C z!cA6tOm^M89~Ld7D7OcU6T!$Kctv|hLO9+sLuRRh^U-iP@)^ji>CdCK9NP1_t9KMTr8p6_Q&6){w?|VVnur()Mi9oH zIVGYT`o+aPKn!aa`v<4FsDaPd>nGNEC-yeJ=2jM7Gjiu$P~Nd)WkoC-1#8U@f?&SJ zsY15y!!4}A^H6w2dpwNMkirR+`x_LgBj2zn(-|l+C3kKjI%AJE9S?Xgwsni@@SG^N zzKe_HE<)T&-w6THG+q&79*vT~xu`B^-lB882GqlB#2nG}_ChF7<5;SwuGZkNBIB4Z zcV^5);*(3lxvT?VGWg$JVz%&J2)?2hDzFfzIDP=H%)zy|u0uOME6wgtUfBzJZP;eZ zh25t0(<_<{S&qgyGd{9Umq+wL8JGsa6UR9085|b!e*Qlzz4Kv<=0h$lIqVC#UHfwG z69DEZC(#w|Ni-K_@IGYF<%XBd>POw8nBO^aVKs?Aj16#&OpKsOqX8T&o{0BP7!}T=)krjV z9w0vX66bM?K1g&##1sSb*)5o2xr;z&)WSn8PBkJ8#g|br&s}GY9Ov1O z%mN2rr}1p3g1^I=5ZFG=&^CM`KSK5uXjYE&`%VCY70Y|Vc64JBcsSMclwsedZ&sL* ztLBj_Mu+XsfKAjs2k9+C4Bw09EuU^%zw7H00U~a*vJMxc-CBW5q#q@yss)ALzwwwXg;{NNfNo(8EYFh=X}m))%4Bp4hE{yn|F(!+ShH(Tm8j9%M6jm2?i}rk)O8nkIYZpt3BY`Cl9D$f92E&=e zUL{W5K{@NpV^6qyPE4Lg2h7LZ=^2&n4bMb4)!l~lkTKZ8Gz+db}y^8v(0~}Y&%g?ahY{~l} zoSNejnhC@gAs*1%@32R$4+${ahf@G|+|rLpb8_2F^EUDJtAR>WRyTo{@(&{?oWuPX zym0F=7EXVixoR7;2p*r{MPOqRsuV>gZH?r%qPOWw(U-|HBDtL|P#?)%>jIM^xv#pw zF_GLOE^t&`I`>0B@wyqgpUHDd?zi%sC{^NhV{-o^a79iPIf0gMHt^jPJ{wpE+2G(4 zw0kxt(uA^L8gX767wfR0GP^pt>^P3nx1k`O|8MlHC>+WE9M9sY{R=$$nO4^*Ifw-+ zeLJ&wN%kgsPd$uITCA_wE+`l3JV%TD+@xy(IHlGhB;3zj6d>w@qtW|Ti#`T9;Wjx2 zc?nHA{t#20Pc&a}dmr|TSaSGoB*%o@ zXzngl(??HiU-9sy;bF068_}hXu_{)k7u@Nnb@G&wBS;V!~FUm#3kfG~CE_$4_Mt(K&2nxPdj4n?cQsMEtx z89u<{D&8PszYbAcJ;JZ7MRx}ImA4>2%QguS~K#^3OZ>;UfB z7@wl=GQrg_zc(CL6WIMlu+?ivVD}2-nUA>&0xQM5WM?!KFV}Z5!&liEy#h6q;qWjK zblef|f&O3eMW2C=*%y6Io>Ox7$1vz@#2 z7OjP>5as_W<~#hoCX4;MzM~$njyf2c1U4nSVUEZ7Hcxr{AQUO*)zApWjl%1Z8AyNkhtTt! zD*=DR-*Wf<9;UC8tD)}x3&sT-)1MLGA}1!|y(NTl&Po5sqkV2cec!ufYj-0IG5rS+ zdHg@D-2eWVH!_It{sac;cR9JpX^QWGVoB%w6<8;Idv?r-YJ-U9z6KSCC6(jM;=1#! z-ZP*vef9~`G+DPZqDVIDNtONz8o&d)uy~p~Cp+-sx>K#*Dt|p3Jw5{7R*%MpnKb`D zOwXOoJ&rQdVhC?s%x5vG;XksFd9LVI+_juW#c{_apkELM>#EHB;uG5mI8?Es_Fuu0 zH`LyY`NfCL824S4GjEPr_mO<=1ikr=jT3BzIMw07G@BX}%Z}#P`rKu4`TJf! z`*~zttKfZ0!Mj?_e7z4xR2}GJ2y=J<&B6j2h71ink8{U>v6B!)FbDVc$pAi01$-D9 z+}0w8=4z{=k4f-go_KH*crb;D_G(YDa!>LImdML9!o9rmzGf*e5)8V;AYP~AF6A&r z;ge25e%97nX`Ic3(SzD4cuD4PK;JDsA2j{4Yd~Y(@mT2y0K|yc;$d%(59dgI=|g~0 zs561b3ilE5{xT5WmmVYK;mXtD#(9KruK9-SfyaXu3kRJ4;20K zDURMSir5B3pLrd>(CNFC4nR(*A8I_0a)0Jot?758x;|3Z>|8i~EcXlpGM#d>O5tII zDt#a5byclMErn64RKbgH44RRS*@!f-M~^<+q;y zfePj(K&^Y9Gg(HZ@YPrY0`eJvg8H^~sOoP0MDlR;L;pm5OYSTB+qWV5(9%O-tmjB+ zc*1Fai2Bigrv6aZd2y!YnTOCZg@Y;w3BhUgXyr#6DANxFuSZdr0sjo%#mP$C}PO$ID!&)T#YGzXV06{S7?(FE;=uw!^43yiYe3-Y5Le zq8hgY#}1bcXg|l2ZxaM0=N^am-4Y#TI#ccNxFst6a3~zKcAc;`afFV-u!POtjyEBE z#^|?%+A~~`8?q|QB8wq#Vt_i&E+oXniX6}uzlT9ykzjq%-{oj2Ed=EaOmxa zVGy{n!8DQ&iw&eFamyMVu3T^9umm5Ss%2#DCImFgS-y%s?AZM?Y9cf$MI5`BQb(=4 zj$`j<^x>?F2ur3=?lO$HwTq)3d6i)8V!nH^6UAMAZb`CcbZdR%qjf7JL+V_l99rkD z?hFrZQFzE0OTU~kz7SnmiDEof@x$>T2+Lx60HuzQICVr5OszGctGfoqy13BOg_-Zr z#i^M6CSuT45W2?p(-(h!wUm zLAY0*u6yiL;Zoyz_><2vVz)#pb7K>j!jURV7;8@x8JWun*3492!+doytsAcWB!b`7 zkOmJNKKOKNmul6z<1}2`EE5ko*22XnsBeA^Yko`1E%n zu-7Mu0(*aGz#ybI!iuc)2Bc;XW2G@@^UjvTHebLKR(2KzjnAA`&X z&ZoSODYOv_k!!@xnlV}17LyG*pQMFDSj+$(+<-Tqq&a7p4?kzdmkpRRQg;_O?aUc= z5IBb7&f+NLP@QE8-B}@WI_t<;q5H~IL-th~_>jID9?akCtF-pf`nqvoU#0FYZrbVV zZglcYz*uO`;z#-ko*Nu)Xdiqi+JIE0TH$^U zb9eM(bjvtTKP^n*_1n-eR%qY|E7O;Vws&!h#v#`7ec%T48An9ux;|Vfs>6qKOELKH zuHp1$TnU%=p*6m}_3ML``kP|pwlNUiZDaPAy#KQB>Tzt^yVH9C@bFK(mT=QP-;Ptt zN?=(>xp$x%{b>dHL_j&BLYKPo_#!KPF$965#J&jC_`bUoKPht7;i|rd+5g9>yeQm@ zDWfJ7!To{Uikz zCJzmno`mW7;IqLn{X)|Jmh_L3Mna5l4J`?U=>ka~5zHS#2Z6D|oHmBJv{TZXB>kS? zkBSVBglS%cOV5<_I$+{-YxII>n2KV|xk}Pxob&5Sn11{)=6TI7pcK z+RB*bF-dGJZ<@-W>a>6j5*>(~)YbK(f*vq|#T zNP0lhNfpfJV--xZxq|7xRKb#ey@KhV7W~VSz9s2wn*A0 z>06b|Ib6l*QB_=bhvYvc>8(}V;x{D!b4lM8%$Sjke|RL*zbWagQR7F2>GV;I*&yjo zNk1v+{!x#jG*qV=HX^Hv<|epWkB$CxSE+JDd=5MFO=76vP`bF54X`5u(*qq|YB80YLv`8_~2fN)j{=mmjF@y?5(Um0ksKyL{&9Qy_?dsmm~W9s$d7i$PU$;_I#P_ZV)(gxAQX90x(Wu)F$0d2wQ z>}H{SP<;zEkAipRde0hYt3W>!E=N(9KyMky7A}7io=4Gn0)?!Ls2?|a_mTp)DnKRB z^wm;t3Lt*Fc(qVA0SW=SR-n@aIv(%txJMfWI)UyHC@0WNdO*1BvG&5r%%lgUN4EnC z0eVO%9};L5Juc9bfNsMG9guoIl6te~IVpR^P`)70?*%%EelAcb!1dZzyg-fgTY(k^RtG{jk$jtQ5J0VPfiaBw|48fS23WgI^qxq49-t5)OYK1m zmjQYap0-%A=5H6u#gve;2LZi=)p8`%Ih-D{xZYwqR-hlEECJg&L7-n5XqG^Kk$NAa zIRZt3-%_vBQfd;Y2GC2`H8u-0NuZUqQlL`>T1}@3v{In8)FRLpfli~%0__lJJ=sd7 zhSMd0MqtG_Ps*+V6r!_fw?JPI=p6dAQV4PG5@;h`A@v>rl%O`c7L@rA&#kLNvyt8$ zIt2^$Ps3LreGTc#{&&Ks;3j7v@(|L=k*|YhS>&5Yw?w{;v=4Yi_0e(QGegpoqLYzt zl5|OQ2J&m8tebPBbV>9S(0@ES5121Smms}2${Zdv9GG6`HO<3<|DL1=CH-S`BP5?6 z;}+LSx;4hNPKq<-`aacN7@2S`sXW(_PXW||)suffFsMKQPgn_}+8!jgxe zw^vI_0}1+F$qco!KT>)MbXbdYU4OIW&z3ZYRMADHEaBeLCtEon~z7cAGKHqeqW_-@}tfRPW4?PoF zgRtxY1N~3vEJR)J8mKtjij{Ka(M)+29Ub0^Pi^in&>7(!xc+;$K-W=E_!IE{d-;$F z-;#MLpcHi+qoKRQ7t%Po+dy9jbTs`mReiVeSJngs!Ca5ap24ZrTn$Ap zjywnN-)*3qA}<2^qJi#bnBQ^rz%jK+()_lqn`Xo)~fxk4?ab6ltzF^%m) zDXcvgn|jP;B|TsumU9)o=qp=I@A%5rP>BpEw@`_DUL#y+omxw2fpp*3(Ha9W&(rAR zE@eHPPB-}|*V7X|$}{LqmvVtRlZvN%`aFv!8HjnFO>2B*=TNt=tc5NYNXxl_u63ca z)CT&ZuU>|J;H$Th-gPM_s8$+&g4cSM<{F4w-$XqEaSNN&X1dr%xrHlX2gYR`s@*{Q zRWMejwz|;7SWfXyk}3DAX|Y|(7KlCA$+11Ey8zloU)1fB(*+48eL zWW{e)pKzg?_+9FgE>wq;fKStWw||w`gKTx7YC!!iv`$@2KXRe3t4rv0f%eB(&daDu zcKZ8cEazo3)j%xgWpuJYZ^XFodufeLZMzL~D%V+MMPxP_Z( z(#aa)7H;7ze)gB#9v`i4)c~N!;%|CT=s^5!Ko?3q-TG~Gtqav*_i>vG-Ky@S`&}q# zeVLwep;GHB^ml2*mw6 z#d?sQ&`@+$@o4oh{nbF3;+OIF#1_rtdi!a6aT&^9F;HLe0_zc)I$xLZ+V}{~Y-H%d z=q1I~C|hBmYl;^G+M*$}_ZxbIu5qDP=`kv9()IpSyxw}8#v6!bd7Mr*kX7;=Jx*%` z(y}~GDI6rTWZe2U=r)0_qhm_4);H+40&)K;<+FT389KgXtMyHK*DYJ8o}|eOrFBr| zt#5G_KZw>q`83UyvTLZNq|bVWt`z73+E#Lb^&Ki+#FW?2Crd83zE3v_bREtyuCbn_ zJ6&j>^+S5lK%+umuny2OE_8?W9KGm5_gFurH(ls{>qYvj3q4}}oPy2V-gPu8^n~>? zC0yt`)~htmg$`K1rpX36CG>*zCY|g;FIm5(g$6nvWxu0!F7%T17G(^yx8xq{ZQABS z2dsC9FD-KG$Ao@m{fRDgp*H|sDUjCnyL7z^{m#O9h(P;^_4ya-Ud&wf&}U2Dwf@Rk z{Ok|iT=Kux-!uT|D}esjg}#Tc-hR)8eq0g_{DX@5K#{JC{-Gopc%QBoNVonz^$Vm| zlJ{w!TecsR4`_(4Dg9x9RPhq#vWM;{eGW%TUo_CS1bSyFmod-ZS)_u?7}9;P)ZYct zeF&=SmV1;T^+ka+WkmhATUJRim0lr~^vlxc12J{6Kv&U!mmUlhsp%`ZOvkOI>Uske zhkqLwrd~1-N9hSQd=*o^p;%{0HP=9_voh6fAl6yA+G`-zS%tbyAg!fJb+s8K9HpikXx*^k!5a0ZfilBJ1V^imHJZ{M zHa0j`Jt~lHFQx9(WfF;}6w^78hXZlsagjR8lc^vIR(_#~Y69vLJl>!t_sy6Hk8UP)@zQzG>nF>bF`y<{M6uU5Tj zAZ`zr9o90_H)7mgohmjEw>L>mH4wKqNi8xEw>L?xF%YlClU0X6IwqQ|t}1|TcA;ue znm&Zq46mdqF0?_QM}=~~>MAJv`0#ok<%Po+sN>vv7Y?5k#H&I1*&n)a__QFtbjCn8 zq24qXx*PS5_d%0_(|ypi;0fvnuAG%LL%rZa)qph5r$Uc`=ZQ|ek{=D98Jy`tZwU0d z)O$m*)H7ApIXX$I24bn_sJC2bQt%X2bDHLP zH+p-jS}xFjVtvk4=NO3fIahTXh;3r73ZBmO*b5)9=Bh>)y2qNYE-(!83HdV?u9O%T%Ka{mNRd_6nru*mBh` zkoJ7b)iniWUvQynTCVPLp?Sd->S2M{>Y9VA)YEQRC9P2hT&Nn*OD;4oxK{nvSMN0S z7q_gM)~lK`S!x}TouP`()(~s=3^mF?tlcxzbb&66?oBMV&QMDXbVFi+Izw$R&>bi{ zQ|&O&eJDFq-Krr-T}@}Hmjv1$Wm`I1y=x%0rL$G>Io$eF#8!85)j&6(Y=fGoA!#q8 z+T60W!HsIWK)Ur-)o&nfy;WUfAa1=?r8h_mG%?B0=QSieTh$X9f@Gsrn|jee_a&;S zO$9Sj50Z^mSyf}88&H;2Qv}kjZ&EW2#I0{qOAN%VZ&H`(deYt|^?-(?z0K+!195ws z)%cBGdt1~e48-kiQJ)n^x7V)jFc7!buAVRux7V(I+$vn8y>|5{fpood)jtfx_0Cnp z+jM((B%TAr-)YR_a9?7bI#;bR&|Z{nRUHPp0cBfNzd+hPJJdIInY7oTUNL2Ct)1$> z48-kqs=sSW^!<9(smilXd-W)rYoNU->r$s1=!Qf+b*T=4bbGeCOP5J|w)(ycRZ_Ql zN1!)iydrd~=q7IA4cVP_t7?Jt?rfWyq|0QFw@oz~i1&Eg)G~pzXUM5G7sB_Es2u|7 zs5!5$G!RGkd3CpeIJ)mqKhX7}cPB@y9`(9`zLu<}9`&|{(1%LAO&YaXG$B3eRr53y zeJeSUwyPxuQf1hqt2P5wluZQGZJ_Ze+o3Mj5KSwq2XvExW|VCV?!*zkv_Oqz*Q@i@ zl>%Ldoy`l@`D(v`t}Oc%{_M>20$oL)FY5^IQcK#o-c@vaSw7gOE;i78W# zQPN9&>64YrQ)B%31A;$@6yGlmdVHc)YOSbZKC6*hbPiH{`^%7+AZbdS{$(WBT0Wdp zf4)A-d}bgm#79SY^dpeBXpCU|_^Sou=XQ9^SA0CJ>VYke7mSzUX3HQNe_LAHhnHt? zD}D|e2Jznpj71j=!hcpUx~&_8<|ZG8@fO_)On|r)Z>}VL$d^7Ld4KCa5X?^`<TSAs$0~v$;&J9(`1Fx-^X)Zj76Le(DorQLAvZP_z-T$)AJNGV^PrV7dkKNu&Y#H^KO6_W3Z(KR|c+Fh7*M_DIn& zEQwC_yqg6~faVJRa2Q2ispIh&1J5IMHGdBiG(0~l9#-Vzqw|9?A1(vlC8EF95L(in zO527`wZA=A+SS(kB=Sz(!}B>*=|SP}2jTgiSw%F4?;we>nS{DjE-L($C7CGXK#G`Ljv$gd@T9}iWk=?`D}&(df= z=C74Vaql#y(wEnmv4YtwUTC`HIkl)s@>?XY@p}YwXgx&mE_xL1aE!upGcKBR zcTfst1}%P&aN%^A!o;UqgPU`lF<(lJmnP9V_W^k}i;R9nx*oQF)Qtsd@#oOVUqE zdWEE)mGmY_za;5@Ncwf88JzKdJJe23Reo2}ABASodzCMT_E1ID??QirY~0h6tNsp5 zQ`K{{llW9#S=Uq*hxgEZRmrfjeo!?oJQA2RQr2q1`k-n`IAIMNIV;>wbt45zLxvgekz7u;GdRQ=WC1_TRJOh~ZrZkKEMxk$)v{TYvN&ApC(5FYf45_Xf33=2_ zg1=4DuS)v3q)$rvjHEwCI@0wSN!p&CGsK>)At?p6Z z4ri?0qrNZrpM+!dJ@mJM_KkWOR>V7|n7n(KrS2H@oA5S^?P`{Ke$?CHpQ(eR{sheL zM*S6a|2S%aHB0?t)M&L+Xc{cWG+3jniy}9O#d3Ny@<*$>NCVBQo{DsJHQQvkrYGh)b`@K$WHZ>F%O4WhW6-6 znXQjdWbA3NM`)6y-z(V|`;oPM?DgtL_)7@aLo;6)%i{uV#O|X9#*S9wWS(+bjoU2u zhvo%2Z5ECFC9qO-yHYgys!+Zvm{;j{;Pxv0X>2{cDm;G%8Tft*r?1j+DQ=6$qJdVX z*iOz#JsrD>cBC#+rSN)J<39A=bWla%)m{VUEvgBW(mS*g>AQ3>(!bK@kp7(>2u#7f zn)h%Kqz<3@nu5EfairDsXJCrxRir0TS$uxz`@w6Yjj?|Vyr$ZUIBgup>1~pZAI|v; zBz-+0G)YdMlC-gm^RHJ3zLL}6(Snh5UMLgV9{OZxZ|J(vJ)y@!FNFRQvcl1DNBG+C z9pSsf2f{ChKfvF48x@%mIW^K4SsU3B>4|(IvNv*lyf`i-ixSc zBsx4gDtc^mO0*&RvFMs;CTd4N5xp{cF#4P5AEFeC$0}kIV^d=%#u{U1$F{__#rDK5 zjeRzDW9-)07h`wF{v-A{-gy5!#Pn{aCJO)ryZF22vR0pDLT4?cT7blM2YCVWTF0#GiL&&|FQ2`OA| zkHnEiqWEqOx-7=&H)DH|J|BDl>GU{b{CQofDSsPh$}K_s(K7PqzaVx0R>XCO7awoo z`|^vKa!T<`I8Vqu=vBmF9@#F7}qqWfSe7H)#iLi!%&tk z`aW#TqJK#G0qhKF#r(%zbfnnDsrkqUk>YQ2<8~E3k%H8sh+2p=3V)#xr!*rU$2}=% z1~;Oh8MPcKVi1(hLyB)eR;!V3L~79jwHE0@+*iVFPqiNTrAQU6z)d84&J(GkRk(R% z(dnuM`Sp^XsWQNvA?XI(8p2&lNn2GG_>D*vPDwW-f3Bo_CkP`VX&yI%ESwy2+M_yw z??q~1z2)28eQF!>AD8q~xaXtr8IU|M7pq?6FG7m5By}G0mmobQd{sEuPx!$XbR&gn z&_%f4%TcBGqv$Ev-awqb{m*~p+@kP!F26sT#7>DnT~di})jXcFCoi?zdONbGP@~tG{%QWqRzKzqoN{SEjSQ zb&4s>QuC6vJ?$NNV%Ab^UT=FxTQ*0{D{|Sk_SQ^Kc8L1aurc40%e3|!j%bQon5TxW zHW#Aid_&jHo-O$F4zlw*?0j~Oja<{V-VC~?pUs=Q(3AO@JVf+kPTSJnlU?1NX=QwK z7m}r!p4KgRF6(8*^5p{$ZhWJ%y#uG?d=hLI-MVc&*$4WL!@=tT>GZ>%tjoPd*epUtm5Sx&&{^>=zO+q zex{>iQKqY{gY|8OhN)wyV9zD{(rxq`ixIHg|S+ zWLdM)l>y)an3tW~NlP~t@>o^~GIKFpE#~T-`JQa2(VuBXe^N~M$kz=<(9%qIH%sEv zl55;U;a0P(t^ShcCGGhhKf+PS-~vZ4O*>k%-J&2*91rK?)sV|&cKSz95Zs_2InTB` z{P29cx2p%8@-fmX7>rrjo9)f|(PBxyit8{Lvf>?#>GCu(*;QHCOqZt6HjhRnv(xKM zXTH_Wb+m6JJu+nKF754r9y9r##%xD+Gkck)uHH^+=?<;^LDPv zZZg%iiOCGl(}D~JQe(_R=DNl>Gha791uQx+cffy2Q)hdR(06X^*y*^vmJ9~TkI)|2 zE$$SD?1B#Ug7%IqJZqMwu+fre(e<&dc4s%r;R79%%wi+ae7nO)l!rIwq1_BmFH;$Q zlMP@1a)F&|=JDOcPOvSDTxWY%c6Bf8SSAA6am&G>us;p0t=W8@y0YgDD4^xt^X;}Q zEzI^TX>0Fl(;(V1eZedqgl%5pEi$Z4CT)}2?(6U84;X-7mvn29>wD6FLdP%6HNyZ!hEl456lBUPIjZDUKY|I2c zT(2vry&}VFI7W~)=UarSfUA!qFHSsNa~MR}a6^7gc1I7bvCaH$>DZE|mK-NpStGJ- z$mMb{$riT43|xFmyIE;l>|Fci_O48a>-34)bnDf%rM*k+&R8k81I2Id?a1W3_VWZ( zb_bf&57scE-Inum>{fkC{@}LiX)taYgdMc{c5Sz}VsUH8@9b(_mCeI%z^0Msb#7w@ zi{-p5deN-On%MTGf-KfpfSVRHtX;CEWyPwd#^(7AxO3S8<(a?+Gi6nFTW>pS1vA3u z$#$BdG;R$+K;F%AMByx4(63`0%Xs?djim^{qb(U0Rp^ZO;wr3aL;_sFWVP2d&Ul$E zl{8M|WM7LyXXS89)@;e)Z<4Og_Gs}9vlj72_QrED!=$0C7c=B(yF@4uUIvU+4(rRb zwP~h$HSWTQ`{B(xp3IVvx3nOpa{Hy}9LttIb02-x*}!T3mMkU_lz|Sd&a(3J-F6p3 zydmnl2CQd`@NCJLNX*CBXX^g-$gS>a%%G%qB2Eh;41}Dz0khO}d+A7~ruyUW53U3Qm-afr9_Zbh7G^*Rtth%}F33 zW5O+oSJY$->H(2bUx^Pp-|m7zV?TtytnAKA2|7*xyL0yTc7)H`e>)2wFLlDubHKc6 zK^vNwCoLnEv|(&aV6mDfIbufBwVY2?}%hJA&h}%a4EeZM2u(WIx{`1TQgXH44{MKW-op+cpsuMyD5VOqe<^FOswCT z={5*L)<+G@pW0b94jUhO5Zw?oEjr?N57WcFJmK zBGb`+zBbbWNWwR$FpJZWuFY^DJsd~5i-tBWvp#6RFQtsIBaYAU3*KnWEjF;9nFLma zjcHUy)*9K*xy6MLJ9chew99XCvOfLdN4E_d*L0N0`QR#-Ypnly|Rb1yJ5E5+p%Zk&BVI)d^_fy$7}wQ z)x5{(XwP)@cv!=zu|0!BG;FY1^VFE#*t>Z%Pg;*mlwEtMshndMMi1-qDVT!tGoqHY}OVS#k`{M8evj9Kbmrfw;UDxTj!z21=Wp zEw< z&+85wf(2BS8Bt*b(u*L12AYkSE#uV;XP51~$K? zM^w6c-cDG(E@`e87uk#>Izo@?XE^w23?4tt0jD!KW4Z&*Bp;8p^|aPsckMKR-O6jH z3yj*UVcReqBh+*pVfON>W#F0Ejv$s`_nOUUwTN6x+IZI_#}?8PorB~iGtJ4M0Y1EF zX`bm&JD63BVJMi^71Wh$PVa8({H8;N)z^=mJ0*N{gt5lf&-SkFUbC6kQ7^S>mnHMf^`NBBb&T6y zh;KLZVx9R2dU2fZ9#R>fXV6$mWWz+wn!mH-!8wwdB6z2=g^$5aMD6XNTg@R7TLE6< z$no?Vdx?D>)(3j3WeTjyc47f+ z=n?7tp_nVaj$p;Dubj|yvnUO3FD!eSdskgShncegZmK|?Ux zo}CN{3Fl!SSoVagqf6bP=KN~B`EoYZqDiJgaMWRUWli^7t6yQ~+vP2b#3VU>%jgpt z&UrKbT9p4}pa2pJaWL*eXm-JR4c2Z&+H*&hXK5fb-_sy@o44dM;3C8=+9GjEuBe13J=*i$6 zLRK_OnJyD(;bp0LABr+L(#YGrxz?=POK19S!3K$=V+2cR7Xefg2Np=-=Ik!9>xCR( zx!}4Cwp^HNdF&>!?(xBa=H*$0@x4&bd=D{xlnyl(7)8XcFx2P;l^+Poa+ z?;TmlzW{H!u>EwD%R~cDT{7m~2jwwEvDUY`uUdHL&+q-9aq?bGpm%sbVWyBg^&HKJ zpJOM^vsx=xHn~nTt9QJ-vzA&*O|aYEg;(&NhECt!&OY_$S@x@GeSXU|3AUEP}T)#H;We9a5ac~(}jQbkdn8$a->8Dx(6&R*Gi!l zUYCOxzWAuMkW&WS+d$EYQl{q-$OFzm6PRMq1?$P_WlA`5IqNDbybHD1#%+vSDBR{l z(>c**7kDidoNj?)&gf848sBDg9PXPPOH{NS?RKCR#vfnXy9?j_-UmEO!y}l&9kpG! zZ^Sqnt4mYRk(Rd$Ho!g5V@36a<>vwKl%@<9*2^Yv-G%$peYj}m)X3sCRj)|GoOO$I zv{RY}r_GSZv6EI%vK>OECWmGy4lI3P&GSTB)^Z+J$o3{&2K0>klcFj!V<^Qyq>W2+aCQfL(>nEc0g|& zzOF=N4#pdA8tvtIjMxT!BOhqSAJt9C2uvGYKq=S>zj>$?H9ntCbY6;fz7Ewp*)+!md(Rd#`PyVTb6f@h58&8=cS)azP) ztkx#$lSh$lmoY3ik0s4o3*08aUHIkJm{STlwh{J)h=?J_K=Qrf?h7?~Rv3k~Yw?=Gt7pNXM}J zgZ1cWfM*rYZL+y-&#!Gp9d4}~{A?M69AMT>gN%lrm3~j+$zJHac}Di&pY{f95!fgb ztuJg(Q+*WfgC)|l!L{S|p*at(_u)O^RqQYxJm$6;I0|22Jqg;Og<7B9EJ+Qa{f!u1 z)~?@PTg})TOEn(saD2Euhm-c4gY5l;!P01Z^k(fq+rZeI=eJ93?~adQd*2M{o!P8c zAl)0*6wiuwnS(q_v=`(tXPf0Z&dTOV>Ue!_cL8*uV*swL#}#K=$no6UB=&cVvDjlk z;mn0XnLH286uhn+zGap1+p#kvxcv-bA??wfp8T`@=k*Ldi|P5)f}FN=uVhwL(k5Ho<(c&Q)ux-VXifx$ldEng-4T?Md5>9v$0t=D5ehA7{|4LN3}9 z^5_)mR7Zt=TcPS!j2U|$J>#7yk^Kmj6hPH}i2Yy>A`xeu^p`dH;sJ^|)ERzCJOTY($AZt7XU77u$mq0wlGXOt5Ix6m4~R>#*mT5;p@6F*9=`QXfJHn*f# zY#K3CJ*r#^@8gXx*JBSrCH`@zSwmAz!Dko-_L@KIpm!45Mw$V+V_3$}fN@MTNQ>TR zQi-NAw$n6}+*4dFeV7Eiu6H3)TY*+=_%vsZt%lBf(RVstkG%FnI^N;^43}x2$77ts z`09u<&m%V>k8-vM))trJ(h*uIq@-gH)uy8%cT5AvkP4iMkKQ64J-z`gvjnVJj+t0e zZ8xp>+=v%TdA3CJhsLK6i*Q`Uk{tt{Dagq&QWsLTSuYx$LJE5#TOv3escF5j2Dn$9 zQhRVcj$xP+uMOgGI4Tr7-WDohb8nB=+pjwIgHR_0l|$Ipf)&V?p;CPB{)9Q7COHuPN35qhi0$(qxv~DSXR(lHC$9+lMB}6PbAVi1564GGUQWMxH=UJV*5yDe7)qxD+Unoq1cHU)a<}=I zLQm(zDcTd^P>R+;4jVCtdK~B+gO9?cV37Pz_5E`auxYbPW+O^T_@EW=FSb5s4IB{% zQinHoeR#!Aroe=jE-!!!b$BQTdnif0<2pZAd^$J7F8wt^~oKA zDo^eRr&Mx6avVSfierl@fah@hADtW*CY2nSn2blF9wY>k6O!Y=bJqBeatH}RCZ2=e z2K+V^rGhFsx->Zstb-}iNi%u@sg+93iE-zolqq#CIVVC2^vOBFG}l1V97q#)*5YoK zmZE+sxK~LJs*+V!xP+BZQeuT!1(SlrMB&j;no^?~wN#qZ={U((0lPtRNTJ%QXey9g zS(9ALm8|4SE*j3wLFsAI>YM{!DXIyBzI1d=LxiAHw?h<|!7Z-B@EEH)p%Ba$4G=fh&mV!c_AQ5y; z4ObSz(i(h-RWVo^O@TW%%iZ9f0b+eahsm=6!Hl7jD0GG-ie&mwVd#ei>oYz|C0?}( zWA*Z(s#OdfgBSY)bsoWcrE9a0;W3NGxKH@ke^VSvN;XJVrWj@+R8b1e@IZ2!%rJuk z_<$s`$e_5UCPo&lq5nWKgAp3dl&l>w)npcVj2bsIfh}QzSZQ*-jBb0P6Dm9w)~uqi z(kOs!LZ1nQ6TLjVP_m42Gq(;g*|HM-m-pX<&sI~gpTFc7f5^&00(jNxhI)Jo8?I5& z*S=~$@$}7Kn*EEnCp|F!{rJ(}Yn%FhIQ8;Answ5zX8iiayB5`4`urVxPq<^s!Ufm< zbjIoRrz}6=mOtM3+}_A>`J;A!<>_}Ge9!)T=}+%kKKzVXr*?n-D;@t(!+!U>dxI|@ zU9$3PZ+_)FvmX4^q;YSZ|Lq6A_lqz7?BR=wM%}mK<9GennwReW@iWVATUCGS0z- zQv=t8$uTDu38LPyn6#W@2Nt!$5zFG)15@n(8V~2lWd9?H$?-@4FtY4@6ZK(mNz}84 zvl8{Je|Dv;?nHek0+dyf3MLy$6a9Y{w(!u&CWxBo{~L;vzGRsi400C^I7 zLZzs*CsvA_)C#kZd*Js_mS7fpMnsV-Wdk??W)cCDJtMW3NBhk%#pE0;1mi%<0?k2| zO(anttc=8%>z)`hjN+GFKIDM8L^U5k0npEN{|&&D->Zz4H-)@ze{3gsvFjI*MVP!0O0@lZztDq9$HwpvJ11F$rT=HRI!Rt-8qJY53ZZZZ;q zH%skrbmSLSxBQQ8W%7FmbDxyFU){ zuqj6%J1?CQJ(LbJBb%I{2NovJRLMEAn!%)@OABAIPE~93*%ZI<&h@0^l3t4M;^TEU zKFodHfqi2hdUx@8ybxGy5m*jNc>%yWAYe@m&rnsv`hcdRGDM}NL72-do{#J)ll>1T zqcwWYC8NoxRTK%AVj&Ryu$cW%!GRhWT46q5ggKX-5JeY5;#bGo+p~cMVf; z$|d(0P#=3;w6_H9Y?hk5E9u5D3HNd{PR#JWN8IfqX=k~?^T`yq3Qly>p}D*KSwlhL<2`Oa6|(~G;l-%M>KFm14lG)L<2`O za6|+Dss;{_{8jM-C;zJqj?_D%fg>6?qJbkCIHG|g8aSeXBN{lOfg>6?qJbkCIHG|g K8u(); ProxyFactory factory = new ProxyFactory(new TestObject()); factory.AddListener(listener); @@ -562,14 +555,15 @@ namespace Spring.Aop.Framework // must fire the InterfacesChanged callback... factory.AddInterface(typeof(ISerializable)); - mock.Verify(); + listener.AssertWasCalled(x => x.Activated(Arg.Is.NotNull)); + listener.AssertWasCalled(x => x.AdviceChanged(Arg.Is.NotNull)); + listener.AssertWasCalled(x => x.InterfacesChanged(Arg.Is.NotNull)); } [Test] public void AdvisedSupportListenerMethodsAre_NOT_CalledIfProxyHasNotBeenCreated() { - IDynamicMock mock = new DynamicMock(typeof(IAdvisedSupportListener)); - IAdvisedSupportListener listener = (IAdvisedSupportListener)mock.Object; + IAdvisedSupportListener listener = MockRepository.GenerateMock(); ProxyFactory factory = new ProxyFactory(new TestObject()); factory.AddListener(listener); @@ -579,7 +573,8 @@ namespace Spring.Aop.Framework // must not fire the InterfacesChanged callback... factory.AddInterface(typeof(ISerializable)); - mock.Verify(); + listener.AssertWasNotCalled(x => x.AdviceChanged(Arg.Is.Anything)); + listener.AssertWasNotCalled(x => x.InterfacesChanged(Arg.Is.Anything)); } [Test] @@ -599,8 +594,7 @@ namespace Spring.Aop.Framework [Test] public void RemoveAdvisedSupportListener() { - IDynamicMock mock = new DynamicMock(typeof(IAdvisedSupportListener)); - IAdvisedSupportListener listener = (IAdvisedSupportListener)mock.Object; + IAdvisedSupportListener listener = MockRepository.GenerateMock(); ProxyFactory factory = new ProxyFactory(new TestObject()); factory.AddListener(listener); @@ -609,7 +603,9 @@ namespace Spring.Aop.Framework factory.GetProxy(); // check that no lifecycle callback methods were invoked on the listener... - mock.Verify(); + listener.AssertWasNotCalled(x => x.Activated(Arg.Is.Anything)); + listener.AssertWasNotCalled(x => x.AdviceChanged(Arg.Is.Anything)); + listener.AssertWasNotCalled(x => x.InterfacesChanged(Arg.Is.Anything)); } [Test] diff --git a/test/Spring/Spring.Aop.Tests/Aop/Support/DelegatingIntroductionInterceptorTests.cs b/test/Spring/Spring.Aop.Tests/Aop/Support/DelegatingIntroductionInterceptorTests.cs index 902e2f19..6ab64f30 100644 --- a/test/Spring/Spring.Aop.Tests/Aop/Support/DelegatingIntroductionInterceptorTests.cs +++ b/test/Spring/Spring.Aop.Tests/Aop/Support/DelegatingIntroductionInterceptorTests.cs @@ -15,14 +15,12 @@ * limitations under the License. */ #endregion + #region Imports using System; -using System.Collections; - using NUnit.Framework; -using DotNetMock.Dynamic; - using AopAlliance.Aop; +using Rhino.Mocks; using Spring.Aop.Framework; using Spring.Objects; #endregion @@ -56,23 +54,20 @@ namespace Spring.Aop.Support } [Test] - public void testIntroductionInterceptorWithDelegation() + public void TestIntroductionInterceptorWithDelegation() { TestObject raw = new TestObject(); Assert.IsTrue(! (raw is ITimeStamped)); ProxyFactory factory = new ProxyFactory(raw); - IDynamicMock tsControl = new DynamicMock(typeof(ITimeStampedIntroduction)); - ITimeStampedIntroduction ts = (ITimeStampedIntroduction) tsControl.Object; - tsControl.ExpectAndReturn("TimeStamp", EXPECTED_TIMESTAMP); + ITimeStampedIntroduction ts = MockRepository.GenerateMock(); + ts.Stub(x => x.TimeStamp).Return(EXPECTED_TIMESTAMP); DefaultIntroductionAdvisor advisor = new DefaultIntroductionAdvisor(ts); factory.AddIntroduction(advisor); ITimeStamped tsp = (ITimeStamped) factory.GetProxy(); Assert.IsTrue(tsp.TimeStamp == EXPECTED_TIMESTAMP); - - tsControl.Verify(); } // we have to mark the ISubTimeStamped interface with the IAdvice marker @@ -81,15 +76,14 @@ namespace Spring.Aop.Support { } - public void testIntroductionInterceptorWithInterfaceHierarchy() + public void TestIntroductionInterceptorWithInterfaceHierarchy() { TestObject raw = new TestObject(); Assert.IsTrue(! (raw is ISubTimeStamped)); ProxyFactory factory = new ProxyFactory(raw); - IDynamicMock tsControl = new DynamicMock(typeof(ISubTimeStampedIntroduction)); - ISubTimeStampedIntroduction ts = (ISubTimeStampedIntroduction) tsControl.Object; - tsControl.ExpectAndReturn("TimeStamp", EXPECTED_TIMESTAMP); + ISubTimeStampedIntroduction ts = MockRepository.GenerateMock(); + ts.Stub(x => x.TimeStamp).Return(EXPECTED_TIMESTAMP); DefaultIntroductionAdvisor advisor = new DefaultIntroductionAdvisor(ts); // we must add introduction, not an advisor @@ -98,19 +92,16 @@ namespace Spring.Aop.Support object proxy = factory.GetProxy(); ISubTimeStamped tsp = (ISubTimeStamped) proxy; Assert.IsTrue(tsp.TimeStamp == EXPECTED_TIMESTAMP); - - tsControl.Verify(); } - public void testIntroductionInterceptorWithSuperInterface() + public void TestIntroductionInterceptorWithSuperInterface() { TestObject raw = new TestObject(); Assert.IsTrue(! (raw is ITimeStamped)); ProxyFactory factory = new ProxyFactory(raw); - IDynamicMock tsControl = new DynamicMock(typeof(ISubTimeStampedIntroduction)); - ISubTimeStamped ts = (ISubTimeStamped) tsControl.Object; - tsControl.ExpectAndReturn("TimeStamp", EXPECTED_TIMESTAMP); + ISubTimeStamped ts = MockRepository.GenerateMock(); + ts.Stub(x => x.TimeStamp).Return(EXPECTED_TIMESTAMP); factory.AddIntroduction(0, new DefaultIntroductionAdvisor( (ISubTimeStampedIntroduction)ts, @@ -120,8 +111,6 @@ namespace Spring.Aop.Support ITimeStamped tsp = (ITimeStamped) factory.GetProxy(); Assert.IsTrue(!(tsp is ISubTimeStamped)); Assert.IsTrue(tsp.TimeStamp == EXPECTED_TIMESTAMP); - - tsControl.Verify(); } /// @@ -137,7 +126,7 @@ namespace Spring.Aop.Support { _timestamp = timestamp; } - public void foo() + public void Foo() { } public DateTime TimeStamp @@ -149,7 +138,7 @@ namespace Spring.Aop.Support } } - public void testAutomaticInterfaceRecognitionInDelegate() + public void TestAutomaticInterfaceRecognitionInDelegate() { IIntroductionAdvisor ia = new DefaultIntroductionAdvisor(new Test(EXPECTED_TIMESTAMP)); @@ -160,7 +149,7 @@ namespace Spring.Aop.Support ITimeStamped ts = (ITimeStamped) pf.GetProxy(); Assert.IsTrue(ts.TimeStamp == EXPECTED_TIMESTAMP); - ((ITest) ts).foo(); + ((ITest) ts).Foo(); int age = ((ITestObject) ts).Age; } @@ -178,7 +167,7 @@ namespace Spring.Aop.Support // interfaces that it intends to expose. public interface ITest { - void foo(); + void Foo(); } public interface ISubTimeStamped : ITimeStamped diff --git a/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2008.csproj b/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2008.csproj index ed3834e9..afe208b0 100644 --- a/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2008.csproj +++ b/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2008.csproj @@ -75,10 +75,6 @@ False ..\..\..\lib\Net\2.0\Common.Logging.dll - - False - ..\..\..\lib\Net\2.0\DotNetMock.dll - False ..\..\..\lib\Net\2.0\nunit.framework.dll diff --git a/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2010.csproj b/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2010.csproj index 1b08c1c1..7d895ddd 100644 --- a/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2010.csproj +++ b/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2010.csproj @@ -81,10 +81,6 @@ False ..\..\..\lib\Net\2.0\Common.Logging.dll - - False - ..\..\..\lib\Net\2.0\DotNetMock.dll - False ..\..\..\lib\Net\2.0\nunit.framework.dll diff --git a/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2010.csproj b/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2010.csproj index d9da4153..bb7ff0a9 100644 --- a/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2010.csproj +++ b/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2010.csproj @@ -81,10 +81,6 @@ False ..\..\..\lib\Net\2.0\Common.Logging.dll - - False - ..\..\..\lib\Net\2.0\DotNetMock.dll - False ..\..\..\lib\Net\2.0\nunit.framework.dll diff --git a/test/Spring/Spring.Data.Integration.Tests/Spring.Data.Integration.Tests.2008.csproj b/test/Spring/Spring.Data.Integration.Tests/Spring.Data.Integration.Tests.2008.csproj index e7fb4673..ae2ca028 100644 --- a/test/Spring/Spring.Data.Integration.Tests/Spring.Data.Integration.Tests.2008.csproj +++ b/test/Spring/Spring.Data.Integration.Tests/Spring.Data.Integration.Tests.2008.csproj @@ -74,10 +74,6 @@ False ..\..\..\lib\Net\2.0\Common.Logging.dll - - False - ..\..\..\lib\Net\2.0\DotNetMock.dll - False ..\..\..\lib\Net\2.0\nunit.framework.dll diff --git a/test/Spring/Spring.Data.Integration.Tests/Spring.Data.Integration.Tests.2010.csproj b/test/Spring/Spring.Data.Integration.Tests/Spring.Data.Integration.Tests.2010.csproj index 812a76bc..a209d791 100644 --- a/test/Spring/Spring.Data.Integration.Tests/Spring.Data.Integration.Tests.2010.csproj +++ b/test/Spring/Spring.Data.Integration.Tests/Spring.Data.Integration.Tests.2010.csproj @@ -80,10 +80,6 @@ False ..\..\..\lib\Net\2.0\Common.Logging.dll - - False - ..\..\..\lib\Net\2.0\DotNetMock.dll - False ..\..\..\lib\Net\2.0\nunit.framework.dll diff --git a/test/Spring/Spring.Data.NHibernate21.Integration.Tests/Spring.Data.NHibernate21.Integration.Tests.2008.csproj b/test/Spring/Spring.Data.NHibernate21.Integration.Tests/Spring.Data.NHibernate21.Integration.Tests.2008.csproj index ac9c1a33..a9ca8521 100644 --- a/test/Spring/Spring.Data.NHibernate21.Integration.Tests/Spring.Data.NHibernate21.Integration.Tests.2008.csproj +++ b/test/Spring/Spring.Data.NHibernate21.Integration.Tests/Spring.Data.NHibernate21.Integration.Tests.2008.csproj @@ -36,10 +36,6 @@ False ..\..\..\lib\Net\2.0\Common.Logging.dll - - False - ..\..\..\lib\Net\2.0\DotNetMock.dll - False ..\..\..\lib\NHibernate21\net\2.0\Iesi.Collections.dll diff --git a/test/Spring/Spring.Data.NHibernate21.Integration.Tests/Spring.Data.NHibernate21.Integration.Tests.2010.csproj b/test/Spring/Spring.Data.NHibernate21.Integration.Tests/Spring.Data.NHibernate21.Integration.Tests.2010.csproj index e509472d..a1faf85f 100644 --- a/test/Spring/Spring.Data.NHibernate21.Integration.Tests/Spring.Data.NHibernate21.Integration.Tests.2010.csproj +++ b/test/Spring/Spring.Data.NHibernate21.Integration.Tests/Spring.Data.NHibernate21.Integration.Tests.2010.csproj @@ -44,10 +44,6 @@ False ..\..\..\lib\Net\2.0\Common.Logging.dll - - False - ..\..\..\lib\Net\2.0\DotNetMock.dll - False ..\..\..\lib\NHibernate21\net\2.0\Iesi.Collections.dll diff --git a/test/Spring/Spring.Data.Tests/Spring.Data.Tests.2008.csproj b/test/Spring/Spring.Data.Tests/Spring.Data.Tests.2008.csproj index 7f2d3d81..7a7f896f 100644 --- a/test/Spring/Spring.Data.Tests/Spring.Data.Tests.2008.csproj +++ b/test/Spring/Spring.Data.Tests/Spring.Data.Tests.2008.csproj @@ -73,10 +73,6 @@ False ..\..\..\lib\Net\2.0\Common.Logging.dll - - False - ..\..\..\lib\Net\2.0\DotNetMock.dll - False ..\..\..\lib\Net\2.0\nunit.framework.dll diff --git a/test/Spring/Spring.Data.Tests/Spring.Data.Tests.2010.csproj b/test/Spring/Spring.Data.Tests/Spring.Data.Tests.2010.csproj index 9996705e..a8124a9b 100644 --- a/test/Spring/Spring.Data.Tests/Spring.Data.Tests.2010.csproj +++ b/test/Spring/Spring.Data.Tests/Spring.Data.Tests.2010.csproj @@ -79,10 +79,6 @@ False ..\..\..\lib\Net\2.0\Common.Logging.dll - - False - ..\..\..\lib\Net\2.0\DotNetMock.dll - False ..\..\..\lib\Net\2.0\nunit.framework.dll diff --git a/test/Spring/Spring.Data.Tests/Transaction/CommonTypes.cs b/test/Spring/Spring.Data.Tests/Transaction/CommonTypes.cs index 3de383cd..bc91fd63 100644 --- a/test/Spring/Spring.Data.Tests/Transaction/CommonTypes.cs +++ b/test/Spring/Spring.Data.Tests/Transaction/CommonTypes.cs @@ -1,230 +1,44 @@ -using System; using System.Data; -using DotNetMock; using Spring.Transaction.Support; namespace Spring.Transaction { - public class MyMockTxnObject : MockObject, ISmartTransactionObject - { - private ExpectationCounter _isRollbackOnlyCalls = new ExpectationCounter( "IsRollbackOnlyCalls" ); - private bool _isRollbackOnly = false; - - public MyMockTxnObject() : this( "MyMockTxnObject" ) {} - public MyMockTxnObject( string name ) : base( name ) {} - - - - public void SetExpectedRollbackOnlyCalls( int calls ) - { - _isRollbackOnlyCalls.Expected = calls; - } - public void SetExpectedIsRollBackOnlyValue( bool isRollbackOnly ) - { - _isRollbackOnly = isRollbackOnly; - } - #region ISmartTransactionObject Members - - public bool RollbackOnly - { - get - { - _isRollbackOnlyCalls.Inc(); - return _isRollbackOnly; - } - } - - #endregion - } - public class MyMockTxnObjectSavepointMgr : MockObject, ISavepointManager, ISmartTransactionObject - { - private string _savepoint; - private ExpectationString _expectedSavepoint = new ExpectationString("Savepoint"); - - public void SetSavepointToReturn( string savepoint ) - { - _savepoint = savepoint; - } - public void SetExpectedSavepoint( string savepoint ) - { - _expectedSavepoint.Expected = savepoint; - } - #region ISmartTransactionObject Members - - public bool RollbackOnly - { - get - { // TODO: Add MyMockTxnObjectSavepointMgr.IsRollbackOnly implementation - return false; - } - } - - #endregion - - #region ISavepointManager Members - public void ReleaseSavepoint(string savepoint) - { - _expectedSavepoint.Actual = savepoint; - } - - public void CreateSavepoint( string savepoint ) - { - _expectedSavepoint.Actual = savepoint; - } - - public void RollbackToSavepoint(string savepoint) - { - _expectedSavepoint.Actual = savepoint; - } - - #endregion - } - - public class MockTxnPlatformMgr : MockObject, IPlatformTransactionManager - { - private ExpectationCounter _commitCalls = new ExpectationCounter("CommitCalls"); - private ExpectationCounter _getTransactionCalls = new ExpectationCounter("GetTxnCalls"); - private ExpectationCounter _rollbackCalls = new ExpectationCounter("RollbackCalls"); - private bool _throwRollbackException = false; - - #region IPlatformTransactionManager Members - public void SetExpectedCommitCallCount( int count ) - { - _commitCalls.Expected = count; - } - public void SetExpectedRollbackCallCount( int count ) - { - _rollbackCalls.Expected = count; - } - public void SetExpectedGetTxnCallCount( int count ) - { - _getTransactionCalls.Expected = count; - } - public bool ThrowRollbackException - { - set { _throwRollbackException = value; } - } - public void Rollback(ITransactionStatus transactionStatus) - { - _rollbackCalls.Inc(); - if ( _throwRollbackException ) - { - throw new Exception("Rollback"); - } - } - - public void Commit(ITransactionStatus transactionStatus) - { - _commitCalls.Inc(); - } - - public ITransactionStatus GetTransaction(ITransactionDefinition definition) - { - _getTransactionCalls.Inc(); - return null; - } - - #endregion - - } - - public class MockTxnSync : MockObject, ITransactionSynchronization - { - #region ITransactionSynchronization Members - - public void AfterCompletion(Spring.Transaction.Support.TransactionSynchronizationStatus status) - { - // TODO: Add MockTxnSync.AfterCompletion implementation - } - - public void BeforeCommit(bool readOnly) - { - // TODO: Add MockTxnSync.BeforeCommit implementation - } - - public void AfterCommit() - { - - } - - public void Resume() - { - // TODO: Add MockTxnSync.Resume implementation - } - - public void BeforeCompletion() - { - // TODO: Add MockTxnSync.BeforeCompletion implementation - } - - public void Suspend() - { - // TODO: Add MockTxnSync.Suspend implementation - } - - #endregion - } - - public class MockTxnDefinition : MockObject, ITransactionDefinition - { - private int _transactionTimeout = DefaultTransactionDefinition.TIMEOUT_DEFAULT; - private TransactionPropagation _transactionPropagation = TransactionPropagation.NotSupported; - private bool _readOnly = false; + public class MockTxnDefinition : ITransactionDefinition + { + private int _transactionTimeout = DefaultTransactionDefinition.TIMEOUT_DEFAULT; + private TransactionPropagation _transactionPropagation = TransactionPropagation.NotSupported; + private bool _readOnly = false; private string _name = null; private System.Transactions.EnterpriseServicesInteropOption _esInteropOption; #region ITransactionDefinition Members - public bool ReadOnly - { - get - { - return _readOnly; - } - set - { - _readOnly = value; - } - } + public bool ReadOnly + { + get { return _readOnly; } + set { _readOnly = value; } + } - public int TransactionTimeout - { - get - { - return _transactionTimeout; - } - set - { - _transactionTimeout = value; - } - } + public int TransactionTimeout + { + get { return _transactionTimeout; } + set { _transactionTimeout = value; } + } - public IsolationLevel TransactionIsolationLevel - { - get - { - return IsolationLevel.Unspecified; - } - } + public IsolationLevel TransactionIsolationLevel + { + get { return IsolationLevel.Unspecified; } + } - public TransactionPropagation PropagationBehavior - { - get - { - return _transactionPropagation; - } - set - { - _transactionPropagation = value; - } - } + public TransactionPropagation PropagationBehavior + { + get { return _transactionPropagation; } + set { _transactionPropagation = value; } + } public string Name { - get - { - return _name; - } + get { return _name; } } public System.Transactions.EnterpriseServicesInteropOption EnterpriseServicesInteropOption @@ -233,133 +47,104 @@ namespace Spring.Transaction set { _esInteropOption = value; } } - #endregion + #endregion + } - } - public class MockTxnPlatformMgrAbstract : AbstractPlatformTransactionManager, IMockObject - { - private object _transaction; - private bool _isVerified; - private string _mockName; - private bool _isExistingTransaction; + public class MockTxnPlatformMgrAbstract : AbstractPlatformTransactionManager + { + private object _transaction; + private bool _isExistingTransaction; - private ExpectationCounter _doBeginCalls = new ExpectationCounter("DoBegin Calls"); - private ExpectationCounter _doGetTxnCalls = new ExpectationCounter("DoGetTransaction Calls"); - private ExpectationCounter _isExistingTxnCalls = new ExpectationCounter("IsExistingTransaction Calls"); + private int _doBeginCalls; + private int _doGetTxnCalls; + private int _isExistingTxnCalls; - - private bool _useSavepointForNestedTransaction; - public void SetExpectedCalls( string method, int calls ) - { - switch ( method ) - { - case "DoBegin": - _doBeginCalls.Expected = calls; - break; - case "IsExistingTransaction": - _isExistingTxnCalls.Expected = calls; - break; - case "DoGetTransaction": - _doGetTxnCalls.Expected = calls; - break; - default: - break; - } - } - public void SetTransaction( object transaction ) - { - _transaction = transaction; - _isExistingTransaction = true; - } - public object Transaction - { - get { return _transaction; } - } - public bool Savepoints - { - set { _useSavepointForNestedTransaction = value; } - } - #region IMockObject Members + private bool _useSavepointForNestedTransaction; - public void NotImplemented(string methodName) - { - // TODO: Add MockTxnPlatformMgrAbstract.NotImplemented implementation - } + public void SetTransaction(object transaction) + { + _transaction = transaction; + _isExistingTransaction = true; + } - public string MockName - { - get { return _mockName; } - set { _mockName = value;} - } + public object Transaction + { + get { return _transaction; } + } - #endregion + public bool Savepoints + { + set { _useSavepointForNestedTransaction = value; } + } - #region IVerifiable Members + public int DoBeginCallCount + { + get { return _doBeginCalls; } + } - public void Verify() - { - Verifier.Verify( this ); - _isVerified = true; - } + public int DoGetTransactionCallCount + { + get { return _doGetTxnCalls; } + } - public bool IsVerified - { - get { return _isVerified; } - } + public int IsExistingTransactionCallCount + { + get { return _isExistingTxnCalls; } + } - #endregion + #region AbstractPlatformTransactionManager Impls - #region AbstractPlatformTransactionManager Impls - protected override void DoResume(object transaction, object suspendedResources) - { + protected override void DoResume(object transaction, object suspendedResources) + { + } - } - protected override void DoCommit(DefaultTransactionStatus status) - { + protected override void DoCommit(DefaultTransactionStatus status) + { + } - } - protected override object DoGetTransaction() - { - _doGetTxnCalls.Inc(); - if ( null == _transaction ) - { - return new object(); - } - else - { - return _transaction; - } - } - protected override object DoSuspend(object transaction) - { - return null; - } - protected override void DoBegin(object transaction, ITransactionDefinition definition) - { - _doBeginCalls.Inc(); - } - protected override void DoSetRollbackOnly(DefaultTransactionStatus status) - { + protected override object DoGetTransaction() + { + _doGetTxnCalls++; + if (null == _transaction) + { + return new object(); + } + else + { + return _transaction; + } + } - } - protected override void DoRollback(DefaultTransactionStatus status) - { - - } - protected override bool IsExistingTransaction(object transaction) - { - _isExistingTxnCalls.Inc(); - return _isExistingTransaction; - } + protected override object DoSuspend(object transaction) + { + return null; + } - protected override bool UseSavepointForNestedTransaction() - { - return _useSavepointForNestedTransaction; - } + protected override void DoBegin(object transaction, ITransactionDefinition definition) + { + _doBeginCalls++; + } - #endregion + protected override void DoSetRollbackOnly(DefaultTransactionStatus status) + { + } - } + protected override void DoRollback(DefaultTransactionStatus status) + { + } -} + protected override bool IsExistingTransaction(object transaction) + { + _isExistingTxnCalls++; + return _isExistingTransaction; + } + + protected override bool UseSavepointForNestedTransaction() + { + return _useSavepointForNestedTransaction; + } + + #endregion + } +} \ No newline at end of file diff --git a/test/Spring/Spring.Data.Tests/Transaction/Support/AbstractPlatformTransactionManagerTests.cs b/test/Spring/Spring.Data.Tests/Transaction/Support/AbstractPlatformTransactionManagerTests.cs index d04e30fb..22ca726f 100644 --- a/test/Spring/Spring.Data.Tests/Transaction/Support/AbstractPlatformTransactionManagerTests.cs +++ b/test/Spring/Spring.Data.Tests/Transaction/Support/AbstractPlatformTransactionManagerTests.cs @@ -1,5 +1,5 @@ -using System; using NUnit.Framework; +using Rhino.Mocks; namespace Spring.Transaction.Support { @@ -18,16 +18,17 @@ namespace Spring.Transaction.Support TransactionSynchronizationManager.ClearSynchronization(); } } + [TearDown] public void Destroy() { - _mockTxnMgr.Verify(); _mockTxnMgr = null; if (TransactionSynchronizationManager.SynchronizationActive) { TransactionSynchronizationManager.Clear(); } } + [Test] public void VanillaProperties() { @@ -43,16 +44,18 @@ namespace Spring.Transaction.Support Assert.IsTrue(_mockTxnMgr.NestedTransactionsAllowed); Assert.IsTrue(_mockTxnMgr.RollbackOnCommitFailure); } + [Test] - [ExpectedException(typeof(InvalidTimeoutException), ExpectedMessage = "Invalid transaction timeout")] + [ExpectedException(typeof (InvalidTimeoutException), ExpectedMessage = "Invalid transaction timeout")] public void DefinitionInvalidTimeoutException() { MockTxnDefinition def = new MockTxnDefinition(); def.TransactionTimeout = -1000; _mockTxnMgr.GetTransaction(def); } + [Test] - [ExpectedException(typeof(IllegalTransactionStateException), ExpectedMessage = "Transaction propagation 'mandatory' but no existing transaction found")] + [ExpectedException(typeof (IllegalTransactionStateException), ExpectedMessage = "Transaction propagation 'mandatory' but no existing transaction found")] public void DefinitionInvalidPropagationState() { MockTxnDefinition def = new MockTxnDefinition(); @@ -61,38 +64,46 @@ namespace Spring.Transaction.Support } [Test] - [ExpectedException(typeof(IllegalTransactionStateException), ExpectedMessage = "Transaction propagation 'never' but existing transaction found.")] + [ExpectedException(typeof (IllegalTransactionStateException), ExpectedMessage = "Transaction propagation 'never' but existing transaction found.")] public void NeverPropagateState() { MockTxnDefinition def = new MockTxnDefinition(); def.PropagationBehavior = TransactionPropagation.Never; - setGeneralGetTransactionExpectations(); + SetGeneralGetTransactionExpectations(); + _mockTxnMgr.GetTransaction(def); + AssertVanillaGetTransactionExpectations(); } + [Test] - [ExpectedException(typeof(NestedTransactionNotSupportedException), ExpectedMessage = "Transaction manager does not allow nested transactions by default - specify 'NestedTransactionsAllowed' property with value 'true'")] + [ExpectedException(typeof (NestedTransactionNotSupportedException), ExpectedMessage = "Transaction manager does not allow nested transactions by default - specify 'NestedTransactionsAllowed' property with value 'true'")] public void NoNestedTransactionsAllowed() { MockTxnDefinition def = new MockTxnDefinition(); def.PropagationBehavior = TransactionPropagation.Nested; - setGeneralGetTransactionExpectations(); + SetGeneralGetTransactionExpectations(); + _mockTxnMgr.GetTransaction(def); + AssertVanillaGetTransactionExpectations(); } + [Test] public void TransactionSuspendedSuccessfully() { MockTxnDefinition def = new MockTxnDefinition(); def.PropagationBehavior = TransactionPropagation.NotSupported; def.ReadOnly = false; - setGeneralGetTransactionExpectations(); + SetGeneralGetTransactionExpectations(); - DefaultTransactionStatus status = (DefaultTransactionStatus)_mockTxnMgr.GetTransaction(def); + DefaultTransactionStatus status = (DefaultTransactionStatus) _mockTxnMgr.GetTransaction(def); Assert.IsNull(status.Transaction); Assert.IsTrue(!status.IsNewTransaction); Assert.IsTrue(status.NewSynchronization); Assert.IsTrue(!status.ReadOnly); Assert.IsNotNull(status.SuspendedResources); + AssertVanillaGetTransactionExpectations(); } + [Test] public void TransactionCreatedSuccessfully() { @@ -100,15 +111,17 @@ namespace Spring.Transaction.Support def.PropagationBehavior = TransactionPropagation.RequiresNew; def.ReadOnly = false; - setGeneralGetTransactionExpectations(); + SetGeneralGetTransactionExpectations(); - DefaultTransactionStatus status = (DefaultTransactionStatus)_mockTxnMgr.GetTransaction(def); + DefaultTransactionStatus status = (DefaultTransactionStatus) _mockTxnMgr.GetTransaction(def); Assert.AreEqual(_mockTxnMgr.Transaction, status.Transaction); Assert.IsTrue(status.IsNewTransaction); Assert.IsTrue(status.NewSynchronization); Assert.IsTrue(!status.ReadOnly); Assert.IsNotNull(status.SuspendedResources); + AssertVanillaGetTransactionExpectations(); } + [Test] public void NestedTransactionSuccessfully() { @@ -116,17 +129,19 @@ namespace Spring.Transaction.Support def.PropagationBehavior = TransactionPropagation.Nested; def.ReadOnly = false; - setGeneralGetTransactionExpectations(); - _mockTxnMgr.SetExpectedCalls("DoBegin", 1); + SetGeneralGetTransactionExpectations(); _mockTxnMgr.Savepoints = false; _mockTxnMgr.NestedTransactionsAllowed = true; - DefaultTransactionStatus status = (DefaultTransactionStatus)_mockTxnMgr.GetTransaction(def); + DefaultTransactionStatus status = (DefaultTransactionStatus) _mockTxnMgr.GetTransaction(def); Assert.AreEqual(_mockTxnMgr.Transaction, status.Transaction); Assert.IsTrue(status.IsNewTransaction); Assert.AreEqual(true, status.NewSynchronization); Assert.IsTrue(!status.ReadOnly); Assert.IsNull(status.SuspendedResources); + + AssertVanillaGetTransactionExpectations(); + Assert.AreEqual(1, _mockTxnMgr.DoBeginCallCount); } [Test] @@ -135,87 +150,94 @@ namespace Spring.Transaction.Support MockTxnDefinition def = new MockTxnDefinition(); def.PropagationBehavior = TransactionPropagation.Nested; def.ReadOnly = false; - setVanillaGetTransactionExpectations(); - _mockTxnMgr.SetTransaction(new MyMockTxnObjectSavepointMgr()); - _mockTxnMgr.SetExpectedCalls("DoBegin", 0); + ISavepointManager saveMgr = MockRepository.GenerateMock(); + _mockTxnMgr.SetTransaction(saveMgr); _mockTxnMgr.Savepoints = true; _mockTxnMgr.NestedTransactionsAllowed = true; - DefaultTransactionStatus status = (DefaultTransactionStatus)_mockTxnMgr.GetTransaction(def); + DefaultTransactionStatus status = (DefaultTransactionStatus) _mockTxnMgr.GetTransaction(def); Assert.AreEqual(_mockTxnMgr.Transaction, status.Transaction); Assert.IsFalse(status.IsNewTransaction); Assert.IsFalse(status.NewSynchronization); Assert.IsTrue(!status.ReadOnly); Assert.IsNull(status.SuspendedResources); + + AssertVanillaGetTransactionExpectations(); + Assert.AreEqual(0, _mockTxnMgr.DoBeginCallCount); } + [Test] public void DefaultPropagationBehavior() { MockTxnDefinition def = new MockTxnDefinition(); def.PropagationBehavior = TransactionPropagation.Required; def.ReadOnly = true; - setGeneralGetTransactionExpectations(); + SetGeneralGetTransactionExpectations(); - DefaultTransactionStatus status = (DefaultTransactionStatus)_mockTxnMgr.GetTransaction(def); + DefaultTransactionStatus status = (DefaultTransactionStatus) _mockTxnMgr.GetTransaction(def); Assert.AreEqual(_mockTxnMgr.Transaction, status.Transaction); Assert.IsTrue(!status.IsNewTransaction); Assert.IsTrue(status.NewSynchronization); Assert.IsTrue(status.ReadOnly); Assert.IsNull(status.SuspendedResources); + AssertVanillaGetTransactionExpectations(); } + [Test] public void DefaultPropagationBehaviorWithNullDefinition() { - setGeneralGetTransactionExpectations(); + SetGeneralGetTransactionExpectations(); - DefaultTransactionStatus status = (DefaultTransactionStatus)_mockTxnMgr.GetTransaction(null); + DefaultTransactionStatus status = (DefaultTransactionStatus) _mockTxnMgr.GetTransaction(null); Assert.AreEqual(_mockTxnMgr.Transaction, status.Transaction); Assert.IsFalse(status.IsNewTransaction); Assert.IsTrue(status.NewSynchronization); Assert.IsFalse(status.ReadOnly); Assert.IsNull(status.SuspendedResources); + AssertVanillaGetTransactionExpectations(); } + [Test] public void DefaultNoExistingTransaction() { - setVanillaGetTransactionExpectations(); - _mockTxnMgr.SetExpectedCalls("DoBegin", 1); - - DefaultTransactionStatus status = (DefaultTransactionStatus)_mockTxnMgr.GetTransaction(null); + DefaultTransactionStatus status = (DefaultTransactionStatus) _mockTxnMgr.GetTransaction(null); Assert.IsNotNull(status.Transaction); Assert.IsTrue(status.IsNewTransaction); Assert.IsTrue(status.NewSynchronization); Assert.IsTrue(!status.ReadOnly); Assert.IsNull(status.SuspendedResources); + Assert.AreEqual(1, _mockTxnMgr.DoBeginCallCount); + + AssertVanillaGetTransactionExpectations(); } + [Test] public void DefaultBehaviorDefaultPropagationNoExistingTransaction() { - setVanillaGetTransactionExpectations(); - _mockTxnMgr.SetExpectedCalls("DoBegin", 0); - MockTxnDefinition def = new MockTxnDefinition(); def.PropagationBehavior = TransactionPropagation.Never; def.ReadOnly = true; - DefaultTransactionStatus status = (DefaultTransactionStatus)_mockTxnMgr.GetTransaction(def); + DefaultTransactionStatus status = (DefaultTransactionStatus) _mockTxnMgr.GetTransaction(def); Assert.IsNull(status.Transaction); Assert.IsTrue(!status.IsNewTransaction); Assert.IsTrue(status.NewSynchronization); Assert.IsTrue(status.ReadOnly); Assert.IsNull(status.SuspendedResources); + Assert.AreEqual(0, _mockTxnMgr.DoBeginCallCount); + + AssertVanillaGetTransactionExpectations(); } - private void setGeneralGetTransactionExpectations() + + private void SetGeneralGetTransactionExpectations() { _mockTxnMgr.SetTransaction(new object()); - setVanillaGetTransactionExpectations(); } - private void setVanillaGetTransactionExpectations() + private void AssertVanillaGetTransactionExpectations() { - _mockTxnMgr.SetExpectedCalls("DoGetTransaction", 1); - _mockTxnMgr.SetExpectedCalls("IsExistingTransaction", 1); + Assert.AreEqual(1, _mockTxnMgr.DoGetTransactionCallCount); + Assert.AreEqual(1, _mockTxnMgr.IsExistingTransactionCallCount); } - } -} +} \ No newline at end of file diff --git a/test/Spring/Spring.Data.Tests/Transaction/Support/DefaultTransactionStatusTests.cs b/test/Spring/Spring.Data.Tests/Transaction/Support/DefaultTransactionStatusTests.cs index de37d6ec..a43761d5 100644 --- a/test/Spring/Spring.Data.Tests/Transaction/Support/DefaultTransactionStatusTests.cs +++ b/test/Spring/Spring.Data.Tests/Transaction/Support/DefaultTransactionStatusTests.cs @@ -1,104 +1,111 @@ -using System; using NUnit.Framework; -using Spring.Transaction; +using Rhino.Mocks; namespace Spring.Transaction.Support { - [TestFixture] - public class DefaultTransactionStatusTests - { - [Test] - public void DefaultConstructorTests() - { - MyMockTxnObject txn = new MyMockTxnObject(); - txn.SetExpectedIsRollBackOnlyValue( false ); - txn.SetExpectedRollbackOnlyCalls( 1 ); + [TestFixture] + public class DefaultTransactionStatusTests + { + [Test] + public void DefaultConstructorTests() + { + ISmartTransactionObject txn = MockRepository.GenerateMock(); - DefaultTransactionStatus stat = new DefaultTransactionStatus( txn, true, false, false, true, new object() ); - Assert.IsNotNull( stat.Transaction ); - Assert.IsTrue( !stat.ReadOnly ); - Assert.IsTrue( !stat.NewSynchronization ); - Assert.IsNotNull( stat.SuspendedResources ); - Assert.IsTrue( stat.IsNewTransaction ); - Assert.IsTrue( ! stat.RollbackOnly ); - stat.SetRollbackOnly(); - Assert.IsTrue( stat.RollbackOnly ); - txn.Verify(); - } - [Test] - [ExpectedException(typeof(NestedTransactionNotSupportedException))] - public void CreateSavepointException() - { - DefaultTransactionStatus stat = new DefaultTransactionStatus( new MyMockTxnObject(), true, false, false, true, new object() ); - stat.CreateSavepoint( "mySavePoint" ); - } - [Test] - [ExpectedException(typeof(NestedTransactionNotSupportedException))] - public void RollbackSavepointException() - { - DefaultTransactionStatus stat = new DefaultTransactionStatus( new MyMockTxnObject(), true, false, false, true, new object() ); - stat.RollbackToSavepoint(null); - } - [Test] - [ExpectedException(typeof(NestedTransactionNotSupportedException))] - public void ReleaseSavepointException() - { - DefaultTransactionStatus stat = new DefaultTransactionStatus( new MyMockTxnObject(), true, false, false, true, new object() ); - stat.ReleaseSavepoint(null); - } - [Test] - public void CreateSaveAndHoldValidSavepoint() - { - MyMockTxnObjectSavepointMgr saveMgr = new MyMockTxnObjectSavepointMgr(); - saveMgr.SetSavepointToReturn( "savepoint" ); - DefaultTransactionStatus status = new DefaultTransactionStatus( saveMgr , true, false, false, true, new object()); - status.CreateAndHoldSavepoint( "savepoint" ); - Assert.IsTrue( status.HasSavepoint ); - Assert.AreEqual( "savepoint", status.Savepoint ); - } - [Test] - [ExpectedException(typeof(TransactionUsageException))] - public void RollbackHeldSavepointException() - { - DefaultTransactionStatus stat = new DefaultTransactionStatus( new MyMockTxnObject(), true, false, false, true, new object() ); - stat.RollbackToHeldSavepoint(); - } - [Test] - public void RollbackHeldSavepointSuccess() - { - MyMockTxnObjectSavepointMgr saveMgr = new MyMockTxnObjectSavepointMgr(); - string savepoint = "savepoint"; - saveMgr.SetExpectedSavepoint( savepoint ); - saveMgr.SetSavepointToReturn( savepoint ); - DefaultTransactionStatus status = new DefaultTransactionStatus( saveMgr , true, false, false, true, new object()); - status.CreateAndHoldSavepoint( savepoint ); - Assert.IsTrue( status.HasSavepoint ); - Assert.AreEqual( savepoint, status.Savepoint ); + DefaultTransactionStatus stat = new DefaultTransactionStatus(txn, true, false, false, true, new object()); + Assert.IsNotNull(stat.Transaction); + Assert.IsTrue(!stat.ReadOnly); + Assert.IsTrue(!stat.NewSynchronization); + Assert.IsNotNull(stat.SuspendedResources); + Assert.IsTrue(stat.IsNewTransaction); + Assert.IsTrue(! stat.RollbackOnly); + stat.SetRollbackOnly(); + Assert.IsTrue(stat.RollbackOnly); - status.RollbackToHeldSavepoint(); - saveMgr.Verify(); - } - [Test] - [ExpectedException(typeof(TransactionUsageException))] - public void ReleaseHeldSavepointException() - { - DefaultTransactionStatus stat = new DefaultTransactionStatus( new MyMockTxnObject(), true, false, false, true, new object() ); - stat.ReleaseHeldSavepoint(); - } - [Test] - public void ReleaseHeldSavepointSuccess() - { - MyMockTxnObjectSavepointMgr saveMgr = new MyMockTxnObjectSavepointMgr(); - string savepoint = "savepoint"; - saveMgr.SetExpectedSavepoint( savepoint ); - saveMgr.SetSavepointToReturn( savepoint ); - DefaultTransactionStatus status = new DefaultTransactionStatus( saveMgr , true, false, false, true, new object()); - status.CreateAndHoldSavepoint( savepoint ); - Assert.IsTrue( status.HasSavepoint ); - Assert.AreEqual( savepoint, status.Savepoint ); + txn.AssertWasCalled(x => x.RollbackOnly, constraints => constraints.Repeat.Once()); + } - status.ReleaseHeldSavepoint(); - saveMgr.Verify(); - } - } -} + [Test] + [ExpectedException(typeof (NestedTransactionNotSupportedException))] + public void CreateSavepointException() + { + ISmartTransactionObject transaction = MockRepository.GenerateMock(); + DefaultTransactionStatus stat = new DefaultTransactionStatus(transaction, true, false, false, true, new object()); + stat.CreateSavepoint("mySavePoint"); + } + + [Test] + [ExpectedException(typeof (NestedTransactionNotSupportedException))] + public void RollbackSavepointException() + { + ISmartTransactionObject transaction = MockRepository.GenerateMock(); + DefaultTransactionStatus stat = new DefaultTransactionStatus(transaction, true, false, false, true, new object()); + stat.RollbackToSavepoint(null); + } + + [Test] + [ExpectedException(typeof (NestedTransactionNotSupportedException))] + public void ReleaseSavepointException() + { + ISmartTransactionObject transaction = MockRepository.GenerateMock(); + DefaultTransactionStatus stat = new DefaultTransactionStatus(transaction, true, false, false, true, new object()); + stat.ReleaseSavepoint(null); + } + + [Test] + public void CreateSaveAndHoldValidSavepoint() + { + ISavepointManager saveMgr = MockRepository.GenerateMock(); + DefaultTransactionStatus status = new DefaultTransactionStatus(saveMgr, true, false, false, true, new object()); + status.CreateAndHoldSavepoint("savepoint"); + Assert.IsTrue(status.HasSavepoint); + Assert.AreEqual("savepoint", status.Savepoint); + } + + [Test] + [ExpectedException(typeof (TransactionUsageException))] + public void RollbackHeldSavepointException() + { + ISmartTransactionObject transaction = MockRepository.GenerateMock(); + DefaultTransactionStatus stat = new DefaultTransactionStatus(transaction, true, false, false, true, new object()); + stat.RollbackToHeldSavepoint(); + } + + [Test] + public void RollbackHeldSavepointSuccess() + { + ISavepointManager saveMgr = MockRepository.GenerateMock(); + string savepoint = "savepoint"; + DefaultTransactionStatus status = new DefaultTransactionStatus(saveMgr, true, false, false, true, new object()); + status.CreateAndHoldSavepoint(savepoint); + Assert.IsTrue(status.HasSavepoint); + Assert.AreEqual(savepoint, status.Savepoint); + + status.RollbackToHeldSavepoint(); + saveMgr.AssertWasCalled(x => x.RollbackToSavepoint(savepoint)); + } + + [Test] + [ExpectedException(typeof (TransactionUsageException))] + public void ReleaseHeldSavepointException() + { + ISmartTransactionObject transaction = MockRepository.GenerateMock(); + DefaultTransactionStatus stat = new DefaultTransactionStatus(transaction, true, false, false, true, new object()); + stat.ReleaseHeldSavepoint(); + } + + [Test] + public void ReleaseHeldSavepointSuccess() + { + ISavepointManager saveMgr = MockRepository.GenerateMock(); + string savepoint = "savepoint"; + DefaultTransactionStatus status = new DefaultTransactionStatus(saveMgr, true, false, false, true, new object()); + status.CreateAndHoldSavepoint(savepoint); + Assert.IsTrue(status.HasSavepoint); + Assert.AreEqual(savepoint, status.Savepoint); + + status.ReleaseHeldSavepoint(); + saveMgr.AssertWasCalled(x => x.CreateSavepoint(savepoint)); + saveMgr.AssertWasCalled(x => x.ReleaseSavepoint(savepoint)); + } + } +} \ No newline at end of file diff --git a/test/Spring/Spring.Data.Tests/Transaction/Support/TransactionSynchronizationManagerTests.cs b/test/Spring/Spring.Data.Tests/Transaction/Support/TransactionSynchronizationManagerTests.cs index cb2bc502..c4a5fe02 100644 --- a/test/Spring/Spring.Data.Tests/Transaction/Support/TransactionSynchronizationManagerTests.cs +++ b/test/Spring/Spring.Data.Tests/Transaction/Support/TransactionSynchronizationManagerTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using NUnit.Framework; +using Rhino.Mocks; using Spring.Core; using Spring.Util; @@ -51,7 +52,7 @@ namespace Spring.Transaction.Support [ExpectedException(typeof(InvalidOperationException))] public void RegisterSyncsInvalid() { - TransactionSynchronizationManager.RegisterSynchronization(new MockTxnSync()); + TransactionSynchronizationManager.RegisterSynchronization(MockRepository.GenerateMock()); } [Test] @@ -60,7 +61,7 @@ namespace Spring.Transaction.Support TransactionSynchronizationManager.InitSynchronization(); IList syncs = TransactionSynchronizationManager.Synchronizations; Assert.AreEqual( 0, syncs.Count ); - TransactionSynchronizationManager.RegisterSynchronization( new MockTxnSync() ); + TransactionSynchronizationManager.RegisterSynchronization(MockRepository.GenerateMock()); syncs = TransactionSynchronizationManager.Synchronizations; Assert.AreEqual( 1, syncs.Count ); TransactionSynchronizationManager.ClearSynchronization(); diff --git a/test/Spring/Spring.Data.Tests/Transaction/Support/TransactionTemplateTests.cs b/test/Spring/Spring.Data.Tests/Transaction/Support/TransactionTemplateTests.cs index c9f2e536..4502f2bf 100644 --- a/test/Spring/Spring.Data.Tests/Transaction/Support/TransactionTemplateTests.cs +++ b/test/Spring/Spring.Data.Tests/Transaction/Support/TransactionTemplateTests.cs @@ -1,80 +1,87 @@ using System; using NUnit.Framework; +using Rhino.Mocks; namespace Spring.Transaction.Support { - [TestFixture] - public class TransactionTemplateTests - { - [Test] - [ExpectedException(typeof(ArgumentException))] - public void NoTxnMgr() - { - TransactionTemplate temp = new TransactionTemplate(); - temp.AfterPropertiesSet(); - } - [Test] - public void TxnMgr() - { - TransactionTemplate temp = new TransactionTemplate(); - temp.PlatformTransactionManager = new MockTxnPlatformMgr(); - temp.AfterPropertiesSet(); - } - [Test] - public void ExecuteException() - { - MockTxnPlatformMgr mock = new MockTxnPlatformMgr(); - mock.SetExpectedGetTxnCallCount(1); - mock.SetExpectedRollbackCallCount(1); - TransactionTemplate temp = new TransactionTemplate(mock); - try - { - temp.Execute(new TransactionDelegate(DummyExceptionMethod)); - Assert.Fail("Should throw exception"); - } catch - { - - } - mock.Verify(); - } - [Test] - public void ExecuteExceptionRollbackException() - { - MockTxnPlatformMgr mock = new MockTxnPlatformMgr(); - mock.SetExpectedGetTxnCallCount(1); - mock.SetExpectedRollbackCallCount(1); - mock.ThrowRollbackException = true; - TransactionTemplate temp = new TransactionTemplate(mock); - try - { - temp.Execute(new TransactionDelegate(DummyExceptionMethod)); - Assert.Fail("Should throw exception"); - } - catch - { - - } - mock.Verify(); - } - [Test] - public void NullResult() - { - MockTxnPlatformMgr mock = new MockTxnPlatformMgr(); - mock.SetExpectedGetTxnCallCount(1); - mock.SetExpectedCommitCallCount(1); - TransactionTemplate temp = new TransactionTemplate(mock); - temp.AfterPropertiesSet(); - Assert.AreEqual( mock, temp.PlatformTransactionManager); - Assert.IsNull( temp.Execute(new TransactionDelegate(DummyTransactionMethod) ) ); - mock.Verify(); - } - public object DummyTransactionMethod( ITransactionStatus status ) - { - return status; - } - public object DummyExceptionMethod( ITransactionStatus status ) - { - throw new Exception("Bad Error"); - } - } -} + [TestFixture] + public class TransactionTemplateTests + { + [Test] + [ExpectedException(typeof (ArgumentException))] + public void NoTxnMgr() + { + TransactionTemplate temp = new TransactionTemplate(); + temp.AfterPropertiesSet(); + } + + [Test] + public void TxnMgr() + { + TransactionTemplate temp = new TransactionTemplate(); + temp.PlatformTransactionManager = MockRepository.GenerateMock(); + temp.AfterPropertiesSet(); + } + + [Test] + public void ExecuteException() + { + IPlatformTransactionManager mock = MockRepository.GenerateMock(); + + TransactionTemplate temp = new TransactionTemplate(mock); + try + { + temp.Execute(new TransactionDelegate(DummyExceptionMethod)); + } + catch + { + } + + mock.AssertWasCalled(x => x.GetTransaction(Arg.Is.Anything), constraints => constraints.Repeat.Once()); + mock.AssertWasCalled(x => x.Rollback(Arg.Is.Anything), constraints => constraints.Repeat.Once()); + } + + [Test] + public void ExecuteExceptionRollbackException() + { + IPlatformTransactionManager mock = MockRepository.GenerateMock(); + mock.Stub(x => x.Rollback(Arg.Is.Anything)).Throw(new Exception("Rollback")); + + TransactionTemplate temp = new TransactionTemplate(mock); + try + { + temp.Execute(new TransactionDelegate(DummyExceptionMethod)); + } + catch + { + } + + mock.AssertWasCalled(x => x.GetTransaction(Arg.Is.Anything), constraints => constraints.Repeat.Once()); + mock.AssertWasCalled(x => x.Rollback(Arg.Is.Anything), constraints => constraints.Repeat.Once()); + } + + [Test] + public void NullResult() + { + IPlatformTransactionManager mock = MockRepository.GenerateMock(); + + TransactionTemplate temp = new TransactionTemplate(mock); + temp.AfterPropertiesSet(); + Assert.AreEqual(mock, temp.PlatformTransactionManager); + Assert.IsNull(temp.Execute(new TransactionDelegate(DummyTransactionMethod))); + + mock.AssertWasCalled(x => x.GetTransaction(Arg.Is.Anything), constraints => constraints.Repeat.Once()); + mock.AssertWasCalled(x => x.Commit(Arg.Is.Anything), constraints => constraints.Repeat.Once()); + } + + public object DummyTransactionMethod(ITransactionStatus status) + { + return status; + } + + public object DummyExceptionMethod(ITransactionStatus status) + { + throw new Exception("Bad Error"); + } + } +} \ No newline at end of file diff --git a/test/Spring/Spring.Services.Tests/Spring.Services.Tests.2008.csproj b/test/Spring/Spring.Services.Tests/Spring.Services.Tests.2008.csproj index 91125c39..bf07699d 100644 --- a/test/Spring/Spring.Services.Tests/Spring.Services.Tests.2008.csproj +++ b/test/Spring/Spring.Services.Tests/Spring.Services.Tests.2008.csproj @@ -76,10 +76,6 @@ False ..\..\..\lib\Net\2.0\Common.Logging.dll - - False - ..\..\..\lib\Net\2.0\DotNetMock.dll - nunit.framework ..\..\..\lib\Net\2.0\nunit.framework.dll diff --git a/test/Spring/Spring.Services.Tests/Spring.Services.Tests.2010.csproj b/test/Spring/Spring.Services.Tests/Spring.Services.Tests.2010.csproj index 8cb5e79b..6a64f236 100644 --- a/test/Spring/Spring.Services.Tests/Spring.Services.Tests.2010.csproj +++ b/test/Spring/Spring.Services.Tests/Spring.Services.Tests.2010.csproj @@ -82,10 +82,6 @@ False ..\..\..\lib\Net\2.0\Common.Logging.dll - - False - ..\..\..\lib\Net\2.0\DotNetMock.dll - nunit.framework ..\..\..\lib\Net\2.0\nunit.framework.dll diff --git a/test/Spring/Spring.Services.Tests/Spring.Services.WindowsService.Tests.csproj b/test/Spring/Spring.Services.Tests/Spring.Services.WindowsService.Tests.csproj deleted file mode 100644 index 844d3e58..00000000 --- a/test/Spring/Spring.Services.Tests/Spring.Services.WindowsService.Tests.csproj +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -