From 3a835605385057ea421b660aba00d772d6ec3480 Mon Sep 17 00:00:00 2001 From: Marcin Floryan Date: Fri, 8 Jul 2011 17:07:58 +0100 Subject: [PATCH 01/12] Empty ignore --- .gitignore | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 From dc5bdc5f28fa1eeba23a9266dd38b1c0c0d8a53d Mon Sep 17 00:00:00 2001 From: Marcin Floryan Date: Fri, 8 Jul 2011 17:08:50 +0100 Subject: [PATCH 02/12] No ReSharper stuff. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index e69de29..e0a57fc 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +_ReSharper*/* \ No newline at end of file From 4c3b9e65ea8ca555f44f0cb1d65dca5f028ce599 Mon Sep 17 00:00:00 2001 From: Marcin Floryan Date: Fri, 8 Jul 2011 17:11:50 +0100 Subject: [PATCH 03/12] Removed Source Control bindings --- Fiddler/FiddlerJsonViewer.csproj | 12 ++++++---- JsonView/JsonView.csproj | 14 ++++++++---- JsonViewer.sln | 39 +++++++++++++++----------------- JsonViewer/JsonViewer.csproj | 14 ++++++++---- Visualizer/JsonVisualizer.csproj | 14 ++++++++---- 5 files changed, 53 insertions(+), 40 deletions(-) diff --git a/Fiddler/FiddlerJsonViewer.csproj b/Fiddler/FiddlerJsonViewer.csproj index 1c160b5..3508754 100644 --- a/Fiddler/FiddlerJsonViewer.csproj +++ b/Fiddler/FiddlerJsonViewer.csproj @@ -10,10 +10,14 @@ Properties EPocalipse.Json.Fiddler FiddlerJsonViewer - SAK - SAK - SAK - SAK + + + + + + + + C:\Users\zippy\AppData\Roaming\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis v2.0 diff --git a/JsonView/JsonView.csproj b/JsonView/JsonView.csproj index 1ffc39b..354d153 100644 --- a/JsonView/JsonView.csproj +++ b/JsonView/JsonView.csproj @@ -3,17 +3,21 @@ Debug AnyCPU - 8.0.50727 + 9.0.30729 2.0 {83D82889-66FA-41AC-932F-9AF3AE8EAA9C} WinExe Properties EPocalipse.Json.JsonView JsonView - SAK - SAK - SAK - SAK + + + + + + + + 2.0 diff --git a/JsonViewer.sln b/JsonViewer.sln index 783e3b6..3877b33 100644 --- a/JsonViewer.sln +++ b/JsonViewer.sln @@ -1,7 +1,6 @@  Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 -# SharpDevelop 4.0.0.7008 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{E9E44130-70CC-442C-A77C-A1112310354A}" ProjectSection(SolutionItems) = preProject Samples\GridSample.txt = Samples\GridSample.txt @@ -9,8 +8,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{E9E4 EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0508F31B-5B21-4096-A3B7-280815BBECAE}" - ProjectSection(SolutionItems) = preProject - EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiddlerJsonViewer", "Fiddler\FiddlerJsonViewer.csproj", "{4B6A26FA-0D44-4354-92E7-54FC5A75469B}" EndProject @@ -21,24 +18,6 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonViewer", "JsonViewer\JsonViewer.csproj", "{3AE264FB-52DC-4295-A37F-CE63CAF54930}" EndProject Global - GlobalSection(TeamFoundationVersionControl) = preSolution - SccNumberOfProjects = 5 - SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - SccTeamFoundationServer = https://tfs03.codeplex.com/ - SccLocalPath0 = . - SccProjectUniqueName1 = Fiddler\\FiddlerJsonViewer.csproj - SccProjectName1 = Fiddler - SccLocalPath1 = Fiddler - SccProjectUniqueName2 = JsonView\\JsonView.csproj - SccProjectName2 = JsonView - SccLocalPath2 = JsonView - SccProjectUniqueName3 = JsonViewer\\JsonViewer.csproj - SccProjectName3 = JsonViewer - SccLocalPath3 = JsonViewer - SccProjectUniqueName4 = Visualizer\\JsonVisualizer.csproj - SccProjectName4 = Visualizer - SccLocalPath4 = Visualizer - EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU @@ -64,4 +43,22 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 5 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = https://tfs03.codeplex.com/ + SccLocalPath0 = . + SccProjectUniqueName1 = Fiddler\\FiddlerJsonViewer.csproj + SccProjectName1 = Fiddler + SccLocalPath1 = Fiddler + SccProjectUniqueName2 = JsonView\\JsonView.csproj + SccProjectName2 = JsonView + SccLocalPath2 = JsonView + SccProjectUniqueName3 = JsonViewer\\JsonViewer.csproj + SccProjectName3 = JsonViewer + SccLocalPath3 = JsonViewer + SccProjectUniqueName4 = Visualizer\\JsonVisualizer.csproj + SccProjectName4 = Visualizer + SccLocalPath4 = Visualizer + EndGlobalSection EndGlobal diff --git a/JsonViewer/JsonViewer.csproj b/JsonViewer/JsonViewer.csproj index b0522b7..18c4664 100644 --- a/JsonViewer/JsonViewer.csproj +++ b/JsonViewer/JsonViewer.csproj @@ -3,17 +3,21 @@ Debug AnyCPU - 8.0.50727 + 9.0.30729 2.0 {3AE264FB-52DC-4295-A37F-CE63CAF54930} Library Properties EPocalipse.Json.Viewer JsonViewer - SAK - SAK - SAK - SAK + + + + + + + + 2.0 diff --git a/Visualizer/JsonVisualizer.csproj b/Visualizer/JsonVisualizer.csproj index 2484673..f9bc901 100644 --- a/Visualizer/JsonVisualizer.csproj +++ b/Visualizer/JsonVisualizer.csproj @@ -3,17 +3,21 @@ Debug AnyCPU - 8.0.50727 + 9.0.30729 2.0 {32BEAE8D-282C-4414-9B7F-2F0E9450369A} Library Properties EPocalipse.Json.Visualizer JsonVisualizer - SAK - SAK - SAK - SAK + + + + + + + + 2.0 From fefbdb197bbb09e053f1e109f2b53ec3419d3c74 Mon Sep 17 00:00:00 2001 From: Marcin Floryan Date: Fri, 8 Jul 2011 17:12:55 +0100 Subject: [PATCH 04/12] Ignore local Visual Studio stuff --- .gitignore | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e0a57fc..3314d8c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,8 @@ -_ReSharper*/* \ No newline at end of file +_ReSharper*/* + +#No VisualStudio local files +*.suo +obj/ +[Bb]in +[Dd]ebug*/ +[Rr]elease*/ \ No newline at end of file From 6066cf9ccef6fdbf7fb8f447073fa6eea46e8295 Mon Sep 17 00:00:00 2001 From: Marcin Floryan Date: Fri, 8 Jul 2011 17:14:01 +0100 Subject: [PATCH 05/12] Fixed bug where null value causes Exception when processing JSON --- JsonViewer/JsonObjectTree.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JsonViewer/JsonObjectTree.cs b/JsonViewer/JsonObjectTree.cs index 2d82a0e..8cd6b76 100644 --- a/JsonViewer/JsonObjectTree.cs +++ b/JsonViewer/JsonObjectTree.cs @@ -84,7 +84,7 @@ private static JsonObject CreateJsonObject(object jsonObject) obj.JsonType = JsonType.Object; else { - if (typeof(string) == jsonObject.GetType()) { + if (jsonObject is string) { Match match = dateRegex.Match(jsonObject as string); if (match.Success) { // I'm not sure why this is match.Groups[1] and not match.Groups[0] From e06320c38a3666a076f4e1f44639fd05ceb46685 Mon Sep 17 00:00:00 2001 From: Marcin Floryan Date: Fri, 8 Jul 2011 22:53:36 +0100 Subject: [PATCH 06/12] Ignore more local VS files. --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3314d8c..256823a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,8 @@ _ReSharper*/* #No VisualStudio local files *.suo +*.user obj/ [Bb]in [Dd]ebug*/ -[Rr]elease*/ \ No newline at end of file +[Rr]elease*/ From 60b910ac92ab97cfd19ba44ea83e611d07fc4a6b Mon Sep 17 00:00:00 2001 From: Marcin Floryan Date: Fri, 8 Jul 2011 22:54:07 +0100 Subject: [PATCH 07/12] Upgraded solution to Visual Studio 2010 --- Fiddler/FiddlerJsonViewer.csproj | 40 ++++++++++++++++++++- JsonView/JsonView.csproj | 38 ++++++++++++++++++-- JsonView/Properties/Resources.Designer.cs | 4 +-- JsonView/Properties/Settings.Designer.cs | 4 +-- JsonViewer.sln | 40 ++++++++++----------- JsonViewer/JsonViewer.csproj | 38 ++++++++++++++++++-- JsonViewer/Properties/Resources.Designer.cs | 4 +-- Visualizer/JsonVisualizer.csproj | 38 ++++++++++++++++++-- 8 files changed, 173 insertions(+), 33 deletions(-) diff --git a/Fiddler/FiddlerJsonViewer.csproj b/Fiddler/FiddlerJsonViewer.csproj index 3508754..0b52c77 100644 --- a/Fiddler/FiddlerJsonViewer.csproj +++ b/Fiddler/FiddlerJsonViewer.csproj @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -24,6 +24,25 @@ False False false + + + 3.5 + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true true @@ -33,6 +52,7 @@ DEBUG;TRACE prompt 4 + AllRules.ruleset pdbonly @@ -41,6 +61,7 @@ TRACE prompt 4 + AllRules.ruleset False @@ -76,6 +97,23 @@ JsonViewer + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + \ No newline at end of file diff --git a/JsonViewer.Test/Properties/AssemblyInfo.cs b/JsonViewer.Test/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a7e41b8 --- /dev/null +++ b/JsonViewer.Test/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("JsonViewer.Test")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("JsonViewer.Test")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2011")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("127873d2-6026-49e4-908e-94cca85716ac")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/JsonViewer.sln b/JsonViewer.sln index c7664b6..d589874 100644 --- a/JsonViewer.sln +++ b/JsonViewer.sln @@ -17,6 +17,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonView", "JsonView\JsonVi EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonViewer", "JsonViewer\JsonViewer.csproj", "{3AE264FB-52DC-4295-A37F-CE63CAF54930}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonViewer.Test", "JsonViewer.Test\JsonViewer.Test.csproj", "{352E688F-776F-4A5F-8781-83DBAFE71DEC}" +EndProject Global GlobalSection(TeamFoundationVersionControl) = preSolution SccNumberOfProjects = 5 @@ -57,6 +59,10 @@ Global {3AE264FB-52DC-4295-A37F-CE63CAF54930}.Debug|Any CPU.Build.0 = Debug|Any CPU {3AE264FB-52DC-4295-A37F-CE63CAF54930}.Release|Any CPU.ActiveCfg = Release|Any CPU {3AE264FB-52DC-4295-A37F-CE63CAF54930}.Release|Any CPU.Build.0 = Release|Any CPU + {352E688F-776F-4A5F-8781-83DBAFE71DEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {352E688F-776F-4A5F-8781-83DBAFE71DEC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {352E688F-776F-4A5F-8781-83DBAFE71DEC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {352E688F-776F-4A5F-8781-83DBAFE71DEC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/lib/Moq.dll b/lib/Moq.dll new file mode 100644 index 0000000000000000000000000000000000000000..3d3b8ccd02f99e44883702a0deaa97fa568338de GIT binary patch literal 507392 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
TYOnu!BN9Q~zf2Eu@aMWy!^bM62L2!x@C9kx zY7e&cI6;*27&~#km*idKJkL%Tocru7?Av$X%)yrsqh(uaN4+DeoIE(~sOn?RN%xJG z9Vq8pIC_4@O8nj<^!^(=*}n1eadK)M(K&Ix*JW>V?t-IQPWMfa18ueDpWvK4F-Z=h zoM+&uc@FbUlFyMdhMkeVsq$qS^GrB;pS~r>QqDql^2A$m5{>W!uF4bBLQHI$t=UxM64El+?m8((>1q5PJdBG*|e|DvkR z>|FFMmBLXg;VU>lQB|h2@ysMx)H$jh5wHTk>r6R!xlXpciJWjas;__RX5$ZztF_UO z9U-!1UCJ5GP9B{4payqfoC!kEGk@EyQ>Ao_#jGSSv^Q~M#&fBiDPkuno61Sc2Wga=X zZq5&~keqF(GIVwLQ$N1U56({5-a&BNJ-FHHMO3rPrb5edr zP8-+xMQ$UfKRbN_%H|;)@l(P zb?kJmS0TT5q9i^o!%m(!BM(v4es<~xoR>c%CsrjVE(7r^hJwZG>}30{ zOZ(nIO>(S z5aWzi22!C8xbxHO-hvPK2BDj`1!z&$`ZZ zBbuD4t~0}kp>3ZBN6n!SvyAu2$%UimaF#KboKHMXT#aSO-QjWYD{rwjj_B1=H<%}9p=xdV4$))XzW#^bV%P6FF zGCb|9p%Jd}RIStd)KgVL&Oz6SF+L&Zl*jp$oNFHEGwLhoH~&_|7^URg>T!0EbC<{2 zNlqJ&^B4XSh7b?4GhD_PSE#Qi+36(a!BN}(JUe}T^9=l595`>VQ{Rd=+SOD}l*f6n zrdq2D*~!Cm)XhmS-lUvWuCvgXPR@s}lVr@TnT5Ty70x&K5@M0Du%;T%Z|vY{ zn6a2zzRu1g#u6iwoTk6)s)jc&F_w|jk)4j#5(9rJ7$fWjXAHjb#1bQ)oH-zUbT2X1 z)Kq7ic-KiYN@@x?OFhmbL>S4++F-5|X$N{mQydcslv@T|#rnVg}n z^NH~qIg?yxvoWcbdIwj%$EyCdz`F%+*Ycs|ST|>zF_WAu*C{n-k+Z>dzA$3Q`O0;6 z7<0(^$#uRmV#&GaI(v+HdW<*xI) zv6h@GuJebno}5}|{M%k(d`M1H*EwyJkkig}{xm)&=W*9LYkX46#Qqw}P786)_>^+q zc5}`fpOaI$?H7z~&Tql}!RZq9XMFST5`FNE)hYJExHL2@eBs^L3CPUV{QNkL*FUN zshsCqeZN(!YV7-+oXYXs=KF)3%2{pVt01S7JD#S#)8stqIw8I@ooJ7C#P~e&3zZhsobtReHY28+^&|sOSMd#NtV0q+~vDWIcr?! zUY`h3=aw&Ar;X1EQs*D_E~omJC))Y~$@$UEY3Hj+Rh8pu@4JbdayO@guTC|mldqn3 z+#~J*-!0@^ajPEmH6W+*7<|arh@8rm(AjqzIhAX^i?3<5cDnjPf@)&BYMs?v@tJ(s zcL#07jqK!!9==d=n!C;;zUDy&w!NF{JnCyfEmxjNB7JShsXVXt^0g&ruv^vJ*Pfip zG57U#tk%xczHo9XSJWV1S8^)X&ojP<$*Ei|gMB^7sazXFe2^d*|o*`$I>x}U|OU|dR^NQ~|a=vq&*L=^D zQ|>x%_=b^l)paKMULdFP+%m;ClJ-UIb9xWv;a%95$!X*|@A_V?RyEx>iJZ!rkMd0> zXREvF-t)ah&RuRhvwZK6)7f=q`=*oA&voYbqR4s4b>{lsBPZ5%l6|q{6uVBQFNvJ} zu9M?SuhvenZzVZb-JDInLUJ0N_iy`l-$poiiownRS?1dsgpXN>{vM~4sw&4*=G#Fl z{57|ogT8OcndLe^`u3BP>^g^hhsnuxox{GP)Nkcb1%;ZtoSo^VQn<(|562JLi0VX~#X2T=ZQgr}DVCsyhe`gkFH&jJz9tLJWd-ByBB*LWg0T<4L8M0Ue3_`Or}@?L{_pEExaM`18T9 z0k%OWa(lI6LfrVb@ZUxJAan-DXMleJtL?uGjf3L%YKsNXo1rOC_0F{#=e^J@Xh-Nu z=;P2;Q1wo7VN3weuN33KAHshNx(&J*s_HkeehpQFD(5(Up*n3>L+Ez+>b+RCoqeIZ zFwRlXZ=mx@(GFC#w;!s;@e_0bZ_h#KdGJB_4J_SGbJliHwSRj-k0U-9S`HlnT@_VE%3-9oUMw~t9%i=UyF!D_$#!}=%M!~0LPe+?V+I$Pp*qM~1D z9cVr19ner{7_=4Czn!X`cC+>VZwLQj#8v%JXlLjvP&IGwC?EZ)b=nR2@nAJBH9wKa zLkjKB58pY-_TAv}}R;Y?MVQotqB096G=XKj+TH}+<_zWcKheB05 zlc1f^uNu#9P_^UdsA~Tx>)+5@=J@*!5q>sn;xoGNgP~1OcQaJg zHHND3wrB3o3X9_7z;_~l0s9|7TY+_6h}a5N?e1Xx4%!;=!%(#!&OzIQ)$@f%p*3o0 zKNPC^?F#KP=SJ}?^clokqTlDC4?ssiUxz;$It}^;bRksLeayO_6#EN08SSWb6Af(; zBt$G!9bb!}U71HgS1KP`1pSaSMEnHZi0wEB?L51+uxktP`JC3`R_HG1T~KxXd5BaW zXJx2Y`{hTBs}KB!&=Jr=j4z5g9eNUe3G_GUx6m`tzo8eP{yP7Dzx4)ver^xFjCg&s9z??uQPj(l|< zoWWY1SHcfOyPKhJqyHVyDD<}%x)^#8nh8C|Tn_yJd4EDx-4$p7IPgZjU3H*peOKiW z(Fpzqv~vgaW9Z$`EvRb`-2r_Ny664YqC51?IXE6!hmuM$8TuWzOPybTfX0LKX15m` zp~q40-+x=d<=}(RKcMHKXWt(fb;C{Scp4aWGwU6seWUJY?Lex>`LP-g_zLt9s54iJ zeo%EhJrBKcZr`Y>&}}$Bs`YpC+~#5?I54KUmewXG=ayNfca@q7uOx+-3d+eAv*8f-1z63$&I@(>{hRy{5l~O}TNnBd z_G?q9nxB@?!I)3AzEr!|rPSUd@KwA1x?W%-HbguHtqIlR4iSUFx5WDA%RheqI6}lL zh;PI8s{O6j$yBh~{zas?&O+68d;x8QcJ+St@3+?Cd-%;`Zxkn?Z4kc#?Eux|4501L zLcMXb+J7OuKU#}gU^QN~?!uw|{%?VQ!Ohe6A!;2pf!_^zt)Y)XAA&vsRr|RQRPFx( zP__RDLmx+cD6}thWULe~Kwkr^`I!Ws2#$*F8oXUs_Un46+J1E(GYk2fz;mIW zLldF9p=!T;i}O!9ct3a<+WQIm0r(QJe>+2jyhVuBh}VV|L+g|3>*NN^o4ViH5ZhWb zga0Y?F6cIBd*}|Ab$@%%zTOU;FR`89p}lbA9Y8zkx_gA%JAynlzTcn`h^z4phN}KY zl2+dzQoIU(B({4pRPCo3%nPAvovHn#eE<4Ofqw?=t2mw4plY2IK`+2x54}7W_XkjQ zAEoNmyy@eyvYl-z5B=_hUP0aWP&NOmT{WJg(0}3o0#*HAgsOI``chnn?~BvNl{(J! zI6`^-Nl~l5ZdV=e0`1lZt9F`0RX=w#`^VP~td0jY&lh4PpEvaR)`_c}Kh;l=hxPol z7muL64*bWt-9b=woay%U{;nTaxxZgTyfJtxRNYs`L)Cq!y3VzT)7l!U*2{y~&Q!!{ zUZIukO0f#u1O2XrreXXgq<9?z?Fs)dRBg9DZ|M7kTd-~_;3v4}od8j%fe=rkKXu=$ z&gberPQ}%A_9=|B3E~soarTYs0Pco)T8Vbl{p=vHy1$tKRf{H(+5h^rh*^zG9oOpm zrS`A?y!930YMlCfsJDLu^7g|YgzY#49Xi+FpMPFM#INwxcAsHY=b7QizXW~>s`lq# z)TwzI54IZOd;tBwU*B-PLf*UB?og=OPaUB%pqQ$dx=?kT=V zxI07`^dsc=fo_Y77B52gpx@V^-$7?Ve}HB})jD#o^Wej%Q}=1dG5#OGYW!zdjYgWA zur?#Tk*|v(q8+##_3Hla52*iq=|8_efVete=<6r$Q^0DS^d)UChCzjzFV=Thlc1O3 zr?KX+zn=9A)_treSue5P&{(&78}ty?aZlDaS(mYX4ORVr&w7gWAJ&`j*$fqL%6cDb z7uE>YKCDAoUtyh2il5hop2hqpux3Ej{hB_X;=0TJ8qyFqU%mdOI@|}S{r@rI>VEDs z=>N{`=`$slus_vjORi$SsJiQ}R;|B|aq0GOKZ?A7dAPoL+OLfFjXDQ^o98(Ne#le= z&KnpNz*>Vfn6(~jLsBW4vg-3jv}g{lJx`x!>Y(5I!1d?p*&US)Nf>V6xthOjngy&J05d27~=tlc^8?=P|nOW}_Xp!^Uql;fkJYQ4My zRj+d=aeNx|DU8$qoM8@FZU17Z+Ws8okD0$_K0(}CT!X6D*L6dbO1j>g(8saf@H|Si zggAe&1iOcsP9hJQ=@*2dvsve(CK0H~;J`OAJK& zuT*R2fAi@%DDo%G!+kV#7IY)D7WzF39fZy+pz3+%6{womfZLT?q5(7>{oDan?cWQX z0lz(TJG2`#5pi`NpTfElzPc|+2m4hW*B$;#-jk^J_mhSA3t*)>-~W8Cavs$@twh|b zYTm2!ShVvB*7e)aJZKD5Jzw?nVz63|c~Et{Y=AC~!%ys!T0&ia*PwJ)bK_ zKkE6M(tXIAhW+&uv=s5#L;y`#AmM^Q(VcYW=DGIu-S5{C=Iu>{q|ANqMU&iiP8E%uB5eTV;T{S_cjjn6;M5^yQn`xLqt^=dyI z$HR92`uYmKe?1+*y#C1S*OScWtNH(e!{4`rUxP!1IDz`6P;<8bc?N#36Iflp)$^!R zIGYe;PJwk@rTYC%$P1Wni5<`z zp!=W=pvR!t|N0}^Q|c|xsYKP&aJieErpd-$r~F3{`X z2<8o*d9j+Q`LM(d&|aRnKi@xp)wLn=KSn#Mebt_R9&PdcvL%`!uGU`*=peM)3HluL zap(@@|Nr&%>kOPvx!qyVamPs`ns#Hw=bZ-Y4BTN9{uB2b)$GY)qMEd z^>6!1Jgfgd#!>uV z>b={i#_|8MJsbW@J8Hf@hVN~!`h2OlxBV^uWq&-4?Ff&x#Ph6UprxpL8~Qag7OLhg z6S@Ul0Nu;m{omRvLHr2vK4<+Fs@nS*s@gjbRqa`K>h|hF{q6m4>*Z(ERbMaO{W%?R zy+8H3{&l|A3f6P;Lqrqw^B2ag?x+7ozB(=g;w`@4`=6}u&#LsoQtNL=X3i4;1Py7w0#r z+pi(gnRWX$MX`q$$Kz2M{o8Kdg!VVa{ANQZ2UJ9#!nun{Gu=G!J zTmoJac{nwpX%#L=z@>ox>HNialI=Ax?E3ZnY4n5D!PHrR(8W z7h=*pyl`R5DqOPgt}1+N;oViZMq;Zf+&=N1Dm*gr-YT4wc%RE%(DnAjuqwPau}u{| znb@`ppG$0Ch0UanRruDV2deP>N#RwvS5oIHJSM4Y6@EYI;VQf;sYeywlk{j6KA#j( zg&Qn-yb3?OD6$H_vgpYwoVut_72dh1UlqQ(sK3jPV!rN49$1AtB|lw-dnOO6!b6gu zslu-(53a&#?;r@SgIGLHh6ro1LP(ji$Yr+{~*j2Gd| zG2rh~UKbOY7lRL_ydiR#bHG2ROb~~e*MWaanJAjlAzdmz1D{KoBqEvjfG?-KDW))= z0Lvwl#bxHdz%`ak5#e+SD3ult?HiX&6%&~ogBvb+OXM@R2j8*eZE=eEQSe<$rin&$ z$|#k+!L66PBO;ie19x2Vu83qF2kx?Dx|qT|4gBbmD3MQ`AZCMmEr}LwF)lnW7fImf zm&_I;nLhxJT@owiFmD9Ey=1;9VJ-#FTe46bX5I_VTCxZqjnnNNgXS+u5uwcgfquLs zO++v|IF;>Mk|ESMRsT)FN0%%U3z#1OUs#eYwlY5fwo-FNU8u?*0Bw?*FGe$ugx;50 zB;uGSK_5t6EA}x*LnBf@6v1@Lj2833-=%C6jhL5%<&qN7g1Lm^ABnci`zijh=t``w z_q|g;5rc@6#YMy;Qa6dwI!-(wb+ed4Tq^Yb*(`Q2>;3zw7)ht>QlZz=7BPoT*$Lur zv^O|)s|cf0cC@I8x^b!7MHF#@xE1_n>JD+1`7Ur&>Q^F|PU#8tyMSk>?h=EDlf|Rp zSnx;>Cx9msCkl1{u{?FR*v;G%`CC%I5l!imkSG*?pSo8}A@(1y2She;vUm#dKT{8g z-L2LB*&g^b_*&{gv5$CL&5>Xu?Vvcu@z=qDX+Mfn%@Q3~rKkM1*r(&9mYm#M^3q2fhP5lKE$FOYnH+^WdO>TtwVdUi0K{OTS$X>!SLfA+{pEEBy|++r#_P zo5|3wD!yIrK>SGhopKX#jMxP}1>Q}3Tpj^$jBg?L5hsXi;6Kw_$ivJQj`P3LTjCed z3j9kDw}G#v-z6PleLgbM?v|mN9esSYlC7Ba@zqLpWY)*mJ+dpaKECdek;Jo{4rt%E z^j_It$3-{rk@S1zXb%S=zSYAGm)lJs_R9P>Eh_HrU|44vN|UfMxU^KdV49P>2fk67AK zrhE8ha6a)2@gCw2FYP4Dm=`i1BaRl!!EYfR&_j*KKi{2Xu!mJzz%Z`tzdjI+UA-RBAUk^IVIgjeNzFv2cCy5h8A^MM9+Er#hrs4@=GdOAK!?H9& zvx+AzeMI)}NzCW}2w6cK&G%Ok@*;7$RId*+mqth@QstLR^?EXA>Ep6Kae`3sf~8N$ zam3MLAKL$N>65aI`8fESrF~>*FWvtI@DEG-$&SR)!oYRp=+gdj8gpInZ%YTtQs!ph zb4v%wMo+5xXwe3IW$9o!lDQk$moY?6VOH0%pp55bKyRHt4tz_-Fd5D~72G7_1v!&> zF8I!jkusZkIk&*8@M!nk_@AK|NX?9vMcd%*_`qx z%O1q#Qs+;RQ#|=&Gp5QU%}!_Jzmf5lOec-e_?R{82`%TtF|u5=70`xZY*N$$a8yaU1xHjCpbs^F82Q8S`Zn zy+n%^ox$H`#LE)qe&8Q67RUDd4334R8go_qa!Lybwl;O|o{^P(WG7@Ef<`v-6 z8A&poc@y|z#v+-|d;t7+MzY+*d>(9ME|x8Z>h>($N7T+tkwci9fg5BlkrmA9zNkrN zs+>7Y=XV7+%S@AH%uj*u&PcU6p(*czR|f-wh5-%X8~HfP*~To#Lz9cz=pl@{8aB zsjJ=iRPfA9mrZp%&h_w2#1k^}{rP4bae<$MmV&p&7rML(yvf5G!6}(;+*GfZGpg~* z%p!lixgGhdJ^U@W*uw|Fu_?uFzT)Yb#WLwdwZF=xe*U*cW_kE<{92js;osxe$r2A= zjbATIJzQ(S23h9ekOd#g!yfLqV52+{WrnV-oyqp1Hty`Hwq1xs_S3za4T1vtEBY-F-LJj?MjwEw=6*Ep`%&n_7-T8%&2`5W=F%v~~=xI9p=r`@tX$DOu9?9bdSLpiS3 z_a51bSs!nEWLwU^1^H!}dt_JQSxz(X;mogP1jp|M9|!l>EINQ=Q@)Ych|8s3|KG@w zFRSrwr|Z|;%re<_jAnhjd@E0mRa`FhdjC$I_3+Bfy)s~&j;r;$Gk&iOCN7oT(ciC` z`(#(1Th7CG4p#F^@^_7$HM^`=i%v@2V^>Nw1`Lk+{}Y=;;TAeA74Mp zC}w?p{U{d@&lEYx7g>j7iHC2$U|<@(oDd;a_TqjD2*f>?|C##u+@Zsu=@ zkIBQt8QF-d>OP!GSK zbXtaacvaG$GTg&^lFrEp51&uEAp3i`!J%;^dC9S!>=s5BByvbb@MzC%!$=GLCt8Z=z#Vc=%*u4dZf^`dWtbx|*LDrvmdEn0BKP zOgz)M4h{mVsJcH>>nk+tCYK)t-;-RY3U^AbYc!&I|Ng0Gv|v{GJ(F)S+A^#5QWNSM zT|N0`QUfE>lRqT+R%4JSzaXKJG18NNYf@ulyeI$l6PyXi#O^rF8{QHwaj3iI~ zoa8%M*pU}c6^W=|7YH1wyzZ1)ls- zi@O-Y|>;HBbI8i=Qx@33`6je6~-FH0m;|`P{jvm(i42&3~Pg-bO1={>a2WMn_Nn z)kS@c9-jQ}DNh-FJo!n9{f!~S{^N6ifk))De^r0m69*f+J-jz@h;hKfCljAHPBN?U zbV?p(ob~WM$-|A%iK@Nh@+LgT3e9@K2qV__D{%=UjBw&;@fhN#Ge;V6#HB)C4_-8m zG3)EWOGevCs=e((UvEYk>xmP@GpKKqHQFd+evw&a`}p;J2gEgRm+v6{P}UfiXM&%| zdd=kp;GtP>GVA&2kTuzjtNNF+rn;=_@z)cmKiqd9J}GNfwfY!0uIk^(n&YynpO-b? zW!-;rwfe;<&vaSUug}V{ol9j7ngPYX_r-f zk7fU1FD&!<{NvO8*Jk$b{~O%6s(*Kx`WXqmJ-WW3%c_3SvS!ul zo4avUzjRp(msS0SW$JG?==OB~ovYP%apS6f@3L+#>-r~LR`nIjo~~9u$c?M|i_6qs zbf_GE?d31JtowhXTKxn!uIleyKFMX(f9>T_F01;U%jZ?ApYO(1ec$B^Tvqk3EKhe? z_rI!I{c1O^>f@IexUB0xa#_{qFaNSy{SG&->eny-%4Jpm-E#F;6}@o zOP5vu53NvtiJ-E6=8DIv)knB-RUfxP{Vs^g{tH(;;BhPt6%5FRekSl^}8u5$KNdb3zt>>#Oxme zDkiB6J^!&O2Lb}#Bz95}4@^4{P>XpbI0#&yI9e2gV^a0y4iJ;6KjMDzM*?awe}nkg_@4smGam#m%RU+q>fw*G zj|GGg&!F~$(tZx;sN>w?n3-*z(l*MR!O(c%KfTM?HE{eIc60ey(K)zI&k{TeWYIELOo>Ky-Tz-SNmi$4`G zky(E}>bHO>X7zs2%=q5};yk=K{*QnZW~)7(FK1T-Z1S*Jc{(6?s-92veo=#!e+D#S zu8aITz%7{7`w^{Io(<^e;VvuB1@!Q6pOqH^`g?fj%1Z&mJpB5~%K_s({NBnd0nN1{>yW#vs~6mhg@f_Q97U9*JP|Ne4avy?cQ z-aj@!sB4xntMT0V!7b)74|n^Zp?TJmKjeek%xj+bv=5q^wcb|aNv8LklRmiJY~I=kznfH1qo}Pnms)lZDzJQ8`bU<2)RZ zI>1cg`opN-k}=TC=J*-#{G6xFt;~OcGjpCXPcfSv@%~uOvu2MNJ)TCyL(MGa`@x^* zj4+$d*5m62-kbB1sR-xKApJZ|{m!FGZm`m2vmf#kGDn#aRIjf`2XjW7S;RA(A&8&M z8EfV;>-NT)#l+E$em*zW+{E#5$p15EoLQ=wKYuXJtYFsfzm7BO&Qaru7VjYc3i2a~ zV?-=CAQyid=Y16~mwJ4!nMrXvKN0bu-0^0|d5RN6Hn?u?>*jdkXt4p@H1`ej6!8pE z25y-<(F~if@@I%+#BZ7-nJ<9v&z)kX5GM%r{%^P3sb(>=djGdu?pyx(qvtn|<-Toh zqIj|}JK=nlI?cSyToarC9v`pzOBS`k{c_(iJ1)>%A3QWS%G~7Pk-5?4xC9l)=aUd0 zmpj8uA=dk2Lhekn#X=R2aatk1F@BaAMjY*ggD2$9GQ)LTM1rU0#+XxxlZoF2CnZrm zU7ure=a|{V~BBGjNrK5o+LA?O8z3VqDp?Ud68J(zbwm5Hba-F_B9vgE-}MByeW678L8RXh4Gc< zW}5wp6U6u6ufR#f`twTrbC;W2iMP{F?e5RbHjfeO@gB|nz`RVX>&tU<%vPzY{{(To z6J|L#*BnATgLrFvo;i-#-+rDsh4arK|8(wZGfwC8{a1mRM4afz2k?3-x4=BiTn~H| ze3Cf?Eb3g&yjc3z4Nvp2qwYa}x7m=6vQ0 z%%#lEgL*uNnVT?QWPX^rR=OVVbIhU4Z!(87&tdM*oW?wkc|G$?<}aDknGZ3qXa0+M zH*>vkJ>HYd_c32%?!{bpsUGj^%&nLgG526DW*)-4lX)WZappMY)6Ch-_CtC+o0wZM z?_=)4T){kuIUqxiZ#;7&X7xEIwLaQ1XE8@IZ(<(Fe4Ke2^A+YK=D^Ony?o~S%%#kC zGaqK|%6yUeDdt+4dc3bPhceG+4rk71?$7)s^El>{%rlw)Wlm=f?V`uKp1B9}Zssw} zCz+#|uQBH_*Ui%7-NLL0*K7KDk(!uaFW1j2c3Hh%X_2?qW%_(u-a41n>x)P7)bBJ@ z|F)Zod*_w7tnU8@=Y8U`x_=lo!rSg--VT|XMysf6QOtZSaDUM)P*S87aY-V+R zo0<2SIdZwqSJ$_Myi&8w!;AC2Fo&$r@e^o2EALCQgjk;s*XHdocM$8JXQ`RD(~QVg z`I_tJ?J}=1>+RoTMy=Fwz5QRCwLZ|Sx4+C>;NjkRd(EynIdvgb~-u?q-|6CPM z5T`M|&3T8+6y|@xWqF6q^~`ox{5HtEpUi6>K9hIM?2)JI>me>y{cH|m4guS%PM9Uk z?ZEX`{bDv+g*^247`V}@a&t8E5Q?8NOPI%l*QNhv)?JNsO5* z6*zQNh3OO^9r+u;tyY~jdoX_iZnNr)IgZ%>e&L_yM2>$?`G1d+ ze}46xna->~?|RP6XV#y0J!fuW*00CUn>&cNJNomw=gk8g*PqutZ=T|~{ygCY^D?vk zJmCe?Da7W8?T-FD;YG7Pv;I8cMY9F7eqM0N?5bJl&qH1^`w;8xnYHwixyi$wSN&yX z6{+^i1J86-_g9zAeCB__15z)W>xrYCpl<5(RhP}J9B%}Ebk!BJRI_Xejs%x^xc{oF z<}qgV{=o26f14E^9<}P4*`k>Gm+esh+NyudKE%gmckop3AY%Xfz5kdc#EC-v{o2^n zfB1ObX6yT}f6RRppW#eFd_d~I=3(Y};NIX<#L4t|%jv7Go55>T|C-}g39BP@6H z6{`%Z53&FA*gk6z@eHR3@eQkd)-dMH;4R>Bn(2Pzt5pG3iifwXvaDR-)DhnKi9(RpPa*eZ>CHy9HUNh@*wN zUyMzuZAGqA{UwN982`~#wXH$Ky8oEm8>|Dw{?Eq+Tc?=y{pO8U1u@Q_s4ri2lNGUE zwWoPtW*uui^C^ngwSqV3xZ;7C^{i>kXThge-E8GE8xO0`x7}ii4|V>qv zH?@v27k~$5-fo>@-a>qbb(Z;C;!x`{^HJhvme{Da2j^RGVs3NGAx?J8?s)%j^_^BQ z^NrvJ;HJcSf5fKTX@zSRw;|pb@j;rM+riCOx3oqxw*$YC(b5{v+#Ng?JdLWQK--VDsDlH;|<&k+=JuKV0?qXbBL3L`ke9`t6N)5KT-Am`MBR| zL7Xhq^XCPt@3+D{oV>cNrLxuYfY(sJe6{-B#hUf!gDUwQ#G9m5@;q=%uFK|9aBNC@ zf4!-Gt5DABO3p>RV0A~UBlYh;o*%RZ5tmCHf6xlvr20<~>yiJ->dsbuV*mDZwwikQ zGsOFNc=zgVR-?_TUgsZN{fHGwtlz)=WA)?KAW!_S)lXRCiKE3%^cR%h%i7KS9k>Db zB-g9=i<{&>Xx)kEb!V~Ni+*9Lda zA8ds&*JU0?yq!K@T^c{w%4OC+&-<)Zs`H%&$nTy1taX^V8S!)0MdBIae(*E-L#@cq zRev++dCsu>7px(~xPL+X#rzT0Xy#{#M_SXE#}L10&19ZT{E~nD1kC_%iXUagQM^3R z&q>5FPBP+UnWL;MV*mALw7=fWLwrpBXluQ$mzu{}WxAeU50AGFa9o`)Cg+d0jxm3X z`q-2=-1fGDOXJ_LPH|jakKf6kV4c+*xD)ZfvpKk47egV88Kgz%T<~Z=C{AibFfVbtp=W+t^Oqa93 zd-7wfGTpz__3vBbO4WQHm&KGn*P23HDs_8t)-;Y^qxgJl4##!-3#>Sf_k2{fztBqI zxbAO}l}(%=79)NzKgDYGh3d~gpQ-Nn)b^jqujFjxpUGcpwWa(RX9GAeZMhY}{5d!X zJcRih@YeVh)=1_b!P7HWSmTM0%U{4J^0Tct=H`#7_H(ST?P@&by#Dj8A;kXkX|XlZ z!xM6gt%;hQNvPi#zs8zI9PP{oPsm+k&GF>NrmVG+JRFp^*2?DkCCCpEZp^8?1|5Ux57Ot3R}^as5W{{_GDe=S#Icdi>KfH(K>Q{C9qd)mF3f z8S=Nre`JLdM>{*g(=$J^B8dI-^|955*gqeetwA21p1Ii?t=akZG1cCu)_CTl;OUv4 zTGNRA?QOB*bezsFvfy(oyGp#&QlnR|zt#PrUGSw;rBfwL{0nSBUp4sIc08 zP2=bHd(K!xh+~{1i1#ZvV~u3~13VBsp4i{spH|d2s{XjVg7}#Hi&imlqKN2;pYJKS zY_%;@asU3lYW48&h=QxuMB;M#xvN(S{9jM#Qy734SNc4v>1o+PtUAjS1`W`j!mg)2Y*NNXc33{q=H~OU+44vz)iMl&3}BR7u;m8r?_5U=>>J|tyS`G zws#QwkN=zPi&f$c>}wvD1r6-FdsX`}P8RwPOuN-?#GDTf0=Hl;0dI|OWQP&s`~{w# z*~kv(xV|1VwtH|~Uk@7FeRQ0*XL{ys_At)>x2tNei9MS0)$@w!nN94O9RCsRuPkV4 z$8r1|cr`eMSYOYkXNK6NI-lBKTX4JGYMw|($3P% z_bV;!QjY8UmAmXy%xe8l&cEBfOstQ$?+fm+o&9S2{P&;t+QFLne0Q(AUewR0j#zqs z6+Ti>l}{A3trD*&Xjg?V6?CY=vaq9{gPz3p1*SdV^5AMbx*E>_2UX^q8Q|c;2mSTt zI&f@CC2yOf+<4F| zaFB-=QT!pdy=CB=3tbK>2H#fL*^O@jx2)u#-QcjoF8+AXesKFrHtGJq&c>hmRCIX~%i^L_u%6*uxbCeeAm5)B2UF{!&3dJJiFn@F{x`v0m?Q z6%O$C&+|3VKB@Bq^?VJqD~O|=Rv6z~g#+!&+@7Alr|phEsQ$J~J%5AjbmDTU=WDRN zn_182vv%+Sov-I_h`pY;T(^`PD!J%1zYNDq%K9BGgHQOEWCy=1Q^ z_P^eJ$!>Ls`V;!~?kGE-cqTvZ8)aWRtl|lx9kwsJaFjj%2(=fekH44gIN}(mJK{lU zFWb2s*T>@+yNp>Mk7Miu%=&m7W1nR1jrzc}v3B-P)V_QU9Gf!MKEOPRdHpdRe}g&Y zxaPN*vzX^F=Q8W#eXL!~tdIAx_Eu(nypOfZh-Zpq)IU`?*6#STYJaB41;-V>Vh>~9 z0A5r$-k!<)C3tD!8}?S>^1y@O?7|85HRdzK6YY*CXuN?|FI-OwC)pF38xp^17c=Yg z&1AcTIL2v>cu?A8yOiVl{4>Qq%&gBpQ|yz>`usD+KC4;k^UqZKGP6GaOtqbpdj9nJ zXR2MFc&6xr{?-;wwMQ}!1bVn_U;#uqJqK>yK2AKRCi&wxXUHrb6TR6Ie*-dG<+TkJ^YI^e}cpW9)lb$v7N z@}g3E^ckK1Ah@{bOI!a1-vrSgys>D9t^bB?f*1uZE!t%t_*3V<1OB>bkKN*|=0xy; zqHpYp=QOV--fKsk*SrmUs^|y%8uO1}U-2P3;DU~y1qT-&wreq)eQf|aM1Y569=H1tD_&)5;nH}%C|X(;~F9;BIHkDj$7{!`iB7P+IbedxcH)-&hatejN(gnHpi!ev%$q2p95Z9{FhzAarJv5)__Yno&_!` z{*S$zc{BJ^@B!u@!Cw?#wvREN2JZq_FpGX_d{^vRmn*mLyW%T$f6e?niXx1fIcYT=CMcr)<+Y~f7f`2FBB#nPF{@gCqy-~}8X0RE@ga8fuv1{|=)aI!hB zo+s2=<8$&kuAV2<2bXYMk3YaUpyOgX>YJ?zaB5wt+@9DJ%W3N2ur-!5k=Xxw#BrwR zxHBL1TjL!ki8&Lz5nRk%4DPhXaY~4zoz37b;8Ko%1rAILbapcz1D6#9Iu*=I9@FuQ z%=&pA{ubj^8n5#^)z@$w=76Wv^}B{sms!tuO{WoYw4>*{rqhDsw;})0HMN{Dj)#H2 zFR0~&bNpd&Nxqt{^wiuoRn+2y~W7ST+`6WWnKo(TXU;(m^q)?Yvf$^ z@WwTbomT&-djIp-CQj(Ty1f$Q?^tt()0X*j@ONuMozcvDsJ&*+Ob;Jh)7&XxK8X0a zH7%SS%)fyDUenTPdR?`@U7n};!^zCKK%Z_wf8u!ghYO{s0)rw zx!0LU?0>#^uQQX_e}1~xiSuySntPoT&5k;LLe_>kS-~);!=ihHAeQe-ch@|AWqWV!eF}*M>VO>Q5@;^}oJ-)Fv&Sj44`?v0nP=DSY z>q);~-NUI%jNhk-?MYkP!wF^10_UxL#0evg7Wv@KYaes^aJ&S(du@a>jN_%?BZWPk zY0PEd@WLmYILiPH8wf&tG zYERF1z`B7>v1aEi+HaEfj8mffcgz7;1-Z{Sr5tYvZjv_G+0F6$C_dOZpyTwsC}7>Q z&RNda?LF^Y=6v1W^G<-J<}b$4?G1Hm5l1_^y`fHhj`u+Ofoa2>rp&#;L14A@l|L^x zoLT?8T+MYOTvk6XR%hLdF6*Bcdzo0x-(a*CvTlsaFMwOD8(W3%Tc`eJt@^j!RQKzf z@?UjY>G9C^c3StE6He@Z{x#m|s+pgEjdzA{TtEMM-5JlUpMSmKn1slt>!CPya(>P?oB70IUYQC-DGD0^D^*=byJ)&<|6Pb>!v!_i2dh}x13;y z=3i_@eA2qNoJbGPSogLwhxtpy7p$A+?Dp`=b?-XCfx2GBKUx>%H1hDSb?-SXnD-!l zc->6r7;&`NOZl^$%ft!d82H4x*-k(W)gC^7LOjQvZ?#^3Tlc;bOmRK_bL(QAj>P); z@Netlom}E*`n*uh^$Bjh`uUb7X^DOgQtzjn{6FlSeS8$vx%kg+5}nzd*_~OVqDDXo z5CjD^Dr&S*QKO<#c`<6xs93Q@ML|Uy3(**3!SZ6H5wJlUYpMZJ69^$dfFV_F#XcYD5q z^8TK@4dt@G>oLvnJO0V@#mBUCWb)^b+Q+m^NzC^n9@i|xDQ~Zb?ms-P^=GF06OU^Z%yj?ZacwCx-Jf_|t7fMA8;@%d;#hgp z%|!bp%woTmS?o75i~TUN^ry$Q)+BBt)=rrKt)2O7;1huNAQx*F0cQhuCgfkJ zset1j+0U+BsAVBj{LifYrB>kL^J|~b<{S-*$gi!f(R!HoBQMh$L!|!|@Yverno1|uu7v#; zwJ&O;m=8yOS*v9}2DwgKaTw_z2Yh?&DsA-P#3O<4t8LIKm@fb>scqD9`jC7)>aWu} znI|D{&~lF;`E=y4wx4+>@)iv~feH0ni0`M)scq4Ekc-tLAb+fOtG2JNBcHDp0e`Uk zcUqr*WbXywtlC$!4rKWLAn;P)ZssWPbG5(MwEmPoJs++&YG2jTiTQfyHEk5~ZqEpi zfA!L9@B@X8zVx3RS~;?;cXnt?UGkN+JG3@pzP@-EWZ!zM{D2GI$2%{ z{0eXn%NGE@Ub{<6Jr?Vy{R+4p*g`JVo&$crwq5JP@&@3Kfip>t^Zo3Kx3z2+ch|nH zt#I*y+IO^8gnW{y@t^E>-6t@70Q! z#{g&7eW*3M_y=`=)Y>?I0mv__`&jEgknBwXzPhec%R(+yMZh=IeWn#LKLmVR-Ji8` zW@mrseRY4)YM7l*qnFfuskJdX-{qTK_mwtg5XMV6-{mW>`>R&Q+={I9F!Ni$m31k4 z>R{6U0JysDAblKjCveX4gY`+s&FY}5p?}tC`eb75FkpSLPoKi_fxxTkeEL-6Vl@)D zX|7+dN1m_pfY;Ue^)}|KfWvjBJ~GQGAD)*2Z>7B?6RTFSW-6499i~mrUuICPM>_3L`uDZkYeCDm7|JS<1^(n{;)$70quRKD} zJkHUduRZ`yUzwrLV*U$ozmwJSGf3$l>_t@E=>;s$0R4W8kJl%$d@yin_3`>tmY)QiReORygXOuvC3Pq0B`m)T zIDh4EeGbd72EG=!g5^H~))$Y^m$Lk)z$S1F$<;jIn^vBvPZ@^(t0#e{tUO8YVSX0) zu9eyP&J!Ftyw49jd*!Km{&3O{1OIyEnfi%=71YdiZ4YkLREB^j74( zp2I=Eb>(@w%68;3f1a-cz+bc359Iw8$9YH+pAEcfZd^|LQDe;eN#k6b0rTg|3uE># zh5Wl#=Ea!yuf{m-29TFj#@L*m$Z2yE*}Na-$9{|B`n2CQ#%a#4U(T+$NH?&)v>w>K z@*;hti~qFpQoRtlSiK1L4_-A+pMzYg{+t2td#}1O<}bw~KgJY~IFrBmdIjd+t5bdR z^`*=d-+aBAnd+afuORkN{qyxEW~y(#-p=||-+X-!Gu1a=?_{R-xJvKl{ItLKDn0cS zr@i-js6DRHEoO>Of!@vR{7UJL>H@A`IIRWZF}vbgJ>yg-e~D@Xxx-D!#p+#<_g!_Z z#3Su9;K8e|i?KElp69N*KE{KAXII>)cVPa#9@4*2?`9_boAe%L(!W_(r#a=z^TC_- z3}$*hI9VTtEbD{GdN#83@5y=@GPVEdt0wD9U7WY-R((6^tC8T}b*rZ99VEwJO`TnF zm!36}>VE;qORMkFCnGm&)F1BFr!rH2xLcpaO#R{RSp6qL{+m|Cc{=dzt7hosWFN=t zy{qoi_am2T_k(=as-Nmz%w_LJi&s6MhnaT(SFd^~X75Abx>aTRh#V(>vHA*l%c?p03S^4+8>{B& z5#+F<@*mSXnJIs{UUC-Y_gxFm16Eb&^~^^A*R5KlXP-^-(}6!<^((!G`66IX{Zo1) z^R*~{S|9cU(w~a_j9!im?^gk9_0@Vc^OMNW#p3V8BfY*xZ$vrye{B5=dK>ayjMvcm z7j>0O_BTQPGwN&gG0Z!F&#AA|Q_ms!`zT+j7ch4LUtGT`R^9>N3H7UEY+nc0+x2T= zd^~VT<@y-^0Qm0u^?C=|BmYY3H|W~API-GhWN))xz)beG=<}G#-d4Sene1)VJCKXj z^%oL2pwUXCpN|9yQ4Gxh)X^=jr{ zLjJew_vrP^&i(v-z!BzOgZy*goyg6e<-p$n8y8Uh!^j`#W0+q@-m8~0??L`h-^u(r zaN6p9dc}p5{{V1s^&fRBk60^&_Yqd_=k^Szg^>TGPe*x)8U#FO^=JA{=97VsU;VkB zeX)~&zRCrDtojQ*2btnOt@7iCLH@N~h1{&Dem#0EaENqNXAri1oimfPb)B`La;H*F)^_RdfEwL7unT>l-ne{Cx`eiq)yU zBIZ@Vg{u$t4ZD=&QQ$jQ`+befJAq492YsE)p8-F%`Ve2oWu*TNaOLX5e0i4>A96i> z|7rCRzA4Q8foJ~eDBn)zlY#42XZS{pA^nShH>^I|H)O zA=&I-d;i?IV3&KMnA8A}>_az+T(x0ltDCI^|LO>{&g~H-%XHDail0dXR5A zvHB(OpMb;2ay}a5OTEI$U!uJL@{-CyzI5g=b0#sC|25>#L8kdBts%J!i()NqQg3|acuX})q~>0cv#5tsbLhBJK~ z3G%ajqsEavb%S&MKgUcZo~O8cJ8-c-jEk#=YDHp!=*|2 zFN?{Y_oHrU7!zYB|6L7N#MsIIP{V|z{8z^0PX1psToq%=e@%>?{EHf{^R2-8P<(#f zQ0Qwymh;;UzJ1Jee!J0^J)Yu0=ck)}Rmc+GANy7yOMHLg+lMUcpWA#r%(VWQ>QfUO zdwV^!{<+haiY)#0PG1%?_19^>k;qiu?22i=Tx6P0mo-fDO(Hq3C+_l1VW#=?F5e8& z*G5A7t!%j4SHV0MxDmLXSltG^p#C1;cIIN>Y1K1)`(_<{eSNMX`$q%& z*OdC&na>73e9a@itgER##sX)qnd2)$E>V+#hpu_lSHk=NaQ2#C_{y0V0XH_x^>uUp zFtD|3o^QrARNi~QXRev=o5%bya=C8_^8w(?*8I}9g89fvu%2A=gl|Rxg#0UCe`IRkWet_SJYux~RSmsYt7TX zQH7Mh2KbRRRlYsQu-*e+Q2!gBb-g1edzEXR_4P-V{{35D9y9gt=X@2&#ftj(a-VjC zlYhS23HG%57jgVJ&pSQ^u3qzU64&`MP@nqa?21*sOk^tmr8TR3^N^br2D|2o&o*t#-M*cGTgrbPFWlD51Wql;p>;6e;jhNqU$Hi zpMIAkFI7>{pH?06XCj9cjgLe8CCD;94)^EZ?dZe%rJ%2`J<`8~c|Y(i4H^DgX8+9& z_x1NMJJ&D2Xz1^^?!of#{GYz|Sbrw6oX-dP!8rUin{<6RB*rwK$N4z0|9Zo5B2PO5 z_?WecJap}_nEVou4_!Mv#)ZHm*PayP2T^`%jDL%KdW?4<=lDxp{=@w)f4PeAt6 z3go>y`Jd~rXD0u1{b6SE{~UiSv4{LW$KUSap=;0c?_(zaFYphW;lyvRhy1+b@8pPxGUOVmjqzkcnt{-w;91K+Wx&_8mfBM*Ci1pJe=*T?J?0nb=F z$zOr;y&k&WpX^_PO#QoT?T`I!lwVQ#xA{AerT^aUpF9igE3$uwe-<;@pYB)1RKLfd zyhUqg_=i0}{5){g+WY)9%v*r(SaZKW%={Yi&-_^>q~8Vn;@X-1jE9K(+~S-+i~S>z z$=^3tJ>btnmh;U+{;A9~o=W|loS&}mf9{`DO7;eTz4dD!^=CXxJQCPbKhHmmc_MJ# zs`>tMX1d?-xIe;7_ZNQY&n=_;bUs_;AIu zKc*Z$cijqqIr4n91UU1#7ya9b`Tp@svGGjjpS*5OjMIMNaAS-QL0;=GqVjNly?xy}|4y=}D1VcGA2a3O;MX3d`ceLk z{yxZZKHcOWhP)8JXYs>lH~B}qc*eT0zmVB^A8+EbVgFQQir@X~Hv6kwJZD|hzXG|L z-+yTJXa9oAclPUq=eGL0ktzSOhHd_gxsF`U->>+`AeX9Rp}rOCe(&Eu&yj~c&iVV- z>t6GhEFgBy-!H6t-JkWi!|;1uX^pI$-s9S*JE>(6v?-}Qg+XS?{^hL8LO%%6jP*7{HU zlU;n``c8ilbJ`R~{<*)*#b>Smv%l8GC$8`I?`O6_|HAcO`};gW{`3c)u>OEQmw6cQ z4ePze7#H8NKE;^j;?jy#ql)=l(4V?K)#xDBt^uC0KF!$2JO%h?z@5zZ0G9xFGd~Qx zYHpg*e-Zkll>`4A64lbGKJeq#N>Mmh6-;O<7vs6uY`dgEhwl{|xyUr0yiMswzKaiO>SOFD)@VJ_*XTl~{q|W+eT}T8j=lNnk5Jwb&u1Fh z$Yd|FF4M?G4tu@<`45@~8Xd?qz9z35Y#2{D`AfB9Z-f0IO<6`du^It<74R_Tvw&}C z8e)uNz8Dz3e`6FPKd4Or))yaVOeV(lYxSDr4C86EkM;d=(=a20Slxj6PcRByJgw;j zV}^_GYZ`9MbLF4B?nGmWi)UAyWPtPV*KE!Jdk;0m`9a`Sb7P$5%-1gcv;|oHNk$dg zqwhb>hWs7K523#co3f2=6t7jlzX8rhF4lertS>&*C_vt;lRu{# zlbFe$Q;n&}%^oWMRHL4m{5#dyk4)_c-^($&TwDX?jjM9X7yD-z`OIYh45N@3*MGAs z&M-QVOVx+q-?!g$8-pXD;s{j=3g=f>E%f3>mcycj$8 zuYT8bfl-L|7AoKEaDCKtq0!2G4Dg3ddBz?W|F!87qX&7ua^#0>xXhUTtmEH&bt>?X z4L>wmna2X3v|+4aRFixX@EIG%8R@@uc%hmNe94Ax{|BV(&VmsK#yYI->%a>^-od&{)b$_6m(^WU*IhG*Nz@KMIWqGWFLo$iEYr`t#fk z*BhNKUbJD7VJvgXC;4+5ZZS%bOL>02)tG}!{k?v}twue|o#(sjfSZ`LsW3kRN06oe z-)eLs!}|x&pH|Ji)lkcw@}$4sYG}yP|8F(&nW_KZYRp0|R!4&UY1OwH^O&=Mw{E!2 zNPhw2r|5ikr;*8g3dj#%HO&}@T&&Im-nC)6u^$=UF9Lpl!(B!f^UcV28$Fbt<9Uyf zx&rMZ@858bk>TPmH~iGdMyB~!-#E+2bIFg|_>fVEyinZ-_6Kf!*x1MX1n}`2A2H^= z=-7w-X}}Yooo&=2!+sc)&oN3~a^&!P?a03{3STDuL+*h0kvGmWtXhXSAkpI$+3ypRcpWCp=*w1_>%AYj)*E#k}mBZ&YJY|eRmiDVM@|dZ8 ztBibNo^Ps*Ff+|>RYn(bDYsXZk-8G?V|>T2d&Wpdmi7B@jBI48-?Zv#BiF^Zulubr zhVt|Ny6262Vzf7{`gvorizjZZF=in@s9gf}f#0(<%9x$sHQQdf+$cwGRJDc+MdzGO^iIbE;R88t5X?HgAa;RN|=qthk7cjFpEtEckF zexuQcnfzI6WHFOJ>x>b|RDNmodZUQtbUo5!%u2|=!GNE%bk%30v4ok*+hkNBlf79R z!$v#HsXom{_Ud?h&E6O>@?2cLvBj8-EbX_=SlZy|&sR4=d@DD;V)R)P&kx^=F|v?F z|23l>xmeu|`qr`?#>hrTANG3!PhR)BQH4zYJ-6`q8+w$8D?P`w29 zUftMXWV(3Q#@)swWU>FAF`b$0zi*TD_8L>y$K$zo<36Lz z#hn{JGOCd!KA#wEE_u(!PGg^oQ#XBPs3ymr=yw@e$W;Ec>Mx9JmQ(-wi;>4n{j=LB zV5a(fX-s9N`g~=SAd|hormu~17ay_duST_tGdCSD>Ro)&Ca<}ZSX&42)fcCk9n8N2 zHi7pei~k3ig&X4WiB@W65wgg2v&$vV-Q+iojqduJ<_Ki+ch<(BndjmQH`(Uo1pRb# ze*zz7_PF$CSM)JcH#zoYzV2fh$l^~QGXq)9??;+h$W;FLbw`>b6ZDTV^IYDhYr&aeirz1=MJI0*BOzm~7S;S23HNY%!<)2-VY0h!+_;s1)5*I(WaiCel z`Kf;nGBY>3>ziecK$h~e%v@$Fe~3ATnaV%T%tw}Z3^gYqQ#>{`3^j{bpUOMl>~zVe zRS!4eRW?_D9${u8%lhjibL19`53lD=GRGm)`m12m$z}mFt-nq-Cn1YJC!0k{yq)yb zJJ26*fczsPj{W)SPsrJ30rEoSxfAZ^Z92s)aq;v`rAdBdjj%>G+R?p%L|H=S=*AkSBh{%eu-%zKd3c>Twgre1R?xwI`{+N*%hPBVJP40aqc(m-!$5s zhb+&ZFEu-u>G|_z=A>9y%=R{_pYyw(@Ovg^!4BdM;7tvs<}75o|2Q^WW_G>q$itpLgZ%pN95eR~ z(s!PB&j`;qCnJXyJr94(oI$LA1^P{M%gtHL#&oCumYXHS_&l;WTyD;Jlk6W0@+IL4 zvyC|q_?hq%X5=j@uMjvA{*~E=JYP)**6NpiK9yU@OJ?x&6o z|JF3#M%Ku`WoA0^e6SW*95ZKfkrdBejEW`ATF&pX0v%`)U-6#@G@!t2c?q_18>-e8V;*D0@5 z{SkSSShJ5V3T-|UKrnSm_xb;QgH^4r^yXJh z<9+l;yAoJm{HmFbT&&#$Yy$UZdH8ym6)RsevsgY2{?Bw5J7O=bu^S^FRV);v$|8;XJGPQ@N{tdIw9>-sq&vu$c$fY=c9=&;| zS%OUS=K$b&ET`|ey=hhuWBiZX{H7U3mgmLqn)Q1rK21>m4>rGVwlO=;qb}Y2f!X$< zBQH_T@7!L$`448FeWd>}@YK!w%}(U`%73?WKKzr}jV$fcX&Qe(eJuapRh?!Q@?HJBf%l91rYPPey8RT=8ePixn{sy>onF{PDeg3|qC(uK3{nUG$czOcr6RaPP zS5F{4iF1iH+F$Dl~j&9Zit;n*!-U_ra)BbuZ(9TTz>#YC;3;x2X^uB@>=tTKKbvM-a zhE1UVC#Sv()m-3Ni|jyZr@Q{4fPpOYRVa|@lFzIR1xC2IZ}^Zv4l?<_qx#T59`Zu9 z2<-3Pe0ZRcxd!;7%|`?}k>{&M;4d~G6=?g^DSy6-0(+W|4)icP``^CU+&_@@8OnLS zJ2sGuOyk3BJ~mMQIr^`)LH@&=2Lzg!-vxfZc0gb|vHBdiKgc_nQ)f8W_nCoC<`D4P z%LWFFF2|nq??Hj3%+$XJ2edzvzgL~&tS1KtGLU8b4+&(s*jzj$kmuq-&Bp}_Ts*va zcpyxy4S@154WANdWj-1B%;r-9ZN!T91D+D-X3hb5SHr0R?F+{r_`-aaA z)Vuhb`cZ*S7tgLZKcITBK4^bO_4$D+qxpXkCs{$J5w?J4kgM)O61 zLgwdyzp1|{FopSL;GZ>L9GK4B1Y80qNHpqyF159Z6}(Saq* z#{(|}u429b_$lBpu^Iz_c; z0Vlu2|FS?CGL4UCn=cDAAs4G+w0C)6yGuU1;_^TTG4Id4Jg|?M_Cs9`^P3m!mukO+ z{L7oi1T^GgMf+{X1hSZEzwH%)64F=IpkLcOE>P{_rsfHOh>KrozACWO#cwqi1opXj zUvpug$HiYXPYOgljz7g}3)nw+%PoO)FZ!q61%9P@N+8q4wavE&@?6~1d`Doii}y88 z4-~oht>zhlIWGR9xhT+{LiP{-Da?0UiUVCP?!V=MfRP%PAGhVfz%Un|w&kHfp^J03 zJRF$r;)}OD5-4%;m0RWn%3VBZ%iKUl8rdHL<<~Yp78vc~rsl^3MK0dgToEXD@$@ZA z0@W@q+45AN$;GcUKNDzo@mtN+fi4$+(OeTS4vLpQf6I%370AVE6!=rMWmP~O?8r;h zt-wRqHUuo>QswNI>%V1fV1$d0+p;b&+Qk=dX$lm$xOU5?z!Vp6+Oj1u%f-1{S_0)R zzH&=zV5y5IZFwcI!o{y_c`YzTbNqwvIfH+@x9kiUI`K2Wom<)iV~|S}?caMRP{>UC z^>zoQGt+*(4+163w7+j(pd6XT+kq_~1*%BS^V9x7EAn0sy$|_Gpq-iChwKdOC+7Dx zKMnM-oZgT8G+_7~fA{M2{^qBF3}$-&@6*6AW?G+o8pvU$_c1>WjAo|mg--(o#QeVJ zr-3Ofr}fOIfg+aE`=6f%=CGXJ|NJztgqhy|{4`L*`ZV8u7TAs~^HEnI)$jPfP=z7h z4=?HpSj?{g9~9{d3?s(<4QAxefox=1-~2hyiCnC9g8nP({u0m($6na;8F0VF-GQmd z#qjWzxCXgY9SwZp^6tPS)6p+g*(m=quoSsiT?qX4vM&QY$R%nbaB1~dfj$9@w`U6Q zA(5{G{h6tLJ%LQ-`%wRzKp`^pFW}h~2Lh=fcgglwaj7QBO@xdStR$Y7#C_~U{Wr9u>X<7^!<4wn1|f#ITrFyh#0{+EFX7~lRpr& zj&k&yJCEqf8h0%hX#9?o$o0<`}|?S)T7aVzFz7RG>}VGE|h;`q))Jj zZ5`yT>O(r zMsPc^mIvkE9qAX`$^1j$BH%sDSEIata6j|SDDNNaW_G?W)Nk=ILDko(U#UjF2XRc$ zAjbKzC~|Bt6B*vGfcG_X16b?5iI`Yj$19L@6kK&}HXb>)9BG9b8}<@9~Cfx%AB zPyKOVuscD2U@)s6#+$!~HaM8aO#O9maEyyDjtmaw6YFFzOZt1-gW%62kvKmAJj%sY zN$lv)b;%w5iz7o~_8k3-BgX{`u{`=cy@ipX!O6%pAI`2A8k~yUtf>50cZ@xd7`-X56{EOGI! zNPci0a=BUw`Ss}4!R^R0pIj5%iA?@&h+GrwcJcN|L4rTg$h8T)D{@`1Po~p;V*mPJ zKC;-qAy|mqjK3Eejoc8N?BZRK8-vr4r9E#F`=)cgyl{D(o%5v?{ZX(8_4i^tH$)}} z=eRf;xg}Wc;_Z5ax0$IwtEm)5%{@oUgxOi9O_F!j%{vE+?mpmG|Bd7*C z^{4#1B6kKgWU)UzXu0Ik$n@X{7w?MP6`Y))e@}3#OCF8f6P)4VU6C2Vk_7$xV)3Hi z(}{5!t%u?qhW2lo8|Mh{VbK_4ypN9lRP3c4+0XfXmZAji8@@k*Gov$OybbJSMvD`8 zX!OAZ&W@HQ@Y&Hvgv~dd{<-*3;j}}s{6y{>{zZa3GdeHE`?3552|P4fp1|4BUncO` z(M7`MU$FdN38z_Dej@h`S0>0aqff9*9kl{`b+|6N2?R~?CA5tW;*287r!8! z=EL$6xo>zyf;=<&Qj7;-`Lzi=G`cc@v!kmM`0Qw-uz3=e-z1!tisdJA-|&V6d1iD| zjL*mNHz)AW=#~V|j*k+Jmhw zo>|!*+~?v6(YJ%CgPi$;@=uJu6HG^L&TRvK`YrAdf4M##!9FN2)jk3FP0`)K{>ISyaBmeZy&11~ZM%gRNW_4~^>9Bo}8#4Xeb(XGeop6|-Y6GkS;> zVW#nUsMX=(zTv~HZe|*feXNWj}Y>$7PDhNGn#2tG1GV) zWHq|DZ+NiP#!TaHh}G@lq0ymM#&J}>BhQYWVCA^@?C6PB0kdO2GkS_Oi)sbND;pkOX8M4&(YHJ>{ zjQ6Xpau@dvUt?9cI5RrYTEa}@|2k`_i-$(9x2jy69i3!VyZG$r%~lODxBpM96)dOm z{}Zd$#eKt5ta=w`MsKqknQ1>lbUMi(&m@wKLQFP;7O$7}hV=9v8#<#oFg$Sie~NiFNAVk6N89r}^PgtINf( zezCe;4C@!GhneP!1(q64{e$LdDtaKN{`o-$w zVpzXe8O$_){Mzd8VpzXenJ$L)ihLRXUSDUmlbpxvIxBUA(_VD`ej&Qv%0QO+V}n(LEaQ2zRgWz5 zN3+%C;)&5M)`$}wd!iq;#vqHm7HcUo{65SGXFmCzm2)!92SZ>!xUTwl)@0^WfLBFd zvBJ!G!0V#ht*mU)zY=&$^!L^j=9_`HM_;v85cBi@*Q`clnO|PBT3tLL`kJ-V#WO40 ztbHz?7~NrYA&dWSSm9IL_1k4-oa%7cb1#(tX0+YPMwa$#=lQ?cr1eako%@STbL0FA z$p0?n2V?NpY&!ctKZtXhbASCK;2gBSS0{V#Sfh|j`1dH^vBt2R?7wT}v)s9VIkWOz zYZ7v^PUUr2Q<$l|4r@BGhsx`)B9x!+2fb(QLzZ~HXLY*dJF4HadJ^P&tklz-_>lf* z(LI($jQf|riGE>{<4qwS@JlK7X*Pn5jO0uvQ?`{l>JGKU(!9SBq!C z_nuomvLejR_ngyPKDIhtY_xo0^%;r&sb@g{sFqGE6M3O}5jeBuQ)|-cj(nlo418Vn zXI2q&8}RWhpIa5k5|1uxsf)8)x~zI)?Oo8{Q}u<_#QX=~oR%-F2(otP*1UecVTC zzP4(Zo%<8_)bv=jtnWOpxToeDtC5+m$CVvM-t9?&M^^XOD7&5I^n5|t9mG2Q9=yly zWTxML_t+{2{o&^g9y^tpo;P@GgV;mQ2RwE<%jy0=ik-_gjlv0`>|jkJocSy92pYD}?$z)DpD!G2a0^8@LM@?hj#nEL%H^`lG`IEtZ{u zEdJVdCNlNE1ueEc#l=swgzQEa&#X+hQ_m)Q6rV$FgLx3_k8PTJn4O1QtR8^!o@zPF zE@6HG__r;6?ED`%`HR&Hz%REPX)k4N1YX^8l)Z=fRp6ZEN845|>31OaweykZt51N} zxAcp(XV-DiOIrHJ*t!3@t>u^me!b;byBhQF^^kt1-N;P(1MP^5UvC*?cOc7rk!A05 z@q(5tyBk^JJ;a`Mjyv8%>@sGG*KzhdWbuEf-GMCjhuNJjUeGekR_8kQNItXjc)I{u z$~(cH>f(Zy6YL^pDsQ-5!c6Tm!mdY_@@QV&#XMf z-Z#n%@qypN1MX-!)y_B{nb#Ai**VBm-vuqF*(EN1qGhDr=Hi)^XV@7RIQdE6v+PWJ z3bM@iXW7-n8qFtX*(+F1@jlCLLM~Q60e^nma<-jup<@re2MhdEORimx4DY)DceI>q zcOXl9oM-Ptmi9Q$?qR0(7-egDjy<{`{d&v!c7J5af1#b_;+d5f+SxAd8_u(Hk!k$z zsJ_@9?UK)|9BmgMOaHpmp5o$ymP_sF%v9gY>>^kG1ud7`VHZEqGR987$nlr_n^}2< zo#|rFvaxnHax=$syq!a=$o_bH3^VoL3HBUhiSGnE>te^g#53QXj4biE%ASfW@x02O z!A$YI+Mea&*ITZM%@`vy_flc5Z<~_iTbAM!KT;g@&t91fzul$ic zjJXF`UwpHj&3y2KPX3$iTx9tDIFNtPGTE+n@y9Jw?6%R4J(72|+-hfC>TszRg8WT$ zZ?i`-9}PUS@-{n8K+;>ho| z$1&dpJa+j#b`i0@8Ti8G_u6xqLk~Im@3YI9uLC}KYmpshu5skRUBsTRfsX+0VV+V7 z>(Q#M<=@9Dwudp(`tAWc2YIiD z)^{cLXqMA@uEZ`N#`XFmH4oWSm}$LOY8Nrndaul$!%XYFGJ6TK>@O*^YgkU}y)wIz zSkZc~%x-0UTJQbbZfAX3@BQ4~&rIvRpW8j8&-+V$ZX08;f8q5?cFWK0Ok(Z)GH3lg z#~#Lf8E{U^96K9X=Hof`66WEs{s_;VV|Oysdizm3=Z9|lkJ{siwS2Tc*Dheb3GL6d zCn1adxppfv*`I6ozrwL6->aHuPeG>snB6kZE+N*Yq5TE+9Oehm{sOz4^V58`!0urt z`wQ$bW8L;2vzH)~{Y$n!X4fLa^#iPT#%_Jw4wD>t{GwmlZOCCYaR_`5?TKI7dzeoJ z9`HnkJ!PC@Kdd%n!SCNyJYiRjcX+<~8th%YXpwDAAodT1`V)Z!GzhLXr_WlI4cQR@?nq z-U9Nww^rLrljPMbe*@&RKt3iP?Zxuv6RSNeS63yh$Y)oqu(PkBcwYv*eCrB3hj}vakDq}Pt5AA1q*`7|Uw}Jkis+a8| zmivD0`17(|!aSV0jP)-D?zi}5y8@ZY-(LB$UGL)A6}5H~vAPTN3o2{v?FsTadnd~u z2Kkz;b@qPdCy-a#SrgsuvC1Anteyw?j;d95Zi2kt&SUvDl-Jw&3G&r;Aiwhgdxf z^?A0U$=0rO>ffx!XF0sV&PJY(zo(VAXro<(O!;?i-DJ-pR&yZ#`&+|ybwd8lc1B@5 zo`2ffY-c0O{hEl~#!Tmrs6FcXxc=pfqIMy%=A19T+}dJKW_}#X^R%|u(~-k!2Kc+R zVyj*5%0IiJ)m}oZmV*A&t*v%Vf_$4@%kmWDVac2^D zC$XAD@o?TB3(sw{EoSHUZ^LtU*!_ty9=_Js?LuO0U^aXozVc0bGIFtY0`P9&=`7EI zcpldJmR-d1OMvHBzGauO{Ol2M|L9k{?0GED1O5r{5@dOv&~C3lmh(ls-NQ`hi*`Hp zCdYp{U$ooPiTQldZWpnf&KK==2{WB9+U+vdr}IU-U4bm;i*~!-#qfK9b`vs<-;CC` z?d`~WJ+xo%9ea;UeqhVHb{ENYdf%YKPW_SN?_QnWH|Vg_nd$w34m*>X-XG|&vxz-V zp68tJcH5(v>3xaa_BdoYzrJr5B=IC-bv49aU;MsZlq4@<`7IzXta;xqPmu4im$3XE zl<%=?6XYM*jVv!g`3Lq+<^{-m?XCp<5A7b7FGcx>wstf2KOS%UY>QYe2l;^3eRh6= z{10|v5>ICR&7j|J@gMA2F8Rr=f3WAd_{`Ri>>6b0U;FLG1o?h@XM+4=dtZY5W4mZ_ z+~0FsKe4Nb)h;MsU;L@9-QviL)qBiym_G%6Y5Avi4YTJ_PDul79V2H;y(d}CK2 zi+=~~rNrtDkWXnnV6R~Q2zXkn3N%%un9X{sehSsEg(O zQJxagZjHCs?26QoMXZiTd1`0`^XbTGp-~C?2Zctn{Ct!j6q>^PL*#=)vl8^RP#Mc7 zf_!4D7MgLJyL?}07O}bwRRL#5q_}W^3s3}3;2t`=_H0m3n zoy;!+_gid+`rMA?t0v%QpEpDK%&#B^L-Uy50p4C|hn5oacnpQAS^hD|i(5mX`ULqQ zp(d6eK=~n|?FsVq&`y?HbDjF8hq{yGYN|Uv=^^+5dFbz@DvR|;CdqSIp3Cy7N%9#i z&u4jcl6(crr-J;E*7Q*N9ULFvH|q`!jbOIsIlm`+SSW|N5crka!$Wz*7@wJyeM0%j zd-W9{*B2iVDqwD8E@X}X&ucv*G>O>b{J!c!;CaaMeB;Pa1?#^F`i*ms3@u^)fO#qN zr@&9P9vKQVKX{vC|Hx2;*yH@3P8D$OolgDa`OeXy(a16$j}DC^R^NcV)ys|!6(q?g zvD})k)QZ-lL$jC%0vk zQU92bH68U?er%{u689%oH-rA3)?-7Xkav6T1^%dYK&YCT)&~PZE13EHm{9KBj{V*G zZqWY%^z(>4v_2RR8pBNMg8`v()~EHsfY1_Tir@Ci0ii}@cwcUTbAHYYwR3**Co`0L z50>X4e=WQLX^7pw8;&%jU< z=O=##hBEJU`!g^!jG6oy7zz_}dRqeZ=g~;7}(s`7=0_{WH=he+Gwgkj0aXo%qT7ljB3fi241=@u5-3;{W*2Xkz7D4^L?sA1X|ePiA>NTpv5~k|g;Y zmR}D3IP#h#c`eJueruAvjpbs$GfCdfaUchoG ze@2pgRuY%7{>@O{BM|?HOFn32KKfUd$P!F?S?&x0)>`M(t7EOGeBu})mP>V?B8KEgR1C*g0CC+q)j zQwx>oc*~9Q?I&?`Qm}pu5{d^g#SHLueuHWPEoZO=TtQfIZgcx(}UFD zbgB>e?^Tbo{sK%>)f1RXJ-s}yq{RBSzA*6%HqI7r%CfAc)=_~lhy*xo71Ku%RxALJZQgZ&#$dXO53sYfO1 z|1FPTy_E+$`Jf;0`9kU`<0bj{kYgPERCNxfz2!?)q?Z=cJDJN9yWcnczJ7e0pS{WH zJeb1%$LmSs&CBD>qlRPsz3Ng-r9Vr(J$&4&&cJ%7sBMJ`3Cho>ME3b)#;g3j~kfDZ;zVB z`6aE#ICx{@X9nxbJeDl~MZe~|BIfaV(&{FUmiti z{QRHH?_xjjs4})I>0`{2N_oFXp>lg0@5#rL``=S&H~Bo^QN0~s&iX6ZADSmUD)D%V zdWq$U$CLH`kCWqbKhLAme}pBK+e1<+H+lW+jHr*CumE~j)J^C;ond|cA^nLprE`sattot#QJl8Ri?uUXGqL;e4tq}0zGz|^Y_ zWzOVuFsCx#$ap4wk4j9v>I7W3|LypeIDg3U3_l! z7h#c0oTR@=f0DGf<1*h|i2X3WzPyZiET$hAxfxRMg@0Jm@OU);X`zt=mU9{X=@ zcPcN)?Qi{?wEzFbLB^%D&lCTmenI70+&}Dpv;GlO{}&hMewfUgGHxU;ma6<0_ZuqT z=Kd4jXkG*hWmxwAMEWpZEyDIIktzNXM1AL zsp)w&Jm+Wo@|--;j+dX`%X2tyY@Y+^i5#B$^K;>Ub^gTqihol7xc{Ul^0@!W_hXY; z?)y?bQ)2D({f@`?TO{U-_ZNv{qCDjZpt6g|JzCVGU&w16mtp7(&|IDfE%aBy$vfo0EODgS6aq=kdGH2eF z_`vh#q;V|u@E+#q#mDVG<`gwvcl2Rj6Q)p3LjK<6spwCN^73wc|D45oGQQ-vJa?6S2bZ#5vYljp6U+1RzL^vy zar*nmQ`KpMshvbVhRczCHk3alrgut)qwkHiZ!&jqeUsB^|7ib^@hYkKk?fc7e|NoPeo6L==An4} zlUe+v{PFn9{PhsGm+Y&N<5Hfaa$M>^kNaIRAKlBo9qBKU%Dyg2XFKN1gVPw5}BKTpzUa376Vt;F);<529;engLw`MZeskBj|xai4CyU#{bM zp&sp~#P;d*c3jH&0QdK##P&u0{o|>Bv)-ci|J(gR;-5S>7kknl<+$j{KA*GjeC*}( za|)lIQq_fgo|gSQlJ4R9euioMJSKA4f0(?lF_~%oEaNC8wm(+v$o{n6QmMx`?9Wj? z=e!~9nHpR7f18~0#oLqEqyByx*Nbq!rT*YiX?~~tZ_g)oMgMo)@5xV(5`SeL`^TK3 z-u$QXe_MIU_GRC1{J7(%7yc9d@N)c8dTodO=(n^}n(F3yNV`fZ^{2Rfe|yRK$*zpTjx5q?fo!eGbF%*ZBj_`D&0C#P~gN|oSIIg)nZ>W& zT#w{_C)fS*o{VsR_-!d?{W9(O#B@K~`79}w@+Ix9KP8Tv6xGFc*7A4|x$ps&%kf0^ z@cT&cz8vd)-*S7?m-3}t;l%R2Dv|%zAIUHN2~)Z8`pfaa3r@UKR3A*^_MSSD+ClV& zv7Xo^_9#ld+-@mq6Q4iixad>rRU^3^k>@4YO;!2dQSSKVjIT+c?*;z{Kzn-O{@z`j zpZxa3-V>Gc$%82Os=2Hu{)zr~OTB7QLOEXbBs0ZX`bUcT4Ih{OF7Lrenymj4>&rO$ zt||HL<@aSN9?tzvs&^W%V-8Z^*FNdP{V*OcGA~FxzpH=A=RJvg1J_s5-p(7z`Q^Mx zcH-;zvLN-_O>FnO+M{};#>O@MYN$s=zQvBjLDJsJqx+5WJjl!K;!)e!zNEe77rCUp z>B(^^kLF*mI+NS4xAy97zNYq$`~8~4gXce4Ps@2g?r+KY3wc* z?7o!DUy{oBlz6^|{SB_mF-=h&n5L?|m`WVt^_2KZ|M`;jMy#OmEOwLM!^`03Fe6dV ztAxcL@n4wYoT6m@p#B}7Ka%yR-1zlYZ~d6sU)Iqnd>R}$?=7Wq z7@sF*v;N}=DV*1M{L8qN{vrBuTv*OmvW}tn!g>kqq^gDZ^|SaoxHtJf&Yz~9WjoT( zzAb&8>m~hM?!yQNxt|Nu{gxEv9Cy~ePF&&cfRc6*Jt~*X1KZm#;)704W2$6g7`6=v^U^(f@`^5+GeS(8kE&E0H4Pf64a{M`b z^83iW`Ir1$R?hDdpDjsoe>I7FlgoVod7eY{>#bgJUkU3A-|fIS^``f?^?!=5hu>zu z8n7S0b7kg_F^xaBufcNS>!DrVtquOTu+ap z=R;m4-!Dk!#5l+6C*@H6liMS%NA>e4NvR#;`VudL;~>u?DV68kDe4g1*ORLHqMnDx zrSwOSqVF-m49(+{{7a3s$3JVI+QXyBj)%XWP+rG|7^Ju2dVeT9H(ERc|3fxqO`FW3T#@S?W*q@u<7;{-ReE@qNZ*mg{Dj z*S|(PUgdv@u0PT_m3Yhi*4y}&`7&`HiI1mbJKv@+a`{f0%-3Qkxqr#|?Fk%5DeAeT z`8Zjh>`1@!@O5o`UX}Huf&0T!)G&_6-#?zp*T-ppbA6nAoh|W`@)NoD>+Jt5J2ZcK z)mdC087C6g{{Cp_=PUOjPmUj8Jb;U+(FPV?y^O3B#s9b0#_FL@!P}&8b zXM2_KwRqgCZpJi4(SDKS{Q`1-#-pUa-O2hij^oE4;Nx>JjUR92{vrDGT|AL{)RU|) z`wS&s)Sta-IooYuz21&*L^5b+2 zjLh3K&%=H+_E+kc?2n9pnU|?uSyu(kt~)0sa;P81 z&nu!Q_JqZcZ#&*w`N_w>YkhhvpRS`l>Q3&DG7e?lxiz7^lIJry4|&zkIKRy2^EmEL zV;X;sN#_NxB6*5hf%5n`p?(~{9v6T1975|}@+(zszC`8mAbv$ygSEw_m5r_DLL=a_=w+MmGd0si_e>~4ikIQ4;^;ef!1a5^-1!)F8dP>8YGL=XK|P zX!3nTDR&g=!F~xGPpRr+&L?vDUUGiY@tc!au9uRJ|13$5I7OBH-Q)3ffapE?clG`@ zzm&fS_2c(rr5;pXO6)tk((ckf`4n%5|)8 zaw_r;v?tFEQh1(9ja|R|V|kj|kNFQ$pRr%xS6}*(%$L+3J?c>2XQ=9^AIUh8b(X|I z@`=7&4^irk^*@pC!1a6lxUgKG{F&v{e(=3+WVnBoPJX1JKQKSw@%VN6A-x<=zK+i1 z`cMk{O3^OtCrf(HeG=R>3eu(9I)VCccy%d$pcCKdsZeuRxw33gLJ-Cm7 zoT|bsf0N}>F5Ulu>t6Ol;?i3xaiw`Q-p?q09`*N+!#)x0*J-hNp*KAl_oVOPd|vel z`VISo@IG5A{O%gHpNzk6m}MNudvcOWzmR@F{VYB%lI7A*NG~lme!j1sj0ZYz#Gf+@ zC&xMYcrxoNsor_KZjt(kzcg>j^P%`WI10zJ^zT%TV_Z)8MIJx?ee+3s$a|kMzNsD_ z6=MIT{iXhLoKpCnHqV3KcAmb6LoNr}6bFyC*T%P!uoPL`hqA%+` znVRkc3;uRRwoh6#!li85S7M+Z&A%)xAs$pG!5Qfbj?2FRmHd4W=4fEi{) z2^B3gRFWaEykVM}VU|PC1<(Y+3yC_&ctH_wq@q^8XFY3eIn6nKI-k$?{PFwayyms$ zJ51|lo_|sA98P>5m6ZefF+T4S>(AL<)QfiaE4Mga zRsBWz{rGVckLwUFi}5>CtS{$$iT54P@bZf1`Tg|&b9nLoEZk4x`FFN=t_SCQin8-@ zbC$*S%Jky;dslzwtiNCRnO#@=6w?pp_Yv9uUi`DaIR1(4N^H-g@Hlkk$GQA}C5y+? z*-lKySudWaV!oXz#&^H==4>y@(Y*XqkpEnM@i;o?N7Re^Nky{f6vgW_$-Vwtd`^+| z$yJBU%Xxs|F=Y3?-1w5Vtiu!2^f#$-u?k+c?~bO^L-U@ z-uVdnOUX2zpD$2`aS7?d=PzCB6Z6qdxc8hkd#+nT7IMAweSYyeSL~1S&`!K=x!-ki z*L8gp=0jYs>blMluY>=$>r~Fy!_L<$&hmO*F7dn&&qp>Nlks)5u60{+U6aihq+xOji`RwX{Qxl^?0$fZu=@e>d-t)$`vhWno$LKO zobO7=J%21GOP}tOzhAt6RS$oa&cB;~vAnE3iR;h8z5KHB!<~!WwBEYft@D1K|5sVO zt{2+_yUr3wFHBb;K1c}}$Ys`kVLctkc`11k^)eEHl#}PUojA_?6~%r>QD*foB?&zLY@NJoJx@GO#p7f`JMlP4 zNiHv^*l&yb5$~Pvyx(E-UU)78Wf?h#>*#XA{-4H${ED*cz3WG@KE&f9_Lt&wc_Q!k z+#buf!1w)#`@Or?1I7I`tbS$W&-=FiUAuqY-&Dx!LrhLYv2>WjE`57sxN6N@|NI7xv=W0Yd zu{|++8Ml{ndzX9m&ili~@%Ve5&w3}G=CXKwE6yX@QQvi)E1tLat9Nm{a~@xvW$`?8 zrg(o=tT!<~qMg`(i1(?*_c7d)dH>Ja9n5dI%*G{g9~~TT>{p;%{QMW~o%Jjn{GS%u zb%hh}bFlD#?a$(Y|J&m6i1}i&xPILgzjMC+Z2#Bg`m6kj@&CK!bI$*__#Ok{UU`^5 zyl=*-opFg-zjOVt_06v1=WNIP?;np? zKId@GQ*L(5t zb|cDSJkIfpjGl`$Kp35>e-`I8_l_S=Pb|m%7>0IT>x81+{p!KFK1BJ? z?21nu2gP}fXeXw_C?Q+=vE#NK*;U_vwuATi@qPAt&`v^z@^U)MqW(Wk=XCxoOUctb zKVrIn_U}5bVmlD`U;Gs(@p#4h6x)M%{Ke<9#p`!b{{Nf(Yfk0(*ZGHfdW5zIcn*{A z2NlDK<#zTL&o}Y8Cb8Z8Z_9tb`2SOSaULh;SCqy1^b34nulRlwab3(=W_IvAF}}B= zYdtOj>-V4aqCNA6|Lw(aUH_B&-+a*a_TT#We{CO0{QP!qPxo5~6wj-49*%{F{Xc(_ zyT$|Oc<*<z~E`>A&^yf2$AH&f)zW*xtqWoXYM!-|;>_4@5gw z&(eGTA8>#1JYt0Tms7a=#V?+(Yq>omJipKP6Nqv#`gc9A`Z>23!;AU5UpnGA{_nOE z=kx79eLnv;AO9Wi==}0OHQtHmT^T zo zz8ZKtvT=&C*sh%Sld=1i@IFbW{bOP|#ds=sJ7k3CC;uc1L`+BY4_46r1@`q~J|skx z5A){@*m}2wi1CW+-=b{g@r&U;lRQ0VyT6M6BCqG) zIYn7am$559g9fmAVeHb2`4a8j%a~m$=1W3ES**vu%9r!_cE9=e1O-dSx!nJ${QtZ8 z755vl_l-zNPb|NTJj&}qEKe|(-{AQc+v)xIzm4~P@w~u~oA`b>@w~j>`AYTlzPcFS z{p`j2ej>&5-1)to_Y41Lz4*LfSGr<+;<_7q&nm2&@p=^VCq5@FzCTLTk3c&K(Ky+Q z&o8m}NO%1ogeZ&esSx`~kpjLi0p7p%Fl~3RuMB1Q-v`{sFDE`IyO91!c>nI7>;?WD zKRo}8`4Qib-L+pPhUfDYPWIgY{q67Pzf1gI3!V?LJmPx`rx<+6Bv z~Wy(chV3 zxkZZkceWGXE6&z4r6iu$gR`9|i}fhpw{l(w742C2?P}M~`M;m+{5~1+eV^ickp4Bh z-itJrzn4pVKjOcBf2TlZ@^U&;tS9I9XNm926vuDz{YoO)J_7jP5Fge*i|4uM|L@W{ zU2#4lo{yp|*00zP{cBmgkKe`ny&p)_uYZK){~caGj9u@&Na1?c&%k?W`Frcce2DM8 z5#@#4UTio2TRP8wSpK^9i2J(#XMZ{0fA8{7^QXT`XEBzeYoGcWlwHVPq$^?1 zt+KikfXeVx zDm;|yZ0no(wn?U9tEinIA3smNg}w};5r4WNqdj!GVLn;oIUmxQ59!Q@ zQ1c<3`Cv64(wPtG%!jxZkS{$Aq)kWzmrgpswFw#IdvI0Yd;|;ekSqjU7Pv*kTe65e z05@5abVmdB8k~FAsjN zB!j$GlHuTP^jHaLuLAul(0>FjpTtV?fvX{n)xdQSZXM7{F9yWvjX7Jw({+prhw}NgrIVLG1cF7*tS+)nb7s|F5%C;BEwin8_ z7t-1bY3+ryzJcH0!0&J1_qXJ#@GaE+w_vjm>S`aPvk%hQ2XXEr+axyf6}UFxdvdzh zkK_^Qk0eT3MHJHgL?t~)hI`i$jr0(>qhyM-kxcVG4SwfHzO)tmt`eK{8raff{*Z`5G9=?JOVCC8Y6Uq zqx?^p^IN z2ofL3@4b8^K7x-#;_V|D2E0Tb1>K{ddlYn!g6>h!^#NTU(DeabAJFvyoiFHoLFWrP zU(or2t}p2Ng03&<`hu=6==w?edG`ZdKS=;^81NGD1Dzk}{6OaiIzP|_K-d7#1whyU z&;@`lP;y=#1h2ghg5UimGM8Y<0U;RthD+ie8V04nzs9z}p*|g~vz2+RV>WvHmj(I|+-wliUUW2YxQ#@rU#DMhQ$` zN4^QkdK`2YI)RUZOydazKClY%2YNHq^X}XQ zy#4AV3aHQFpJfY$aC~;>D#_chJLSoPO41wbH3wG+{ekXlSvewkd@2ww>KUp*Gi(=Rc1?^7Jh(m+FDVTd9nUV<`oX8y*>{@SLPfUKV)|bm#p1#(LUS-#0 zX)#^>Qmq&3H?>~Xkp6o$F+5(Yl%7AUHplXCu{>NXhO1l@%frQb9ffelnq(f%!0ip( z-oWh*+}_~j_>+Aex6ecSD+}|y=)cLny)=*8=XrI2{gRq3JpP^BekZrz$?bP?`<-6i z+5cD$)?T%>Vmq~X(tgNMvKRXYV`-Fd5$ccjYk_X`xcCUJ${H zuk@nzvJl$CaF9Q!9Y*MJ9cg9lV{L7dmm2hr5(nBjO0tEp_wf7`h9cQ{pHbK>j0L;( zwd^=;s#TH+AiJ;i@MPnVtS61PxzI``Jx0j+0&kRa@~4wXI4=i&Y{BDtyu`aFv-d^+ zkyh4jx7WH$SbOvCN!$OPT5V6-{v9R0J!$@prS6hgNUsv~?0lFg1VehX-}pP|_vX$f z^!y+DaT&I|n%ddq1C(QVI;>wiUz>pP!jET@PryF~?B_!GYqb{C*A`lO`oOAE?ouU5 z$MPx3av=2M0zL0#b*%i~?qdB{&pIXf?P)mg>YyJ6J0+KggZw$l6NN`1pL=t~@mU&nOE-0ROKyO^5{@$+ zH)HGOU^*Fv1)kJy+X3buN6QIz?rX~l>%S-BxG2<1JtR6;lYLTJUqkFM-tKwWCJOcI$>#`+E zU{2i%jHmnB6_PO^uc(W`aJ2uA1ex}OlYl+zR!j82y}7F;NkCg}5%P@0b6ytZ4u=bI&CWz->N!EeCXXykkH)A`^uUjpA4ti@{DC&)+I>`^v zUgmrTS74yu0q03I(3X3Pd-r7WAU4#05(WdbPbz$agh)a$4Ubt$E~WVEu>8 zzK3;!_p{L6E*0J)Pk_D_;-PHfyuf*z(_=aF_vd_)b0TLVXEx^s&MM9}POlX#o+ml= zD<*h*NeOApn&3SZ@-y6;+>PaTg7;xL^oLn7-mJaEc(ZcFcz0sCCU~>*#B%>wZ@RiW za%rr$OAbAb6THVkc}A_8;C&6^q4B?o@h5Qm1aEq`GJk1;w>Q`yE}7tc66}^|C362n z^j{D16X;**%koj_OZzYD(n{awfeBfazAu5l`&w9ofb>RMEuP*_!2E9ger~_tm;O7w zb?GCLGDzQ0GLiSg2D~mAlgl^>NUuv~=CbRN$^5$HlQjm6SF)Dzc!>dbyKl-ekQRt9 zC*MH)AU#TY*W)bcuXDW%=*fETzAWF~eOdi@_k9EF#~1Y@twDWRJ$d&{0{xFQdwDsw zV0*Z@c?rs&LB8h0{3CuXfWBaa>v;!;Zws5;50hU%s4fLCy zz&cOeyi07QcnTBNZGD~44#t-wqzVu(p-(K3)zXd>f z%Bo>~4bH#r8gokkj`oVszAJlTL7FI$!bR1#jl6e+`Y_E&Kcw2#=gKR8~>9-r`D9PjfZ)`u- zZ^!gw{gjd{f_&5Y_CByX{-vrPizk%lPlf4)R)_L*LwUY7NED+8N!(ySyOGun5;@2@ zYgPycAfAr8NNG5X^Gh}@;qff#NB?zX_tGW(wn2N!D(wpQ0EAnyrhwZO^rLrE&t?_$ zqjza3>A#d478Ud>a|-t$gqyU%T}taWqp*bMgUP=^KiLfVkRPh#`X){vZoi+)jfA$Z zUWfdpWiWply_Jo-hc_stPs8<<&!IVF7Cd!9<+BiW#UUl>1df96G#^j% zc%D7Pt`A-Sx~w7O6|ke@%-;^l{8)RC`LS}!{8%|!v(zm&em9;Bo<%w{Uq2 zk7qBJ_uh+l6T}m=iPhJehhqG`2YEQiG~WvjdEoJKl)$_@lb+8j1P`cR_q9Gk5RlHt zpWt!?(0pi)FbVZBetV!FN?H`-cLd^5ZJL1TjEvfW|N1)0_!(_-{j!^ znQvb@A8?d-D15KlyE7tYx86CG!F$MoBw7X8jb1h+Y~AN1i}?>VsiDSL`4du zyL3^a;v3NK133|76Ua25)cf+daiY)`I`SNyYBB-nMY{7d|5cbpB={u{%jm{lhXbuX=9#0i#N}o z9@ol61>CN{pN{j#mge~nhW;rbtH8e+(xrTL32lc4!p8YT9LFc+=J_9obaV3a{HuW7 zw`}Rf@|EX*2xOlvwd8ro$NIuNe?N?GwnY9UjE|p{V0t61vn9SLU**>`?0Tg#x5S?v zpZ)${L%3fSHTXBec;UWwum5@A#zXu4$HBNU`ZI?=TQ}M3&&HL#{%kzCi}A18QYMW9 zyIosk0dySNamY7-wKwkocD%BsG+g$UY$**l4~XN^hH~jVIR4*2zm@@f^?fCIA6RiH zN=mPH_Je*k$cGOF13q-x)JPh@~fmfkV^73(0#2h?`KtLA6l&n zcxEv@U)c3g6SPBm-OvK;5BdJFOi5}WTxIT6X%q0$p;l=t(6e-ygqCN)CcT7~$8RmW zj{5abasa)%Sdo<+a0mGC;^Y9j>*mqLiI`qaesX{($bO(tg!Z3Nm>59MgSSf)17d+m zrO5&B0dw*b1LA?T;Lqp#0kocyz>b{?N}kF<8DhS zqp($+ugC(}xX$XYTm4Rc96C7LI9CfwNXM&wwJ;1=b}%N8wTIY1)*jgTKXg|mucu00 zj=T55kA!f8>k|UmahGxKzi0nbI<70o{yu@$O9QW;%78Ek=P23FxvzD~9SXs&ORty)0H z`}O6rA3;vqP%b--Y)1P$(6@mcx366G2k_&1?;zUVHrD$F(e}2hJ}8JCSKlCZ+#7g# z%Vhy?)A7Ds_CNuw-_*Oy`vNE1eB>%%MUI#JY66^>^*-`YlzrrMeO=Ta1^sB$m&-K3 z=6WR$KZmcQ`^caBhj^}leGIpM6?nTo8^=9aL%Hllm?w5W;3a?R9YVS__{eAdL%5zG zzsuz`;G-aCqwFJJ!MTR})BGyHznJScbME*D|3TpY%|FPYApgka{lKR{KJpL#T98kn z>?1$Nc^NrMeiOL3+($0^xT{{C2YY&6RpgA4yMcajxpxrjS00o9@&fcb+a8n4UnHd8 zHdvQ?iO#Q^`0+?UyOCC_JQwt@?y$;>fblyXllPoR$n0$f?(gB*8{%!P^T6v7m>1x2 zhVwp<^^Z!@5By(lNC=|mo3S*HANOp@d1x29hAJ6b_firS*xBH^MGb`e9uj)rpzt8H zOJGiZ3D0*)5bcMvO4itVYVz8{J(9;=Hattw7(Ea zt@2E07Zag<%mGI2@DbQ`JZHm1xe>zA<4TWbRYN7F3**E+(toiGS++rLhwv>s8v6HI zM#nz~_jmNC{%Az%t zl&uYJ1Qr7AT&Dk$`Du0x&reJ+op(OHEGGCml<$dU+Ta>EA0F5_RnFQ&Z15_mw}TBa z!LLL9Uf&-Z%*G4fe)K$Yl<4Ip;GeZY8+;k!bIFq;>Z z1haa`3ufbQUND;%Y;m&R;*`Fao^v`~^DTbf@_4uKcv<>6`FnZ!7GVA5=ZDL-H1T?EX~(&M#Y(`sQF$gnOhya)WX zppzIK4Sd{J5CpJ0V;~p-Enj^m1Y6r+~b*vyt0{Vz`|AZ23X3 zd-!m+ym|^Pua?I*fiqj~1IKgdu55WQaP-z}`4h+>?(aK*&1-xIuz63=09G!+B^Kj2X zKbbRzGj>1{_RGUu*l{o5dNvMBIc&Kn(|P|qNH-Ajk$-r#FdSHPcnSC4$?5LG+KIah zJ3riA*gld5JpS7b?7bHsz3(#Zpn=z8voH$cv*jAlAJ(NY|1iImhlBo$!>oK?A67~u z`_XygYCOIfg)4-K;P1ZH!Naw2c5vPu!1^EAK-TYi3}mu5mz#J!`Eq>_*Eevzit9tU zem~dm4`lT_n)_?Hf6PEWPm#}pe3c(|=ZunOf&9~9%RtsXmvH8B7H}E{vg_IT z_F_~LH!C5(9p1^~nSR z1%JOIRW3B03uSfudV$$F%IaL!8wnY3q*Dk6JJ_$`@)&T)kw%wrB)e}mbQfEn2tC5q zC7wOf!0W34^A}ou-gRsu%v1NBcU1vr>}%u4-NEajgCD;RUY-tKp1WKxQ?lc(Brjk- zJh<$kWXGprAX}Fym(g{SiAQ|oabQ=G<0GHOnaKGblI0^S-@Sv%D7c(qElKBOdhU`Owh6mfpZ zd4Q9xuPVuLF1G`1xuKY^S({=pUyhPFf?E-dCx(|_Nqj+$J!0VLwYsQ4PB_x)!uE5u zx;zc?tRn?V)-LlfKPjc1F0@>JYgxO3c|A{O3s2{&%M=K=(00}3@4%EJg6n%gScg-x z{(CPkuaDdUdbs{`%>f#ZG@(B0$bRm>|6civFnk+N$HCLN%gZ4f#E&O0hX`Ci~+eA&ezw0$GW1OQn$8wJ6jNyEpa~kI?r0iaO()EhdN8E+^ zpl>^(ls`I~mbX(_0`l=MJB81X7G6(E`9Sc$26nt2u`>2Yyi;eOYkOPlSbiD{1c+`h(H>c+luCoj|%J>B581V0g{u5p4{A3)+ zUMTy>ALjJu9DppB3p4H?{ED-jvzoJ>vx)NzXFKOj z&fhuR*Rye;2j@ea{W$w0l|%{Lo$DhX%k`0*6FFbyjOR?`d>2{5>ve%EJ^!a4HMypP z9_~vFV(m4Lx9dFKZnGuqK6?RgN9D4GVE?IY?;v(w?H$C%vn|{|N}2)lgjq*-^6_RT z*Rydx{iqW6Re6?rxzhbrVTakiV3-f%eVBfgY%udjL!X7fSux;JPrEnik?!oBrn=0`Erp{oA8>ztFdbJYS$;x!{e*$FpAHe<@ z8jpu3s~7EHdYqOW)edI;k#;aU-ids_Q!I}!b};Mbn+3Xmq4a11Pd9<*2V{&lTXGTd z{l(ETY)7!(>q_qnlKeb)D>Qz>LDZeEyYy z$7N%EB9>=Yeez&7FG?QF=0$t?JTH-#b1%;CHr89X{St1+))5bWyM%|gaQgyYA0?bh zzF&at18c2obd87nY~R`F`X2DY(N5s4E!VnE*AxT2eiz)*pdWnjm`ugmkxa$rA2Jo2cMEPC!2aQ5O5A@EaLnC} z+GP~pZ(m-Nl@H!G|=K6{My z3px3Ew`E}W+_9-{tALY1&-RBiIjD;5BNR$!xLGm&8E&P(*N)BL>CAA8dYRS-^Z&7I z4(ee&$88_jQ9ZTSb9-aeM8V5Q%dx=iAm|h8XSmscIr%f(&H`<@Gu+xa$3VPP{vG7$ z$Fecr*_`t@O^|OEKHJTG1KcNAyTa{Z;F4pj-P$u?U+}RNZUG?Y14DpC$5bkI{;$CJ zHiOLig%xfi!G8zXjRo#Gw%v`bzifA-{n3I=+uf+0?O3z$BKR*qwB3!J|J&W@dH>_F zGB>tvuHx;e$}JY`+}BpQy#*9XtK2;ODC^v4|MK&(I=9)NZ>%blr2rd_mC5LH9lso7 z>sR(;u%0`R)(hj|4WT?<#@4z}6`MzDRjj|#s#yOL%G+u6+QN{Z|UeAe`Pv|#Pte;F&vHe(yDpr3!?zEhD&} zP~Sg*ENRS^&~?Cl)&6LoQK)pU1-)zIFfKQ`9S51t%g+Nn8r>xwz}muA;Sb;&8|qvi z-3a$x8%MdbaW@LX<>ZGW&s0z3GUFqSQ&Apio#-A2;rcaBbRPli4=l-q``^_|uw1h? z2riH1@(Uw%Yq|df++X@-VJ!EL<^Hiw{!35~ z&#{HP>`(7=ED4ciL;q2e7ed?VNb3@ApNw+j<^pbC!0ih{g1|nuW(&73aLV6KuCL_W z8^Y#0`$O1yTqb*cBb}c$g~$TvzL%yD`ZPBsO~1CVDTLmq$X(hLQUK}9+BBWe{Rk%t znnD6We`TS8^bUdR)b-;2(58?!2!A%q5yJM(IxxI->D>^vAE&7=n_o5YeVEC(Z))3t zroQz2&nopDLhsY;UMd^H_KA87q3gBV4ycB({dB4!Y@eNK2-|1pE}aAUAG&LWumI@3 zRy%~1Lpy|(Lpy|(Lpy}!pY03F$=41k4g6R6*A8L%R|P!3nBEtQ!SHnd`9~1{xW?om zto{;)u=-0J!saE3L)g4zX8_G_R_P4)60m=(ae+JQryrAFf%~nV+blf%5+2^b<1auO zOACf9fpyl|jov|Q+<^PF*w1<6eNWgo+Mm@&$q;tmOst=sD8Ieb8~4>3OZQ_vhAb2P z_jCIuCw-GsxEbzWL%!!V&Tu~n+?!hx%;uq?xE>7YBaNk?h}K(Myt{zlQrf?y^m^KPs2f>(b8}!`<2QT@&4Vg1%p40geM34{gD5BeZ%oh8IeU zklojAMAjB=6z9JvZ*MF^=Hy37X#2^@FGo3}u!^&evyrozvz7BIvisUjE(_ggJYO}M z1Qwq=$~pO7$bF3_o{oU|_`cBx^+KsXw^JfB3Wsr-h0Dor<@aZqoKZN6+l3?dH%4*$ ziJacvbpL;lHG%KbN#OgJ68Jusgn&lu@3Zl~QreaRKE4+4c}szc?QbgJ<86V8U56C# z@wfoT+Z~5W_`IM*#m@H<6}yfr;o*1k@l3o96R)?NwOZzP}QR;Crv|DSZDVY=-as!ZyDLNuq2Qe9xBs1mDTBPWYZLy9?h2*;9%K zNuF%E!i@yU3*mc$yac`@T{gmZvddQZe#C7D*m!sQ3V!=`I|bj0ZVvbk>edS11G}}u zx2oH9_Gxjcy3H*-$x&*W;PSsfWn<#_c( zWR80404jf|-i=(V{tY=^tsY4A#p7KeyAN&#)~FvE+=6nS!BTX)d>QNL1UM|q8^8RcS?Afe$msQi(oDiiVxl^Ix} z-mNM^*`_K-ey?gqR;yZosp^9&sg$xo6#=YJH>%>1r&VU;MO87fLsbr}QU9i@Kv@zZ z$f*24h!j|%_6&(f`h=KJ9}r?jc|b@p^0APO!13x)oQFdyQ2+6e7UZWxq;eY1=R*RK zUk!-|j#rltF(c!K79*vPRUk_qs{&T2pBdJI^7F%5QNBD(aH09SHB1VG_BG5O<#odY zQ7#@Hjh<**SYz!r7Wh;r07kElTX z*%8esFM6T{fs~(QLY~ui1M+K;V3V7G6LoFC-o@%jfzJ(Xp|ZG z{itH(G<7-pyM|Su>=D+Ca%or#%3p*@-DorUH0TT{)&10;DB|8zOZl~1=ItB}{#KO^s`duReZXn1c;1Ta-S zO(S%t@y^tkkh3)vz*P0SnurG}Q#58^y*dM_?rYH$fn1}`)|4ZcX@nkB{!n8==4;B4 zA8VSCpJ-Zu(y-4of+w}xu8{(zVP9$#DBCpt$nQ0Qz*Kd$MuYM}O*pba6M_0hjSl6L z8a?oVuojIG<@1^%DhcV->*h>H%Z@QJ*z75cN4@HNakB>&J$pe$&_p)PFu!hx)3q zder|sHXil$V~wc4J=To!A7hJw(y-u&3X~sVl zHOK&MIC6kihg50x$YEL|aJ>2ntqJ8?tr;i{JFG27`IOda+6AzSzJu|KxSfhSnTr)CeobV8pr;ZCp{%xEd89y!_C=HuF z&V=&ZaYe{^E7YIr6PYp%1m26)6Q?R3{@RtCvOkqdqS(9JxADk6agNL>5Py zkQ*Yc$kNCnc`$n6P z0ntUs0nv7(D!LgtELsSpc27k6Bg3M@k(%fVV4tvOqD?{6e?fFPGCjHy*rGN^7xkz5 z#nI)+rO}nZ7WD_w%_x5qEd*2lf@ptaQFI_s8un>)5U@qPEjk?ayQ1~TJ<%rQzGyQr zRb3fvL%Ay2j{G^A450e@Xa(|Ev<7)1+61gopN@_gNb`Fxx*1rb{xw=qQr?a>0>`WW zh_(U)!=4#WS)nc(Z$oZE28QhzuNXw_ye9+#C#&C`pg}oxf)3d=gD9izWjLwGT;Rb()>a=utx28L5Fhd3r1x0i)LV|dh?4`l()TTLwZfLBj-*e zDjHw?#6X}lEOe3vSfd^@Nr#M>WJN|!vLT1yVmrgPb-= zhnzXdh@3siihOsH4Vf~@j?9=uhS2bqNg8DKq;TZ2Njl_*lZ?pxNmk^?lWf58>Q9h^ z!%j_#7)tZqHYo}i7#@jSmgKVBG9ZvOUC;J0y)K?}Kqx|b+)8kbB zV=@V)l*K5J?lE@Yc=dxZ?jvZt)$lL}4Syj<1B7`^Oa!n-z3ruV`T>Un)Y`_;Lku;ma+^_g^MYQ2*SQrNA2X_*VjvFTN6ieCZV(`oH>0JjxGEnE?z8 z>odiSa@dq&q-Kf@I9~nClya1XsTD|ylMoFSIb{Dqg?)KG4h93E08s>+R?xE)fSYOye55;#=qjVK;){| zG(fn1dMyIwS7PIlv9V^PKGur<(_)KJ4tTu;*rFcrdJD>`*U2ave%R|$V2%3H>w(B? zuSXznzOF<6yRXNi{MFyg$Z!5ujQs9zHuV4TZwfVy$NWYFutxo~E*`1X8BrglGovim z7bCmrE08_(El6*@G>nGx(FY>?>En@sdNXpMz8D#zuRsphR{~qqBlRsPkJd{^)9~SX z1#+A|5IJ72LB6PuK)$4pN4}~zBj3;$BNOx$$Qk+;LZX=y&kz06M^dZ~tnJFE9cUepI7ujs>(zv?59xApPJKlEm# zEUp;o9#;ZvQ9l@0fpV|77UUywLO6}LZ=4hv5a*8^5EqD4#f2k>#YG^Wh|?p(;^L8- zxCCH}`k6Qr%F%IV+&E1#)X#3vx$XgqDW? zDlQ%<4f`gp82Mvd3+n6QglDM#kvO_$RHHr~7l^dSMIg__#Un4onUR;{ijf_070AxG z7Ub`7(s4ArG(HgN7O#Jn%H88l$e!^<$cN*NkyP&+Z$WvB=}I3mMlX4m@M&y*Yt;pSPYo4d} z552=!@D7ahAbZSWG|V!BT%(rEwgD^DuE^tRPh_e(dA1$&spkdfgBii4wRcO!HzLQY7tXb#?3fF$KZSH#=PHoxb2Z58b9KmDbB)N~=30@GBpcE-$&U0$A`@wN zuOtofp(Gu$Pm&R-NU{QJ)cuoe$U#YV5yZRjL3*2D>5?4hI}r` zj+~T4Cev`QBq@-wNgAX+Nr#-4WJJzPvLa_E*?=|bcat_|(J^<{b- zvy=Q^A>{F}pOV6nbxC^UFG)sVjk+btg!1_$E6P`sicr3hRF3>3iAQ=+_e`jt_MR2>GdZ`tSA_Z-@7Yj)2RY~= z%{`2LcGKYqDov%Q8 z%-0~j=If9T%{LX5CeMr3=c9eF*Kd`9hWr7DoW zrD~88gAVCxFd{t+R-~7~hJ46iNA@w04K%#MPy%dG_cxG@R32ndAcq=^$WVh7Im%!| zjxpGg5eBk}+D94`$ma|i&|TbjaBTBl2B?6`5kt zeL?Lr3`V5IU`1vdY{+E>vV;16Xiy;Y4I1Rf1|9MfgAw_e!HV2saO|Sx+inQ@lJZM~ z1NpThBFYl&cMPKW=AegQ&iFLOVc#S57KnVkJ2;;sJHY@G%Ip*TFDVwf7{YXBh~Lp)19Ti4BtFHpHM&DKU)m1al&oCYua2Dv`X z1`G^4mS#t~q-!oyIW%2|j7zs%rSU9>m#kC!mFWuPnsmjlw7v?{$!)4HNmtyV+?cLG zZcUd-1PHeyT`Q&hDm_6)`Axb^PWfHB%!TsD^b+L$bUUy{U6)Q=DUYOU-KhWZbXzwn z+tcmHGwBLnDql#~0$bFV)2+Z%bw|1l*_m!f{+_PsOZCzWBM{c*Gpxw&8PIM`YNM>I^cF>YvU~Ahj79WK@O@`Fw^E zIXT0MoRVQfzMi2_(r|GZ8sy(IG=r#|n4uX?IVZ#R1m$}fc4TS>8A)Yhh61@TLxX%j zLx;@GP&`A+nU_)WBCU_r83_|9*JUXF2LA#cR-BoOE?QvJ;g4e~*w4%y#m zeVgjX8*RuqqaC@xC^OLb3XLVm5~D1Q${UTcEXu9M1mq5*Y$=t$GAe)(Vc!^y$nT6+ z(k$)Kn9yifGz65CgU2af6Qb>jxZ?- zsjN0>kWZU*NUh0;j51k(E$Zh@R+J~3Y{)65O4Pq@B37E8IFkbTcT*6sMV)BUp*+WA zM80RTpgz@PL)mDuBNv)vpHTbvO$o?cQ%NzE^Gx>jG+(Pt$Vr(-X6x)M&zD?5FzenX&_vUuIS!zs{8XOl4bU0`mJz2eLXd;ULu?%#_tqHe|x{puomV z3-V;9td7bpnF+}AnU%;(nc72Ce=XC3yqW1h-px#?r+UFGYoK&7TaXW!9Y{}e!eOfK zZI&IOeAHZt^fQ+nrE-wjfmE8c$EZBST#0<#9MnkVC(Q}Sr_7bev1aWrRR65mft+BL zU7_+svljWXxdi!|S$37`b!H3lO>@vSD!*k;K+ZB(B9qNQ*QtJixdfSR)^(3|ADy@`H?x{29*oUCCDPP>?V~zH76i9n;pn)X3H(A-({{u?lA{-QhA@* zf~+*lZd19+T!Q@BTzQwu_2!`8D36&f$P;GS?^Hf*)*{cD9mqDb_7AGRYA!+EFb5F{ z$al;MNMex*RF+#3kliem$Q~B0gzCL57Nn0QNJ`~?77H@a;y@0xB*>^f#8QGBZqdrA zJknBv9Bq-gP&wRUL5{OjBF9@2T&ey=OXUNUFIi+Bl&@M6kZ)KjkqH)UcdDOZaUkEZ z1U*RQB#Q+(-{L@~SrU3seWpd`Nx8_PMJ}dCX zvIO;_`p+#T$ek9gHKKBrEf=yOVOYS5`CPK`bF{Hft5r<{8K)bdmLpzr!@JoV+N z@>4aZPJ_1X)b&%u-rGLVKI_C#`{VX?Cq~)F*keF?9NbiU#>v<1Z`l{vN5N!g)`_Ly z`kY#0-(cTk-)}!`zi98YKhW&eeENiR4A5pbFKb={pHG^% zHh2)XWoMs^A_CU1jfVdBD-r;p+%?WH-~#2uGM>tRuz|=a}VK;4nE>IW{}C zgZs(R;P}O1ceFXKIZmIr<%m7)cINbnUT4D2ynbfdnVDzO&sffUaAw_^k~5?1+0C2I zY&*02%r|E$&m4r$;WOvXTsrgH8UM4&v$1Cvo&5wpTj8_kYz2I(&K^A51U!BA(%D;Q zUCw!*>vv9dF7(_eyY}3R=aSBCJ6C@0z`4eA?dNWvBj@{`4?3@e&(QNz?N6T9oR2>L z()oAJFFIdz{`2#@&X2NJp07TC_&kk$s{P{m8|QyN->ucN_0iU#)*-D=w$5mMuQjzb zw{>mn=dIthR<#~%9c4e!dbagStM>)}3#06_F04EA?gh(*PcGOl)LrOyvFF99a9rr8 z&qaUyJ^12K`|yjSEg>9SKzHTdTt8Qy-YiVn5yVEAWRyKGpt0`y1^e9CO-JKsJH?dh_D;QTD>N zPcJQNU(>#$eQ*2e6E*D(?Y{u+?RVS9UH+y0t;^J6lzsN)%*#RNb1#>-t-D-ux#RNf z%h#KwSEkw@ymGfa=nB|fnSCYois{OtD@(6@a%B_ve0!zlO2d^CSI%C!eC5`aW$onZ zoOZ9P@=FBVvsV+ZF1T8Fb<@>R_H9?ouF?|zc=gEDQ&%6n=6&taYbDSU0yKRTcRdI`gRcM5{`mEX>vOL!un)SHetoDt z{d(5*W!DE?TLvXv)}DH0)%DM>k8td{ZoA%a{nGV2*M*L59S?N`bnLl4vg5^$sU30f znck7yvF`Fvds@fhj#2hy9rV}r=CqDg9oCK=9c3LO9CaOy9W5Of;MY+5?GCqJN7*-B zkzRT5O34|>BS+IbLP#AoA2NJ;O4HIbvKXR zJaKcVeOY_U&C56M-hA*@Z}|9u8*uCL%{$kp+K1m#-x_!8^oa*=J%4NZt-0_S;ZUBO ze@l7tefTxPvHI5fTbpkUwSNIzf9soDRUoaub?BBIK4)*WLCDi5uHCwIOWH|)xpxk= z5A2k}X9&m{Cr5Wa2cOBEb2{gDW_gl$!+@xY!~gZ?|9R_otU==n^83%|uGzSvi3a ze+eOKVE=pc0RQf!8*H@dPJGCN#1FO(1&}}zL4wFQ(x1ElTQFWE1IZ+!Brg*cEL4Y( zH^>k&jZBBnEHVR@THhi`@GF_T3;$-83LgV}GDsRRl7(aud=`^z_`DCF9QZ7O&r-4i zmi|5<%gKlED-XU`!uKlj5m^IEdu!oSKt6_#m8>Hr@V%ZC!P3+xP?BP@6*Sw(XXIPZ zd`~u#8d!8X20p)#&&et9X(l^}gOri8WDhwq7Qo(oRDybyD zk{`$&@*|N7)#L$TKY387Cq0B?q?gc0yoDC>kkAhQ|8<2tDqJPL!mp&CaEtf}zrjxI zKS;1ZgaLv~PzrKku;3~@CUg^q3l9h*gzmzVLQmmo!CMFydJAKPenNy0Bs>HEQU(9y zB}9QmwD5#5UQi1!2&3U2y`B;#31fuGVEK}u6=K2ib+CL>cvkqk5GlMROc34{o)cz) z$cK=tg_#2U%a-sl z#IR0yM<^6h1S^Ct5=_D;LZ(nGn1zi(maqk4+9@m*z7duQ<-&6KzpfR+55kASj}T)O z#8?M09)j5FA#?+TJ}#^mnuHC)2?%{o*d$yNHVYjP%MJK{u3HfDHiWn%ToCTU|8o5y zvl(@qGa6KS-RMK72N76&$3);StUXp&2-V#5_!xH#UEJ+~v1c6U~@CgQ= z;h=?Q^#8y1zC5m~at(K_wfEZdW}Y{LL*`K;B;pv6p_Q6BW#oW}hB!~ipg5r-a)`{# z%m|f393ny@^O%|`5t(V3nU=?)Y_iG9%*xER=6$}!TF)_$cJBS%``5j9^ZTCn{f75_ zp6^?0eS5Q6?ENzCy~O)L39v_DZ-qS$+ZXl(>>${$U`N89f*lY08|+NjOR%M|=41aE zzZUIow2RL_3x%ygJqorFR`6_tZIAjcy}nPk$6!05{TtY>uxDV!xZhw!yb13Cc7rwI zjeJJDk?+678$5=tE;f8#8uI!ezt9(@Td@u)XgB6b6<8M|FEjw_e@)>}ZRR(d|vT9irPwx-HV} zGTpAx?U;^j@q=}{L2rLUx1Z|voNoP_+r}s8c8G2#>9$C>?eu&r^?JQ-_vrRR-F~NA zY&62{ND_v`kgZm~^ieBru{*XB|Vaom^VIE7){Jk-UyJPa%H8|O{`{%!3B z&tvG1#`vdTuY-LKHXimx*jr(Rj^40B$GxyuuKTstVF$*G^KYMSudIKBcA>9GKR=E0 z;VaZrp!Z5^93R7ef%pvQ`35!%)>ywYs82-wJnVE>c_%)P2i6TM)=6B?MW{!kUIH5n zD|Gx-w?>{jP#609!3v%<*hgS9^l{Vl{yg25z>4)Z_KQbQe;nhDeWMz6@jPqnA6Ld1 z{YIRT--tKjjQrP%-vXXB;5BSB>QA9A&YwouU8rw?eH*qF_H$UF>#S~#IP>e0^alDp zuy4b*hdl^u^#4U~zp{Qa+K*#gKiCtnBVbR$PKG@VI~(>aY!R#%R{Sr4ShsT2X z30Cl}g|(qx2P=+G6RZ#FFT#rPEwDkT?}d$k{RsAIHSLs+IYnGposJ8BeV-EbQU4*YgnQ4v~I--tKB-URzH>}{|@w{bo6LH$*d{MWMiI{y;guG8(c z#y^Mt!{8ITj$fur)IURghaSIIw?}pRm2Q90t-7aeUBh8dBCe}$Q(#Y{emCq{SmS*B zU(Nf!I{sQZ41Te$;`|x}U0&!C*Nc4o-}!k-_ zFMnNGgt|EIjPu}H$A2{P2wjGqih3aO&Vd#23w2wn+ecx=_$u8#t=k6O8hH%+Jle(U z+D&@@4p@=*4ZZyxy?#jV|4_GI==OWP|01l|=K^rAg*b0AV8fyFY1j_`2iBqM^KI)I zzpZUuldo&5zqg^So`iO>?mhMX)8G~L_HVUaFUIc^;&pv2^ccU7-i`i5)Q#W6uZ+9$ zIybKGG{lK@%Ft~#Y%=o9gca*KN4JY%Q_(J-Pegw?>V04hUH`lFZ;@}nW%;hGUzz_} z*Y*2Y7qPDx`%AyQ`2HW{HTD_94o3Tk<2LCX{7uYH+7DFlzL^Q{<2?zqN$;A?Xg>f{ zq)JIe`x>B4TA*6cUIbL|{+bo->wpU0VY36DlALI%0V;T(%?-a6sNkJ9U*I#6Kd>I} z63TejEfD^GDH#5{Kt(zrg~C4wRHXOtE~0|>(mZJK1u9aC90j~hjsf}P$mPhW)B=n& zwF09|JAu)rUBDRAZeTmpo51#_y}%BpeZY>U{lGz{1Hi$i_prkE0u^b9=@9Tf(_yrv z0TtQD^a1?gKpa`qao{M^$G}X}r)VDyRHQMc6Tr!)FVHdth;zyG75te% zMS9$H61dv*E$~UxDPX1PGXEB3^93u zADb=$KQUbberCcOs?rG)jPyBBk-jvkz^_bJ;MXQQ@H>+e_`S)EF{gnznr2`4CLoTc z*&n_N#PKo*!gm32jLgCC{eUpAg+CLXZSsVxVp_<;NJtpF*3&j?={B(hneHi zJ{+h>S>^=zV}Xj4ZBB$g4v1^toCJRYP?08?yThLhRHP~9WcX8oiZsKV0zU_+;PX&= zz|RHZN;jv%&j%{fEORg5Z1bJKLUV86TytOa&I2m=%#?n>rRM&?Qu9FI-^_#2TLx65 zW#%Ekhs|lg<>sMie*~yVkC}(VUj@YZU`_`jAK7x=Y#KCp{ggfU%#iWI9Zf`0>0k>b>1_%{L-DPAps-wmip32G_)n}CXx zsFuOM8K_7}YB{jGx(qG102L`&T@L?NAa;Ir1^nB9*!k6!@NWm==&P&X_XJ|+S62gj zs};aLY9+9*x)yl1T7@zFfY|xfYG8l01~@>iMf*S?u4}ap{$L=^8MPk%5FoB=wE=z_ z5ZATZ2pp<50f(s@fH~?$;7oNBaG|;xBNqV`X|cK$SgdXXE>X7wm#WRcRcZ^yJPyPa zt+v8{0*K?N?u1_nRHQZPF8FJKinLDM4ZjMAXH4}?V1v3BE$e|eg6cltPIW(Uw|W5h zmiiv>fO-gcL_G{VsvgDoV?gZE>Id+D2V$32kHeQN$KlJCkKrpo?9!G`;hTZjlPxEJ zcFPxNaR70RTfPEzu$%-YS-u7S)p82G-GR75EvMlp1962~&cIIr;`!S06Z{@PMY`Q` z7Je!a>ufm(9AY^SywBnVrdcimhgmKGhg)Ra(UWd50W&PBB1@xyc-FR9f!P*2aGb>n z9B*+0Cs=%e6D|J0DV9Ktp9)l@X_jDMi6s=c)DjLXwRnK#mMDyQ2&hQgEHUt31}f5a zOMBoBOGjX{r4#UTOK0F$mM*}rEwMl!YaGV=0`W{_jfaoV@P!{@O#qIzCIY8glh8g5 zh}Q|$?!ZE8GFs*Uu_stlfd8=eKuax9k+xb>;lBjLQM2}fe+-CcbL*YJZ>_z7-&y+t zPg(l`zqj@WDzc+|EM_=#;5 z@U(3;@T{!@BYy$nHHobf_^WL#@Vu=G=(JY@BkVOmkG&RnoxKj&)m{&bwKo8J*c*}I zb|7YFZ-U?$41Ci5DR7?-z4K*=HFPCCV5 z0-78u(Cn}RRfipDaX5iCha2c{_~PDnClFVM!ykBqBM=zx2nOEf2nF_VgadDPcrY>* zs7O5>QNX(#F~HuA_P~CQj_ADyh&6X~fI{E^S zIQjuUar6g%?HCCB!7&*4vttPG7e^ZKoMR~PSI2Om$(fF9W+2wbnE|}PnF)+@jsf22 z%mT(cvw_{5*(C{P>uMnK2@YewG`~fOgkLpu@EZ=yYuc2D!EZySTOiySug{!!1C(9&j}SZ*{ex zB?X9c$<+$K2N36yYbX3vAg*H9F8Fr=aW1)b!|wyc>jBrB@b3m<2XpNO_IK?A4sq>A z`+Yz>2e}Ra?{~ci9PK)U_Ax+3dcbuUnB_VO9P9c3nC&_a9Pj!VIKlNPaH8u3aEj{- z;8fRFz?rU-z+Bh2z}c=-z(Ut);8U(Mz*^T&z*k*o!O{xEYcSV2_=kYl*<9!0{|3Zw zTP`pB3qU-NyDq~29f&i{eFJFlxqAV> zaNi01-Q62_$=%oNk{*}CqyQ;I@l#^(+h3T}RoY^D&nH`Y!V-qNhu*T3sQ7+iiywX~ zJ!maamr6fazqT%weztxC{MGuMwG7XXlC4bgu_?A?(oOIm#xtE{TaM>A$+k+GgZ9Uz zB^oZZJ#SqtJ!30TpO9XFUn%Xtn3tuc&c)6a=@sW4wifACrviM<`Mk9S*FvQ8Rq01( z2WKDooq!Uxk9;uTkWU}^Ujc`KM*@xlKMeT5r%=8t_=ey@xlizoz`KLH0q+UEDR{NK zF!Z=jgS;l}W8k{5Pl10AI{|zu>K{kMU(;^5rMe>#uZVjhAU=|*A}i=JSFgLp8mMg#^Je$7MG{g zCtUII1j^xxpQlufP(m;=LJ7mj2qgj|Ba}#tj8LL6GD2yGkr7G$ z4H)TBZp28B(hVa$%1s#QQEtY_NaYrcj8tyL$VlZjjEq!n$H+*fCq_mpcVJ|sau-HM zDfeJxlrjJ#qm)4y8KvBdkx|Nh7#XG9kC9QzFpP{=MtK75(aLCyj8-1N$Y^D(Cm1c` zFfv-1fRWM4B#ewvW?*EDG7}?Xlst@#Q3^0JMwyL~G0Gf_j8W!cWC!I@uy;@%!^jTG z;~3dNc>?SmlqWH=gR%xAJ1FZg@+ReX&m|xH)-2U~10@gcja%-&^os`VV8x)|u+PPn#Ms@9f16h}|517974;Tx{C~8(=IwWtwq4%wS8d(nExAVfUT^I+d*1Qx z`jfr`-jjdY`@Yv#{o}mERbm{G1K#(&hrRXQ?&|Fr)mt5;4pm2~+3FNEPc2cGsq56I z)#ua~)n@e#b-#L2HCvpP5KDVYoaGivs->@Gz4u;Are!j0u4N&x$y;V=@~-!;v{YJZ zEYDlESaw?8u^hF0j=t|KzgmK=V$Ai{Zm_pl2U*8jr&{M(msr=K{ju9k%3ze?w$Zlnw&}JxwldqZsIT|FVA}!vI?CH9@7q2Eerfx` zcFE?nulI(cw6k}%-)Qe{zun#!wZZmb_DuUY`&4_OeUbeUdxiZO`zExDpI7bm-rXqs zQI2_!X!xmy$GqQa_N<1NG_*Sc9YdTM&hgG1rx<_S`-%4i*46O7yrzHh4?S1bzPqCL zKkKLeW5m^3e!R-4tGAuK>d0%g{(6nk*KYS-Gvd#Be*crGKkt(-Tz(WzdcX6Y_WtNS z>;2X1_5SYtZ@uRK68+!%trzAx*LxQ`9|S(?T!*s*dlUTi-W|?2oco+j-ovOh;pbEM zU&H^=`I}R91-sh0Qe5l3eNonX(_9&@DXwL%RjB>l^{m$Ryz3>`E3P+Phg~1LzI1)> zI`5L*cK0!i_II!Mc0lRsz6sdNJ-|K1UEp5oUhb|(UHrW4ehuDR?t|{n+!h}npL%bI zPqfeVJ~#T{xpRb?CFV62~ zzhmAMzq|eFy+iym{KorD^PBDWAZjc9D*fvHUhv!MhilVskKaMR5Bxs&JLM<)`}lY8 z@8dtw|3UwH@1y=t`d9nc`?t+|n=mrz>$-}OJ{f5QJ;|DXLY`db2m1EK?rF~Y_M z+#GOMKw7}0fH?un11bXQ1Ktcc67Y4v8GY1m0p>tgU~u4iZ*-uTjri#tm=Kr}*gJ4g z;OM~VfeQkc1+EEv4kK`Ufja`<0v-%J7Wi4Dv@_^v&=*0!1bKqnc-DIz7lsB;4K6~x6lFQe zYLu$rS|E;PaBJ}HVC+=Ehk+lXd=-2ecn;-Kur;LK>l+dh5*-p3(mkYS$h{%yA(KL8 zhb#?wEaa(>=R>xHyb|(u$f1xEA!kCAPDYr9eO16yU??t zzlU1G{KCS+I)ufB-5k~5uGC9Ba$QTi0B`2e?(@)goqrp&WR|F zcqn33#JY&Oi031=M7$EQJL27lBM~PezK^hY{5)Zv4xU&~qUR1ze^2`h_j^WrCV8&E zkn5T2DfT?%srNqS>3U&}r^)k@r`5B^bHH=NbHekzC;q~Dk15g}84?*CX&i$;+Bme| zd_lC`8hKabfXJbdqa&wBiu1TIa#3Vi)#ff7P(3hWA9>A2ko&lBlPnHbw1-dJq1GQJ-sl-$nfrr9{_z9Vh`P z_1=i+4$(J6caQELJu-S+bbj=L=w;E5M?W3ih~7=wi0#0g(R-uck3JqfPD;kUCa$q# z-Y0R@^h8ZOQ}vAMuX!(Gml}Fu%!SFQI`Y7?t78NC~_D)fMjk*UahiShH zJcNGi68>-dd>FM3JH?kME47%lz}@z#lJN}rc~mW0zKasiqeJ`};cr5*A)_NYAbR_S zov4Z3Xzzt%-a{xKqYUsl3H%A=BFfX)ef)eQqOBK&^8I!dd&OXBrQf5Njlb6RRb;il z2VO^%*o$&hWAvuz?a@1|1|Zg3dwc;}IidoOOkMtjve#-Klr&-ndn z?dcbj)vM)CzxXrTMVuJ(LTBM!jBKmDr`4Kdm-IZ!29y_2Hlq9!WfRJaD4S8Xpln5X zNp?%yWFP5eynnGBcP{KeX-0WPZZEaSU8Pr1T2Wp@*@=4vUYGBZcFBFDH{|}(Zj?PJ zZ=$?~vKQrTlzs95=^c5Xv>)YN`9A3Y%0ZO(qOPCLNK}rK2dvuC(Ia~S!5M#2`Vr+Pl%G+~$}6Q`P|l(JDnBiqNBIrKi*f%N><+`8t$N zDAy~i<<80)`7bD4P`WBLaxBUXC~+t^Ds^%^N;lCgj*I2E zSZ$oR@?-JS_K0Id93$cw5yyx)EkdkZ9R6Fd?Gew|c*e#vHlDHZjE&b~EeMa767(zy z%#y$?3CxnfED6k#z$^(`7I91x#77Kkk3{B6WWGe^OJu%8=1XM0MCMD>^4X9vQNllr zXpbajPGaUHW=>+}BxX)x<|JlLV&)_*vmLpUq+4~4?&RoBj_%~>PLA&6=uVFAqULNsIM3G^`gFB)Ypsp zdQo35O`or(>ONiR9aP$zJ9QuK)P1-s_vJkLYV#1!26uDZ-5l4CE{+6sx-0gN5M*nx~4$k>659mv%ksI9KZGKg6QG0R|P8O$t$nPo7u z4CXN!tQ{kf?_TD+m-&V;-w@^-!hA!RZwT`Z;V~bg9dmJT?$a_0FOB)qm@kd_(wHxe z`O=s#jpvZ|LGs9EmhPwK`+3}kl4B@2hLU3_IfjyBC^?3bV<^wlq1t&W)DL6kVaz;? znTIj+FfFr)7|w{{j2O;{;fxqgEyJm0IJFF?mf^f+hHKZ1;21%U5#$&_juGS-L5>kz zt8~VuGd7*E>5NThY&!L&Q(rpurBh!zujzE{nifh&l5Hf}Mv`qL*+!CWq{b#q} z*bK&IFgAm+8C04?$h@66;g-DoNpO$DQ=U^Eqsrh?H_Fj`X}R$~ma zjA52B%rb^q#xRTcR0-VNrp1cadg4{u7|vr1=P`!!7{hst;XKChIbaN*FCUt4QSmc_Ycac)_B ze#_FIfARmoR5g~W#!}T-sv1jGW2tH^RgKkDVdL$GMlr^<}9;0%WTdvo6q9ec#dd$jHAAB)Hja$#!=rm>KjLWO^^N24oxsc! zn0W#-PhjQ=%shdaCouB_W}cwUT&SMJ%#)aT5;IR?=1I&viJ2!c^CV`T#5J8n^;5_( zg&b4JF@+pc$T5W+Q^+xe98<_KMLTX{9#b_A;Y}mkG_p-2+cdIGBil5xO(WYhvP~n~ zG@d2XIJfC!o36151vA(-g9>I)!3-*xK?O6YUV5%OP71*>W^C z(L0m9GubdT|PJnGA%zC7)k7QFf7%_na@dGpDeuknhA0!9=tqJR+vj3}Ve z0xB(_(gG?ipwa>=Euhi@?mh)v(^*t7iwb5@!7M76MFq1o1w#F7#?EH!Y{t%J>}PXmrV35cVzMnJ+hVdUCfj1NEhgJyvMnatVzMnJ+hVT4Vy?kruEAoi!D7CKTg>yI znEHyTubBFZsjry&im9)d`iiNqnEHyTubBFZHGN`TmXLP|d6$rP33->0cL{lykar1r zmymY}d6$rP3D;!_*JTOUWeL}1318cmP+tl4l~7*^^_5Ux3H6mwUkUY|M>? z)tu#OZI)tO1;sQOWhI)YebLu4U|6#;#@TTE?zr z>{_nqziE!*|*1 zsi2+;>Zzcf3hJq#o(k%zpq>iqsi2+;>ZzcfS8}~}C5z+xEZ;|emZ}=4s)4E+sH%ag z8mOv)sv4-OfvOs)s)4E+sH%ag8o0kSa0hOrmPTr6q?Sf%X{44$YH6gFMrvuKmPTr6 zq?Sf%X{44$?sbjaft#qRiK?2Ys)?$asH%yony9LYs+y>(iK?2Ys)?$asH%yonz#cu z={v9=J~8)uaiZa|m46X?RsUOz8K0Bewm+MtxAB*aw#U1?&fjP64?H)1(9aFC^dsAT zbZRw0i z$NfER3NqN1!OWSAm`ZOt$4%E`@y-)_bJ&~1EV*pUrM^5yZ>0sL|M$BTwZ1xti zw@^N>smJfgw#O=bX0dpfr3yx@j1{8ab|!;~F`xQ5z?IS8G&^yJMOd(Zq-*Ml>;^ zNsAD3Zc@ZwJ;Y-JV>d8%17kNZb^~KKXtCliCL0vv?wF0tvXNOfGRsD0*~ly#nPsDv zMf}}mqhj10vx)gOG2bTU+r)gEm~RvFZDPJnT0U`i%qGRSJ7zO8Z)WDr%)FVIH#75Q zX5P%qo0)mDmRbBJyjd~sj@e3%t>oBBj;-X_N{+4M*h-GAK|t|n zrK(n{YNe`Hs%oXGR;p^Hs#dCMrK(n{YNe`Hs%oXGR;p^%REc|HT9vlHrupF$quO>> zGd{yf>;U4q!mWGwJZF=!KZl!)-8S50?6w}Zd9*gM+j>mKZX3nkDE3Bay<)eGG8wyV z49CTATnxv>Xye3g8)Gtd+xCoT&xrPnXwQiDT7;NEdy}!-c4TZv#&%?EN5*z!Y)36t z?6w_E#%|k*SvoOGCuZryES;F86SH*EvWT_rWHNT!>rJ_+i`PEao8|z;qcb@=lcO^^ zI+LR_IXaW0GdVhI9AXFVY%+G>F3jA8nY%D^7iR9l%w3qd3p00N<}O-hu>*H889Q(+ zIbz8XOO9A_#F8VH9I@nxB}XhdVl@u21IL<-9XO6`ab$}lTO8Tq$QDPoII_i&Eskt) zWQ)_-#10&1GIrp2^2U=lp1kqojVEtBdE?0&Pu_U)#*;Umyzv^Z*n#847s6|g1S&|N zf&?l^pn?P{NT7lQDoCJ$1S&|Nf&?l^pn?QVf!Ki)OvVnJNG*xfl1MFy)RIUoiPVxv zEs4~UNG*xfl1MFy)RIUoiJBI%11Fk{9XN@qlBg<)s*#QDv7F+s49u7lBg<) zs*#QDoIl%cHktFaX&+U?y&>u4W>7Q>W66R#X(PFTN>N$H!Vhw*g@_$JpvSu zp&U1q<$1`?3W5+Xg0_Qe?bDPL46PaZqvrJ@`iOe#I zStgl`|5cdGER&gKGP6u(mdQNtCu`@un9&sGo5FlknQtodO=Z5R%r}+!rZV3&uF!O5 zna(WJnPob&OlOwqdKTP+!Pp$e<}fygu{n&*;gy`DUCH9y&1IHcX31riTxQ8-mRx4Z z)w7tTJkBVe`SO`BpZW5cFQ57HnJ=HJW--ewW|_q-vzTQTv&>?aS=^;&X}gq|Wg+tw zGG8I{6*6BT^A$2*A@db7-(2RK%Y1X0Z!YuAWxl!0H<$V5GT(gWo6mgnnQuPx&1b&( z%r~F;=5tq`ukFg>++Dy|uSMi2B1aK9ipWt!jv{gtk)wzlMdVnhaflshA+Op+WLreG zMPyqEg^3Sc}vJ!Lf#VcmXNoEyd~saO5Ua9EhTR$c}vM#O5RfPmXf!WyrtwV zC2uKt|EBSZtEY@?Wn?QOTN&BP$W}(SGP0GCt&D7Ce9cg%y=D;W{2+PD$y-j|a`Kjw zx17A?T|wRzJX-j(ECN#2#@T}j@RJX-j(ECN#0fDT}9qi z3M#0ef(k0Apn?i2sGx!hDyX1>3M#0ef(k0Aq=HH+sHB2Q zDyXD_N-C(Nf=Vi=q=HH+sHB2QDyZadB9;2@YG!;Qb=$i=_)9fat);59RJE3>)>744 zs#;4`YpH52Rjs9}wN$m1s@77~TK)!EMJ-j-QbjFQ)KWz)Rn$^NEmhP~MJ-j-QbjFQ z)KWz)Rn$^VE!EUgO)b^bQcW$@)KX0?)znf=E!EUgO)b^bQcW$@{JpW7zs=TARSi|u zP*n|8)lgLpRn<^c4OP`pRSi|uP*n|8)lgLpRn<^cEmhT0RV`K3QdKQg)lyY0Rn<~e zEmhT0RV`K3QdKQg)lyY0Rn<{d9aYs)RUK8;QB@sP)lpR)Rn<{d9aYs)RUK8;QB@sP z)$up~I{xPWj44Yz8R1b+rS()=Po?!#T2H0*R9a7^^;B9<^*V*K#3c zB)zM9X6aw_j_46)=?F7_#8<-~G4m&E`-HEM6|?bPy_ueco{gSE_sr4?v+<7qO5MX< zQfA{FmP)hnPQqGxRrEG<+*Y=2qt{HYh2B0!?5B5t-h1>8G2$@2qx3$|J+pL5n}_%v z>=fHhv+Xq7&amwa+kRr(Pi#BOwzF(I$F_59JI}WBZ1b|s%eIT!nhJdvIk#ZdI7aPN ztLVb3{}k1DChp7L{`3aYTcjGhMKQe+dgb)`TZ|((&|)0H!SvGDJCtq1>7`o?jtqL4 z^v39(8K2^A%wsC^O=p%Idim^~#kN9vbJ<&@duC~qB|uvjN!n?dBo+vd-5j@{S`Jge zQFL>Gh`9mtH@5{WVX>>2GaYQ?oQsZxf!e&S`oCzE_dnc-_M{ z?^wUrW`S?{u^Ov;(PpflY&SfWo|RsT?wO^&Z0kpFAiW{<(&%OBo>|Ia+bMcK(K|=) z5s-7`yZ^y1l@KyM&>)1AhV$)J}>Z;bBY8~W%?q&Jz~ zRC=@M71HbH+jedFN$I+WZ^-gB)_FgB572v0_sr7Tz_xp5%u*G-MtV*3Hq+ZmZyUW` zfgQ9}GfTVaeL(NH?%@*?f(%t@x@VSRgGJjEIUnC!v;_AWEy4E`Ey4E_!ViNUPs$;ls8cJpqxbc30&vEaZYZqdUn$* z!vw|8+6(1QlnKgjwsVMUr#@&eR-Uq#pfrI~mbc;4`x`8`sv|58Q$D_5C|~*q+MiZp ztj{P>j%StY9qW|@$8*Z%`vyb|`^AYn1OM+>HB@v|n>w6taU--kY&LiNDL>UGDRyALGz?zT#80%k9 z3Q(>`iIH8dKB^zq^Ea$VXZYP*?bIY!jC_ad9Ofy@gW%6X`x2BW9D|3f+e{BxAH-Z1 zqQuDI?jx2Fmc{UwX!T^&#c@h=_fZ>QN4eXn;69IrG5iYWcgq7*%;t&X-3(J_JbJnX+SE@j~YviXTnll(+z56cswZ`z&<-Di6x^nmRN z^oja@j5`tfsqJ{k5bHu8-^)RAB2FloUBbj*ps#GFzU8@?_MTwp~$P zXakmha>PLw5#o+_Y)hz)PL{4)rxc zq<_b->Hi@I-~ENzhDrFRu|GUy?fJjkRoca{yHQ4bV#PO}{X6J!?YFvNQkpad_Y3#N zUB+orKWVTu2=#uzKJdk(*?bzG^e3Jm#eF^E(PmTIDq2n4OLY0;E>vV>&BFgO_mL*! z|If!G=L~5A{xe%VuG6CKM{gEd@!SbpfN?pfwLM-i|BR&gekio(p=X9P@hX|#)y8y_ zjGvpOvG65)XJRkJ-idtE@iQLL1z^E95~C$snyTk(2j0nu5GwMdxl%h#Umom@n165S zet6^T_y;)eX@tB1eDds;D^AUfW4wgB_{BW`IPS{X zUOCsE_6p15ot+)iN)Gg9Y_&))$X4iPUYeiOEbxGIg|NqVZSFgbT E0KVNyNdN!< literal 0 HcmV?d00001 diff --git a/lib/Moq.pdb b/lib/Moq.pdb new file mode 100644 index 0000000000000000000000000000000000000000..b0eaa8025bef0343d7ac6389c20dfaed0bbc5d9c GIT binary patch literal 357888 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 + Implements the fluent API. + + + + + The expectation will be considered only in the former condition. + + + + + + + The expectation will be considered only in the former condition. + + + + + + + + Setups the get. + + The type of the property. + The expression. + + + + + Setups the set. + + The type of the property. + The setter expression. + + + + + Setups the set. + + The setter expression. + + + + + Defines the Callback verb and overloads. + + + + + Helper interface used to hide the base + members from the fluent API to make it much cleaner + in Visual Studio intellisense. + + + + + + + + + + + + + + + + + Specifies a callback to invoke when the method is called. + + The callback method to invoke. + + The following example specifies a callback to set a boolean + value that can be used later: + + var called = false; + mock.Setup(x => x.Execute()) + .Callback(() => called = true); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The argument type of the invoked method. + The callback method to invoke. + + Invokes the given callback with the concrete invocation argument value. + + Notice how the specific string argument is retrieved by simply declaring + it as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute(It.IsAny<string>())) + .Callback((string command) => Console.WriteLine(command)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2) => Console.WriteLine(arg1 + arg2)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3) => Console.WriteLine(arg1 + arg2 + arg3)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3, string arg4) => Console.WriteLine(arg1 + arg2 + arg3 + arg4)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3, string arg4, string arg5) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10, string arg11) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10, string arg11, string arg12) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The type of the thirteenth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10, string arg11, string arg12, string arg13) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12 + arg13)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The type of the thirteenth argument of the invoked method. + The type of the fourteenth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10, string arg11, string arg12, string arg13, string arg14) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12 + arg13 + arg14)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The type of the thirteenth argument of the invoked method. + The type of the fourteenth argument of the invoked method. + The type of the fifteenth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10, string arg11, string arg12, string arg13, string arg14, string arg15) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12 + arg13 + arg14 + arg15)); + + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The type of the thirteenth argument of the invoked method. + The type of the fourteenth argument of the invoked method. + The type of the fifteenth argument of the invoked method. + The type of the sixteenth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10, string arg11, string arg12, string arg13, string arg14, string arg15, string arg16) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12 + arg13 + arg14 + arg15 + arg16)); + + + + + + Defines the Callback verb and overloads for callbacks on + setups that return a value. + + Mocked type. + Type of the return value of the setup. + + + + Specifies a callback to invoke when the method is called. + + The callback method to invoke. + + The following example specifies a callback to set a boolean value that can be used later: + + var called = false; + mock.Setup(x => x.Execute()) + .Callback(() => called = true) + .Returns(true); + + Note that in the case of value-returning methods, after the Callback + call you can still specify the return value. + + + + + Specifies a callback to invoke when the method is called that receives the original arguments. + + The type of the argument of the invoked method. + Callback method to invoke. + + Invokes the given callback with the concrete invocation argument value. + + Notice how the specific string argument is retrieved by simply declaring + it as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute(It.IsAny<string>())) + .Callback(command => Console.WriteLine(command)) + .Returns(true); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2) => Console.WriteLine(arg1 + arg2)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3) => Console.WriteLine(arg1 + arg2 + arg3)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3, arg4) => Console.WriteLine(arg1 + arg2 + arg3 + arg4)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3, arg4, arg5) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3, arg4, arg5, arg6) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3, arg4, arg5, arg6, arg7) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The type of the thirteenth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12 + arg13)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The type of the thirteenth argument of the invoked method. + The type of the fourteenth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12 + arg13 + arg14)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The type of the thirteenth argument of the invoked method. + The type of the fourteenth argument of the invoked method. + The type of the fifteenth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12 + arg13 + arg14 + arg15)); + + + + + + Specifies a callback to invoke when the method is called that receives the original + arguments. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The type of the thirteenth argument of the invoked method. + The type of the fourteenth argument of the invoked method. + The type of the fifteenth argument of the invoked method. + The type of the sixteenth argument of the invoked method. + The callback method to invoke. + A reference to interface. + + Invokes the given callback with the concrete invocation arguments values. + + Notice how the specific arguments are retrieved by simply declaring + them as part of the lambda expression for the callback: + + + mock.Setup(x => x.Execute( + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>(), + It.IsAny<string>())) + .Callback((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16) => Console.WriteLine(arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12 + arg13 + arg14 + arg15 + arg16)); + + + + + + Defines the Raises verb. + + + + + Specifies the event that will be raised + when the setup is met. + + An expression that represents an event attach or detach action. + The event arguments to pass for the raised event. + + The following example shows how to raise an event when + the setup is met: + + var mock = new Mock<IContainer>(); + + mock.Setup(add => add.Add(It.IsAny<string>(), It.IsAny<object>())) + .Raises(add => add.Added += null, EventArgs.Empty); + + + + + + Specifies the event that will be raised + when the setup is matched. + + An expression that represents an event attach or detach action. + A function that will build the + to pass when raising the event. + + + + + Specifies the custom event that will be raised + when the setup is matched. + + An expression that represents an event attach or detach action. + The arguments to pass to the custom delegate (non EventHandler-compatible). + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + The type of the fourth argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + The type of the fourth argument received by the expected invocation. + The type of the fifth argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + The type of the fourth argument received by the expected invocation. + The type of the fifth argument received by the expected invocation. + The type of the sixth argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + The type of the fourth argument received by the expected invocation. + The type of the fifth argument received by the expected invocation. + The type of the sixth argument received by the expected invocation. + The type of the seventh argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + The type of the fourth argument received by the expected invocation. + The type of the fifth argument received by the expected invocation. + The type of the sixth argument received by the expected invocation. + The type of the seventh argument received by the expected invocation. + The type of the eighth argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + The type of the fourth argument received by the expected invocation. + The type of the fifth argument received by the expected invocation. + The type of the sixth argument received by the expected invocation. + The type of the seventh argument received by the expected invocation. + The type of the eighth argument received by the expected invocation. + The type of the nineth argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + The type of the fourth argument received by the expected invocation. + The type of the fifth argument received by the expected invocation. + The type of the sixth argument received by the expected invocation. + The type of the seventh argument received by the expected invocation. + The type of the eighth argument received by the expected invocation. + The type of the nineth argument received by the expected invocation. + The type of the tenth argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + The type of the fourth argument received by the expected invocation. + The type of the fifth argument received by the expected invocation. + The type of the sixth argument received by the expected invocation. + The type of the seventh argument received by the expected invocation. + The type of the eighth argument received by the expected invocation. + The type of the nineth argument received by the expected invocation. + The type of the tenth argument received by the expected invocation. + The type of the eleventh argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + The type of the fourth argument received by the expected invocation. + The type of the fifth argument received by the expected invocation. + The type of the sixth argument received by the expected invocation. + The type of the seventh argument received by the expected invocation. + The type of the eighth argument received by the expected invocation. + The type of the nineth argument received by the expected invocation. + The type of the tenth argument received by the expected invocation. + The type of the eleventh argument received by the expected invocation. + The type of the twelfth argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + The type of the fourth argument received by the expected invocation. + The type of the fifth argument received by the expected invocation. + The type of the sixth argument received by the expected invocation. + The type of the seventh argument received by the expected invocation. + The type of the eighth argument received by the expected invocation. + The type of the nineth argument received by the expected invocation. + The type of the tenth argument received by the expected invocation. + The type of the eleventh argument received by the expected invocation. + The type of the twelfth argument received by the expected invocation. + The type of the thirteenth argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + The type of the fourth argument received by the expected invocation. + The type of the fifth argument received by the expected invocation. + The type of the sixth argument received by the expected invocation. + The type of the seventh argument received by the expected invocation. + The type of the eighth argument received by the expected invocation. + The type of the nineth argument received by the expected invocation. + The type of the tenth argument received by the expected invocation. + The type of the eleventh argument received by the expected invocation. + The type of the twelfth argument received by the expected invocation. + The type of the thirteenth argument received by the expected invocation. + The type of the fourteenth argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + The type of the fourth argument received by the expected invocation. + The type of the fifth argument received by the expected invocation. + The type of the sixth argument received by the expected invocation. + The type of the seventh argument received by the expected invocation. + The type of the eighth argument received by the expected invocation. + The type of the nineth argument received by the expected invocation. + The type of the tenth argument received by the expected invocation. + The type of the eleventh argument received by the expected invocation. + The type of the twelfth argument received by the expected invocation. + The type of the thirteenth argument received by the expected invocation. + The type of the fourteenth argument received by the expected invocation. + The type of the fifteenth argument received by the expected invocation. + + + + + Specifies the event that will be raised when the setup is matched. + + The expression that represents an event attach or detach action. + The function that will build the + to pass when raising the event. + The type of the first argument received by the expected invocation. + The type of the second argument received by the expected invocation. + The type of the third argument received by the expected invocation. + The type of the fourth argument received by the expected invocation. + The type of the fifth argument received by the expected invocation. + The type of the sixth argument received by the expected invocation. + The type of the seventh argument received by the expected invocation. + The type of the eighth argument received by the expected invocation. + The type of the nineth argument received by the expected invocation. + The type of the tenth argument received by the expected invocation. + The type of the eleventh argument received by the expected invocation. + The type of the twelfth argument received by the expected invocation. + The type of the thirteenth argument received by the expected invocation. + The type of the fourteenth argument received by the expected invocation. + The type of the fifteenth argument received by the expected invocation. + The type of the sixteenth argument received by the expected invocation. + + + + + Defines the Returns verb. + + Mocked type. + Type of the return value from the expression. + + + + Specifies the value to return. + + The value to return, or . + + Return a true value from the method call: + + mock.Setup(x => x.Execute("ping")) + .Returns(true); + + + + + + Specifies a function that will calculate the value to return from the method. + + The function that will calculate the return value. + + Return a calculated value when the method is called: + + mock.Setup(x => x.Execute("ping")) + .Returns(() => returnValues[0]); + + The lambda expression to retrieve the return value is lazy-executed, + meaning that its value may change depending on the moment the method + is executed and the value the returnValues array has at + that moment. + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the argument of the invoked method. + The function that will calculate the return value. + + Return a calculated value which is evaluated lazily at the time of the invocation. + + The lookup list can change between invocations and the setup + will return different values accordingly. Also, notice how the specific + string argument is retrieved by simply declaring it as part of the lambda + expression: + + + mock.Setup(x => x.Execute(It.IsAny<string>())) + .Returns((string command) => returnValues[command]); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2) => arg1 + arg2); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3) => arg1 + arg2 + arg3); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3, string arg4) => arg1 + arg2 + arg3 + arg4); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3, string arg4, string arg5) => arg1 + arg2 + arg3 + arg4 + arg5); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6) => arg1 + arg2 + arg3 + arg4 + arg5 + arg6); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7) => arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8) => arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9) => arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10) => arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10, string arg11) => arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10, string arg11, string arg12) => arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The type of the thirteenth argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10, string arg11, string arg12, string arg13) => arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12 + arg13); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The type of the thirteenth argument of the invoked method. + The type of the fourteenth argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10, string arg11, string arg12, string arg13, string arg14) => arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12 + arg13 + arg14); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The type of the thirteenth argument of the invoked method. + The type of the fourteenth argument of the invoked method. + The type of the fifteenth argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10, string arg11, string arg12, string arg13, string arg14, string arg15) => arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12 + arg13 + arg14 + arg15); + + + + + + Specifies a function that will calculate the value to return from the method, + retrieving the arguments for the invocation. + + The type of the first argument of the invoked method. + The type of the second argument of the invoked method. + The type of the third argument of the invoked method. + The type of the fourth argument of the invoked method. + The type of the fifth argument of the invoked method. + The type of the sixth argument of the invoked method. + The type of the seventh argument of the invoked method. + The type of the eighth argument of the invoked method. + The type of the nineth argument of the invoked method. + The type of the tenth argument of the invoked method. + The type of the eleventh argument of the invoked method. + The type of the twelfth argument of the invoked method. + The type of the thirteenth argument of the invoked method. + The type of the fourteenth argument of the invoked method. + The type of the fifteenth argument of the invoked method. + The type of the sixteenth argument of the invoked method. + The function that will calculate the return value. + Returns a calculated value which is evaluated lazily at the time of the invocation. + + + The return value is calculated from the value of the actual method invocation arguments. + Notice how the arguments are retrieved by simply declaring them as part of the lambda + expression: + + + mock.Setup(x => x.Execute( + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>(), + It.IsAny<int>())) + .Returns((string arg1, string arg2, string arg3, string arg4, string arg5, string arg6, string arg7, string arg8, string arg9, string arg10, string arg11, string arg12, string arg13, string arg14, string arg15, string arg16) => arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12 + arg13 + arg14 + arg15 + arg16); + + + + + + Language for ReturnSequence + + + + + Returns value + + + + + Throws an exception + + + + + Throws an exception + + + + + The first method call or member access will be the + last segment of the expression (depth-first traversal), + which is the one we have to Setup rather than FluentMock. + And the last one is the one we have to Mock.Get rather + than FluentMock. + + + + + Base class for mocks and static helper class with methods that + apply to mocked objects, such as to + retrieve a from an object instance. + + + + + Creates an mock object of the indicated type. + + The type of the mocked object. + The mocked object created. + + + + Creates an mock object of the indicated type. + + The predicate with the specification of how the mocked object should behave. + The type of the mocked object. + The mocked object created. + + + + Initializes a new instance of the class. + + + + + Retrieves the mock object for the given object instance. + + Type of the mock to retrieve. Can be omitted as it's inferred + from the object instance passed in as the instance. + The instance of the mocked object.The mock associated with the mocked object. + The received instance + was not created by Moq. + + The following example shows how to add a new setup to an object + instance which is not the original but rather + the object associated with it: + + // Typed instance, not the mock, is retrieved from some test API. + HttpContextBase context = GetMockContext(); + + // context.Request is the typed object from the "real" API + // so in order to add a setup to it, we need to get + // the mock that "owns" it + Mock<HttpRequestBase> request = Mock.Get(context.Request); + mock.Setup(req => req.AppRelativeCurrentExecutionFilePath) + .Returns(tempUrl); + + + + + + Returns the mocked object value. + + + + + Verifies that all verifiable expectations have been met. + + This example sets up an expectation and marks it as verifiable. After + the mock is used, a Verify() call is issued on the mock + to ensure the method in the setup was invoked: + + var mock = new Mock<IWarehouse>(); + this.Setup(x => x.HasInventory(TALISKER, 50)).Verifiable().Returns(true); + ... + // other test code + ... + // Will throw if the test code has didn't call HasInventory. + this.Verify(); + + Not all verifiable expectations were met. + + + + Verifies all expectations regardless of whether they have + been flagged as verifiable. + + This example sets up an expectation without marking it as verifiable. After + the mock is used, a call is issued on the mock + to ensure that all expectations are met: + + var mock = new Mock<IWarehouse>(); + this.Setup(x => x.HasInventory(TALISKER, 50)).Returns(true); + ... + // other test code + ... + // Will throw if the test code has didn't call HasInventory, even + // that expectation was not marked as verifiable. + this.VerifyAll(); + + At least one expectation was not met. + + + + Gets the interceptor target for the given expression and root mock, + building the intermediate hierarchy of mock objects if necessary. + + + + + Raises the associated event with the given + event argument data. + + + + + Raises the associated event with the given + event argument data. + + + + + Adds an interface implementation to the mock, + allowing setups to be specified for it. + + This method can only be called before the first use + of the mock property, at which + point the runtime type has already been generated + and no more interfaces can be added to it. + + Also, must be an + interface and not a class, which must be specified + when creating the mock instead. + + + The mock type + has already been generated by accessing the property. + + The specified + is not an interface. + + The following example creates a mock for the main interface + and later adds to it to verify + it's called by the consumer code: + + var mock = new Mock<IProcessor>(); + mock.Setup(x => x.Execute("ping")); + + // add IDisposable interface + var disposable = mock.As<IDisposable>(); + disposable.Setup(d => d.Dispose()).Verifiable(); + + Type of interface to cast the mock to. + + + + + + + Behavior of the mock, according to the value set in the constructor. + + + + + Whether the base member virtual implementation will be called + for mocked classes if no setup is matched. Defaults to . + + + + + Specifies the behavior to use when returning default values for + unexpected invocations on loose mocks. + + + + + Gets the mocked object instance. + + + + + Retrieves the type of the mocked object, its generic type argument. + This is used in the auto-mocking of hierarchy access. + + + + + Specifies the class that will determine the default + value to return when invocations are made that + have no setups and need to return a default + value (for loose mocks). + + + + + Exposes the list of extra interfaces implemented by the mock. + + + + + Utility repository class to use to construct multiple + mocks when consistent verification is + desired for all of them. + + + If multiple mocks will be created during a test, passing + the desired (if different than the + or the one + passed to the repository constructor) and later verifying each + mock can become repetitive and tedious. + + This repository class helps in that scenario by providing a + simplified creation of multiple mocks with a default + (unless overriden by calling + ) and posterior verification. + + + + The following is a straightforward example on how to + create and automatically verify strict mocks using a : + + var repository = new MockRepository(MockBehavior.Strict); + + var foo = repository.Create<IFoo>(); + var bar = repository.Create<IBar>(); + + // no need to call Verifiable() on the setup + // as we'll be validating all of them anyway. + foo.Setup(f => f.Do()); + bar.Setup(b => b.Redo()); + + // exercise the mocks here + + repository.VerifyAll(); + // At this point all setups are already checked + // and an optional MockException might be thrown. + // Note also that because the mocks are strict, any invocation + // that doesn't have a matching setup will also throw a MockException. + + The following examples shows how to setup the repository + to create loose mocks and later verify only verifiable setups: + + var repository = new MockRepository(MockBehavior.Loose); + + var foo = repository.Create<IFoo>(); + var bar = repository.Create<IBar>(); + + // this setup will be verified when we verify the repository + foo.Setup(f => f.Do()).Verifiable(); + + // this setup will NOT be verified + foo.Setup(f => f.Calculate()); + + // this setup will be verified when we verify the repository + bar.Setup(b => b.Redo()).Verifiable(); + + // exercise the mocks here + // note that because the mocks are Loose, members + // called in the interfaces for which no matching + // setups exist will NOT throw exceptions, + // and will rather return default values. + + repository.Verify(); + // At this point verifiable setups are already checked + // and an optional MockException might be thrown. + + The following examples shows how to setup the repository with a + default strict behavior, overriding that default for a + specific mock: + + var repository = new MockRepository(MockBehavior.Strict); + + // this particular one we want loose + var foo = repository.Create<IFoo>(MockBehavior.Loose); + var bar = repository.Create<IBar>(); + + // specify setups + + // exercise the mocks here + + repository.Verify(); + + + + + + + Utility factory class to use to construct multiple + mocks when consistent verification is + desired for all of them. + + + If multiple mocks will be created during a test, passing + the desired (if different than the + or the one + passed to the factory constructor) and later verifying each + mock can become repetitive and tedious. + + This factory class helps in that scenario by providing a + simplified creation of multiple mocks with a default + (unless overriden by calling + ) and posterior verification. + + + + The following is a straightforward example on how to + create and automatically verify strict mocks using a : + + var factory = new MockFactory(MockBehavior.Strict); + + var foo = factory.Create<IFoo>(); + var bar = factory.Create<IBar>(); + + // no need to call Verifiable() on the setup + // as we'll be validating all of them anyway. + foo.Setup(f => f.Do()); + bar.Setup(b => b.Redo()); + + // exercise the mocks here + + factory.VerifyAll(); + // At this point all setups are already checked + // and an optional MockException might be thrown. + // Note also that because the mocks are strict, any invocation + // that doesn't have a matching setup will also throw a MockException. + + The following examples shows how to setup the factory + to create loose mocks and later verify only verifiable setups: + + var factory = new MockFactory(MockBehavior.Loose); + + var foo = factory.Create<IFoo>(); + var bar = factory.Create<IBar>(); + + // this setup will be verified when we verify the factory + foo.Setup(f => f.Do()).Verifiable(); + + // this setup will NOT be verified + foo.Setup(f => f.Calculate()); + + // this setup will be verified when we verify the factory + bar.Setup(b => b.Redo()).Verifiable(); + + // exercise the mocks here + // note that because the mocks are Loose, members + // called in the interfaces for which no matching + // setups exist will NOT throw exceptions, + // and will rather return default values. + + factory.Verify(); + // At this point verifiable setups are already checked + // and an optional MockException might be thrown. + + The following examples shows how to setup the factory with a + default strict behavior, overriding that default for a + specific mock: + + var factory = new MockFactory(MockBehavior.Strict); + + // this particular one we want loose + var foo = factory.Create<IFoo>(MockBehavior.Loose); + var bar = factory.Create<IBar>(); + + // specify setups + + // exercise the mocks here + + factory.Verify(); + + + + + + + Initializes the factory with the given + for newly created mocks from the factory. + + The behavior to use for mocks created + using the factory method if not overriden + by using the overload. + + + + Creates a new mock with the default + specified at factory construction time. + + Type to mock. + A new . + + + var factory = new MockFactory(MockBehavior.Strict); + + var foo = factory.Create<IFoo>(); + // use mock on tests + + factory.VerifyAll(); + + + + + + Creates a new mock with the default + specified at factory construction time and with the + the given constructor arguments for the class. + + + The mock will try to find the best match constructor given the + constructor arguments, and invoke that to initialize the instance. + This applies only to classes, not interfaces. + + Type to mock. + Constructor arguments for mocked classes. + A new . + + + var factory = new MockFactory(MockBehavior.Default); + + var mock = factory.Create<MyBase>("Foo", 25, true); + // use mock on tests + + factory.Verify(); + + + + + + Creates a new mock with the given . + + Type to mock. + Behavior to use for the mock, which overrides + the default behavior specified at factory construction time. + A new . + + The following example shows how to create a mock with a different + behavior to that specified as the default for the factory: + + var factory = new MockFactory(MockBehavior.Strict); + + var foo = factory.Create<IFoo>(MockBehavior.Loose); + + + + + + Creates a new mock with the given + and with the the given constructor arguments for the class. + + + The mock will try to find the best match constructor given the + constructor arguments, and invoke that to initialize the instance. + This applies only to classes, not interfaces. + + Type to mock. + Behavior to use for the mock, which overrides + the default behavior specified at factory construction time. + Constructor arguments for mocked classes. + A new . + + The following example shows how to create a mock with a different + behavior to that specified as the default for the factory, passing + constructor arguments: + + var factory = new MockFactory(MockBehavior.Default); + + var mock = factory.Create<MyBase>(MockBehavior.Strict, "Foo", 25, true); + + + + + + Implements creation of a new mock within the factory. + + Type to mock. + The behavior for the new mock. + Optional arguments for the construction of the mock. + + + + Verifies all verifiable expectations on all mocks created + by this factory. + + + One or more mocks had expectations that were not satisfied. + + + + Verifies all verifiable expectations on all mocks created + by this factory. + + + One or more mocks had expectations that were not satisfied. + + + + Invokes for each mock + in , and accumulates the resulting + that might be + thrown from the action. + + The action to execute against + each mock. + + + + Whether the base member virtual implementation will be called + for mocked classes if no setup is matched. Defaults to . + + + + + Specifies the behavior to use when returning default values for + unexpected invocations on loose mocks. + + + + + Gets the mocks that have been created by this factory and + that will get verified together. + + + + + Access the universe of mocks of the given type, to retrieve those + that behave according to the LINQ query specification. + + The type of the mocked object to query. + + + + Access the universe of mocks of the given type, to retrieve those + that behave according to the LINQ query specification. + + The predicate with the setup expressions. + The type of the mocked object to query. + + + + Creates an mock object of the indicated type. + + The type of the mocked object. + The mocked object created. + + + + Creates an mock object of the indicated type. + + The predicate with the setup expressions. + The type of the mocked object. + The mocked object created. + + + + Creates the mock query with the underlying queriable implementation. + + + + + Wraps the enumerator inside a queryable. + + + + + Method that is turned into the actual call from .Query{T}, to + transform the queryable query into a normal enumerable query. + This method is never used directly by consumers. + + + + + Initializes the repository with the given + for newly created mocks from the repository. + + The behavior to use for mocks created + using the repository method if not overriden + by using the overload. + + + + A that returns an empty default value + for invocations that do not have setups or return values, with loose mocks. + This is the default behavior for a mock. + + + + + Interface to be implemented by classes that determine the + default value of non-expected invocations. + + + + + Defines the default value to return in all the methods returning . + The type of the return value.The value to set as default. + + + + Provides a value for the given member and arguments. + + The member to provide a default value for. + + + + + The intention of is to create a more readable + string representation for the failure message. + + + + + Implements the fluent API. + + + + + Defines the Throws verb. + + + + + Specifies the exception to throw when the method is invoked. + + Exception instance to throw. + + This example shows how to throw an exception when the method is + invoked with an empty string argument: + + mock.Setup(x => x.Execute("")) + .Throws(new ArgumentException()); + + + + + + Specifies the type of exception to throw when the method is invoked. + + Type of exception to instantiate and throw when the setup is matched. + + This example shows how to throw an exception when the method is + invoked with an empty string argument: + + mock.Setup(x => x.Execute("")) + .Throws<ArgumentException>(); + + + + + + Implements the fluent API. + + + + + Defines occurrence members to constraint setups. + + + + + The expected invocation can happen at most once. + + + + var mock = new Mock<ICommand>(); + mock.Setup(foo => foo.Execute("ping")) + .AtMostOnce(); + + + + + + The expected invocation can happen at most specified number of times. + + The number of times to accept calls. + + + var mock = new Mock<ICommand>(); + mock.Setup(foo => foo.Execute("ping")) + .AtMost( 5 ); + + + + + + Defines the Verifiable verb. + + + + + Marks the expectation as verifiable, meaning that a call + to will check if this particular + expectation was met. + + + The following example marks the expectation as verifiable: + + mock.Expect(x => x.Execute("ping")) + .Returns(true) + .Verifiable(); + + + + + + Marks the expectation as verifiable, meaning that a call + to will check if this particular + expectation was met, and specifies a message for failures. + + + The following example marks the expectation as verifiable: + + mock.Expect(x => x.Execute("ping")) + .Returns(true) + .Verifiable("Ping should be executed always!"); + + + + + + Implements the fluent API. + + + + + We need this non-generics base class so that + we can use from + generic code. + + + + + Implements the fluent API. + + + + + Implements the fluent API. + + + + + Implements the fluent API. + + + + + Defines the Callback verb for property getter setups. + + + Mocked type. + Type of the property. + + + + Specifies a callback to invoke when the property is retrieved. + + Callback method to invoke. + + Invokes the given callback with the property value being set. + + mock.SetupGet(x => x.Suspended) + .Callback(() => called = true) + .Returns(true); + + + + + + Implements the fluent API. + + + + + Defines the Returns verb for property get setups. + + Mocked type. + Type of the property. + + + + Specifies the value to return. + + The value to return, or . + + Return a true value from the property getter call: + + mock.SetupGet(x => x.Suspended) + .Returns(true); + + + + + + Specifies a function that will calculate the value to return for the property. + + The function that will calculate the return value. + + Return a calculated value when the property is retrieved: + + mock.SetupGet(x => x.Suspended) + .Returns(() => returnValues[0]); + + The lambda expression to retrieve the return value is lazy-executed, + meaning that its value may change depending on the moment the property + is retrieved and the value the returnValues array has at + that moment. + + + + + Implements the fluent API. + + + + + Encapsulates a method that has five parameters and does not return a value. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + + + + Encapsulates a method that has five parameters and returns a value of the type specified by the parameter. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the return value of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The return value of the method that this delegate encapsulates. + + + + Encapsulates a method that has six parameters and does not return a value. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + + + + Encapsulates a method that has six parameters and returns a value of the type specified by the parameter. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the return value of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The return value of the method that this delegate encapsulates. + + + + Encapsulates a method that has seven parameters and does not return a value. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + + + + Encapsulates a method that has seven parameters and returns a value of the type specified by the parameter. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the return value of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The return value of the method that this delegate encapsulates. + + + + Encapsulates a method that has eight parameters and does not return a value. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + + + + Encapsulates a method that has eight parameters and returns a value of the type specified by the parameter. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the return value of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The return value of the method that this delegate encapsulates. + + + + Encapsulates a method that has nine parameters and does not return a value. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + + + + Encapsulates a method that has nine parameters and returns a value of the type specified by the parameter. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the return value of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The return value of the method that this delegate encapsulates. + + + + Encapsulates a method that has ten parameters and does not return a value. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + + + + Encapsulates a method that has ten parameters and returns a value of the type specified by the parameter. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The type of the return value of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + The return value of the method that this delegate encapsulates. + + + + Encapsulates a method that has eleven parameters and does not return a value. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The type of the eleventh parameter of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + The eleventh parameter of the method that this delegate encapsulates. + + + + Encapsulates a method that has eleven parameters and returns a value of the type specified by the parameter. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The type of the eleventh parameter of the method that this delegate encapsulates. + The type of the return value of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + The eleventh parameter of the method that this delegate encapsulates. + The return value of the method that this delegate encapsulates. + + + + Encapsulates a method that has twelve parameters and does not return a value. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The type of the eleventh parameter of the method that this delegate encapsulates. + The type of the twelfth parameter of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + The eleventh parameter of the method that this delegate encapsulates. + The twelfth parameter of the method that this delegate encapsulates. + + + + Encapsulates a method that has twelve parameters and returns a value of the type specified by the parameter. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The type of the eleventh parameter of the method that this delegate encapsulates. + The type of the twelfth parameter of the method that this delegate encapsulates. + The type of the return value of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + The eleventh parameter of the method that this delegate encapsulates. + The twelfth parameter of the method that this delegate encapsulates. + The return value of the method that this delegate encapsulates. + + + + Encapsulates a method that has thirteen parameters and does not return a value. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The type of the eleventh parameter of the method that this delegate encapsulates. + The type of the twelfth parameter of the method that this delegate encapsulates. + The type of the thirteenth parameter of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + The eleventh parameter of the method that this delegate encapsulates. + The twelfth parameter of the method that this delegate encapsulates. + The thirteenth parameter of the method that this delegate encapsulates. + + + + Encapsulates a method that has thirteen parameters and returns a value of the type specified by the parameter. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The type of the eleventh parameter of the method that this delegate encapsulates. + The type of the twelfth parameter of the method that this delegate encapsulates. + The type of the thirteenth parameter of the method that this delegate encapsulates. + The type of the return value of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + The eleventh parameter of the method that this delegate encapsulates. + The twelfth parameter of the method that this delegate encapsulates. + The thirteenth parameter of the method that this delegate encapsulates. + The return value of the method that this delegate encapsulates. + + + + Encapsulates a method that has fourteen parameters and does not return a value. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The type of the eleventh parameter of the method that this delegate encapsulates. + The type of the twelfth parameter of the method that this delegate encapsulates. + The type of the thirteenth parameter of the method that this delegate encapsulates. + The type of the fourteenth parameter of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + The eleventh parameter of the method that this delegate encapsulates. + The twelfth parameter of the method that this delegate encapsulates. + The thirteenth parameter of the method that this delegate encapsulates. + The fourteenth parameter of the method that this delegate encapsulates. + + + + Encapsulates a method that has fourteen parameters and returns a value of the type specified by the parameter. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The type of the eleventh parameter of the method that this delegate encapsulates. + The type of the twelfth parameter of the method that this delegate encapsulates. + The type of the thirteenth parameter of the method that this delegate encapsulates. + The type of the fourteenth parameter of the method that this delegate encapsulates. + The type of the return value of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + The eleventh parameter of the method that this delegate encapsulates. + The twelfth parameter of the method that this delegate encapsulates. + The thirteenth parameter of the method that this delegate encapsulates. + The fourteenth parameter of the method that this delegate encapsulates. + The return value of the method that this delegate encapsulates. + + + + Encapsulates a method that has fifteen parameters and does not return a value. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The type of the eleventh parameter of the method that this delegate encapsulates. + The type of the twelfth parameter of the method that this delegate encapsulates. + The type of the thirteenth parameter of the method that this delegate encapsulates. + The type of the fourteenth parameter of the method that this delegate encapsulates. + The type of the fifteenth parameter of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + The eleventh parameter of the method that this delegate encapsulates. + The twelfth parameter of the method that this delegate encapsulates. + The thirteenth parameter of the method that this delegate encapsulates. + The fourteenth parameter of the method that this delegate encapsulates. + The fifteenth parameter of the method that this delegate encapsulates. + + + + Encapsulates a method that has fifteen parameters and returns a value of the type specified by the parameter. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The type of the eleventh parameter of the method that this delegate encapsulates. + The type of the twelfth parameter of the method that this delegate encapsulates. + The type of the thirteenth parameter of the method that this delegate encapsulates. + The type of the fourteenth parameter of the method that this delegate encapsulates. + The type of the fifteenth parameter of the method that this delegate encapsulates. + The type of the return value of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + The eleventh parameter of the method that this delegate encapsulates. + The twelfth parameter of the method that this delegate encapsulates. + The thirteenth parameter of the method that this delegate encapsulates. + The fourteenth parameter of the method that this delegate encapsulates. + The fifteenth parameter of the method that this delegate encapsulates. + The return value of the method that this delegate encapsulates. + + + + Encapsulates a method that has sixteen parameters and does not return a value. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The type of the eleventh parameter of the method that this delegate encapsulates. + The type of the twelfth parameter of the method that this delegate encapsulates. + The type of the thirteenth parameter of the method that this delegate encapsulates. + The type of the fourteenth parameter of the method that this delegate encapsulates. + The type of the fifteenth parameter of the method that this delegate encapsulates. + The type of the sixteenth parameter of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + The eleventh parameter of the method that this delegate encapsulates. + The twelfth parameter of the method that this delegate encapsulates. + The thirteenth parameter of the method that this delegate encapsulates. + The fourteenth parameter of the method that this delegate encapsulates. + The fifteenth parameter of the method that this delegate encapsulates. + The sixteenth parameter of the method that this delegate encapsulates. + + + + Encapsulates a method that has sixteen parameters and returns a value of the type specified by the parameter. + + The type of the first parameter of the method that this delegate encapsulates. + The type of the second parameter of the method that this delegate encapsulates. + The type of the third parameter of the method that this delegate encapsulates. + The type of the fourth parameter of the method that this delegate encapsulates. + The type of the fifth parameter of the method that this delegate encapsulates. + The type of the sixth parameter of the method that this delegate encapsulates. + The type of the seventh parameter of the method that this delegate encapsulates. + The type of the eighth parameter of the method that this delegate encapsulates. + The type of the nineth parameter of the method that this delegate encapsulates. + The type of the tenth parameter of the method that this delegate encapsulates. + The type of the eleventh parameter of the method that this delegate encapsulates. + The type of the twelfth parameter of the method that this delegate encapsulates. + The type of the thirteenth parameter of the method that this delegate encapsulates. + The type of the fourteenth parameter of the method that this delegate encapsulates. + The type of the fifteenth parameter of the method that this delegate encapsulates. + The type of the sixteenth parameter of the method that this delegate encapsulates. + The type of the return value of the method that this delegate encapsulates. + The first parameter of the method that this delegate encapsulates. + The second parameter of the method that this delegate encapsulates. + The third parameter of the method that this delegate encapsulates. + The fourth parameter of the method that this delegate encapsulates. + The fifth parameter of the method that this delegate encapsulates. + The sixth parameter of the method that this delegate encapsulates. + The seventh parameter of the method that this delegate encapsulates. + The eighth parameter of the method that this delegate encapsulates. + The nineth parameter of the method that this delegate encapsulates. + The tenth parameter of the method that this delegate encapsulates. + The eleventh parameter of the method that this delegate encapsulates. + The twelfth parameter of the method that this delegate encapsulates. + The thirteenth parameter of the method that this delegate encapsulates. + The fourteenth parameter of the method that this delegate encapsulates. + The fifteenth parameter of the method that this delegate encapsulates. + The sixteenth parameter of the method that this delegate encapsulates. + The return value of the method that this delegate encapsulates. + + + + Helper class to setup a full trace between many mocks + + + + + Initialize a trace setup + + + + + Allow sequence to be repeated + + + + + define nice api + + + + + Perform an expectation in the trace. + + + + + Marks a method as a matcher, which allows complete replacement + of the built-in class with your own argument + matching rules. + + + This feature has been deprecated in favor of the new + and simpler . + + + The argument matching is used to determine whether a concrete + invocation in the mock matches a given setup. This + matching mechanism is fully extensible. + + + There are two parts of a matcher: the compiler matcher + and the runtime matcher. + + + Compiler matcher + Used to satisfy the compiler requirements for the + argument. Needs to be a method optionally receiving any arguments + you might need for the matching, but with a return type that + matches that of the argument. + + Let's say I want to match a lists of orders that contains + a particular one. I might create a compiler matcher like the following: + + + public static class Orders + { + [Matcher] + public static IEnumerable<Order> Contains(Order order) + { + return null; + } + } + + Now we can invoke this static method instead of an argument in an + invocation: + + var order = new Order { ... }; + var mock = new Mock<IRepository<Order>>(); + + mock.Setup(x => x.Save(Orders.Contains(order))) + .Throws<ArgumentException>(); + + Note that the return value from the compiler matcher is irrelevant. + This method will never be called, and is just used to satisfy the + compiler and to signal Moq that this is not a method that we want + to be invoked at runtime. + + + + Runtime matcher + + The runtime matcher is the one that will actually perform evaluation + when the test is run, and is defined by convention to have the + same signature as the compiler matcher, but where the return + value is the first argument to the call, which contains the + object received by the actual invocation at runtime: + + public static bool Contains(IEnumerable<Order> orders, Order order) + { + return orders.Contains(order); + } + + At runtime, the mocked method will be invoked with a specific + list of orders. This value will be passed to this runtime + matcher as the first argument, while the second argument is the + one specified in the setup (x.Save(Orders.Contains(order))). + + The boolean returned determines whether the given argument has been + matched. If all arguments to the expected method are matched, then + the setup matches and is evaluated. + + + + + + Using this extensible infrastructure, you can easily replace the entire + set of matchers with your own. You can also avoid the + typical (and annoying) lengthy expressions that result when you have + multiple arguments that use generics. + + + The following is the complete example explained above: + + public static class Orders + { + [Matcher] + public static IEnumerable<Order> Contains(Order order) + { + return null; + } + + public static bool Contains(IEnumerable<Order> orders, Order order) + { + return orders.Contains(order); + } + } + + And the concrete test using this matcher: + + var order = new Order { ... }; + var mock = new Mock<IRepository<Order>>(); + + mock.Setup(x => x.Save(Orders.Contains(order))) + .Throws<ArgumentException>(); + + // use mock, invoke Save, and have the matcher filter. + + + + + + Provides a mock implementation of . + + Any interface type can be used for mocking, but for classes, only abstract and virtual members can be mocked. + + The behavior of the mock with regards to the setups and the actual calls is determined + by the optional that can be passed to the + constructor. + + Type to mock, which can be an interface or a class. + The following example shows establishing setups with specific values + for method invocations: + + // Arrange + var order = new Order(TALISKER, 50); + var mock = new Mock<IWarehouse>(); + + mock.Setup(x => x.HasInventory(TALISKER, 50)).Returns(true); + + // Act + order.Fill(mock.Object); + + // Assert + Assert.True(order.IsFilled); + + The following example shows how to use the class + to specify conditions for arguments instead of specific values: + + // Arrange + var order = new Order(TALISKER, 50); + var mock = new Mock<IWarehouse>(); + + // shows how to expect a value within a range + mock.Setup(x => x.HasInventory( + It.IsAny<string>(), + It.IsInRange(0, 100, Range.Inclusive))) + .Returns(false); + + // shows how to throw for unexpected calls. + mock.Setup(x => x.Remove( + It.IsAny<string>(), + It.IsAny<int>())) + .Throws(new InvalidOperationException()); + + // Act + order.Fill(mock.Object); + + // Assert + Assert.False(order.IsFilled); + + + + + + Obsolete. + + + + + Obsolete. + + + + + Obsolete. + + + + + Obsolete. + + + + + Obsolete. + + + + + Ctor invoked by AsTInterface exclusively. + + + + + Initializes an instance of the mock with default behavior. + + var mock = new Mock<IFormatProvider>(); + + + + + Initializes an instance of the mock with default behavior and with + the given constructor arguments for the class. (Only valid when is a class) + + The mock will try to find the best match constructor given the constructor arguments, and invoke that + to initialize the instance. This applies only for classes, not interfaces. + + var mock = new Mock<MyProvider>(someArgument, 25); + Optional constructor arguments if the mocked type is a class. + + + + Initializes an instance of the mock with the specified behavior. + + var mock = new Mock<IFormatProvider>(MockBehavior.Relaxed); + Behavior of the mock. + + + + Initializes an instance of the mock with a specific behavior with + the given constructor arguments for the class. + + The mock will try to find the best match constructor given the constructor arguments, and invoke that + to initialize the instance. This applies only to classes, not interfaces. + + var mock = new Mock<MyProvider>(someArgument, 25); + Behavior of the mock.Optional constructor arguments if the mocked type is a class. + + + + Returns the mocked object value. + + + + + Specifies a setup on the mocked type for a call to + to a void method. + + If more than one setup is specified for the same method or property, + the latest one wins and is the one that will be executed. + Lambda expression that specifies the expected method invocation. + + var mock = new Mock<IProcessor>(); + mock.Setup(x => x.Execute("ping")); + + + + + + Specifies a setup on the mocked type for a call to + to a value returning method. + Type of the return value. Typically omitted as it can be inferred from the expression. + If more than one setup is specified for the same method or property, + the latest one wins and is the one that will be executed. + Lambda expression that specifies the method invocation. + + mock.Setup(x => x.HasInventory("Talisker", 50)).Returns(true); + + + + + + Specifies a setup on the mocked type for a call to + to a property getter. + + If more than one setup is set for the same property getter, + the latest one wins and is the one that will be executed. + Type of the property. Typically omitted as it can be inferred from the expression.Lambda expression that specifies the property getter. + + mock.SetupGet(x => x.Suspended) + .Returns(true); + + + + + + Specifies a setup on the mocked type for a call to + to a property setter. + + If more than one setup is set for the same property setter, + the latest one wins and is the one that will be executed. + + This overloads allows the use of a callback already + typed for the property type. + + Type of the property. Typically omitted as it can be inferred from the expression.The Lambda expression that sets a property to a value. + + mock.SetupSet(x => x.Suspended = true); + + + + + + Specifies a setup on the mocked type for a call to + to a property setter. + + If more than one setup is set for the same property setter, + the latest one wins and is the one that will be executed. + Lambda expression that sets a property to a value. + + mock.SetupSet(x => x.Suspended = true); + + + + + + Specifies that the given property should have "property behavior", + meaning that setting its value will cause it to be saved and + later returned when the property is requested. (this is also + known as "stubbing"). + + Type of the property, inferred from the property + expression (does not need to be specified). + Property expression to stub. + If you have an interface with an int property Value, you might + stub it using the following straightforward call: + + var mock = new Mock<IHaveValue>(); + mock.Stub(v => v.Value); + + After the Stub call has been issued, setting and + retrieving the object value will behave as expected: + + IHaveValue v = mock.Object; + + v.Value = 5; + Assert.Equal(5, v.Value); + + + + + + Specifies that the given property should have "property behavior", + meaning that setting its value will cause it to be saved and + later returned when the property is requested. This overload + allows setting the initial value for the property. (this is also + known as "stubbing"). + + Type of the property, inferred from the property + expression (does not need to be specified). + Property expression to stub.Initial value for the property. + If you have an interface with an int property Value, you might + stub it using the following straightforward call: + + var mock = new Mock<IHaveValue>(); + mock.SetupProperty(v => v.Value, 5); + + After the SetupProperty call has been issued, setting and + retrieving the object value will behave as expected: + + IHaveValue v = mock.Object; + // Initial value was stored + Assert.Equal(5, v.Value); + + // New value set which changes the initial value + v.Value = 6; + Assert.Equal(6, v.Value); + + + + + + Specifies that the all properties on the mock should have "property behavior", + meaning that setting its value will cause it to be saved and + later returned when the property is requested. (this is also + known as "stubbing"). The default value for each property will be the + one generated as specified by the property for the mock. + + If the mock is set to , + the mocked default values will also get all properties setup recursively. + + + + + + + + Verifies that a specific invocation matching the given expression was performed on the mock. Use + in conjuntion with the default . + + This example assumes that the mock has been used, and later we want to verify that a given + invocation with specific parameters was performed: + + var mock = new Mock<IProcessor>(); + // exercise mock + //... + // Will throw if the test code didn't call Execute with a "ping" string argument. + mock.Verify(proc => proc.Execute("ping")); + + The invocation was not performed on the mock.Expression to verify. + + + + Verifies that a specific invocation matching the given expression was performed on the mock. Use + in conjuntion with the default . + + The invocation was not call the times specified by + . + Expression to verify.The number of times a method is allowed to be called. + + + + Verifies that a specific invocation matching the given expression was performed on the mock, + specifying a failure error message. Use in conjuntion with the default + . + + This example assumes that the mock has been used, and later we want to verify that a given + invocation with specific parameters was performed: + + var mock = new Mock<IProcessor>(); + // exercise mock + //... + // Will throw if the test code didn't call Execute with a "ping" string argument. + mock.Verify(proc => proc.Execute("ping")); + + The invocation was not performed on the mock.Expression to verify.Message to show if verification fails. + + + + Verifies that a specific invocation matching the given expression was performed on the mock, + specifying a failure error message. Use in conjuntion with the default + . + + The invocation was not call the times specified by + . + Expression to verify.The number of times a method is allowed to be called.Message to show if verification fails. + + + + Verifies that a specific invocation matching the given expression was performed on the mock. Use + in conjuntion with the default . + + This example assumes that the mock has been used, and later we want to verify that a given + invocation with specific parameters was performed: + + var mock = new Mock<IWarehouse>(); + // exercise mock + //... + // Will throw if the test code didn't call HasInventory. + mock.Verify(warehouse => warehouse.HasInventory(TALISKER, 50)); + + The invocation was not performed on the mock.Expression to verify.Type of return value from the expression. + + + + Verifies that a specific invocation matching the given + expression was performed on the mock. Use in conjuntion + with the default . + + The invocation was not call the times specified by + . + Expression to verify.The number of times a method is allowed to be called.Type of return value from the expression. + + + + Verifies that a specific invocation matching the given + expression was performed on the mock, specifying a failure + error message. + + This example assumes that the mock has been used, + and later we want to verify that a given invocation + with specific parameters was performed: + + var mock = new Mock<IWarehouse>(); + // exercise mock + //... + // Will throw if the test code didn't call HasInventory. + mock.Verify(warehouse => warehouse.HasInventory(TALISKER, 50), "When filling orders, inventory has to be checked"); + + The invocation was not performed on the mock.Expression to verify.Message to show if verification fails.Type of return value from the expression. + + + + Verifies that a specific invocation matching the given + expression was performed on the mock, specifying a failure + error message. + + The invocation was not call the times specified by + . + Expression to verify.The number of times a method is allowed to be called.Message to show if verification fails.Type of return value from the expression. + + + + Verifies that a property was read on the mock. + + This example assumes that the mock has been used, + and later we want to verify that a given property + was retrieved from it: + + var mock = new Mock<IWarehouse>(); + // exercise mock + //... + // Will throw if the test code didn't retrieve the IsClosed property. + mock.VerifyGet(warehouse => warehouse.IsClosed); + + The invocation was not performed on the mock.Expression to verify. + Type of the property to verify. Typically omitted as it can + be inferred from the expression's return type. + + + + + Verifies that a property was read on the mock. + + The invocation was not call the times specified by + . + The number of times a method is allowed to be called.Expression to verify. + Type of the property to verify. Typically omitted as it can + be inferred from the expression's return type. + + + + + Verifies that a property was read on the mock, specifying a failure + error message. + + This example assumes that the mock has been used, + and later we want to verify that a given property + was retrieved from it: + + var mock = new Mock<IWarehouse>(); + // exercise mock + //... + // Will throw if the test code didn't retrieve the IsClosed property. + mock.VerifyGet(warehouse => warehouse.IsClosed); + + The invocation was not performed on the mock.Expression to verify.Message to show if verification fails. + Type of the property to verify. Typically omitted as it can + be inferred from the expression's return type. + + + + + Verifies that a property was read on the mock, specifying a failure + error message. + + The invocation was not call the times specified by + . + The number of times a method is allowed to be called.Expression to verify.Message to show if verification fails. + Type of the property to verify. Typically omitted as it can + be inferred from the expression's return type. + + + + + Verifies that a property was set on the mock. + + This example assumes that the mock has been used, + and later we want to verify that a given property + was set on it: + + var mock = new Mock<IWarehouse>(); + // exercise mock + //... + // Will throw if the test code didn't set the IsClosed property. + mock.VerifySet(warehouse => warehouse.IsClosed = true); + + The invocation was not performed on the mock.Expression to verify. + + + + Verifies that a property was set on the mock. + + The invocation was not call the times specified by + . + The number of times a method is allowed to be called.Expression to verify. + + + + Verifies that a property was set on the mock, specifying + a failure message. + + This example assumes that the mock has been used, + and later we want to verify that a given property + was set on it: + + var mock = new Mock<IWarehouse>(); + // exercise mock + //... + // Will throw if the test code didn't set the IsClosed property. + mock.VerifySet(warehouse => warehouse.IsClosed = true, "Warehouse should always be closed after the action"); + + The invocation was not performed on the mock.Expression to verify.Message to show if verification fails. + + + + Verifies that a property was set on the mock, specifying + a failure message. + + The invocation was not call the times specified by + . + The number of times a method is allowed to be called.Expression to verify.Message to show if verification fails. + + + + Raises the event referenced in using + the given argument. + + The argument is + invalid for the target event invocation, or the is + not an event attach or detach expression. + + The following example shows how to raise a event: + + var mock = new Mock<IViewModel>(); + + mock.Raise(x => x.PropertyChanged -= null, new PropertyChangedEventArgs("Name")); + + + This example shows how to invoke an event with a custom event arguments + class in a view that will cause its corresponding presenter to + react by changing its state: + + var mockView = new Mock<IOrdersView>(); + var presenter = new OrdersPresenter(mockView.Object); + + // Check that the presenter has no selection by default + Assert.Null(presenter.SelectedOrder); + + // Raise the event with a specific arguments data + mockView.Raise(v => v.SelectionChanged += null, new OrderEventArgs { Order = new Order("moq", 500) }); + + // Now the presenter reacted to the event, and we have a selected order + Assert.NotNull(presenter.SelectedOrder); + Assert.Equal("moq", presenter.SelectedOrder.ProductName); + + + + + + Raises the event referenced in using + the given argument for a non-EventHandler typed event. + + The arguments are + invalid for the target event invocation, or the is + not an event attach or detach expression. + + The following example shows how to raise a custom event that does not adhere to + the standard EventHandler: + + var mock = new Mock<IViewModel>(); + + mock.Raise(x => x.MyEvent -= null, "Name", bool, 25); + + + + + + Exposes the mocked object instance. + + + + + Provides legacy API members as extensions so that + existing code continues to compile, but new code + doesn't see then. + + + + + Obsolete. + + + + + Obsolete. + + + + + Obsolete. + + + + + Provides additional methods on mocks. + + + Provided as extension methods as they confuse the compiler + with the overloads taking Action. + + + + + Specifies a setup on the mocked type for a call to + to a property setter, regardless of its value. + + + If more than one setup is set for the same property setter, + the latest one wins and is the one that will be executed. + + Type of the property. Typically omitted as it can be inferred from the expression. + Type of the mock. + The target mock for the setup. + Lambda expression that specifies the property setter. + + + mock.SetupSet(x => x.Suspended); + + + + This method is not legacy, but must be on an extension method to avoid + confusing the compiler with the new Action syntax. + + + + + Verifies that a property has been set on the mock, regarless of its value. + + + This example assumes that the mock has been used, + and later we want to verify that a given invocation + with specific parameters was performed: + + var mock = new Mock<IWarehouse>(); + // exercise mock + //... + // Will throw if the test code didn't set the IsClosed property. + mock.VerifySet(warehouse => warehouse.IsClosed); + + + The invocation was not performed on the mock. + Expression to verify. + The mock instance. + Mocked type. + Type of the property to verify. Typically omitted as it can + be inferred from the expression's return type. + + + + Verifies that a property has been set on the mock, specifying a failure + error message. + + + This example assumes that the mock has been used, + and later we want to verify that a given invocation + with specific parameters was performed: + + var mock = new Mock<IWarehouse>(); + // exercise mock + //... + // Will throw if the test code didn't set the IsClosed property. + mock.VerifySet(warehouse => warehouse.IsClosed); + + + The invocation was not performed on the mock. + Expression to verify. + Message to show if verification fails. + The mock instance. + Mocked type. + Type of the property to verify. Typically omitted as it can + be inferred from the expression's return type. + + + + Verifies that a property has been set on the mock, regardless + of the value but only the specified number of times. + + + This example assumes that the mock has been used, + and later we want to verify that a given invocation + with specific parameters was performed: + + var mock = new Mock<IWarehouse>(); + // exercise mock + //... + // Will throw if the test code didn't set the IsClosed property. + mock.VerifySet(warehouse => warehouse.IsClosed); + + + The invocation was not performed on the mock. + The invocation was not call the times specified by + . + The mock instance. + Mocked type. + The number of times a method is allowed to be called. + Expression to verify. + Type of the property to verify. Typically omitted as it can + be inferred from the expression's return type. + + + + Verifies that a property has been set on the mock, regardless + of the value but only the specified number of times, and specifying a failure + error message. + + + This example assumes that the mock has been used, + and later we want to verify that a given invocation + with specific parameters was performed: + + var mock = new Mock<IWarehouse>(); + // exercise mock + //... + // Will throw if the test code didn't set the IsClosed property. + mock.VerifySet(warehouse => warehouse.IsClosed); + + + The invocation was not performed on the mock. + The invocation was not call the times specified by + . + The mock instance. + Mocked type. + The number of times a method is allowed to be called. + Message to show if verification fails. + Expression to verify. + Type of the property to verify. Typically omitted as it can + be inferred from the expression's return type. + + + + Helper for sequencing return values in the same method. + + + + + Return a sequence of values, once per call. + + + + + Casts the expression to a lambda expression, removing + a cast if there's any. + + + + + Casts the body of the lambda expression to a . + + If the body is not a method call. + + + + Converts the body of the lambda expression into the referenced by it. + + + + + Checks whether the body of the lambda expression is a property access. + + + + + Checks whether the expression is a property access. + + + + + Checks whether the body of the lambda expression is a property indexer, which is true + when the expression is an whose + has + equal to . + + + + + Checks whether the expression is a property indexer, which is true + when the expression is an whose + has + equal to . + + + + + Creates an expression that casts the given expression to the + type. + + + + + TODO: remove this code when https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=331583 + is fixed. + + + + + Provides partial evaluation of subtrees, whenever they can be evaluated locally. + + Matt Warren: http://blogs.msdn.com/mattwar + Documented by InSTEDD: http://www.instedd.org + + + + Performs evaluation and replacement of independent sub-trees + + The root of the expression tree. + A function that decides whether a given expression + node can be part of the local function. + A new tree with sub-trees evaluated and replaced. + + + + Performs evaluation and replacement of independent sub-trees + + The root of the expression tree. + A new tree with sub-trees evaluated and replaced. + + + + Evaluates and replaces sub-trees when first candidate is reached (top-down) + + + + + Performs bottom-up analysis to determine which nodes can possibly + be part of an evaluated sub-tree. + + + + + Ensures the given is not null. + Throws otherwise. + + + + + Ensures the given string is not null or empty. + Throws in the first case, or + in the latter. + + + + + Checks an argument to ensure it is in the specified range including the edges. + + Type of the argument to check, it must be an type. + + The expression containing the name of the argument. + The argument value to check. + The minimun allowed value for the argument. + The maximun allowed value for the argument. + + + + Checks an argument to ensure it is in the specified range excluding the edges. + + Type of the argument to check, it must be an type. + + The expression containing the name of the argument. + The argument value to check. + The minimun allowed value for the argument. + The maximun allowed value for the argument. + + + + Implemented by all generated mock object instances. + + + + + Implemented by all generated mock object instances. + + + + + Reference the Mock that contains this as the mock.Object value. + + + + + Reference the Mock that contains this as the mock.Object value. + + + + + Implements the actual interception and method invocation for + all mocks. + + + + + Get an eventInfo for a given event name. Search type ancestors depth first if necessary. + + Name of the event, with the set_ or get_ prefix already removed + + + + Given a type return all of its ancestors, both types and interfaces. + + The type to find immediate ancestors of + + + + Implements the fluent API. + + + + + Defines the Callback verb for property setter setups. + + Type of the property. + + + + Specifies a callback to invoke when the property is set that receives the + property value being set. + + Callback method to invoke. + + Invokes the given callback with the property value being set. + + mock.SetupSet(x => x.Suspended) + .Callback((bool state) => Console.WriteLine(state)); + + + + + + Allows the specification of a matching condition for an + argument in a method invocation, rather than a specific + argument value. "It" refers to the argument being matched. + + This class allows the setup to match a method invocation + with an arbitrary value, with a value in a specified range, or + even one that matches a given predicate. + + + + + Matches any value of the given type. + + Typically used when the actual argument value for a method + call is not relevant. + + + // Throws an exception for a call to Remove with any string value. + mock.Setup(x => x.Remove(It.IsAny<string>())).Throws(new InvalidOperationException()); + + Type of the value. + + + + Matches any value that satisfies the given predicate. + Type of the argument to check.The predicate used to match the method argument. + Allows the specification of a predicate to perform matching + of method call arguments. + + This example shows how to return the value 1 whenever the argument to the + Do method is an even number. + + mock.Setup(x => x.Do(It.Is<int>(i => i % 2 == 0))) + .Returns(1); + + This example shows how to throw an exception if the argument to the + method is a negative number: + + mock.Setup(x => x.GetUser(It.Is<int>(i => i < 0))) + .Throws(new ArgumentException()); + + + + + + Matches any value that is in the range specified. + Type of the argument to check.The lower bound of the range.The upper bound of the range. + The kind of range. See . + + The following example shows how to expect a method call + with an integer argument within the 0..100 range. + + mock.Setup(x => x.HasInventory( + It.IsAny<string>(), + It.IsInRange(0, 100, Range.Inclusive))) + .Returns(false); + + + + + + Matches a string argument if it matches the given regular expression pattern. + The pattern to use to match the string argument value. + The following example shows how to expect a call to a method where the + string argument matches the given regular expression: + + mock.Setup(x => x.Check(It.IsRegex("[a-z]+"))).Returns(1); + + + + + + Matches a string argument if it matches the given regular expression pattern. + The pattern to use to match the string argument value.The options used to interpret the pattern. + The following example shows how to expect a call to a method where the + string argument matches the given regular expression, in a case insensitive way: + + mock.Setup(x => x.Check(It.IsRegex("[a-z]+", RegexOptions.IgnoreCase))).Returns(1); + + + + + + Matcher to treat static functions as matchers. + + mock.Setup(x => x.StringMethod(A.MagicString())); + + public static class A + { + [Matcher] + public static string MagicString() { return null; } + public static bool MagicString(string arg) + { + return arg == "magic"; + } + } + + Will succeed if: mock.Object.StringMethod("magic"); + and fail with any other call. + + + + + Options to customize the behavior of the mock. + + + + + Causes the mock to always throw + an exception for invocations that don't have a + corresponding setup. + + + + + Will never throw exceptions, returning default + values when necessary (null for reference types, + zero for value types or empty enumerables and arrays). + + + + + Default mock behavior, which equals . + + + + + Exception thrown by mocks when setups are not matched, + the mock is not properly setup, etc. + + + A distinct exception type is provided so that exceptions + thrown by the mock can be differentiated in tests that + expect other exceptions to be thrown (i.e. ArgumentException). + + Richer exception hierarchy/types are not provided as + tests typically should not catch or expect exceptions + from the mocks. These are typically the result of changes + in the tested class or its collaborators implementation, and + result in fixes in the mock setup so that they dissapear and + allow the test to pass. + + + + + + Supports the serialization infrastructure. + + Serialization information. + Streaming context. + + + + Supports the serialization infrastructure. + + Serialization information. + Streaming context. + + + + Made internal as it's of no use for + consumers, but it's important for + our own tests. + + + + + Used by the mock factory to accumulate verification + failures. + + + + + Supports the serialization infrastructure. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Mock type has already been initialized by accessing its Object property. Adding interfaces must be done before that.. + + + + + Looks up a localized string similar to Value cannot be an empty string.. + + + + + Looks up a localized string similar to Can only add interfaces to the mock.. + + + + + Looks up a localized string similar to Can't set return value for void method {0}.. + + + + + Looks up a localized string similar to Constructor arguments cannot be passed for interface mocks.. + + + + + Looks up a localized string similar to A matching constructor for the given arguments was not found on the mocked type.. + + + + + Looks up a localized string similar to Could not locate event for attach or detach method {0}.. + + + + + Looks up a localized string similar to Expression {0} involves a field access, which is not supported. Use properties instead.. + + + + + Looks up a localized string similar to Type to mock must be an interface or an abstract or non-sealed class. . + + + + + Looks up a localized string similar to Cannot retrieve a mock with the given object type {0} as it's not the main type of the mock or any of its additional interfaces. + Please cast the argument to one of the supported types: {1}. + Remember that there's no generics covariance in the CLR, so your object must be one of these types in order for the call to succeed.. + + + + + Looks up a localized string similar to The equals ("==" or "=" in VB) and the conditional 'and' ("&&" or "AndAlso" in VB) operators are the only ones supported in the query specification expression. Unsupported expression: {0}. + + + + + Looks up a localized string similar to LINQ method '{0}' not supported.. + + + + + Looks up a localized string similar to Expression contains a call to a method which is not virtual (overridable in VB) or abstract. Unsupported expression: {0}. + + + + + Looks up a localized string similar to Member {0}.{1} does not exist.. + + + + + Looks up a localized string similar to Method {0}.{1} is public. Use strong-typed Expect overload instead: + mock.Setup(x => x.{1}()); + . + + + + + Looks up a localized string similar to {0} invocation failed with mock behavior {1}. + {2}. + + + + + Looks up a localized string similar to Expected only {0} calls to {1}.. + + + + + Looks up a localized string similar to Expected only one call to {0}.. + + + + + Looks up a localized string similar to {0} + Expected invocation on the mock at least {2} times, but was {4} times: {1}. + + + + + Looks up a localized string similar to {0} + Expected invocation on the mock at least once, but was never performed: {1}. + + + + + Looks up a localized string similar to {0} + Expected invocation on the mock at most {3} times, but was {4} times: {1}. + + + + + Looks up a localized string similar to {0} + Expected invocation on the mock at most once, but was {4} times: {1}. + + + + + Looks up a localized string similar to {0} + Expected invocation on the mock between {2} and {3} times (Exclusive), but was {4} times: {1}. + + + + + Looks up a localized string similar to {0} + Expected invocation on the mock between {2} and {3} times (Inclusive), but was {4} times: {1}. + + + + + Looks up a localized string similar to {0} + Expected invocation on the mock exactly {2} times, but was {4} times: {1}. + + + + + Looks up a localized string similar to {0} + Expected invocation on the mock should never have been performed, but was {4} times: {1}. + + + + + Looks up a localized string similar to {0} + Expected invocation on the mock once, but was {4} times: {1}. + + + + + Looks up a localized string similar to All invocations on the mock must have a corresponding setup.. + + + + + Looks up a localized string similar to Object instance was not created by Moq.. + + + + + Looks up a localized string similar to Out expression must evaluate to a constant value.. + + + + + Looks up a localized string similar to Property {0}.{1} does not have a getter.. + + + + + Looks up a localized string similar to Property {0}.{1} does not exist.. + + + + + Looks up a localized string similar to Property {0}.{1} is write-only.. + + + + + Looks up a localized string similar to Property {0}.{1} is read-only.. + + + + + Looks up a localized string similar to Property {0}.{1} does not have a setter.. + + + + + Looks up a localized string similar to Cannot raise a mocked event unless it has been associated (attached) to a concrete event in a mocked object.. + + + + + Looks up a localized string similar to Ref expression must evaluate to a constant value.. + + + + + Looks up a localized string similar to Invocation needs to return a value and therefore must have a corresponding setup that provides it.. + + + + + Looks up a localized string similar to A lambda expression is expected as the argument to It.Is<T>.. + + + + + Looks up a localized string similar to Invocation {0} should not have been made.. + + + + + Looks up a localized string similar to Expression is not a method invocation: {0}. + + + + + Looks up a localized string similar to Expression is not a property access: {0}. + + + + + Looks up a localized string similar to Expression is not a property setter invocation.. + + + + + Looks up a localized string similar to Expression references a method that does not belong to the mocked object: {0}. + + + + + Looks up a localized string similar to Invalid setup on a non-virtual (overridable in VB) member: {0}. + + + + + Looks up a localized string similar to Type {0} does not implement required interface {1}. + + + + + Looks up a localized string similar to Type {0} does not from required type {1}. + + + + + Looks up a localized string similar to To specify a setup for public property {0}.{1}, use the typed overloads, such as: + mock.Setup(x => x.{1}).Returns(value); + mock.SetupGet(x => x.{1}).Returns(value); //equivalent to previous one + mock.SetupSet(x => x.{1}).Callback(callbackDelegate); + . + + + + + Looks up a localized string similar to Unsupported expression: {0}. + + + + + Looks up a localized string similar to Only property accesses are supported in intermediate invocations on a setup. Unsupported expression {0}.. + + + + + Looks up a localized string similar to Expression contains intermediate property access {0}.{1} which is of type {2} and cannot be mocked. Unsupported expression {3}.. + + + + + Looks up a localized string similar to Setter expression cannot use argument matchers that receive parameters.. + + + + + Looks up a localized string similar to Member {0} is not supported for protected mocking.. + + + + + Looks up a localized string similar to Setter expression can only use static custom matchers.. + + + + + Looks up a localized string similar to The following setups were not matched: + {0}. + + + + + Looks up a localized string similar to Invalid verify on a non-virtual (overridable in VB) member: {0}. + + + + + Allows setups to be specified for protected members by using their + name as a string, rather than strong-typing them which is not possible + due to their visibility. + + + + + Specifies a setup for a void method invocation with the given + , optionally specifying arguments for the method call. + + The name of the void method to be invoked. + The optional arguments for the invocation. If argument matchers are used, + remember to use rather than . + + + + Specifies a setup for an invocation on a property or a non void method with the given + , optionally specifying arguments for the method call. + + The name of the method or property to be invoked. + The optional arguments for the invocation. If argument matchers are used, + remember to use rather than . + The return type of the method or property. + + + + Specifies a setup for an invocation on a property getter with the given + . + + The name of the property. + The type of the property. + + + + Specifies a setup for an invocation on a property setter with the given + . + + The name of the property. + The property value. If argument matchers are used, + remember to use rather than . + The type of the property. + + + + Specifies a verify for a void method with the given , + optionally specifying arguments for the method call. Use in conjuntion with the default + . + + The invocation was not call the times specified by + . + The name of the void method to be verified. + The number of times a method is allowed to be called. + The optional arguments for the invocation. If argument matchers are used, + remember to use rather than . + + + + Specifies a verify for an invocation on a property or a non void method with the given + , optionally specifying arguments for the method call. + + The invocation was not call the times specified by + . + The name of the method or property to be invoked. + The optional arguments for the invocation. If argument matchers are used, + remember to use rather than . + The number of times a method is allowed to be called. + The type of return value from the expression. + + + + Specifies a verify for an invocation on a property getter with the given + . + The invocation was not call the times specified by + . + + The name of the property. + The number of times a method is allowed to be called. + The type of the property. + + + + Specifies a setup for an invocation on a property setter with the given + . + + The invocation was not call the times specified by + . + The name of the property. + The number of times a method is allowed to be called. + The property value. + The type of the property. If argument matchers are used, + remember to use rather than . + + + + Allows the specification of a matching condition for an + argument in a protected member setup, rather than a specific + argument value. "ItExpr" refers to the argument being matched. + + + Use this variant of argument matching instead of + for protected setups. + This class allows the setup to match a method invocation + with an arbitrary value, with a value in a specified range, or + even one that matches a given predicate, or null. + + + + + Matches a null value of the given type. + + + Required for protected mocks as the null value cannot be used + directly as it prevents proper method overload selection. + + + + // Throws an exception for a call to Remove with a null string value. + mock.Protected() + .Setup("Remove", ItExpr.IsNull<string>()) + .Throws(new InvalidOperationException()); + + + Type of the value. + + + + Matches any value of the given type. + + + Typically used when the actual argument value for a method + call is not relevant. + + + + // Throws an exception for a call to Remove with any string value. + mock.Protected() + .Setup("Remove", ItExpr.IsAny<string>()) + .Throws(new InvalidOperationException()); + + + Type of the value. + + + + Matches any value that satisfies the given predicate. + + Type of the argument to check. + The predicate used to match the method argument. + + Allows the specification of a predicate to perform matching + of method call arguments. + + + This example shows how to return the value 1 whenever the argument to the + Do method is an even number. + + mock.Protected() + .Setup("Do", ItExpr.Is<int>(i => i % 2 == 0)) + .Returns(1); + + This example shows how to throw an exception if the argument to the + method is a negative number: + + mock.Protected() + .Setup("GetUser", ItExpr.Is<int>(i => i < 0)) + .Throws(new ArgumentException()); + + + + + + Matches any value that is in the range specified. + + Type of the argument to check. + The lower bound of the range. + The upper bound of the range. + The kind of range. See . + + The following example shows how to expect a method call + with an integer argument within the 0..100 range. + + mock.Protected() + .Setup("HasInventory", + ItExpr.IsAny<string>(), + ItExpr.IsInRange(0, 100, Range.Inclusive)) + .Returns(false); + + + + + + Matches a string argument if it matches the given regular expression pattern. + + The pattern to use to match the string argument value. + + The following example shows how to expect a call to a method where the + string argument matches the given regular expression: + + mock.Protected() + .Setup("Check", ItExpr.IsRegex("[a-z]+")) + .Returns(1); + + + + + + Matches a string argument if it matches the given regular expression pattern. + + The pattern to use to match the string argument value. + The options used to interpret the pattern. + + The following example shows how to expect a call to a method where the + string argument matches the given regular expression, in a case insensitive way: + + mock.Protected() + .Setup("Check", ItExpr.IsRegex("[a-z]+", RegexOptions.IgnoreCase)) + .Returns(1); + + + + + + Enables the Protected() method on , + allowing setups to be set for protected members by using their + name as a string, rather than strong-typing them which is not possible + due to their visibility. + + + + + Enable protected setups for the mock. + + Mocked object type. Typically omitted as it can be inferred from the mock instance. + The mock to set the protected setups on. + + + + + + + + + + + + Kind of range to use in a filter specified through + . + + + + + The range includes the to and + from values. + + + + + The range does not include the to and + from values. + + + + + Determines the way default values are generated + calculated for loose mocks. + + + + + Default behavior, which generates empty values for + value types (i.e. default(int)), empty array and + enumerables, and nulls for all other reference types. + + + + + Whenever the default value generated by + is null, replaces this value with a mock (if the type + can be mocked). + + + For sealed classes, a null value will be generated. + + + + + A default implementation of IQueryable for use with QueryProvider + + + + + The is a + static method that returns an IQueryable of Mocks of T which is used to + apply the linq specification to. + + + + + Allows creation custom value matchers that can be used on setups and verification, + completely replacing the built-in class with your own argument + matching rules. + + See also . + + + + + Provided for the sole purpose of rendering the delegate passed to the + matcher constructor if no friendly render lambda is provided. + + + + + Initializes the match with the condition that + will be checked in order to match invocation + values. + The condition to match against actual values. + + + + + + + + + This method is used to set an expression as the last matcher invoked, + which is used in the SetupSet to allow matchers in the prop = value + delegate expression. This delegate is executed in "fluent" mode in + order to capture the value being set, and construct the corresponding + methodcall. + This is also used in the MatcherFactory for each argument expression. + This method ensures that when we execute the delegate, we + also track the matcher that was invoked, so that when we create the + methodcall we build the expression using it, rather than the null/default + value returned from the actual invocation. + + + + + Allows creation custom value matchers that can be used on setups and verification, + completely replacing the built-in class with your own argument + matching rules. + Type of the value to match. + The argument matching is used to determine whether a concrete + invocation in the mock matches a given setup. This + matching mechanism is fully extensible. + + Creating a custom matcher is straightforward. You just need to create a method + that returns a value from a call to with + your matching condition and optional friendly render expression: + + [Matcher] + public Order IsBigOrder() + { + return Match<Order>.Create( + o => o.GrandTotal >= 5000, + /* a friendly expression to render on failures */ + () => IsBigOrder()); + } + + This method can be used in any mock setup invocation: + + mock.Setup(m => m.Submit(IsBigOrder()).Throws<UnauthorizedAccessException>(); + + At runtime, Moq knows that the return value was a matcher (note that the method MUST be + annotated with the [Matcher] attribute in order to determine this) and + evaluates your predicate with the actual value passed into your predicate. + + Another example might be a case where you want to match a lists of orders + that contains a particular one. You might create matcher like the following: + + + public static class Orders + { + [Matcher] + public static IEnumerable<Order> Contains(Order order) + { + return Match<IEnumerable<Order>>.Create(orders => orders.Contains(order)); + } + } + + Now we can invoke this static method instead of an argument in an + invocation: + + var order = new Order { ... }; + var mock = new Mock<IRepository<Order>>(); + + mock.Setup(x => x.Save(Orders.Contains(order))) + .Throws<ArgumentException>(); + + + + + + Tracks the current mock and interception context. + + + + + Having an active fluent mock context means that the invocation + is being performed in "trial" mode, just to gather the + target method and arguments that need to be matched later + when the actual invocation is made. + + + + + A that returns an empty default value + for non-mockeable types, and mocks for all other types (interfaces and + non-sealed classes) that can be mocked. + + + + + Allows querying the universe of mocks for those that behave + according to the LINQ query specification. + + + This entry-point into Linq to Mocks is the only one in the root Moq + namespace to ease discovery. But to get all the mocking extension + methods on Object, a using of Moq.Linq must be done, so that the + polluting of the intellisense for all objects is an explicit opt-in. + + + + + Access the universe of mocks of the given type, to retrieve those + that behave according to the LINQ query specification. + + The type of the mocked object to query. + + + + Access the universe of mocks of the given type, to retrieve those + that behave according to the LINQ query specification. + + The predicate with the setup expressions. + The type of the mocked object to query. + + + + Creates an mock object of the indicated type. + + The type of the mocked object. + The mocked object created. + + + + Creates an mock object of the indicated type. + + The predicate with the setup expressions. + The type of the mocked object. + The mocked object created. + + + + Creates the mock query with the underlying queriable implementation. + + + + + Wraps the enumerator inside a queryable. + + + + + Method that is turned into the actual call from .Query{T}, to + transform the queryable query into a normal enumerable query. + This method is never used directly by consumers. + + + + + Extension method used to support Linq-like setup properties that are not virtual but do have + a getter and a setter, thereby allowing the use of Linq to Mocks to quickly initialize Dtos too :) + + + + + Helper extensions that are used by the query translator. + + + + + Retrieves a fluent mock from the given setup expression. + + + + + Defines the number of invocations allowed by a mocked method. + + + + + Specifies that a mocked method should be invoked times as minimum. + The minimun number of times.An object defining the allowed number of invocations. + + + + Specifies that a mocked method should be invoked one time as minimum. + An object defining the allowed number of invocations. + + + + Specifies that a mocked method should be invoked time as maximun. + The maximun number of times.An object defining the allowed number of invocations. + + + + Specifies that a mocked method should be invoked one time as maximun. + An object defining the allowed number of invocations. + + + + Specifies that a mocked method should be invoked between and + times. + The minimun number of times.The maximun number of times. + The kind of range. See . + An object defining the allowed number of invocations. + + + + Specifies that a mocked method should be invoked exactly times. + The times that a method or property can be called.An object defining the allowed number of invocations. + + + + Specifies that a mocked method should not be invoked. + An object defining the allowed number of invocations. + + + + Specifies that a mocked method should be invoked exactly one time. + An object defining the allowed number of invocations. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether two specified objects have the same value. + + The first . + + The second . + + true if the value of left is the same as the value of right; otherwise, false. + + + + + Determines whether two specified objects have different values. + + The first . + + The second . + + true if the value of left is different from the value of right; otherwise, false. + + + + diff --git a/lib/nunit.framework.dll b/lib/nunit.framework.dll new file mode 100644 index 0000000000000000000000000000000000000000..6856e51ef08a8e681896c3a84ccbeea8975d5947 GIT binary patch literal 139264 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
jGx_)XGKVSL!mZ7A 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 s;idf~4WfA}|OOnpsbG<<@nYpjdJ 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 K#)0=F2mTF_u(`ni literal 0 HcmV?d00001 diff --git a/lib/nunit.framework.xml b/lib/nunit.framework.xml new file mode 100644 index 0000000..a56c62f --- /dev/null +++ b/lib/nunit.framework.xml @@ -0,0 +1,10407 @@ + + + + nunit.framework + + + + + Attribute used to apply a category to a test + + + + + The name of the category + + + + + Construct attribute for a given category based on + a name. The name may not contain the characters ',', + '+', '-' or '!'. However, this is not checked in the + constructor since it would cause an error to arise at + as the test was loaded without giving a clear indication + of where the problem is located. The error is handled + in NUnitFramework.cs by marking the test as not + runnable. + + The name of the category + + + + Protected constructor uses the Type name as the name + of the category. + + + + + The name of the category + + + + + Used to mark a field for use as a datapoint when executing a theory + within the same fixture that requires an argument of the field's Type. + + + + + Used to mark an array as containing a set of datapoints to be used + executing a theory within the same fixture that requires an argument + of the Type of the array elements. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct the attribute + + Text describing the test + + + + Gets the test description + + + + + Enumeration indicating how the expected message parameter is to be used + + + + Expect an exact match + + + Expect a message containing the parameter string + + + Match the regular expression provided as a parameter + + + Expect a message that starts with the parameter string + + + + ExpectedExceptionAttribute + + + + + + Constructor for a non-specific exception + + + + + Constructor for a given type of exception + + The type of the expected exception + + + + Constructor for a given exception name + + The full name of the expected exception + + + + Gets or sets the expected exception type + + + + + Gets or sets the full Type name of the expected exception + + + + + Gets or sets the expected message text + + + + + Gets or sets the user message displayed in case of failure + + + + + Gets or sets the type of match to be performed on the expected message + + + + + Gets the name of a method to be used as an exception handler + + + + + ExplicitAttribute marks a test or test fixture so that it will + only be run if explicitly executed from the gui or command line + or if it is included by use of a filter. The test will not be + run simply because an enclosing suite is run. + + + + + Default constructor + + + + + Constructor with a reason + + The reason test is marked explicit + + + + The reason test is marked explicit + + + + + Attribute used to mark a test that is to be ignored. + Ignored tests result in a warning message when the + tests are run. + + + + + Constructs the attribute without giving a reason + for ignoring the test. + + + + + Constructs the attribute giving a reason for ignoring the test + + The reason for ignoring the test + + + + The reason for ignoring a test + + + + + Abstract base for Attributes that are used to include tests + in the test run based on environmental settings. + + + + + Constructor with no included items specified, for use + with named property syntax. + + + + + Constructor taking one or more included items + + Comma-delimited list of included items + + + + Name of the item that is needed in order for + a test to run. Multiple itemss may be given, + separated by a comma. + + + + + Name of the item to be excluded. Multiple items + may be given, separated by a comma. + + + + + The reason for including or excluding the test + + + + + PlatformAttribute is used to mark a test fixture or an + individual method as applying to a particular platform only. + + + + + Constructor with no platforms specified, for use + with named property syntax. + + + + + Constructor taking one or more platforms + + Comma-deliminted list of platforms + + + + CultureAttribute is used to mark a test fixture or an + individual method as applying to a particular Culture only. + + + + + Constructor with no cultures specified, for use + with named property syntax. + + + + + Constructor taking one or more cultures + + Comma-deliminted list of cultures + + + + Marks a test to use a combinatorial join of any argument data + provided. NUnit will create a test case for every combination of + the arguments provided. This can result in a large number of test + cases and so should be used judiciously. This is the default join + type, so the attribute need not be used except as documentation. + + + + + PropertyAttribute is used to attach information to a test as a name/value pair.. + + + + + Construct a PropertyAttribute with a name and string value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and int value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and double value + + The name of the property + The property value + + + + Constructor for derived classes that set the + property dictionary directly. + + + + + Constructor for use by derived classes that use the + name of the type as the property name. Derived classes + must ensure that the Type of the property value is + a standard type supported by the BCL. Any custom + types will cause a serialization Exception when + in the client. + + + + + Gets the property dictionary for this attribute + + + + + Default constructor + + + + + Marks a test to use pairwise join of any argument data provided. + NUnit will attempt too excercise every pair of argument values at + least once, using as small a number of test cases as it can. With + only two arguments, this is the same as a combinatorial join. + + + + + Default constructor + + + + + Marks a test to use a sequential join of any argument data + provided. NUnit will use arguements for each parameter in + sequence, generating test cases up to the largest number + of argument values provided and using null for any arguments + for which it runs out of values. Normally, this should be + used with the same number of arguments for each parameter. + + + + + Default constructor + + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + RandomAttribute is used to supply a set of random values + to a single parameter of a parameterized test. + + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + Abstract base class for attributes that apply to parameters + and supply data for the parameter. + + + + + Gets the data to be provided to the specified parameter + + + + + The collection of data to be returned. Must + be set by any derived attribute classes. + We use an object[] so that the individual + elements may have their type changed in GetData + if necessary. + + + + + Construct with one argument + + + + + + Construct with two arguments + + + + + + + Construct with three arguments + + + + + + + + Construct with an array of arguments + + + + + + Get the collection of values to be used as arguments + + + + + Construct a set of doubles from 0.0 to 1.0, + specifying only the count. + + + + + + Construct a set of doubles from min to max + + + + + + + + Construct a set of ints from min to max + + + + + + + + Get the collection of values to be used as arguments + + + + + RangeAttribute is used to supply a range of values to an + individual parameter of a parameterized test. + + + + + Construct a range of ints using default step of 1 + + + + + + + Construct a range of ints specifying the step size + + + + + + + + Construct a range of longs + + + + + + + + Construct a range of doubles + + + + + + + + Construct a range of floats + + + + + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + RequiredAddinAttribute may be used to indicate the names of any addins + that must be present in order to run some or all of the tests in an + assembly. If the addin is not loaded, the entire assembly is marked + as NotRunnable. + + + + + Initializes a new instance of the class. + + The required addin. + + + + Gets the name of required addin. + + The required addin name. + + + + Summary description for SetCultureAttribute. + + + + + Construct given the name of a culture + + + + + + Summary description for SetUICultureAttribute. + + + + + Construct given the name of a culture + + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + SetUpFixtureAttribute is used to identify a SetUpFixture + + + + + Attribute used to mark a static (shared in VB) property + that returns a list of tests. + + + + + Attribute used to identify a method that is called + immediately after each test is run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + publc void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + NOTE: This interface is used in both the framework + and the core, even though that results in two different + types. However, sharing the source code guarantees that + the various implementations will be compatible and that + the core is able to reflect successfully over the + framework implementations of ITestCaseData. + + + + + Gets the argument list to be provided to the test + + + + + Gets the expected result + + + + + Gets the expected exception Type + + + + + Gets the FullName of the expected exception + + + + + Gets the name to be used for the test + + + + + Gets the description of the test + + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets the ignore reason. + + The ignore reason. + + + + Construct a TestCaseAttribute with a list of arguments. + This constructor is not CLS-Compliant + + + + + + Construct a TestCaseAttribute with a single argument + + + + + + Construct a TestCaseAttribute with a two arguments + + + + + + + Construct a TestCaseAttribute with a three arguments + + + + + + + + Gets the list of arguments to a test case + + + + + Gets or sets the expected result. + + The result. + + + + Gets a list of categories associated with this test; + + + + + Gets or sets the category associated with this test. + May be a single category or a comma-separated list. + + + + + Gets or sets the expected exception. + + The expected exception. + + + + Gets or sets the name the expected exception. + + The expected name of the exception. + + + + Gets or sets the expected message of the expected exception + + The expected message of the exception. + + + + Gets or sets the type of match to be performed on the expected message + + + + + Gets or sets the description. + + The description. + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the ignored status of the test + + + + + Gets or sets the ignored status of the test + + + + + Gets the ignore reason. + + The ignore reason. + + + + FactoryAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the factory - for use with languages + that don't support params arrays. + + An array of the names of the factories that will provide data + + + + Construct with a Type and name - for use with languages + that don't support params arrays. + + The Type that will provide data + The name of the method, property or field that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + [TestFixture] + public class ExampleClass + {} + + + + + Default constructor + + + + + Construct with a object[] representing a set of arguments. + In .NET 2.0, the arguments may later be separated into + type arguments and constructor arguments. + + + + + + Descriptive text for this fixture + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Gets a list of categories for this fixture + + + + + The arguments originally provided to the attribute + + + + + Gets or sets a value indicating whether this should be ignored. + + true if ignore; otherwise, false. + + + + Gets or sets the ignore reason. May set Ignored as a side effect. + + The ignore reason. + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + Attribute used to identify a method that is called after + all the tests in a fixture have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + publc void TestDescriptionMethod() + {} + } + + + + + + WUsed on a method, marks the test with a timeout value in milliseconds. + The test will be run in a separate thread and is cancelled if the timeout + is exceeded. Used on a method or assembly, sets the default timeout + for all contained test methods. + + + + + Construct a TimeoutAttribute given a time in milliseconds + + The timeout value in milliseconds + + + + Marks a test that must run in the STA, causing it + to run in a separate thread if necessary. + + On methods, you may also use STAThreadAttribute + to serve the same purpose. + + + + + Construct a RequiresSTAAttribute + + + + + Marks a test that must run in the MTA, causing it + to run in a separate thread if necessary. + + On methods, you may also use MTAThreadAttribute + to serve the same purpose. + + + + + Construct a RequiresMTAAttribute + + + + + Marks a test that must run on a separate thread. + + + + + Construct a RequiresThreadAttribute + + + + + Construct a RequiresThreadAttribute, specifying the apartment + + + + + ValueSourceAttribute indicates the source to be used to + provide data for one parameter of a test method. + + + + + Construct with the name of the factory - for use with languages + that don't support params arrays. + + The name of the data source to be used + + + + Construct with a Type and name - for use with languages + that don't support params arrays. + + The Type that will provide data + The name of the method, property or field that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + The IConstraintExpression interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + Static UnsetObject used to detect derived constraints + failing to set the actual value. + + + + + The actual value being tested against a constraint + + + + + The display name of this Constraint for use by ToString() + + + + + Argument fields used by ToString(); + + + + + The builder holding this constraint + + + + + Construct a constraint with no arguments + + + + + Construct a constraint with one argument + + + + + Construct a constraint with two arguments + + + + + Sets the ConstraintBuilder holding this constraint + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the constraint and the actual value to the writer, which + then displays the constraint description and the value. + + Constraints that need to provide additional details, + such as where the error occured can override this. + + The MessageWriter on which to display the message + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Test whether the constraint is satisfied by an + ActualValueDelegate that returns the value to be tested. + The default implementation simply evaluates the delegate + but derived classes may override it to provide for delayed + processing. + + An ActualValueDelegate + True for success, false for failure + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Default override of ToString returns the constraint DisplayName + followed by any arguments within angle brackets. + + + + + + Returns the string representation of this constraint + + + + + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + + + + + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + + + + + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. + + + + + Returns a DelayedConstraint with the specified delay time. + + The delay in milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending Or + to the current constraint. + + + + + Class used to detect any derived constraints + that fail to set the actual value in their + Matches override. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + Writes the description of the constraint to the specified writer + + + + + AttributeConstraint tests that a specified attribute is present + on a Type or other provider and that the value of the attribute + satisfies some other constraint. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Construct given a base constraint + + + + + + Constructs an AttributeConstraint for a specified attriute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Writes a description of the attribute to the specified writer. + + + + + Writes the actual value supplied to the specified writer. + + + + + Returns a string representation of the constraint. + + + + + BasicConstraint is the abstract base for constraints that + perform a simple comparison to a constant value. + + + + + Initializes a new instance of the class. + + The expected. + The description. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + Test that the actual value is an NaN + + + + + + + Write the constraint description to a specified writer + + + + + + BinaryConstraint is the abstract base of all constraints + that combine two other constraints in some fashion. + + + + + The first constraint being combined + + + + + The second constraint being combined + + + + + Construct a BinaryConstraint from two other constraints + + The first constraint + The second constraint + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Apply both member constraints to an actual value, succeeding + succeeding only if both of them succeed. + + The actual value + True if the constraints both succeeded + + + + Write a description for this contraint to a MessageWriter + + The MessageWriter to receive the description + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Apply the member constraints to an actual value, succeeding + succeeding as soon as one of them succeeds. + + The actual value + True if either constraint succeeded + + + + Write a description for this contraint to a MessageWriter + + The MessageWriter to receive the description + + + + CollectionConstraint is the abstract base class for + constraints that operate on collections. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Determines whether the specified enumerable is empty. + + The enumerable. + + true if the specified enumerable is empty; otherwise, false. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Protected method to be implemented by derived classes + + + + + + + CollectionItemsEqualConstraint is the abstract base class for all + collection constraints that apply some notion of item equality + as a part of their operation. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + Flag the constraint to ignore case and return self. + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + Check that the collection is empty + + + + + + + Write the constraint description to a MessageWriter + + + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + Check that all items are unique. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + Test whether the expected item is contained in the collection + + + + + + + Write a descripton of the constraint to a MessageWriter + + + + + + CollectionEquivalentCOnstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + Test whether two collections are equivalent + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + CollectionSubsetConstraint is used to determine whether + one collection is a subset of another + + + + + Construct a CollectionSubsetConstraint + + The collection that the actual value is expected to be a subset of + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + Modifies the constraint to use an IComparer and returns self. + + + + + Modifies the constraint to use an IComparer<T> and returns self. + + + + + Modifies the constraint to use a Comparison<T> and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + Test whether the collection is ordered + + + + + + + Write a description of the constraint to a MessageWriter + + + + + + Returns the string representation of the constraint. + + + + + + If used performs a reverse comparison + + + + + CollectionTally counts (tallies) the number of + occurences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + Try to remove an object from the tally + + The object to remove + True if successful, false if the object was not found + + + + Try to remove a set of objects from the tally + + The objects to remove + True if successful, false if any object was not found + + + + The number of objects remaining in the tally + + + + + ComparisonAdapter class centralizes all comparisons of + values in NUnit, adapting to the use of any provided + IComparer, IComparer<T> or Comparison<T> + + + + + Returns a ComparisonAdapter that wraps an IComparer + + + + + Returns a ComparisonAdapter that wraps an IComparer<T> + + + + + Returns a ComparisonAdapter that wraps a Comparison<T> + + + + + Compares two objects + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Construct a ComparisonAdapter for an IComparer + + + + + Compares two objects + + + + + + + + Construct a default ComparisonAdapter + + + + + ComparisonAdapter<T> extends ComparisonAdapter and + allows use of an IComparer<T> or Comparison<T> + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an IComparer<T> + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a Comparison<T> + + + + + Compare a Type T to an object + + + + + Abstract base class for constraints that compare values to + determine if one is greater than, equal to or less than + the other. + + + + + The value against which a comparison is to be made + + + + + If true, less than returns success + + + + + if true, equal returns success + + + + + if true, greater than returns success + + + + + The predicate used as a part of the description + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + if set to true less succeeds. + if set to true equal succeeds. + if set to true greater succeeds. + String used in describing the constraint. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Modifies the constraint to use an IComparer and returns self + + + + + Modifies the constraint to use an IComparer<T> and returns self + + + + + Modifies the constraint to use a Comparison<T> and returns self + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is greater than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is less than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + ConstraintBuilder maintains the stacks that are used in + processing a ConstraintExpression. An OperatorStack + is used to hold operators that are waiting for their + operands to be reognized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + Initializes a new instance of the class. + + + + + Appends the specified operator to the expression by first + reducing the operator stack and then pushing the new + operator on the stack. + + The operator to push. + + + + Appends the specified constraint to the expresson by pushing + it on the constraint stack. + + The constraint to push. + + + + Sets the top operator right context. + + The right context. + + + + Reduces the operator stack until the topmost item + precedence is greater than or equal to the target precedence. + + The target precedence. + + + + Resolves this instance, returning a Constraint. If the builder + is not currently in a resolvable state, an exception is thrown. + + The resolved constraint + + + + Gets a value indicating whether this instance is resolvable. + + + true if this instance is resolvable; otherwise, false. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The builder. + + + + Pushes the specified operator onto the stack. + + The op. + + + + Pops the topmost operator from the stack. + + + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + The top. + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The builder. + + + + Pushes the specified constraint. As a side effect, + the constraint's builder field is set to the + ConstraintBuilder owning this stack. + + The constraint. + + + + Pops this topmost constrait from the stack. + As a side effect, the constraint's builder + field is set to null. + + + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost constraint without modifying the stack. + + The topmost constraint + + + + ConstraintExpression represents a compound constraint in the + process of being constructed from a series of syntactic elements. + + Individual elements are appended to the expression as they are + reognized. Once an actual Constraint is appended, the expression + returns a resolvable Constraint. + + + + + ConstraintExpressionBase is the abstract base class for the + generated ConstraintExpression class, which represents a + compound constraint in the process of being constructed + from a series of syntactic elements. + + NOTE: ConstraintExpressionBase is aware of some of its + derived classes, which is an apparent violation of + encapsulation. Ideally, these classes would be a + single class, but they must be separated in order to + allow parts to be generated under .NET 1.x and to + provide proper user feedback in syntactically + aware IDEs. + + + + + The ConstraintBuilder holding the elements recognized so far + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a string representation of the expression as it + currently stands. This should only be used for testing, + since it has the side-effect of resolving the expression. + + + + + + Appends an operator to the expression and returns the + resulting expression itself. + + + + + Appends a self-resolving operator to the expression and + returns a new ResolvableConstraintExpression. + + + + + Appends a constraint to the expression and returns that + constraint, which is associated with the current state + of the expression being built. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + With is currently a NOP - reserved for future use. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + The ConstraintOperator class is used internally by a + ConstraintBuilder to represent an operator that + modifies or combines constraints. + + Constraint operators use left and right precedence + values to determine whether the top operator on the + stack should be reduced before pushing a new operator. + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + The syntax element preceding this operator + + + + + The syntax element folowing this operator + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + PrefixOperator takes a single constraint and modifies + it's action in some way. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Returns the constraint created by applying this + prefix to another constraint. + + + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + Represents a constraint that succeeds if all the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + they all succeed. + + + + + Represents a constraint that succeeds if any of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + any of them succeed. + + + + + Represents a constraint that succeeds if none of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifes the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + Operator used to test for the presence of a named Property + on an object and optionally apply further tests to the + value of that property. + + + + + Constructs a PropOperator for a particular named property + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Gets the name of the property to which the operator applies + + + + + Operator that tests for the presence of a particular attribute + on a type and optionally applies further tests to the attribute. + + + + + Construct an AttributeOperator for a particular Type + + The Type of attribute tested + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Operator that tests that an exception is thrown and + optionally applies further tests to the exception. + + + + + Construct a ThrowsOperator + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Abstract base class for all binary operators + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + ContainsConstraint tests a whether a string contains a substring + or a collection contains an object. It postpones the decision of + which test to use until the type of the actual argument is known. + This allows testing whether a string is contained in a collection + or as a substring of another string using the same syntax. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to ignore case and return self. + + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Creates a new DelayedConstraint + + The inner constraint two decorate + The time interval after which the match is performed + If the value of is less than 0 + + + + Creates a new DelayedConstraint + + The inner constraint two decorate + The time interval after which the match is performed + The time interval used for polling + If the value of is less than 0 + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + Test whether the constraint is satisfied by a delegate + + The delegate whose value is to be tested + True for if the base constraint fails, false if it succeeds + + + + Test whether the constraint is satisfied by a given reference. + Overridden to wait for the specified delay period before + calling the base constraint with the dereferenced value. + + A reference to the value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a MessageWriter. + + The writer on which the actual value is displayed + + + + Returns the string representation of the constraint. + + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + EmptyConstraint tests a whether a string or collection is empty, + postponing the decision about which test is applied until the + type of the actual argument is known. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + EqualConstraint is able to compare an actual value with the + expected value provided in its constructor. Two objects are + considered equal if both are null, or if both have the same + value. NUnit has special semantics for some object types. + + + + + If true, strings in error messages will be clipped + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + The MessageWriter to write to + + + + Write description of this constraint + + The MessageWriter to write to + + + + Display the failure information for two collections that did not match. + + The MessageWriter on which to display + The expected collection. + The actual collection + The depth of this failure in a set of nested collections + + + + Displays a single line showing the types and sizes of the expected + and actual collections or arrays. If both are identical, the value is + only shown once. + + The MessageWriter on which to display + The expected collection or array + The actual collection or array + The indentation level for the message line + + + + Displays a single line showing the point in the expected and actual + arrays at which the comparison failed. If the arrays have different + structures or dimensions, both values are shown. + + The MessageWriter on which to display + The expected array + The actual array + Index of the failure point in the underlying collections + The indentation level for the message line + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to suppress string clipping + and return self. + + + + + Flag the constraint to compare arrays as collections + and return self. + + + + + Switches the .Within() modifier to interpret its tolerance as + a distance in representable values (see remarks). + + Self. + + Ulp stands for "unit in the last place" and describes the minimum + amount a given value can change. For any integers, an ulp is 1 whole + digit. For floating point values, the accuracy of which is better + for smaller numbers and worse for larger numbers, an ulp depends + on the size of the number. Using ulps for comparison of floating + point results instead of fixed tolerances is safer because it will + automatically compensate for the added inaccuracy of larger numbers. + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual values is allowed to deviate from + the expected value. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in days. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in hours. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in minutes. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in seconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in milliseconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in clock ticks. + + Self + + + + EqualityAdapter class handles all equality comparisons + that use an IEqualityComparer, IEqualityComparer<T> + or a ComparisonAdapter. + + + + + Compares two objects, returning true if they are equal + + + + + Returns an EqualityAdapter that wraps an IComparer. + + + + + Returns an EqualityAdapter that wraps an IEqualityComparer. + + + + + Returns an EqualityAdapter that wraps an IEqualityComparer<T>. + + + + + Returns an EqualityAdapter that wraps an IComparer<T>. + + + + + Returns an EqualityAdapter that wraps a Comparison<T>. + + + + Helper routines for working with floating point numbers + + + The floating point comparison code is based on this excellent article: + http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm + + + "ULP" means Unit in the Last Place and in the context of this library refers to + the distance between two adjacent floating point numbers. IEEE floating point + numbers can only represent a finite subset of natural numbers, with greater + accuracy for smaller numbers and lower accuracy for very large numbers. + + + If a comparison is allowed "2 ulps" of deviation, that means the values are + allowed to deviate by up to 2 adjacent floating point values, which might be + as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. + + + + + Compares two floating point values for equality + First floating point value to be compared + Second floating point value t be compared + + Maximum number of representable floating point values that are allowed to + be between the left and the right floating point values + + True if both numbers are equal or close to being equal + + + Floating point values can only represent a finite subset of natural numbers. + For example, the values 2.00000000 and 2.00000024 can be stored in a float, + but nothing inbetween them. + + + This comparison will count how many possible floating point values are between + the left and the right number. If the number of possible values between both + numbers is less than or equal to maxUlps, then the numbers are considered as + being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + Compares two double precision floating point values for equality + First double precision floating point value to be compared + Second double precision floating point value t be compared + + Maximum number of representable double precision floating point values that are + allowed to be between the left and the right double precision floating point values + + True if both numbers are equal or close to being equal + + + Double precision floating point values can only represent a limited series of + natural numbers. For example, the values 2.0000000000000000 and 2.0000000000000004 + can be stored in a double, but nothing inbetween them. + + + This comparison will count how many possible double precision floating point + values are between the left and the right number. If the number of possible + values between both numbers is less than or equal to maxUlps, then the numbers + are considered as being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + + Reinterprets the memory contents of a floating point value as an integer value + + + Floating point value whose memory contents to reinterpret + + + The memory contents of the floating point value interpreted as an integer + + + + + Reinterprets the memory contents of a double precision floating point + value as an integer value + + + Double precision floating point value whose memory contents to reinterpret + + + The memory contents of the double precision floating point value + interpreted as an integer + + + + + Reinterprets the memory contents of an integer as a floating point value + + Integer value whose memory contents to reinterpret + + The memory contents of the integer value interpreted as a floating point value + + + + + Reinterprets the memory contents of an integer value as a double precision + floating point value + + Integer whose memory contents to reinterpret + + The memory contents of the integer interpreted as a double precision + floating point value + + + + Union of a floating point variable and an integer + + + The union's value as a floating point variable + + + The union's value as an integer + + + The union's value as an unsigned integer + + + Union of a double precision floating point variable and a long + + + The union's value as a double precision floating point variable + + + The union's value as a long + + + The union's value as an unsigned long + + + + MessageWriter is the abstract base for classes that write + constraint descriptions and messages in some form. The + class has separate methods for writing various components + of a message, allowing implementations to tailor the + presentation as needed. + + + + + Construct a MessageWriter given a culture + + + + + Method to write single line message with optional args, usually + written to precede the general failure message. + + The message to be written + Any arguments used in formatting the message + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The constraint that failed + + + + Display Expected and Actual lines for given values. This + method may be called by constraints that need more control over + the display of actual and expected values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given values, including + a tolerance value on the Expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in locating the point where the strings differ + If true, the strings should be clipped to fit the line + + + + Writes the text for a connector. + + The connector. + + + + Writes the text for a predicate. + + The predicate. + + + + Writes the text for an expected value. + + The expected value. + + + + Writes the text for a modifier + + The modifier. + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Abstract method to get the max line length + + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Returns the representation of a type as used in NUnitLite. + This is the same as Type.ToString() except for arrays, + which are displayed with their declared sizes. + + + + + + + Converts any control characters in a string + to their escaped representation. + + The string to be converted + The converted string + + + + Return the a string representation for a set of indices into an array + + Array of indices for which a string is needed + + + + Get an array of indices representing the point in a collection or + array corresponding to a single int index into the collection. + + The collection to which the indices apply + Index in the collection + Array of indices + + + + Clip a string to a given length, starting at a particular offset, returning the clipped + string with ellipses representing the removed parts + + The string to be clipped + The maximum permitted length of the result string + The point at which to start clipping + The clipped string + + + + Clip the expected and actual strings in a coordinated fashion, + so that they may be displayed together. + + + + + + + + + Shows the position two strings start to differ. Comparison + starts at the start index. + + The expected string + The actual string + The index in the strings at which comparison should start + Boolean indicating whether case should be ignored + -1 if no mismatch found, or the index where mismatch found + + + + The Numerics class contains common operations on numeric values. + + + + + Checks the type of the object, returning true if + the object is a numeric type. + + The object to check + true if the object is a numeric type + + + + Checks the type of the object, returning true if + the object is a floating point numeric type. + + The object to check + true if the object is a floating point numeric type + + + + Checks the type of the object, returning true if + the object is a fixed point numeric type. + + The object to check + true if the object is a fixed point numeric type + + + + Test two numeric values for equality, performing the usual numeric + conversions and using a provided or default tolerance. If the tolerance + provided is Empty, this method may set it to a default tolerance. + + The expected value + The actual value + A reference to the tolerance in effect + True if the values are equal + + + + Compare two numeric values, performing the usual numeric conversions. + + The expected value + The actual value + The relationship of the values to each other + + + + NUnitComparer encapsulates NUnit's default behavior + in comparing two objects. + + + + + Compares two objects + + + + + + + + Returns the default NUnitComparer. + + + + + NUnitEqualityComparer encapsulates NUnit's handling of + equality tests between objects. + + + + + If true, all string comparisons will ignore case + + + + + If true, arrays will be treated as collections, allowing + those of different dimensions to be compared + + + + + If non-zero, equality comparisons within the specified + tolerance will succeed. + + + + + Comparison object used in comparisons for some constraints. + + + + + Compares two objects for equality. + + + + + Helper method to compare two arrays + + + + + Method to compare two DirectoryInfo objects + + first directory to compare + second directory to compare + true if equivalent, false if not + + + + Returns the default NUnitEqualityComparer + + + + + Gets and sets a flag indicating whether case should + be ignored in determining equality. + + + + + Gets and sets a flag indicating that arrays should be + compared as collections, without regard to their shape. + + + + + Gets and sets an external comparer to be used to + test for equality. It is applied to members of + collections, in place of NUnit's own logic. + + + + + Gets and sets a tolerance used to compare objects of + certin types. + + + + + Gets the list of failure points for the last Match performed. + + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + The expected path used in the constraint + + + + + The actual path being tested + + + + + Flag indicating whether a caseInsensitive comparison should be made + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns true if the expected path and actual path match + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether two paths are the same + + The first path + The second path + Indicates whether case should be ignored + + + + + Test whether one path is under another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + Indicates whether case should be ignored + + + + + Test whether one path is the same as or under another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Modifies the current instance to be case-insensitve + and returns it. + + + + + Modifies the current instance to be case-sensitve + and returns it. + + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The expected path + The actual path + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The expected path + The actual path + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The expected path + The actual path + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Writes the description to a MessageWriter + + + + + NotConstraint negates the effect of some other constraint + + + + + Initializes a new instance of the class. + + The base constraint to be negated. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a MessageWriter. + + The writer on which the actual value is displayed + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + SomeItemsConstraint applies another constraint to each + item in a collection, succeeding if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + NoItemConstraint applies another constraint to each + item in a collection, failing if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + PropertyExistsConstraint tests that a named property + exists on the object provided through Match. + + Originally, PropertyConstraint provided this feature + in addition to making optional tests on the vaue + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. + + The writer on which the actual value is displayed + + + + Returns the string representation of the constraint. + + + + + + PropertyConstraint extracts a named property and uses + its value as the actual value for a chained constraint. + + + + + Initializes a new instance of the class. + + The name. + The constraint to apply to the property. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whethe two values are within a + specified range. + + + + + Initializes a new instance of the class. + + From. + To. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Modifies the constraint to use an IComparer and returns self. + + + + + Modifies the constraint to use an IComparer<T> and returns self. + + + + + Modifies the constraint to use a Comparison<T> and returns self. + + + + + ResolvableConstraintExpression is used to represent a compound + constraint being constructed at a point where the last operator + may either terminate the expression or may have additional + qualifying constraints added to it. + + It is used, for example, for a Property element or for + an Exception element, either of which may be optionally + followed by constraints that apply to the property or + exception. + + + + + Create a new instance of ResolvableConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + Resolve the current expression to a Constraint + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + ReusableConstraint wraps a resolved constraint so that it + may be saved and reused as needed. + + + + + Construct a ReusableConstraint + + The constraint or expression to be reused + + + + Conversion operator from a normal constraint to a ReusableConstraint. + + The original constraint to be wrapped as a ReusableConstraint + + + + + Returns the string representation of the constraint. + + A string representing the constraint + + + + Resolves the ReusableConstraint by returning the constraint + that it originally wrapped. + + A resolved constraint + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation + + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation of this constraint + + + + + StringConstraint is the abstract base for constraints + that operate on strings. It supports the IgnoreCase + modifier for string operations. + + + + + The expected value + + + + + Indicates whether tests should be case-insensitive + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + EmptyStringConstraint tests whether a string is empty. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + NullEmptyStringConstraint tests whether a string is either null or empty. + + + + + Constructs a new NullOrEmptyStringConstraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + SubstringConstraint can test whether a string contains + the expected substring. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + StartsWithConstraint can test whether a string starts + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + EndsWithConstraint can test whether a string ends + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + RegexConstraint can test whether a string matches + the pattern provided. + + + + + Initializes a new instance of the class. + + The pattern. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + ThrowsConstraint is used to test the exception thrown by + a delegate by applying a constraint to it. + + + + + Initializes a new instance of the class, + using a constraint to be applied to the exception. + + A constraint to apply to the caught exception. + + + + Executes the code of the delegate and captures any exception. + If a non-null base constraint was provided, it applies that + constraint to the exception. + + A delegate representing the code to be tested + True if an exception is thrown and the constraint succeeds, otherwise false + + + + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation of this constraint + + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Modes in which the tolerance value for a comparison can + be interpreted. + + + + + The tolerance was created with a value, without specifying + how the value would be used. This is used to prevent setting + the mode more than once and is generally changed to Linear + upon execution of the test. + + + + + The tolerance is used as a numeric range within which + two compared values are considered to be equal. + + + + + Interprets the tolerance as the percentage by which + the two compared values my deviate from each other. + + + + + Compares two values based in their distance in + representable numbers. + + + + + The Tolerance class generalizes the notion of a tolerance + within which an equality test succeeds. Normally, it is + used with numeric types, but it can be used with any + type that supports taking a difference between two + objects and comparing that difference to a value. + + + + + Constructs a linear tolerance of a specdified amount + + + + + Constructs a tolerance given an amount and ToleranceMode + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Returns an empty Tolerance object, equivalent to + specifying an exact match. + + + + + Gets the ToleranceMode for the current Tolerance + + + + + Gets the value of the current Tolerance instance. + + + + + Returns a new tolerance, using the current amount as a percentage. + + + + + Returns a new tolerance, using the current amount in Ulps. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of clock ticks. + + + + + Returns true if the current tolerance is empty. + + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + Construct a TypeConstraint for a given Type + + + + + + Write the actual value for a failing constraint test to a + MessageWriter. TypeConstraints override this method to write + the name of the type. + + The writer on which the actual value is displayed + + + + ExactTypeConstraint is used to test that an object + is of the exact type provided in the constructor + + + + + Construct an ExactTypeConstraint for a given Type + + The expected Type. + + + + Test that an object is of the exact type specified + + The actual value. + True if the tested object is of the exact type provided, otherwise false. + + + + Write the description of this constraint to a MessageWriter + + The MessageWriter to use + + + + InstanceOfTypeConstraint is used to test that an object + is of the same type provided or derived from it. + + + + + Construct an InstanceOfTypeConstraint for the type provided + + The expected Type + + + + Test whether an object is of the specified type or a derived type + + The object to be tested + True if the object is of the provided type or derives from it, otherwise false. + + + + Write a description of this constraint to a MessageWriter + + The MessageWriter to use + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Test whether an object can be assigned from the specified type + + The object to be tested + True if the object can be assigned a value of the expected Type, otherwise false. + + + + Write a description of this constraint to a MessageWriter + + The MessageWriter to use + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Test whether an object can be assigned to the specified type + + The object to be tested + True if the object can be assigned a value of the expected Type, otherwise false. + + + + Write a description of this constraint to a MessageWriter + + The MessageWriter to use + + + + Thrown when an assertion failed. + + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Thrown when a test executes inconclusively. + + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Helper for Assert.AreEqual(double expected, double actual, ...) + allowing code generation to work consistently. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + + + + Throws an with the message and arguments + that are passed in. This is used by the other Assert functions. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This is used by the other Assert functions. + + The message to initialize the with. + + + + Throws an . + This is used by the other Assert functions. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as ignored. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as Inconclusive. + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + The message that will be displayed on failure + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestSnippet delegate + The message that will be displayed on failure + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestSnippet delegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestSnippet delegate + The message that will be displayed on failure + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestSnippet delegate + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate does not throw an exception. + + A TestSnippet delegate + The message that will be displayed on failure + + + + Verifies that a delegate does not throw an exception. + + A TestSnippet delegate + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is either null or equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is either null or equal to string.Empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is either null or equal to string.Empty + + The string to be tested + + + + Assert that a string is not null or empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not null or empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is not null or empty + + The string to be tested + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + + + + Gets the number of assertions executed so far and + resets the counter to zero. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter names for constraints and + asserts and avoiding conflict with the definition of + , from which it inherits much of its + behavior, in certain mock object frameworks. + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + + The evaluated condition + The message to display if the condition is false + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to . + + The evaluated condition + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + Provides static methods to express the assumptions + that must be met for a test to give a meaningful + result. If an assumption is not met, the test + should produce an inconclusive result. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + + + + Asserts that a condition is true. If the condition is false the + method throws an . + + The evaluated condition + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + A set of Assert methods operationg on one or more collections + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + The message that will be displayed on failure + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that superset is not a subject of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that superset is not a subject of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + + + + Asserts that superset is not a subject of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that superset is a subset of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that superset is a subset of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + + + + Asserts that superset is a subset of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + + + + Static helper class used in the constraint-based syntax + + + + + Creates a new SubstringConstraint + + The value of the substring + A SubstringConstraint + + + + Creates a new CollectionContainsConstraint. + + The item that should be found. + A new CollectionContainsConstraint + + + + Summary description for DirectoryAssert + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are not equal + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are equal + Arguments to be used in formatting the message + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are equal + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Summary description for FileAssert. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + The message to display if objects are not equal + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if objects are not equal + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if objects are not equal + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + The message to be displayed when the two Stream are the same. + Arguments to be used in formatting the message + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + The message to be displayed when the Streams are the same. + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if objects are not equal + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if objects are not equal + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + GlobalSettings is a place for setting default values used + by the framework in performing asserts. + + + + + Default tolerance for floating point equality + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Interface implemented by a user fixture in order to + validate any expected exceptions. It is only called + for test methods marked with the ExpectedException + attribute. + + + + + Method to handle an expected exception + + The exception to be handled + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + The Iz class is a synonym for Is intended for use in VB, + which regards Is as a keyword. + + + + + The List class is a helper class with properties and methods + that supply a number of constraints used with lists and collections. + + + + + List.Map returns a ListMapper, which can be used to map + the original collection to another collection. + + + + + + + ListMapper is used to transform a collection used as an actual argument + producing another collection to be used in the assertion. + + + + + Construct a ListMapper based on a collection + + The collection to be transformed + + + + Produces a collection containing all the values of a property + + The collection of property values + + + + + Randomizer returns a set of random values in a repeatable + way, to allow re-running of tests if necessary. + + + + + Get a randomizer for a particular member, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. + + + + + Get a randomizer for a particular parameter, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. + + + + + Construct a randomizer using a random seed + + + + + Construct a randomizer using a specified seed + + + + + Return an array of random doubles between 0.0 and 1.0. + + + + + + + Return an array of random doubles with values in a specified range. + + + + + Return an array of random ints with values in a specified range. + + + + + Get a random seed for use in creating a randomizer. + + + + + The SpecialValue enum is used to represent TestCase arguments + that cannot be used as arguments to an Attribute. + + + + + Null represents a null value, which cannot be used as an + argument to an attriute under .NET 1.x + + + + + Basic Asserts on strings. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string is not found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are Notequal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + The message to display in case of failure + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + The message to display in case of failure + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + + + + The TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It provides a number of instance modifiers + for use in initializing the test case. + + Note: Instance modifiers are getters that return + the same instance after modifying it's state. + + + + + The argument list to be provided to the test + + + + + The expected result to be returned + + + + + The expected exception Type + + + + + The FullName of the expected exception + + + + + The name to be used for the test + + + + + The description of the test + + + + + A dictionary of properties, used to add information + to tests without requiring the class to change. + + + + + If true, indicates that the test case is to be ignored + + + + + The reason for ignoring a test case + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Sets the expected result for the test + + The expected result + A modified TestCaseData + + + + Sets the expected exception type for the test + + Type of the expected exception. + The modified TestCaseData instance + + + + Sets the expected exception type for the test + + FullName of the expected exception. + The modified TestCaseData instance + + + + Sets the name of the test case + + The modified TestCaseData instance + + + + Sets the description for the test case + being constructed. + + The description. + The modified TestCaseData instance. + + + + Applies a category to the test + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Ignores this TestCase. + + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Gets the argument list to be provided to the test + + + + + Gets the expected result + + + + + Gets the expected exception Type + + + + + Gets the FullName of the expected exception + + + + + Gets the name to be used for the test + + + + + Gets the description of the test + + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets the ignore reason. + + The ignore reason. + + + + Gets a list of categories associated with this test. + + + + + Gets the property dictionary for this test + + + + + Provide the context information of the current test + + + + + Constructs a TestContext using the provided context dictionary + + A context dictionary + + + + Get the current test context. This is created + as needed. The user may save the context for + use within a test, but it should not be used + outside the test for which it is created. + + + + + Gets a TestAdapter representing the currently executing test in this context. + + + + + Gets a ResultAdapter representing the current result for the test + executing in this context. + + + + + Gets the current directory for this TestContext + + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Constructs a TestAdapter for this context + + The context dictionary + + + + The name of the test. + + + + + The FullName of the test + + + + + The properties of the test. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a context + + The context holding the result + + + + The TestState of current test. This maps to the ResultState + used in nunit.core and is subject to change in the future. + + + + + The TestStatus of current test. This enum will be used + in future versions of NUnit and so is to be preferred + to the TestState value. + + + + + The ResultState enum indicates the result of running a test + + + + + The result is inconclusive + + + + + The test was not runnable. + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test succeeded + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + The test failed + + + + + Helper class with static methods used to supply constraints + that operate on strings. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + TextMessageWriter writes constraint descriptions and messages + in displayable form as a text stream. It tailors the display + of individual message components to form the standard message + format of NUnit assertion failure messages. + + + + + Prefix used for the expected value line of a message + + + + + Prefix used for the actual value line of a message + + + + + Length of a message prefix + + + + + Construct a TextMessageWriter + + + + + Construct a TextMessageWriter, specifying a user message + and optional formatting arguments. + + + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The constraint that failed + + + + Display Expected and Actual lines for given values. This + method may be called by constraints that need more control over + the display of actual and expected values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given values, including + a tolerance value on the expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in string comparisons + If true, clip the strings to fit the max line length + + + + Writes the text for a connector. + + The connector. + + + + Writes the text for a predicate. + + The predicate. + + + + Write the text for a modifier. + + The modifier. + + + + Writes the text for an expected value. + + The expected value. + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Write the generic 'Expected' line for a constraint + + The constraint that failed + + + + Write the generic 'Expected' line for a given value + + The expected value + + + + Write the generic 'Expected' line for a given value + and tolerance. + + The expected value + The tolerance within which the test was made + + + + Write the generic 'Actual' line for a constraint + + The constraint for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + Gets or sets the maximum line length for this writer + + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying an expected exception + + + + + Creates a constraint specifying an exception with a given InnerException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying that no exception is thrown + + + + From b4cfd7ed2c42701285af351ffb8d4a407a599d53 Mon Sep 17 00:00:00 2001 From: Marcin Floryan Date: Mon, 18 Jul 2011 14:48:04 +0100 Subject: [PATCH 10/12] We don't want the user files either. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 3314d8c..1b588c2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ _ReSharper*/* #No VisualStudio local files +*.user *.suo obj/ [Bb]in From add8b2561cb20db9181108f033d78fe7d5c53257 Mon Sep 17 00:00:00 2001 From: Marcin Floryan Date: Mon, 18 Jul 2011 15:39:47 +0100 Subject: [PATCH 11/12] Recreated the VS2008 solution --- JsonViewer.2008.sln | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 JsonViewer.2008.sln diff --git a/JsonViewer.2008.sln b/JsonViewer.2008.sln new file mode 100644 index 0000000..324a188 --- /dev/null +++ b/JsonViewer.2008.sln @@ -0,0 +1,44 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonVisualizer", "Visualizer\JsonVisualizer.csproj", "{32BEAE8D-282C-4414-9B7F-2F0E9450369A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonViewer", "JsonViewer\JsonViewer.csproj", "{3AE264FB-52DC-4295-A37F-CE63CAF54930}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonView", "JsonView\JsonView.csproj", "{83D82889-66FA-41AC-932F-9AF3AE8EAA9C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiddlerJsonViewer", "Fiddler\FiddlerJsonViewer.csproj", "{4B6A26FA-0D44-4354-92E7-54FC5A75469B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JsonViewer.Test", "JsonViewer.Test\JsonViewer.Test.csproj", "{352E688F-776F-4A5F-8781-83DBAFE71DEC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {32BEAE8D-282C-4414-9B7F-2F0E9450369A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {32BEAE8D-282C-4414-9B7F-2F0E9450369A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {32BEAE8D-282C-4414-9B7F-2F0E9450369A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {32BEAE8D-282C-4414-9B7F-2F0E9450369A}.Release|Any CPU.Build.0 = Release|Any CPU + {3AE264FB-52DC-4295-A37F-CE63CAF54930}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3AE264FB-52DC-4295-A37F-CE63CAF54930}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3AE264FB-52DC-4295-A37F-CE63CAF54930}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3AE264FB-52DC-4295-A37F-CE63CAF54930}.Release|Any CPU.Build.0 = Release|Any CPU + {83D82889-66FA-41AC-932F-9AF3AE8EAA9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {83D82889-66FA-41AC-932F-9AF3AE8EAA9C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {83D82889-66FA-41AC-932F-9AF3AE8EAA9C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {83D82889-66FA-41AC-932F-9AF3AE8EAA9C}.Release|Any CPU.Build.0 = Release|Any CPU + {4B6A26FA-0D44-4354-92E7-54FC5A75469B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4B6A26FA-0D44-4354-92E7-54FC5A75469B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4B6A26FA-0D44-4354-92E7-54FC5A75469B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4B6A26FA-0D44-4354-92E7-54FC5A75469B}.Release|Any CPU.Build.0 = Release|Any CPU + {352E688F-776F-4A5F-8781-83DBAFE71DEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {352E688F-776F-4A5F-8781-83DBAFE71DEC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {352E688F-776F-4A5F-8781-83DBAFE71DEC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {352E688F-776F-4A5F-8781-83DBAFE71DEC}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal From 53c7ac8e2af30d5daf84266cd687b1b783225aee Mon Sep 17 00:00:00 2001 From: Marcin Floryan Date: Mon, 18 Jul 2011 16:28:35 +0100 Subject: [PATCH 12/12] First JsonFields test --- JsonViewer.Test/Domain/JsonFieldsTests.cs | 19 +++++++++++++++++++ JsonViewer.Test/JsonViewer.Test.csproj | 5 ++++- JsonViewer/JsonFields.cs | 2 -- 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 JsonViewer.Test/Domain/JsonFieldsTests.cs diff --git a/JsonViewer.Test/Domain/JsonFieldsTests.cs b/JsonViewer.Test/Domain/JsonFieldsTests.cs new file mode 100644 index 0000000..4373fa2 --- /dev/null +++ b/JsonViewer.Test/Domain/JsonFieldsTests.cs @@ -0,0 +1,19 @@ +using EPocalipse.Json.Viewer; +using NUnit.Framework; + +namespace JsonViewer.Test.Domain +{ + [TestFixture] + public class JsonFieldsTests + { + + [Test] + public void Should_Contstruct_New_Fields_Correctly() + { + var parent = new JsonObject(); + var fields = new JsonFields(parent); + + Assert.That(fields.Count, Is.EqualTo(0)); + } + } +} diff --git a/JsonViewer.Test/JsonViewer.Test.csproj b/JsonViewer.Test/JsonViewer.Test.csproj index f847c8b..847e83c 100644 --- a/JsonViewer.Test/JsonViewer.Test.csproj +++ b/JsonViewer.Test/JsonViewer.Test.csproj @@ -3,7 +3,7 @@ Debug AnyCPU - 8.0.30703 + 9.0.30729 2.0 {352E688F-776F-4A5F-8781-83DBAFE71DEC} Library @@ -40,8 +40,11 @@ + + + diff --git a/JsonViewer/JsonFields.cs b/JsonViewer/JsonFields.cs index 4f21826..7502567 100644 --- a/JsonViewer/JsonFields.cs +++ b/JsonViewer/JsonFields.cs @@ -1,6 +1,4 @@ -using System; using System.Collections.Generic; -using System.Text; using System.Collections; namespace EPocalipse.Json.Viewer

m@{wu(tdobbFPP%>u`1CmDWM#^&5X$&8w=@ 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 UfG2^cfK9;D!2i1c`6cjw0UO6&lK=n! literal 0 HcmV?d00001 diff --git a/lib/Moq.xml b/lib/Moq.xml new file mode 100644 index 0000000..a0be31c --- /dev/null +++ b/lib/Moq.xml @@ -0,0 +1,5768 @@ + + + + Moq + + + +