From e40b42bff743d6fe95ef82819df52c2339a49aec Mon Sep 17 00:00:00 2001 From: Diego Sousa Date: Sun, 16 Jul 2017 14:56:36 -0300 Subject: [PATCH] Added files needed to run the project on VS/15/17 --- {csharp => csharp-}/ApprovalTest.cs | 54 +- {csharp => csharp-}/GildedRose.cs | 0 {csharp => csharp-}/GildedRoseTest.cs | 0 {csharp => csharp-}/TextTestFixture.cs | 0 csharp/.vs/csharp/v14/.suo | Bin 0 -> 73216 bytes csharp/GildedRose/App.config | 6 + csharp/GildedRose/GildedRose.cs | 89 + csharp/GildedRose/GildedRose.csproj | 62 + csharp/GildedRose/Item.cs | 9 + csharp/GildedRose/Program.cs | 56 + csharp/GildedRose/Properties/AssemblyInfo.cs | 36 + csharp/GildedRose/bin/Debug/GildedRose.exe | Bin 0 -> 7680 bytes .../bin/Debug/GildedRose.exe.config | 6 + csharp/GildedRose/bin/Debug/GildedRose.pdb | Bin 0 -> 17920 bytes .../bin/Debug/GildedRose.vshost.exe | Bin 0 -> 22696 bytes .../bin/Debug/GildedRose.vshost.exe.config | 6 + .../bin/Debug/GildedRose.vshost.exe.manifest | 11 + .../bin/Debug/nunit_random_seed.tmp | 1 + ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 6806 bytes .../GildedRose.csproj.FileListAbsolute.txt | 5 + csharp/GildedRose/obj/Debug/GildedRose.exe | Bin 0 -> 7680 bytes csharp/GildedRose/obj/Debug/GildedRose.pdb | Bin 0 -> 17920 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../ApprovalTest.ThirtyDays.received.txt | 373 + csharp/GildedRoseTest/ApprovalTest.cs | 27 + csharp/GildedRoseTest/GildedRoseTest.cs | 19 + csharp/GildedRoseTest/GildedRoseTest.csproj | 83 + .../GildedRoseTest/Properties/AssemblyInfo.cs | 36 + .../bin/Debug/ApprovalTests.dll | Bin 0 -> 141312 bytes .../bin/Debug/ApprovalTests.xml | 31 + .../bin/Debug/ApprovalUtilities.Net45.dll | Bin 0 -> 5632 bytes .../bin/Debug/ApprovalUtilities.Net45.xml | 8 + .../bin/Debug/ApprovalUtilities.dll | Bin 0 -> 65536 bytes .../bin/Debug/ApprovalUtilities.xml | 13 + .../GildedRoseTest/bin/Debug/GildedRose.exe | Bin 0 -> 7680 bytes .../GildedRoseTest/bin/Debug/GildedRose.pdb | Bin 0 -> 17920 bytes .../bin/Debug/GildedRoseTest.dll | Bin 0 -> 5632 bytes .../bin/Debug/GildedRoseTest.pdb | Bin 0 -> 13824 bytes .../bin/Debug/nunit.framework.dll | Bin 0 -> 333312 bytes .../bin/Debug/nunit.framework.xml | 19434 +++++++++++++++ .../bin/Debug/nunit_random_seed.tmp | 1 + ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 7376 bytes ...GildedRoseTest.csproj.FileListAbsolute.txt | 15 + ...eTest.csprojResolveAssemblyReference.cache | Bin 0 -> 38782 bytes .../obj/Debug/GildedRoseTest.dll | Bin 0 -> 5632 bytes .../obj/Debug/GildedRoseTest.pdb | Bin 0 -> 13824 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 csharp/GildedRoseTest/packages.config | 7 + csharp/csharp.sln | 28 + .../ApprovalTests.3.0.13.nupkg | Bin 0 -> 57809 bytes .../lib/net40/ApprovalTests.XML | 31 + .../lib/net40/ApprovalTests.dll | Bin 0 -> 141312 bytes .../ApprovalUtilities.3.0.13.nupkg | Bin 0 -> 61791 bytes .../lib/net35/ApprovalUtilities.XML | 13 + .../lib/net35/ApprovalUtilities.dll | Bin 0 -> 65536 bytes .../lib/net45/ApprovalUtilities.Net45.XML | 8 + .../lib/net45/ApprovalUtilities.Net45.dll | Bin 0 -> 5632 bytes .../lib/net45/ApprovalUtilities.XML | 13 + .../lib/net45/ApprovalUtilities.dll | Bin 0 -> 65536 bytes csharp/packages/NUnit.3.7.1/CHANGES.md | 1353 ++ csharp/packages/NUnit.3.7.1/LICENSE.txt | 20 + csharp/packages/NUnit.3.7.1/NOTICES.txt | 5 + csharp/packages/NUnit.3.7.1/NUnit.3.7.1.nupkg | Bin 0 -> 1439169 bytes .../lib/net20/NUnit.System.Linq.dll | Bin 0 -> 95232 bytes .../NUnit.3.7.1/lib/net20/nunit.framework.dll | Bin 0 -> 332288 bytes .../NUnit.3.7.1/lib/net20/nunit.framework.xml | 19566 +++++++++++++++ .../NUnit.3.7.1/lib/net35/nunit.framework.dll | Bin 0 -> 333824 bytes .../NUnit.3.7.1/lib/net35/nunit.framework.xml | 19765 ++++++++++++++++ .../NUnit.3.7.1/lib/net40/nunit.framework.dll | Bin 0 -> 332800 bytes .../NUnit.3.7.1/lib/net40/nunit.framework.xml | 19467 +++++++++++++++ .../NUnit.3.7.1/lib/net45/nunit.framework.dll | Bin 0 -> 333312 bytes .../NUnit.3.7.1/lib/net45/nunit.framework.xml | 19434 +++++++++++++++ .../lib/netstandard1.3/nunit.framework.dll | Bin 0 -> 299520 bytes .../lib/netstandard1.3/nunit.framework.xml | 18351 ++++++++++++++ .../lib/netstandard1.6/nunit.framework.dll | Bin 0 -> 299520 bytes .../lib/netstandard1.6/nunit.framework.xml | 18307 ++++++++++++++ .../NUnit3TestAdapter.3.7.0/LICENSE.txt | 20 + .../NUnit3TestAdapter.3.7.0.nupkg | Bin 0 -> 272219 bytes .../tools/Mono.Cecil.Mdb.dll | Bin 0 -> 44544 bytes .../tools/Mono.Cecil.Pdb.dll | Bin 0 -> 81920 bytes .../tools/Mono.Cecil.Rocks.dll | Bin 0 -> 23552 bytes .../tools/Mono.Cecil.dll | Bin 0 -> 280576 bytes .../tools/NUnit3.TestAdapter.dll | Bin 0 -> 53248 bytes .../tools/nunit.engine.api.dll | Bin 0 -> 18944 bytes .../tools/nunit.engine.dll | Bin 0 -> 111616 bytes 89 files changed, 136742 insertions(+), 27 deletions(-) rename {csharp => csharp-}/ApprovalTest.cs (95%) rename {csharp => csharp-}/GildedRose.cs (100%) rename {csharp => csharp-}/GildedRoseTest.cs (100%) rename {csharp => csharp-}/TextTestFixture.cs (100%) create mode 100644 csharp/.vs/csharp/v14/.suo create mode 100644 csharp/GildedRose/App.config create mode 100644 csharp/GildedRose/GildedRose.cs create mode 100644 csharp/GildedRose/GildedRose.csproj create mode 100644 csharp/GildedRose/Item.cs create mode 100644 csharp/GildedRose/Program.cs create mode 100644 csharp/GildedRose/Properties/AssemblyInfo.cs create mode 100644 csharp/GildedRose/bin/Debug/GildedRose.exe create mode 100644 csharp/GildedRose/bin/Debug/GildedRose.exe.config create mode 100644 csharp/GildedRose/bin/Debug/GildedRose.pdb create mode 100644 csharp/GildedRose/bin/Debug/GildedRose.vshost.exe create mode 100644 csharp/GildedRose/bin/Debug/GildedRose.vshost.exe.config create mode 100644 csharp/GildedRose/bin/Debug/GildedRose.vshost.exe.manifest create mode 100644 csharp/GildedRose/bin/Debug/nunit_random_seed.tmp create mode 100644 csharp/GildedRose/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 csharp/GildedRose/obj/Debug/GildedRose.csproj.FileListAbsolute.txt create mode 100644 csharp/GildedRose/obj/Debug/GildedRose.exe create mode 100644 csharp/GildedRose/obj/Debug/GildedRose.pdb create mode 100644 csharp/GildedRose/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 csharp/GildedRose/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 csharp/GildedRose/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 csharp/GildedRoseTest/ApprovalTest.ThirtyDays.received.txt create mode 100644 csharp/GildedRoseTest/ApprovalTest.cs create mode 100644 csharp/GildedRoseTest/GildedRoseTest.cs create mode 100644 csharp/GildedRoseTest/GildedRoseTest.csproj create mode 100644 csharp/GildedRoseTest/Properties/AssemblyInfo.cs create mode 100644 csharp/GildedRoseTest/bin/Debug/ApprovalTests.dll create mode 100644 csharp/GildedRoseTest/bin/Debug/ApprovalTests.xml create mode 100644 csharp/GildedRoseTest/bin/Debug/ApprovalUtilities.Net45.dll create mode 100644 csharp/GildedRoseTest/bin/Debug/ApprovalUtilities.Net45.xml create mode 100644 csharp/GildedRoseTest/bin/Debug/ApprovalUtilities.dll create mode 100644 csharp/GildedRoseTest/bin/Debug/ApprovalUtilities.xml create mode 100644 csharp/GildedRoseTest/bin/Debug/GildedRose.exe create mode 100644 csharp/GildedRoseTest/bin/Debug/GildedRose.pdb create mode 100644 csharp/GildedRoseTest/bin/Debug/GildedRoseTest.dll create mode 100644 csharp/GildedRoseTest/bin/Debug/GildedRoseTest.pdb create mode 100644 csharp/GildedRoseTest/bin/Debug/nunit.framework.dll create mode 100644 csharp/GildedRoseTest/bin/Debug/nunit.framework.xml create mode 100644 csharp/GildedRoseTest/bin/Debug/nunit_random_seed.tmp create mode 100644 csharp/GildedRoseTest/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 csharp/GildedRoseTest/obj/Debug/GildedRoseTest.csproj.FileListAbsolute.txt create mode 100644 csharp/GildedRoseTest/obj/Debug/GildedRoseTest.csprojResolveAssemblyReference.cache create mode 100644 csharp/GildedRoseTest/obj/Debug/GildedRoseTest.dll create mode 100644 csharp/GildedRoseTest/obj/Debug/GildedRoseTest.pdb create mode 100644 csharp/GildedRoseTest/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 csharp/GildedRoseTest/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 csharp/GildedRoseTest/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 csharp/GildedRoseTest/packages.config create mode 100644 csharp/csharp.sln create mode 100644 csharp/packages/ApprovalTests.3.0.13/ApprovalTests.3.0.13.nupkg create mode 100644 csharp/packages/ApprovalTests.3.0.13/lib/net40/ApprovalTests.XML create mode 100644 csharp/packages/ApprovalTests.3.0.13/lib/net40/ApprovalTests.dll create mode 100644 csharp/packages/ApprovalUtilities.3.0.13/ApprovalUtilities.3.0.13.nupkg create mode 100644 csharp/packages/ApprovalUtilities.3.0.13/lib/net35/ApprovalUtilities.XML create mode 100644 csharp/packages/ApprovalUtilities.3.0.13/lib/net35/ApprovalUtilities.dll create mode 100644 csharp/packages/ApprovalUtilities.3.0.13/lib/net45/ApprovalUtilities.Net45.XML create mode 100644 csharp/packages/ApprovalUtilities.3.0.13/lib/net45/ApprovalUtilities.Net45.dll create mode 100644 csharp/packages/ApprovalUtilities.3.0.13/lib/net45/ApprovalUtilities.XML create mode 100644 csharp/packages/ApprovalUtilities.3.0.13/lib/net45/ApprovalUtilities.dll create mode 100644 csharp/packages/NUnit.3.7.1/CHANGES.md create mode 100644 csharp/packages/NUnit.3.7.1/LICENSE.txt create mode 100644 csharp/packages/NUnit.3.7.1/NOTICES.txt create mode 100644 csharp/packages/NUnit.3.7.1/NUnit.3.7.1.nupkg create mode 100644 csharp/packages/NUnit.3.7.1/lib/net20/NUnit.System.Linq.dll create mode 100644 csharp/packages/NUnit.3.7.1/lib/net20/nunit.framework.dll create mode 100644 csharp/packages/NUnit.3.7.1/lib/net20/nunit.framework.xml create mode 100644 csharp/packages/NUnit.3.7.1/lib/net35/nunit.framework.dll create mode 100644 csharp/packages/NUnit.3.7.1/lib/net35/nunit.framework.xml create mode 100644 csharp/packages/NUnit.3.7.1/lib/net40/nunit.framework.dll create mode 100644 csharp/packages/NUnit.3.7.1/lib/net40/nunit.framework.xml create mode 100644 csharp/packages/NUnit.3.7.1/lib/net45/nunit.framework.dll create mode 100644 csharp/packages/NUnit.3.7.1/lib/net45/nunit.framework.xml create mode 100644 csharp/packages/NUnit.3.7.1/lib/netstandard1.3/nunit.framework.dll create mode 100644 csharp/packages/NUnit.3.7.1/lib/netstandard1.3/nunit.framework.xml create mode 100644 csharp/packages/NUnit.3.7.1/lib/netstandard1.6/nunit.framework.dll create mode 100644 csharp/packages/NUnit.3.7.1/lib/netstandard1.6/nunit.framework.xml create mode 100644 csharp/packages/NUnit3TestAdapter.3.7.0/LICENSE.txt create mode 100644 csharp/packages/NUnit3TestAdapter.3.7.0/NUnit3TestAdapter.3.7.0.nupkg create mode 100644 csharp/packages/NUnit3TestAdapter.3.7.0/tools/Mono.Cecil.Mdb.dll create mode 100644 csharp/packages/NUnit3TestAdapter.3.7.0/tools/Mono.Cecil.Pdb.dll create mode 100644 csharp/packages/NUnit3TestAdapter.3.7.0/tools/Mono.Cecil.Rocks.dll create mode 100644 csharp/packages/NUnit3TestAdapter.3.7.0/tools/Mono.Cecil.dll create mode 100644 csharp/packages/NUnit3TestAdapter.3.7.0/tools/NUnit3.TestAdapter.dll create mode 100644 csharp/packages/NUnit3TestAdapter.3.7.0/tools/nunit.engine.api.dll create mode 100644 csharp/packages/NUnit3TestAdapter.3.7.0/tools/nunit.engine.dll diff --git a/csharp/ApprovalTest.cs b/csharp-/ApprovalTest.cs similarity index 95% rename from csharp/ApprovalTest.cs rename to csharp-/ApprovalTest.cs index ad294419..b26651a1 100644 --- a/csharp/ApprovalTest.cs +++ b/csharp-/ApprovalTest.cs @@ -1,28 +1,28 @@ -using System; -using System.IO; -using System.Text; -using GildedRose; -using NUnit.Framework; -using ApprovalTests; -using ApprovalTests.Reporters; - -namespace GildedRoseTests -{ - [TestFixture] - [UseReporter(typeof(NUnitReporter))] - public class ApprovalTest - { - [Test] - public void ThirtyDays() - { - StringBuilder fakeoutput = new StringBuilder(); - Console.SetOut(new StringWriter(fakeoutput)); - Console.SetIn(new StringReader("a\n")); - - Program.Main(new string[] { }); - String output = fakeoutput.ToString(); - Approvals.Verify(output); - } - } - +using System; +using System.IO; +using System.Text; +using GildedRose; +using NUnit.Framework; +using ApprovalTests; +using ApprovalTests.Reporters; + +namespace GildedRoseTests +{ + [TestFixture] + [UseReporter(typeof(NUnitReporter))] + public class ApprovalTest + { + [Test] + public void ThirtyDays() + { + StringBuilder fakeoutput = new StringBuilder(); + Console.SetOut(new StringWriter(fakeoutput)); + Console.SetIn(new StringReader("a\n")); + + Program.Main(new string[] { }); + String output = fakeoutput.ToString(); + Approvals.Verify(output); + } + } + } \ No newline at end of file diff --git a/csharp/GildedRose.cs b/csharp-/GildedRose.cs similarity index 100% rename from csharp/GildedRose.cs rename to csharp-/GildedRose.cs diff --git a/csharp/GildedRoseTest.cs b/csharp-/GildedRoseTest.cs similarity index 100% rename from csharp/GildedRoseTest.cs rename to csharp-/GildedRoseTest.cs diff --git a/csharp/TextTestFixture.cs b/csharp-/TextTestFixture.cs similarity index 100% rename from csharp/TextTestFixture.cs rename to csharp-/TextTestFixture.cs diff --git a/csharp/.vs/csharp/v14/.suo b/csharp/.vs/csharp/v14/.suo new file mode 100644 index 0000000000000000000000000000000000000000..27bf56b139bc77bf989445a1cd75cff0e7d563e0 GIT binary patch literal 73216 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 literal 0 HcmV?d00001 diff --git a/csharp/GildedRose/App.config b/csharp/GildedRose/App.config new file mode 100644 index 00000000..88fa4027 --- /dev/null +++ b/csharp/GildedRose/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/csharp/GildedRose/GildedRose.cs b/csharp/GildedRose/GildedRose.cs new file mode 100644 index 00000000..79f79fee --- /dev/null +++ b/csharp/GildedRose/GildedRose.cs @@ -0,0 +1,89 @@ +using System.Collections.Generic; + +namespace GildedRose +{ + public class GildedRose + { + IList Items; + public GildedRose(IList Items) + { + this.Items = Items; + } + + public void UpdateQuality() + { + for (var i = 0; i < Items.Count; i++) + { + if (Items[i].Name != "Aged Brie" && Items[i].Name != "Backstage passes to a TAFKAL80ETC concert") + { + if (Items[i].Quality > 0) + { + if (Items[i].Name != "Sulfuras, Hand of Ragnaros") + { + Items[i].Quality = Items[i].Quality - 1; + } + } + } + else + { + if (Items[i].Quality < 50) + { + Items[i].Quality = Items[i].Quality + 1; + + if (Items[i].Name == "Backstage passes to a TAFKAL80ETC concert") + { + if (Items[i].SellIn < 11) + { + if (Items[i].Quality < 50) + { + Items[i].Quality = Items[i].Quality + 1; + } + } + + if (Items[i].SellIn < 6) + { + if (Items[i].Quality < 50) + { + Items[i].Quality = Items[i].Quality + 1; + } + } + } + } + } + + if (Items[i].Name != "Sulfuras, Hand of Ragnaros") + { + Items[i].SellIn = Items[i].SellIn - 1; + } + + if (Items[i].SellIn < 0) + { + if (Items[i].Name != "Aged Brie") + { + if (Items[i].Name != "Backstage passes to a TAFKAL80ETC concert") + { + if (Items[i].Quality > 0) + { + if (Items[i].Name != "Sulfuras, Hand of Ragnaros") + { + Items[i].Quality = Items[i].Quality - 1; + } + } + } + else + { + Items[i].Quality = Items[i].Quality - Items[i].Quality; + } + } + else + { + if (Items[i].Quality < 50) + { + Items[i].Quality = Items[i].Quality + 1; + } + } + } + } + } + } +} diff --git a/csharp/GildedRose/GildedRose.csproj b/csharp/GildedRose/GildedRose.csproj new file mode 100644 index 00000000..bc976417 --- /dev/null +++ b/csharp/GildedRose/GildedRose.csproj @@ -0,0 +1,62 @@ + + + + + Debug + AnyCPU + {4D4B37CD-3E06-4870-A020-C0CF4CABEBC8} + Exe + Properties + GildedRose + GildedRose + v4.5.2 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/csharp/GildedRose/Item.cs b/csharp/GildedRose/Item.cs new file mode 100644 index 00000000..b77be40d --- /dev/null +++ b/csharp/GildedRose/Item.cs @@ -0,0 +1,9 @@ +namespace GildedRose +{ + public class Item + { + public string Name { get; set; } + public int SellIn { get; set; } + public int Quality { get; set; } + } +} diff --git a/csharp/GildedRose/Program.cs b/csharp/GildedRose/Program.cs new file mode 100644 index 00000000..8e46e689 --- /dev/null +++ b/csharp/GildedRose/Program.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; + +namespace GildedRose +{ + public class Program + { + public static void Main(string[] args) + { + Console.WriteLine("OMGHAI!"); + + IList Items = new List{ + new Item {Name = "+5 Dexterity Vest", SellIn = 10, Quality = 20}, + new Item {Name = "Aged Brie", SellIn = 2, Quality = 0}, + new Item {Name = "Elixir of the Mongoose", SellIn = 5, Quality = 7}, + new Item {Name = "Sulfuras, Hand of Ragnaros", SellIn = 0, Quality = 80}, + new Item {Name = "Sulfuras, Hand of Ragnaros", SellIn = -1, Quality = 80}, + new Item + { + Name = "Backstage passes to a TAFKAL80ETC concert", + SellIn = 15, + Quality = 20 + }, + new Item + { + Name = "Backstage passes to a TAFKAL80ETC concert", + SellIn = 10, + Quality = 49 + }, + new Item + { + Name = "Backstage passes to a TAFKAL80ETC concert", + SellIn = 5, + Quality = 49 + }, + // this conjured item does not work properly yet + new Item {Name = "Conjured Mana Cake", SellIn = 3, Quality = 6} + }; + + var app = new GildedRose(Items); + + + for (var i = 0; i < 31; i++) + { + Console.WriteLine("-------- day " + i + " --------"); + Console.WriteLine("name, sellIn, quality"); + for (var j = 0; j < Items.Count; j++) + { + System.Console.WriteLine(Items[j].Name + ", " + Items[j].SellIn + ", " + Items[j].Quality); + } + Console.WriteLine(""); + app.UpdateQuality(); + } + } + } +} diff --git a/csharp/GildedRose/Properties/AssemblyInfo.cs b/csharp/GildedRose/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..93c96f2d --- /dev/null +++ b/csharp/GildedRose/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("GildedRose")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("GildedRose")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[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("4d4b37cd-3e06-4870-a020-c0cf4cabebc8")] + +// 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/csharp/GildedRose/bin/Debug/GildedRose.exe b/csharp/GildedRose/bin/Debug/GildedRose.exe new file mode 100644 index 0000000000000000000000000000000000000000..1be54d897db2650371b5dbf28982752de7b85b94 GIT binary patch literal 7680 zcmeHLTWlQF8UAN>y`$=ZpXixUr<7(!xi))$DA#)+><9PHS{&aF*JW_QQyNp@#8 zGqc8S+R6yE6)lx0l!`vkmK12IsNeyqP(aWYsV~r~;;lt0FMVmHQXX2=i%7r!%*s-E@ybIyN1|2gyj=XmO~4^e=Kf_Sc9CwdWYZbJgz7_5NY)baBsdZF&ETV9kV z-@0XPLARB>Wo9fjr=(QFFdZeSDOSNybVC`No>g*YT8lR}Ms|9tXU2&pr2uXD(dBc# zwRb5-^-_Xp12AD18}Gwg!83%1fr6Lp`i&li7;sy`13b3?UHl5sdhu6!dqbCn-svTp z=Kc`TD>WXn{B@D20plloh}z5XH|r}!*9B)7<6~tqaYtKnFz#;w08Px*^BW`46rzi9 z%eGP&3Ezg$;fc25DQiRUK5l7Q6O8ODUBtt>RyjOGGy-fzThDPtW8Y+|p>N-c_|$Xk zWQvr9RWN-FFe2}Y5=+W~FG*OQ-H>TX1nB{6GK{0t8X3^hC;2LqLuNC$O&~%R#`#?c zN2F_8HF2X)+#|Kt*LGzpT$P5FUxyV0TAaYN9p!U*ot|FkvHxI_hC46b*Ha zRnm%1)JAJ>Ivvl0HPp95dpH{YNbPmen+L0?eYO9UVQ+~iDaQLn|Du zkJj&xua5VsUDMJKZP@=tRVYjG=B?Gz7;WrYs5Ihjo|dL)Q`hlI(yDo^i>|xTJXUR> zJ^Lz@RZNUos}RM#x96jle0_BNO&us(lu+B*h-b#cmWv>g(P;F*%73n3-@RSFiWCvt z9m9tzIzV8$E<$vGKvi%NUdR2m-EX>vrXh#FC|TdZ9+6e zogEQ(eLFigxF3bNiP?Ql{`Ni2O&(+GT6}Mp__lg{+t%XaPu|nl>KmT93FF2aGV&+u z&t;v@x#nETIg7LIS<84Cr$3vHH5nzTXneD0yS-dtBxECkq59T_0mPihx(x#12R9?< zTBGRhLNDSjkadQ~Vy#*m_uNBUzlj1Vb+(4;N~!o-XPb3D*sgVM^3nW_3Vqi)H+!@# zK8-iCOWU=jXou?B&NkMC{C$Uv+5L$1K+$%siJgPbJ=}J-A>7e{orz3%VDvh6CXLJ< zACb6Ppm9B0?2jkneTlxF{fw!hEZ~#aqC38fT7~WP3ioFnOE)q$bG!+M9)$RgQ?qmy zI}sD49Y;@1jN!e2@sF7{k~Ndej0R7nGaIkffkgB#sgLU`TSw5uxdQ)@8GeYqD7)_v{YAPx5Tdg(!=UtmypATo8lt1pALS7JM!@F;JS;P&Ucj9K z-XrjRQUtR9AchYM%(CB;LfapR^}j(M0J8~JLiCi(R7p@DCGM{m{WkR3 z!)**e=ihpI3BTdu=tY@FGR^=@dsd8U@Ucqt`M}o!Pte1FX?hg!i-0o<>-y@Z_vObJ z?~dpZcqG$5cL-Yeak_?)w9_3u4ZS#Dc%wJuY1nG^M!!Yu0<_f|T@6fQ4R&~=uLUHG zy4(@$g|H?AV)PyQz5Fyr@&kfUgQdRHc&_J!&Ve9gtdNOj?nFZ>#0Y;{Q?dP zI3eKO0-h641>8uw=wA_VS-@`rhUf{vEp(sgH_!|6L3)OM8W;h50&oLe!K_}Q=O~FI z8uPc)aWX(n1snmdQXD((1;7@16>uxP1Gt0!1h|L(4%jE)X9OG-_`B%ez|RWI=LAeq zixj8JGze(ZacP*Y(qn-4)8o=b(N{glm=)2#&x4Hlf#|<3;JX5n#2OS>;k`lh6M7c# zZTWe??*^V1dxj}N(D^i3gFdg3Ottt)ILz159XM-dD7eDwQQls{AXtXDk8brx6QgD} ztEC*>G%ohg#H4OJ{5G7vUOG5srVCl^5asNYX=U{!%`V%HmW!8U?D$d5&@4Sg!|5~~ zJfY^aLzgdH7*SJ~kur|xS{B$@Et{P%s_}Oh)U56-R}n@{!#1-TWi;mkYb4w6oUwFA zo74@Bj_TR8mOg3P8jWemLMEeGBbIruttPYDtfM*_jheZQzyVooy z_%cV}`)SRxu`nempNI&}>zRV3^14-%$22=->G?{c8xJ9IQp>7KqGwkN&sbRXlv7O@ zHS^1so>^Fvl*_Bea!KZ7!Ep4P#x`Lmsq;FQsEca0P`-q5ZAtU@mM0na=8j!NZv7!R z#+P5QEhexHJqa;(x0u){UUy2>jiOF%-rM68PdTRLzVSCQ^+7{SMk^<%D`qXKhD_~pi7N_fR{8%6Ijb8YRW%AW$SRbf|ZQC88qN!r76$U%~4 z$#$~%O~5jbufUcnd}Pn5hH;#1f457TeD>B~48Pp`@(+LY>%X0&pdv}(fI?CYI?*T( zn;6JqJhh>=IV`Vkp^eSsQgZ`1S}2UnE;ls+bq**f3OChy^yY9FvO$7IU{qHEA|VPi zwYRsUFf?sz5C7~7=TC3$fA;}jN)9#2p>Q2saIHXP6Ii8fO@Up+PdLm)gxhvLxy;F} zXDl^;!ZgO0Qkuvma|@hdCGgc^%2;8EB4v4)Y6P}TqUK_%P=5K0qVy(u_7UAK(a!#K zf3k01D&5_uCGPC*AJ~`ZRujF6?o=W*-=9*GS~4|&gDDL3;9QCy(Ue5(@e|{7#Z=kl zWrjhVUGIqZ!qcV=MdFxl=dzJv2nr#g`|q zbp`s-JB<_O1;BA+>{;ZsY1}z3;C%v>K>W9sUJbtYp?iXKb@`{s!=4^KN%|BIg{;oF z)5wh$^ytWtn#h^+$k5z&5=+g2%2mS#T}58kMgA5H^nCC^e1H;saztg|Okb^OLGUC{ ztK45d&iP0ZxHobc=hY!7Ng#EWfc~&YI!)H&+0gR z;+7Cs^ZD3bSA$~}Y-hrlH$SF7y)hvN+qRY};10Izje)UnAcdb=ddAWhac9YB_Q%xP z=WA8aN_tQrQU&&SQd`urN|xbZOtmMBMf0*|#gu|RoWhYDVVqa9w&qPrDA~J)H@@q8 oD||n=w-^L49Ng=#&>`MwpHM?$;{UNF%4+2&r1}49J_Ql@FaO}bfB*mh literal 0 HcmV?d00001 diff --git a/csharp/GildedRose/bin/Debug/GildedRose.exe.config b/csharp/GildedRose/bin/Debug/GildedRose.exe.config new file mode 100644 index 00000000..88fa4027 --- /dev/null +++ b/csharp/GildedRose/bin/Debug/GildedRose.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/csharp/GildedRose/bin/Debug/GildedRose.pdb b/csharp/GildedRose/bin/Debug/GildedRose.pdb new file mode 100644 index 0000000000000000000000000000000000000000..f4fe734e309af1562f6d13167a971be139f2dae1 GIT binary patch literal 17920 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 literal 0 HcmV?d00001 diff --git a/csharp/GildedRose/bin/Debug/GildedRose.vshost.exe b/csharp/GildedRose/bin/Debug/GildedRose.vshost.exe new file mode 100644 index 0000000000000000000000000000000000000000..681ab771eb267aad9397bb2eaf7889c5ac0e15e6 GIT binary patch literal 22696 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 wj{B?PH3nCjG}491+ySfEVd + + + + + \ No newline at end of file diff --git a/csharp/GildedRose/bin/Debug/GildedRose.vshost.exe.manifest b/csharp/GildedRose/bin/Debug/GildedRose.vshost.exe.manifest new file mode 100644 index 00000000..061c9ca9 --- /dev/null +++ b/csharp/GildedRose/bin/Debug/GildedRose.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/csharp/GildedRose/bin/Debug/nunit_random_seed.tmp b/csharp/GildedRose/bin/Debug/nunit_random_seed.tmp new file mode 100644 index 00000000..9c0a1d7d --- /dev/null +++ b/csharp/GildedRose/bin/Debug/nunit_random_seed.tmp @@ -0,0 +1 @@ +1540031247 \ No newline at end of file diff --git a/csharp/GildedRose/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/csharp/GildedRose/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..402634bafd031dd197395cc11fb1e547ec71df4a GIT binary patch literal 6806 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 literal 0 HcmV?d00001 diff --git a/csharp/GildedRose/obj/Debug/GildedRose.pdb b/csharp/GildedRose/obj/Debug/GildedRose.pdb new file mode 100644 index 0000000000000000000000000000000000000000..f4fe734e309af1562f6d13167a971be139f2dae1 GIT binary patch literal 17920 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 literal 0 HcmV?d00001 diff --git a/csharp/GildedRose/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/csharp/GildedRose/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 00000000..e69de29b diff --git a/csharp/GildedRose/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/csharp/GildedRose/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 00000000..e69de29b diff --git a/csharp/GildedRose/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/csharp/GildedRose/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 00000000..e69de29b diff --git a/csharp/GildedRoseTest/ApprovalTest.ThirtyDays.received.txt b/csharp/GildedRoseTest/ApprovalTest.ThirtyDays.received.txt new file mode 100644 index 00000000..cd66984f --- /dev/null +++ b/csharp/GildedRoseTest/ApprovalTest.ThirtyDays.received.txt @@ -0,0 +1,373 @@ +OMGHAI! +-------- day 0 -------- +name, sellIn, quality ++5 Dexterity Vest, 10, 20 +Aged Brie, 2, 0 +Elixir of the Mongoose, 5, 7 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 15, 20 +Backstage passes to a TAFKAL80ETC concert, 10, 49 +Backstage passes to a TAFKAL80ETC concert, 5, 49 +Conjured Mana Cake, 3, 6 + +-------- day 1 -------- +name, sellIn, quality ++5 Dexterity Vest, 9, 19 +Aged Brie, 1, 1 +Elixir of the Mongoose, 4, 6 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 14, 21 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, 2, 5 + +-------- day 2 -------- +name, sellIn, quality ++5 Dexterity Vest, 8, 18 +Aged Brie, 0, 2 +Elixir of the Mongoose, 3, 5 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 13, 22 +Backstage passes to a TAFKAL80ETC concert, 8, 50 +Backstage passes to a TAFKAL80ETC concert, 3, 50 +Conjured Mana Cake, 1, 4 + +-------- day 3 -------- +name, sellIn, quality ++5 Dexterity Vest, 7, 17 +Aged Brie, -1, 4 +Elixir of the Mongoose, 2, 4 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 12, 23 +Backstage passes to a TAFKAL80ETC concert, 7, 50 +Backstage passes to a TAFKAL80ETC concert, 2, 50 +Conjured Mana Cake, 0, 3 + +-------- day 4 -------- +name, sellIn, quality ++5 Dexterity Vest, 6, 16 +Aged Brie, -2, 6 +Elixir of the Mongoose, 1, 3 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 11, 24 +Backstage passes to a TAFKAL80ETC concert, 6, 50 +Backstage passes to a TAFKAL80ETC concert, 1, 50 +Conjured Mana Cake, -1, 1 + +-------- day 5 -------- +name, sellIn, quality ++5 Dexterity Vest, 5, 15 +Aged Brie, -3, 8 +Elixir of the Mongoose, 0, 2 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 10, 25 +Backstage passes to a TAFKAL80ETC concert, 5, 50 +Backstage passes to a TAFKAL80ETC concert, 0, 50 +Conjured Mana Cake, -2, 0 + +-------- day 6 -------- +name, sellIn, quality ++5 Dexterity Vest, 4, 14 +Aged Brie, -4, 10 +Elixir of the Mongoose, -1, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 9, 27 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Backstage passes to a TAFKAL80ETC concert, -1, 0 +Conjured Mana Cake, -3, 0 + +-------- day 7 -------- +name, sellIn, quality ++5 Dexterity Vest, 3, 13 +Aged Brie, -5, 12 +Elixir of the Mongoose, -2, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 8, 29 +Backstage passes to a TAFKAL80ETC concert, 3, 50 +Backstage passes to a TAFKAL80ETC concert, -2, 0 +Conjured Mana Cake, -4, 0 + +-------- day 8 -------- +name, sellIn, quality ++5 Dexterity Vest, 2, 12 +Aged Brie, -6, 14 +Elixir of the Mongoose, -3, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 7, 31 +Backstage passes to a TAFKAL80ETC concert, 2, 50 +Backstage passes to a TAFKAL80ETC concert, -3, 0 +Conjured Mana Cake, -5, 0 + +-------- day 9 -------- +name, sellIn, quality ++5 Dexterity Vest, 1, 11 +Aged Brie, -7, 16 +Elixir of the Mongoose, -4, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 6, 33 +Backstage passes to a TAFKAL80ETC concert, 1, 50 +Backstage passes to a TAFKAL80ETC concert, -4, 0 +Conjured Mana Cake, -6, 0 + +-------- day 10 -------- +name, sellIn, quality ++5 Dexterity Vest, 0, 10 +Aged Brie, -8, 18 +Elixir of the Mongoose, -5, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 5, 35 +Backstage passes to a TAFKAL80ETC concert, 0, 50 +Backstage passes to a TAFKAL80ETC concert, -5, 0 +Conjured Mana Cake, -7, 0 + +-------- day 11 -------- +name, sellIn, quality ++5 Dexterity Vest, -1, 8 +Aged Brie, -9, 20 +Elixir of the Mongoose, -6, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 4, 38 +Backstage passes to a TAFKAL80ETC concert, -1, 0 +Backstage passes to a TAFKAL80ETC concert, -6, 0 +Conjured Mana Cake, -8, 0 + +-------- day 12 -------- +name, sellIn, quality ++5 Dexterity Vest, -2, 6 +Aged Brie, -10, 22 +Elixir of the Mongoose, -7, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 3, 41 +Backstage passes to a TAFKAL80ETC concert, -2, 0 +Backstage passes to a TAFKAL80ETC concert, -7, 0 +Conjured Mana Cake, -9, 0 + +-------- day 13 -------- +name, sellIn, quality ++5 Dexterity Vest, -3, 4 +Aged Brie, -11, 24 +Elixir of the Mongoose, -8, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 2, 44 +Backstage passes to a TAFKAL80ETC concert, -3, 0 +Backstage passes to a TAFKAL80ETC concert, -8, 0 +Conjured Mana Cake, -10, 0 + +-------- day 14 -------- +name, sellIn, quality ++5 Dexterity Vest, -4, 2 +Aged Brie, -12, 26 +Elixir of the Mongoose, -9, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 1, 47 +Backstage passes to a TAFKAL80ETC concert, -4, 0 +Backstage passes to a TAFKAL80ETC concert, -9, 0 +Conjured Mana Cake, -11, 0 + +-------- day 15 -------- +name, sellIn, quality ++5 Dexterity Vest, -5, 0 +Aged Brie, -13, 28 +Elixir of the Mongoose, -10, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, 0, 50 +Backstage passes to a TAFKAL80ETC concert, -5, 0 +Backstage passes to a TAFKAL80ETC concert, -10, 0 +Conjured Mana Cake, -12, 0 + +-------- day 16 -------- +name, sellIn, quality ++5 Dexterity Vest, -6, 0 +Aged Brie, -14, 30 +Elixir of the Mongoose, -11, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -1, 0 +Backstage passes to a TAFKAL80ETC concert, -6, 0 +Backstage passes to a TAFKAL80ETC concert, -11, 0 +Conjured Mana Cake, -13, 0 + +-------- day 17 -------- +name, sellIn, quality ++5 Dexterity Vest, -7, 0 +Aged Brie, -15, 32 +Elixir of the Mongoose, -12, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -2, 0 +Backstage passes to a TAFKAL80ETC concert, -7, 0 +Backstage passes to a TAFKAL80ETC concert, -12, 0 +Conjured Mana Cake, -14, 0 + +-------- day 18 -------- +name, sellIn, quality ++5 Dexterity Vest, -8, 0 +Aged Brie, -16, 34 +Elixir of the Mongoose, -13, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -3, 0 +Backstage passes to a TAFKAL80ETC concert, -8, 0 +Backstage passes to a TAFKAL80ETC concert, -13, 0 +Conjured Mana Cake, -15, 0 + +-------- day 19 -------- +name, sellIn, quality ++5 Dexterity Vest, -9, 0 +Aged Brie, -17, 36 +Elixir of the Mongoose, -14, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -4, 0 +Backstage passes to a TAFKAL80ETC concert, -9, 0 +Backstage passes to a TAFKAL80ETC concert, -14, 0 +Conjured Mana Cake, -16, 0 + +-------- day 20 -------- +name, sellIn, quality ++5 Dexterity Vest, -10, 0 +Aged Brie, -18, 38 +Elixir of the Mongoose, -15, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -5, 0 +Backstage passes to a TAFKAL80ETC concert, -10, 0 +Backstage passes to a TAFKAL80ETC concert, -15, 0 +Conjured Mana Cake, -17, 0 + +-------- day 21 -------- +name, sellIn, quality ++5 Dexterity Vest, -11, 0 +Aged Brie, -19, 40 +Elixir of the Mongoose, -16, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -6, 0 +Backstage passes to a TAFKAL80ETC concert, -11, 0 +Backstage passes to a TAFKAL80ETC concert, -16, 0 +Conjured Mana Cake, -18, 0 + +-------- day 22 -------- +name, sellIn, quality ++5 Dexterity Vest, -12, 0 +Aged Brie, -20, 42 +Elixir of the Mongoose, -17, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -7, 0 +Backstage passes to a TAFKAL80ETC concert, -12, 0 +Backstage passes to a TAFKAL80ETC concert, -17, 0 +Conjured Mana Cake, -19, 0 + +-------- day 23 -------- +name, sellIn, quality ++5 Dexterity Vest, -13, 0 +Aged Brie, -21, 44 +Elixir of the Mongoose, -18, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -8, 0 +Backstage passes to a TAFKAL80ETC concert, -13, 0 +Backstage passes to a TAFKAL80ETC concert, -18, 0 +Conjured Mana Cake, -20, 0 + +-------- day 24 -------- +name, sellIn, quality ++5 Dexterity Vest, -14, 0 +Aged Brie, -22, 46 +Elixir of the Mongoose, -19, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -9, 0 +Backstage passes to a TAFKAL80ETC concert, -14, 0 +Backstage passes to a TAFKAL80ETC concert, -19, 0 +Conjured Mana Cake, -21, 0 + +-------- day 25 -------- +name, sellIn, quality ++5 Dexterity Vest, -15, 0 +Aged Brie, -23, 48 +Elixir of the Mongoose, -20, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -10, 0 +Backstage passes to a TAFKAL80ETC concert, -15, 0 +Backstage passes to a TAFKAL80ETC concert, -20, 0 +Conjured Mana Cake, -22, 0 + +-------- day 26 -------- +name, sellIn, quality ++5 Dexterity Vest, -16, 0 +Aged Brie, -24, 50 +Elixir of the Mongoose, -21, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -11, 0 +Backstage passes to a TAFKAL80ETC concert, -16, 0 +Backstage passes to a TAFKAL80ETC concert, -21, 0 +Conjured Mana Cake, -23, 0 + +-------- day 27 -------- +name, sellIn, quality ++5 Dexterity Vest, -17, 0 +Aged Brie, -25, 50 +Elixir of the Mongoose, -22, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -12, 0 +Backstage passes to a TAFKAL80ETC concert, -17, 0 +Backstage passes to a TAFKAL80ETC concert, -22, 0 +Conjured Mana Cake, -24, 0 + +-------- day 28 -------- +name, sellIn, quality ++5 Dexterity Vest, -18, 0 +Aged Brie, -26, 50 +Elixir of the Mongoose, -23, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -13, 0 +Backstage passes to a TAFKAL80ETC concert, -18, 0 +Backstage passes to a TAFKAL80ETC concert, -23, 0 +Conjured Mana Cake, -25, 0 + +-------- day 29 -------- +name, sellIn, quality ++5 Dexterity Vest, -19, 0 +Aged Brie, -27, 50 +Elixir of the Mongoose, -24, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -14, 0 +Backstage passes to a TAFKAL80ETC concert, -19, 0 +Backstage passes to a TAFKAL80ETC concert, -24, 0 +Conjured Mana Cake, -26, 0 + +-------- day 30 -------- +name, sellIn, quality ++5 Dexterity Vest, -20, 0 +Aged Brie, -28, 50 +Elixir of the Mongoose, -25, 0 +Sulfuras, Hand of Ragnaros, 0, 80 +Sulfuras, Hand of Ragnaros, -1, 80 +Backstage passes to a TAFKAL80ETC concert, -15, 0 +Backstage passes to a TAFKAL80ETC concert, -20, 0 +Backstage passes to a TAFKAL80ETC concert, -25, 0 +Conjured Mana Cake, -27, 0 + diff --git a/csharp/GildedRoseTest/ApprovalTest.cs b/csharp/GildedRoseTest/ApprovalTest.cs new file mode 100644 index 00000000..48191c08 --- /dev/null +++ b/csharp/GildedRoseTest/ApprovalTest.cs @@ -0,0 +1,27 @@ +using System; +using System.IO; +using System.Text; +using GildedRose; +using NUnit.Framework; +using ApprovalTests; +using ApprovalTests.Reporters; + +namespace GildedRoseTest +{ + [TestFixture] + [UseReporter(typeof(NUnitReporter))] + public class ApprovalTest + { + [Test] + public void ThirtyDays() + { + StringBuilder fakeoutput = new StringBuilder(); + Console.SetOut(new StringWriter(fakeoutput)); + Console.SetIn(new StringReader("a\n")); + + Program.Main(new string[] { }); + String output = fakeoutput.ToString(); + Approvals.Verify(output); + } + } +} diff --git a/csharp/GildedRoseTest/GildedRoseTest.cs b/csharp/GildedRoseTest/GildedRoseTest.cs new file mode 100644 index 00000000..1da612bf --- /dev/null +++ b/csharp/GildedRoseTest/GildedRoseTest.cs @@ -0,0 +1,19 @@ +using GildedRose; +using NUnit.Framework; +using System.Collections.Generic; + +namespace GildedRoseTest +{ + [TestFixture] + public class GildedRoseTest + { + [Test] + public void foo() + { + IList Items = new List { new Item { Name = "foo", SellIn = 0, Quality = 0 } }; + GildedRose.GildedRose app = new GildedRose.GildedRose(Items); + app.UpdateQuality(); + Assert.AreEqual("fixme", Items[0].Name); + } + } +} diff --git a/csharp/GildedRoseTest/GildedRoseTest.csproj b/csharp/GildedRoseTest/GildedRoseTest.csproj new file mode 100644 index 00000000..4d2989f4 --- /dev/null +++ b/csharp/GildedRoseTest/GildedRoseTest.csproj @@ -0,0 +1,83 @@ + + + + + Debug + AnyCPU + {CC49D432-ED2F-4DD7-9707-B379F138BBE3} + Library + Properties + GildedRoseTest + GildedRoseTest + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\ApprovalTests.3.0.13\lib\net40\ApprovalTests.dll + True + + + ..\packages\ApprovalUtilities.3.0.13\lib\net45\ApprovalUtilities.dll + True + + + ..\packages\ApprovalUtilities.3.0.13\lib\net45\ApprovalUtilities.Net45.dll + True + + + ..\packages\NUnit.3.7.1\lib\net45\nunit.framework.dll + True + + + + + + + + + + + + + + + + + + + + + {4d4b37cd-3e06-4870-a020-c0cf4cabebc8} + GildedRose + + + + + + + + \ No newline at end of file diff --git a/csharp/GildedRoseTest/Properties/AssemblyInfo.cs b/csharp/GildedRoseTest/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..1ce279d8 --- /dev/null +++ b/csharp/GildedRoseTest/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("GildedRoseTest")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("GildedRoseTest")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[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("cc49d432-ed2f-4dd7-9707-b379f138bbe3")] + +// 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/csharp/GildedRoseTest/bin/Debug/ApprovalTests.dll b/csharp/GildedRoseTest/bin/Debug/ApprovalTests.dll new file mode 100644 index 0000000000000000000000000000000000000000..16d1157c375f538ce73f8b7ea9657b5258e95965 GIT binary patch literal 141312 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%0ACzs3I>e3R2BjaAtCStD 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 + + + ApprovalTests + + + + + These classes have all been moved to a seperate Nuget Package. + Simply add ApprovalTests.Asp + + + + + Throws exception if Html is incorrectly formatted + + + + + ** Warning : use at your own risk ** + Deletes any files that may have been abandoned. + + List of deleted files + + + + Throws exception if Xml is incorrectly formatted + + + + diff --git a/csharp/GildedRoseTest/bin/Debug/ApprovalUtilities.Net45.dll b/csharp/GildedRoseTest/bin/Debug/ApprovalUtilities.Net45.dll new file mode 100644 index 0000000000000000000000000000000000000000..f7d912283f96f44a14ffc68baff6f9dfa26521f9 GIT binary patch literal 5632 zcmeHLT}&L;6+SbwEDN^z4KXGz83JvofhlB{B(#|Fv*6MgjM+6#C^F3MUSRBDXFD@s zQ;XJB6jzb_kVbB*yd_E>qE@Y3$yKaIQ7cu=Q(d*HQspgv@Jg&DyLF$%>qN0KeGL3J%Xq^V7kuy?>>N6|)-Y~xvgt%ihU>Xm za5A=G5L_s^9`s=wM)Za&YzKzyj+XGSuZQrIwPB*sGBzMNuV@^bN)^=IMzmT*q)6%g z!>HPcs#U|8wp9xPX`{wojZjVYS??kC>guSvRgXTZZ8flQXCpJ8L=kVb*9352+O@BX zDvy-=I|xnSPbJX2#ClRMvRHGPdDtO9br(gCU`|Em0wslw*HTmzE^PchD~}o$_5P zzv8jQLS<0C_ERZZ0?lP?KXz&|iM{~-Bdof8)OIp#jE40orw^*JDt-?>R^s$3F-EI02@_F0s34dFvZ%=XL^4XHsNrPIo<)F}Nz;vI?G^nJCF{(?bKI;)t_ z{!rqVCEk>HTbYNvQF#gYPhuQW9tC!5^J+Dn!wC|lC+H3&e2`=qSbvNcuHMJLMUqk|uR0rB20~exTG*qsEpRX3)U#I+%;Wucv-h;uYxLpi{sP z)hU|MVM3RiH`TXbos-;crA2*3=7n|dR4}K}t5V07?_#d&CCm3w*Y_m%GQCP4!S6pp zu2qXEl@x0uG#;lQj(W*GheDl^Z@+@Lc%5&+rikT|fc8`sej|7hs)+s611so|q}zbi z)Ca7?S{X+qPD(rpY@%l+no?p(d;zG?cO)K`x#^H}hs;Wc%+QbMnD#7n$XL6fJxj09 zkXE1s?62V6;k*n|TsuQaXy2maz;|(^w5acsLHnp#F{qKg0DOeL1Z<~qU>8jT;}XA4 z^PtBhK27IAr)UfKZF&xv#m;+O`uUy2-(&AIE4L*5BweMS(;uh>HSMGc*gj7`rR(%3 zid^Dzy}a=$$~(T;ZqrXBS#I?K-IDt*8rD5RKbAJpu#biP{;)p~_O+) zs_W#Pb#F%#xPZw>0Y9Z1rhUq{Y|FQVXG{w}(NBX@PHx>6LzJd9FYCCrm7%mF=Oia{ zR%HFOGb(t}+&z5E2-mYbU*xlb#+MQ+5$ag|y31sz+r%DAM+tgoz? z8C&dFVDOyfS$D}sJWs4;?9H_0mz$?NiD(U4L4fm$C_ym$WG}Q>5kFc;(KU z^ylrDpMGhj8qDX^<#d)lW^G>!{P zUmQ1Cg%0kiczC){g}mbc(Y~TkM}NG(KmJrg^kkR&GChfbM54#+eNyxcEce9|PYm<{ z;c`-;7GrumU3$s8!#?VaxNDz6bc&MznMd7r$$` zbj_xcsodocy&E6TCvW`nXMb%K@BN!29sAls78`k?xT>`9e0g4$B)d-01)P)%@+J5* z3!{+Ba3~K<`xm}timj#_lwRa^^{gwk#WBZC+V+%b<%6FSA>_Hl2HRhR557`<-u^E# zz_)QCd`exqd%5yN;BUA+a<=1d$7hBC@{FF_g30X>5ZDJA%6(~@m$OU* z*T56L6z*q!gK~(?#<)&oT)}-`AS)dA7* + + + ApprovalUtilities.Net45 + + + + diff --git a/csharp/GildedRoseTest/bin/Debug/ApprovalUtilities.dll b/csharp/GildedRoseTest/bin/Debug/ApprovalUtilities.dll new file mode 100644 index 0000000000000000000000000000000000000000..152ae3c8efc41419c11f0fbd30f914f2ab3c363f GIT binary patch literal 65536 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 + + + ApprovalUtilities + + + + + A better string formatter for enumerables. + + + + diff --git a/csharp/GildedRoseTest/bin/Debug/GildedRose.exe b/csharp/GildedRoseTest/bin/Debug/GildedRose.exe new file mode 100644 index 0000000000000000000000000000000000000000..1be54d897db2650371b5dbf28982752de7b85b94 GIT binary patch literal 7680 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 literal 0 HcmV?d00001 diff --git a/csharp/GildedRoseTest/bin/Debug/GildedRose.pdb b/csharp/GildedRoseTest/bin/Debug/GildedRose.pdb new file mode 100644 index 0000000000000000000000000000000000000000..f4fe734e309af1562f6d13167a971be139f2dae1 GIT binary patch literal 17920 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 literal 0 HcmV?d00001 diff --git a/csharp/GildedRoseTest/bin/Debug/GildedRoseTest.dll b/csharp/GildedRoseTest/bin/Debug/GildedRoseTest.dll new file mode 100644 index 0000000000000000000000000000000000000000..40771d07eb1b8850d9a44e741bef17ecf0d30935 GIT binary patch literal 5632 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 B-e3R# literal 0 HcmV?d00001 diff --git a/csharp/GildedRoseTest/bin/Debug/nunit.framework.dll b/csharp/GildedRoseTest/bin/Debug/nunit.framework.dll new file mode 100644 index 0000000000000000000000000000000000000000..2451b3ffa3e6d80d9aa2208df4991486396ee2eb GIT binary patch literal 333312 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

qI5ja6-+oZslY1ter>f zr$)_RT(R?;>T~@(mOqp1WjKye_%P1RKvg+Bn9K~6u2O_}-2D_Z?-1W6W%0usN!uOj z-3h0zi@W}2>TW@8EyED@hJ_{!Kl&8T3h_U!0Q1F)ai5F>?zI^5#Uvgyz~=ziIpQ~%bb7`npUUeY0$kHiX;QFM5UR?U>vNI3t-I&#_rEdf3ueX)eBFf&G;(8N< z=n^%+pE4y{?M3H7nBzZ$4zgXct*kg^3x>4*aFwwlmz?pDHQId(Kef~NBq*zW(01Mv`jx5C|l;I|F07m zl$6Svmf;YaZ4aVc|TFh-fNI@$E}a15`XQHUJx**Dr&k$HC1d2RLM0=7}W zsu-LdTd$Ij<7n+qZPd%OMmLshM>$F^jg7L;6Bu9g!i?wr_;|C~x{nT1WUb~|wQTi7 zh?K5+n1bZ3mCS3XNyc3p^ECqwEH2r4c-&In;MXst`bHnnAQprlh7?njy3OcM1d69C zTP4J9EeHmlXo;5zuYa`>|I!jMyg~6$rOYjOHL12nb~coZ!mEiaolC}L53Lu@Lz;5! zx`kyuuo`w#dJw71l9htSC^skv(OtNsukjO%sNAAaO0Zbo8?(-1xZ1hScr*oF*)eBJ z-O83Zo76IO^}-I;!(ZXcdu>F`M{gkp2Rr7=nGZ7K0IRnm^Fv+WJdHXtsoI7uvctT? zZ}v>)DP43%au3M}^Zj3-Tix5yirxwhKl&=5_`qbAJ1|+Tk;WL}xPr~kAHazBuNzu+ zXj;qr-du0No^DTeD2=eed0@P1>`*?KLhQ_DnD1BN1^e2Kq}$6gIHQ3bOBxYp^hMH4 z->>=gCUwxJdh-{idqFitCB?Aq=6`bl_*nul2Y?3?fH~+(OVpQkjmzXBm?&*jx9C&1 z5YNsQA!8QvmVmB{u~^?+bJ!PDd^WkIeQppW-*V8>=Q5QYnzGzc?#?%|j3SqYe6-l? zQ0mDRO|e)`aG*E$ESF!cAx0?2uZbtE8P1k{-F);sb5?cleDpVc^ZDp)WTvuHK6)o@ zF<@HSdjHYUPezqTLw$lFTHjFW^vfWwCA-YZSLvc4Dr)`Ee(f=Z6T zVG2d*M;DVU_gZ>_(6eF6>U|mf>W^JNGm;R!fVGn$qfQh=ZzmR(W&P+KaxlwZ!gubx z6Dm-=R21Ql_9m;sJ#)Rn+wp!m;Bm*>;Ij4&e(GGuDPA!5l%9=QAM*9fh=lsdjxZSh zTddpKYY!-VU43CS%Q@!LXnRTElvaCg-Z+7Sh1@*tu$FYNq}@T0Gf}P=1v>C91iR!%o4pi zBfJ7YF+1sR8vfC$nHdlQlFQ68L4Y(#VPa4A*U%7vCuTsi=XyA;))n|o|( z^`DF1&gwr{@Jaa=StoAAtVwWFUsZD zb{Ei~@9b);6%VF&AU7{A;MLf!!rT+nbVs@hal+k2UbBns6ca^zau=nmkTBtdnC+$R zj`CnvM`@8rpV^(_wQ;A4%}{q{ZJ48|;@BNPI=VW#+86%-bnWe3Kw0S(VkA=N&UfXz zxCFm^1y>fa!OMP)lCy0~W0$;;BDIZ-`y_j1)tCC-z7+1gDt}|37*sOB)!cR%aORtN zF<@$15T%Zx0Bq#29l54V1S}#8yq93fV>NIi#lWkXYi^=JRP%*3ALCouxl8sFkAuM( zOQs^fo(@$z?lMg8^>SrO>cQ z`&i1p*9)BUPW6iQDr7g(C78h^STNwPS0zlun+Ox03VI^mM40eYz!UK%!i1*^nus?M zCcKYq0&gNrcsFbUZz4>1*KY!EB20LUvy=Fn2ov6iHi0)0COo!hlju!^ffq#EsX6!S8fe@5>u8I<+Q7& z9Xz!VEn#`7QJf1in&p@Nf_yRDsMwbMKyKF|?!j4bPAz;36Z%1QdSPNO*ee{c_s0em_Gw3h9U z2t%h>=1^bWihQzxVUFzrry-NkYZYqICV_NDXW6?7CpBto9-F@RYL5MG@tNSVUoiW% z4dU-na7zR&q-3i=IBu?K4QG2iA;x%zLCy%5%s(EO`F*(`Bqx?fxDHj z{;-jOM?$a}81S_$$%^k1Vm7S!KACgt?1j|dx1muVVhLT$2BTQ_LciGRMqLj*_@#u@ z-;X;y1W{vnsN{{j=ooH8mV3hgA)vwD_r+e4=e?9?$zRqBO5xZ&-)k81%=>ME$3tNMqYqJ{PD9@Ol&f#{dT2u2eHBU&eHfh9d$2pxOeWrZ zWxSq79Iw|a%uDXR2C_wMf6ezOrDT61EhgLrGALlJwp30Ba@45YfK&@Xbf$si2BeA& zqB9I6Hz1WYDy;^R8<2`Gh|V&Q+<;UfLG(rg$!&6a&A#8E?YJjIF3vNU6{jUG%G2W@2V{QXg_eBkS0^v z&P9#Z5wpEKmFMYj@IHW@4#Za+pPe9Hirdf}Z`O`Z-oix{chn#AE_G6dCN2_?w#nmi?jA<`V@DIzD22Vuf^v@%KjBjzhadH z@)tnES^SCl8wkKR{lllJFENy zlYUk+rS?<}`>AHZA`e8xGOrGAivd>$qPfeaX!bgqt2d*)#rovUgdd+s7#ePj=s^GUt z6_^9S(+R*FjXGPSI=jse&*fX`4Rm~~8nzpDL8!ZL)R2R@2h5Zw$*(wScJ<>&BSdg0 zc8$6iQ=8^)8`wpI_`t~GX1q)JvVrWXkFy9XvZJ|bdpcD6jE-_|E{|Bt>$04gCCW^<;Q5)>~V!Qp-;_ zx&2(={mu8h`&FJuS}0H3xVO8EGuOuGjLddt{jRnq z9+#ru;B~RCM)+J@iXsV~h{`PTR6XG6GMo|8sN&E%!T{yN&%k;U{Bp%no;LjE#1kjD&k~O2sZt$R$!RdtRGP4n5t?T9ex_W7B!d zNCb`?7$L`V|9<)9Z1g;NSoU#v%Y`@5fV-!4O>QUNt=9>9%0rhzZ8M%SK;8vxgNZ+2ic z!44YW)rRek#CT)Z$ci)9RRfo$o*_kdTC+GTTWWY8A;fP7nkm zuo5zr)phjDhSZ8@!Awp;()2+yCJ^^-YmG$Wj#X==pa9zSA@f?3F zz9%sCEnPOwhHr;vciV;#!oIA&&rx>-r?qhjICK@pfX?oJ<6XNizuKp~?}&v(8zXBW5DWBl>1`=B?x zfFP~SXd>Q^RoC?o5RE4Qm0?@WE5kZ2{v+^BujbvFXsS0WbhIT)MSiAx$z7$Z`1OlJ z480z@wTDwFyi>GPQykKc-X%<4yc^>LfU`|*r%^Qg>v;^Pmy@MVsLFylY{ZUn{(|a5^ zh`b-62{Vu5NF1OokXgbjL9|u|=GRC{LTXFts+U+cF*7ixe&3N<&??KTnDZ^^3Ri5{GR$VmH6TM&D(%vYj zUC5Pc`h9>#6&~00seb+Qu))4?t%v2+XDZE=!NegrZ&Lu<=Y;t>4hMV_3&DHcpZ=d z?oFsCi;nu~etaJy9{2mKEc=pk=wm_>q zHv%E7bN8E}%ecxrEuDc=8Ma|N7ngxQqVfr%+sSh^=#lP?1Kgp~V6?_|sHu2GcLHe7 z%~-M^s7tF30hJ07RnV-JY8mrX0%R>$PSd^E+_J0tbA2~0evNU$oKF*vJarK#{pbIMZx^I0HJg~0e6Y9RE6+yX5 zM#Xa+5;a1Y5L`%41DMTO>tH1!DpXuC`h>`u%_}+ z?$9)7Qo;}^$Cz9BwGXD4Ewry@#;;#IU%mwo&#kEL7gyRCe`W04#)$^UH3i&|OpoF6v@iu(rFs ztKFRmR;PBgH|aXSQ^yf0?@8SjsoQU(Ag*dbxup!n$nGn+in1nBs4!IJ3fZuoR%H`< zq(ztZomxL{N59*ke&<$hC_<_3c}Ot49(-Dc_QGzHthtLZ`$K};y{ey0@w`Vh7S&D{ zZ#v7%*yT7Dxw;>-6b%ddur5wxp{hEXE__fOVaLCwhvLLin^ru{N1sm=YnFrBxS>Hc5hMBC!@=*O)DI<&RpsuB%DMXYp^lazz-J=5muo zK+-`bnD_J1#W2URDr@Uj-kIModv#^6T#$_}BA~y!-8z0(dpBzY-LL5`=DLcNsa?g! z6_aYFtH9xH(K>rqq0!NEt|&VghjgjXdRk_}jX`vqUdu-IEZS6erwe4)IwbVDf=w;= zvG3em&dqXmk*=$go#FN%0Jn|rqwEZ)x?L|@Jr+FE;$3ft3%`MNPzT@+2adTyWT6UX zrkzm1IjdkN_nM>i&T&)v-BKNL7xAd+a$4+@>Vx z0_N@bR2B+}vjCiO1o|$;8;B-AD{Aly2hNQ9p!p&V0BBzwsj* z$Gb;1R&yHfYY#udvsaw`yB3YcU9P+Z+5kC5@wIVaSMEL0-)Ic$x{@IviM04Eu^Lt`yH#I*xT(yh_9@m9Ud$%(bTIF53CLUjrstp8@K*7i1`R7b!B zqef|4Oly)EsRd{YpKdXG3a%x}QbW4*&gSy#(i;9ecFFB*ZjLu+$fc{b7+X2-*KxWx z(ASmjW;9RIe4Ye8Z1E)({9Tr}wCi_KMWcUC>%t$AJBYpp*vXU8Xz*B5a2~6W=<5Wq zPC{e)Zd^fBrSeTSI~&kFfU3W7O4LXX;vI<-{yJVeym=M3wm)X>#`>XDVZT2*KyCF0 zqZK{_Te24CsHSXZ9dFY$(yZ!td*2H)q*8u z*1kQ@O(bZb)m`p)v33a0VRYK&U93jinR z;e_xD#E>vIIs_7ZOV}ltW02|5Iio`fAdZd#Yv}Nw6YZpS+>?tQCTfY8->1-22<1)( z1M~wxasRxeMFdn@G(C=(ub-$<>4#vd!d<&s;*G{{1|R8OS7+h)Jk`NF!GBe)%nI)Z zKWS@wkj-Z)kFd%>%ZekPjh5q*oXeSzvKALxlhQU0afA@qXNYL7{z3JMxd_K3K{`yKfWDtiZOF4usSt!(LMdmIbVdU$nA zZXYKXeMYfab(`=@nUeiA<0KAh_8dbI7!I3GhjWXfU+!-<#ibDbI87l%`Sb*o2PUI@ zLMY!#^4pi@R|VCSXDlSfWfXmW0@0sLCi=MvC_kNyLN93H{%4a>Zk>Sg;AE6f3Z+IF zgkx$Rtp#+m0d{t_TJ=YsmL($KVck*T-j z;o-?BoIvRe$Zpeuo3yCb6phTp zPGcyI=KL)s^&i`UMQAFWZz#rp?`9UQrJEsXZ7DiyysaGHC6rg}i4$1AZvs7Q>8

zJORa8Tr0{w6Hu&ax1!uT0mYhjE6P_Vpjf+YMfr+QCO6Giq&tMv)HE%$sqi0ZX_~EZ zzofX0j?o%;=L80=-L|59T_~qEH%Q*w(+CjVt`MYx|Im%3|jDo4kH_Aig#8nI}hI0APIrJN#2T@AsNZ!$;{h%g)1#x(JxI zf$Cer;q~64;$X)xM^t$%;4kbg{qSjG^n_3HJG8ttUNP$|k^@cteu?9c{5w9(9(g3g z^nR%MGkTQVly<$s5FP`-0~huyuBs=wNKvYS)t)o@1<>`6Jjed!E^qILzaf$tyjPYj z)=Yasptjj-bs5^AGAHjQxu-0leTBLUvtr-i8s=PJf^;zr5TZ`_qJCDVLp^R&!C6DZUp|JU@Jfl&lQ>@Mx$Gto6f`72aiVN&TG&_MU+y zB{RU92dM?`52`zVL{%Kg`a|qA;}6F`uULPKlEo&D)#-P^;0$EwI%38L>(Nl)Wv|Rp zfPMBGuA(tj=d#jKK(*V&G*vPb%F!<=XJlZPwUWcINWG1yl}*H$!t$un$yJp4CsoRi z!;v&4ET6A|B}hF1EIFB9eiElDzTWkIoWdFXyER{YPssP8YrEPn(LdCrq~8SD`a6}~ zO!RBzw>&k=1<&8$tY0f|4%LPB(!yusa?rlDvVRag2|@=aC4Tr6F7A}q-!E+Zzr}AS zCA?5`b-HM7iXPeSmRn)(RSXx<8y!mnbca<=&SFO+^|eB2m9uCu>(+Y9z0HqH&MpGk zL-L-RkS9lc4aaYOC0xG)5l!gV%!~vH?m`9}U9IFcmAMc6$IMMGx_1eGLeWj=3?z4_ zup0T<$J;!$;~&@=@t(@hh*hJj^V^8AAg=#osfrET6tnT0DDmkfXUOQBO08a94Q-Ma z>0+|ZqcYRq+_~O13n&S-gQ*NNbiKG8*mcmR?uyEkbyrH2F48*Uuy<&$y@4)VXIw2_ z;AiVkQ}3hyREu-t(lhwm%SYEO4IakBSfV-@(cTy>^Cl6Y0IXhio#WqrKOE)wM656QBWqO1sMM30EpXuMLbD zdn~5S9+-*r+=uT6O+#j;F;HqA(jM#rzJI371Ka*YDyCxjPSMYPMRM|x?hG!dfO~3G& z3@?h`1d)7sCOrRDJl9W>2qG>FHNmVkL06Z)w+1`}J>*Rbho-zW^?{D^Vn#((Zf7A9 zlV&}PE0IAp=q*p_GnNa{O0mBrhs5@^xQJnu_stD`dg-fCc`dBRx(Azk%j0oS`8a8n zJHKMGT|w7m732HVXJ$0uqeW3${LShsJ!EsB2m3s&M!FuYDn1%ho?(OqIctzXbQ+|Tg!@~oJD^pV8cW0V^i?d9)X=? zL!4U|g&O?s+OVR-h0Z;y5t@%f`~A|WavAgTGSoO^arlRTZ`Qx`E*0nK9xY?)Hr^bK zpYrXwr*mr=b<#;*zhEnCUm}(>#U+-cr}`p9Dd?QMJ0d)gBRY;g)D)Oc0_BL*ubTo3 zNuV4iaNs`4NV`0Lw-R%*?VU&;#wfE+f{Oly`f!~rYXzQN@>>@th+ZU;KhmN29Do#i z!wenL>A$ic_g;Vo#u;WXe^2p8rh>-GTC_TH`6aL8aLOOq3||F9N(?jqgu?9Y3bghD!(Z(2wf7HiQh$%dDu5c%6q#FlbI~^H;TyAk0Nr$YKCW1o2&G`NfWcr^ ze3%zS2=T+Iiau^m2iU9u=rHiK2B6abT?wGKqdZjm5d3I7gQ#_QXPU$e2X;0mQm79q z-dp)`^36rxNP?AQ?K8?(isFY#wsv0vtjEyQ1y>eUII_NiCMRB_6fB`!j_7Keb-25(J z5D0>B7EXhzk7m7#p{KvGX;7=ZL@}g7u`7Scq-vHR_ae@^Xpj*wvuEJ&J$5S|3G(F8 z5rm?kbqF6slA-DZ%ZviLMiP4(7%K4;L$wuqBxhd;$$uz+VcI;g`jWNg8AR^@IaciW zeXGWeTgP{JeOtSF(YSvewEhV#m$ya7G)8QskWg9|RkX|+Q73Adaf<{-lsNm6_IyMx zi_scDu~m{kG+QNM-#3fsy+@7eWBnvu5IB9lVXrrS)5`a@@%D^umuSt5+NAO4NTB;w zI}IK~hOfy?xjZ~ccvKeC;U;)I_rLIX^eghX-0MBkm7DIt9DYtxhQ4=XQXiI0)K_^D ziDb$J*QhE}2K*5fKeElZHlcPa%hpqoUNw;x zs=vu@Rq^|pLwc>-S%;GjtM5qc4hajGr}?viQXOA3_EwXznfV*oBFMFpTGz43 z0zmy!gTZWlwbnAne(~U64=9XqbAC8I2i=M=5RvmH&`Xm+|4uID7|N-~L@oCZ3s=OvP+6u@}kZ5}PC63gBN>?^ZWX35S37QvZa~ zO)2so+2Xrnic%}HO7E|3zMu)#U(GD&DYuz%R~H^bLK#}?ug*`9?SNmxg^4!dI+6&o z#O)DSOz6_hMYQQfle%=bXS>?#A5tEGnB3(_HhaZZxr??O z_PS8yQ`M-qZXQ>6EI$ea)y0IkG%^T$5X3Beh&td*xZKS~T6KVe@7jrV&`F6s1>W(( zn<~6g*Ho3iZUV%@o20&`g3I37*f~)3)fN}4?JBpS%eZqvUMsVv(*SF;dD9IvJsmTa z7EyC;_4g^)%vG-a+=Neats6Vem@@a$DO2%!|D?xlPNUMsWgBoB8<){70LPOXCm!;Z zB3{O&70T`QD+57=Speg&`me$rvi#tI<$g91@)mR+xc{WGTd`?1E^lEcU z9#vVqQaqk@`(MQC-(-4%{^#@>@tV_{6z{WfhPQ>F%WzQJNuwvb5}8=oj!I*VwpjJc zFuDLV8%E6mV4DPB4k~FrfQYx<^p1H}dS3SD_l|Bwz|i~gA!r<#yIqTIIx`XgHc zVilr~KOz>F$y~;Us$=7{W;Vh_5HSvfedP_bcDEGL-qd6mIq#F7b63x`Mm*hep5*8b zNG1DX1{aZX>nM80_V}85hKkT-+9BGOJ^@(KokoPXvsiiC=3af`AktKyP;)O?k^3X6 z+Lqp-C>82Xg`{4hZ*wn^zonNX{kq%RZgM6$%5!+x*wy8V#l6D-|)Z3y`?#>d0u_oyPM;h zNB#G+aUI6JWJkD)mkvR=CzU|g*hinhp1QKRou}+}7pQp@-Iyp{=!w5slR|8KWr*>^ zgD1v(F&hud)u696riEBc7XMSiLlx5{O@S-lN4zrcwu*BZ-~~rwI?e-Ii-r4%l-nXX zhTJgSk^~Y-O(Z=Vr_`QNOR&{@$JwGHV_JB)iaR`n-@ZWv@p6;_9LAT0p-si#hHn(t9dP(< z5Q*n;TY2x&jFqbmA7>`r?&s4!R)zQYp~Q#PDj+WIN!@- zD##re>;$0dZ#c&vk&9))5TAA?ad}N6DepwcTr1-p$zpXcmy_4PXfn`dBTl1>@ldUe zI7e|WQ{v2h2nd;}3m}h;G5P1f-+S8p{GX>sWxQi){3ZG**A~YjfM`Y(J2Xihk1o=)A$j zF}b8aqP~L}Ap81bol0>kKQ6JJXqn-w7JJN&tlb?LS5;6KLG2dhSQC7v_T9u;-;DSW zu&USEIaz3H39Xxuiy0s*+`G?lI)5ybu^4(iAMQ-@TsCpzYoBPPa)=UN9i5(Qx^;FU zA(eaFJ%$pzP&&FRc^pI-M)fK3W+NX45Y1&Q#Jm8UI+@ko<}MOxFVD$E({YgcYE_|Q zOFYo?+1<{9OUz6)3ErC4rJY{5gPXq|bZzAsa-S|UtWNC6UDBJlts4+kF?%oGt?5pM zFa2pvdlKw6&D?65uDu5F^lT8<1P-B4?XgIQ5jPCIENU-AI;gFCW2f3^JeFVNl8n23 zTua+oEvv=EZDYq2U`lc^n#9~LG1oK~r&!iNqwQ0_AMOvaXrB}i*?Cm2YxB`js+*Oy zZBIyMehn^8Z&~CQX1V= z1zYc?;zyU8vqw%gu&G3Oh1~OqIzGCx;oM!$_!uTUMJ2^+m-@7Yr|VM+&vu`)+-DUZ zO%Qt!&*l?z0N67Dm;=CG3BVix_D%ri0I*L2Fb9Br6M#8bA}K4;402-qll`{0na!8V z0A~mKw4NO(LJ*aR;mCL7+x-hg9x=ZW>m?|x($SpoUZ({Q`y(nFJ7%zSZY3Q~8ye>e z;Ty?yd#-PZo=_Q4k+C6D;#@2n406@OCLb|;KPIXp22K_fXGx*pVhv8qRXAlx6D@z( zd74iduJA8Z90b#OJ7vi4cCHjBEECf+5!Swnl|TCzswl%#Nn-)e3~Eiy8qogy5w(cg zYiS^j{`-2eVe50Xi)bb^nilE)g(~%?1B#SCw_eG5XSC9OGqh*LnvQ<>O0@g?{O}CY zbt(1F^use#pIhHsx_#j+*y$VOU}RFd8t3#E=jnH^E>D`xT%JnqG;hJc$1ue~;{J&B z3)diKlWcRx32R`W3hyu-YBUEV*RNdg3-NOIHIx`TwDn~!grj7@gw@3|H-O={7)5}p&E{f$+bSE)CHuS%Z}V-F@ha=BwAy2zcM$2-+D~k5 zk{3Wyvq@y_$Ib#=(%ijQ&4eQ$NXB8+@_-|;V$&qtp3&+(93xr~&4YwHtJPkUwMCaB zFbaWW3FL>ygKLYuuHHseqgcic-v*hMqCoU)MIm-JC3muC?VEEqVUv zE9E(EtIZXjq|~6< z?e#XqJf}!QXf&g>Qq0}p@MXHF6P@jzc=z#^5(^M(CC`s z|A05Z`Sfdvk4|3gA#vnRZe9l{h;9R6feR0!tu2od4v3!C;VSFA+StfZF@?QPN+}2w zNAgD+|9Q2et0XtrlKZ}?tq>HnF&^Bz`n-t;Mg2nuIoG1-UVa3 z;@FrSLB>??R|_9k$fz==K`6XMIo-lNN$<|}QLyt0@Ls==IK^ycbT=ZzOl1Ah75IY4 zc+rJy@zQxR#_8Y8Pslu*&5kHS?cMU5bPgk!qe=2EVJjo0Q&c)*aXKqqI#Fho^ zosUdNM-f`nc}tp(3R!I>@IFjBPCxGG$#ro|3~E%c6|+5Uft6zO1kqBe);1_iej>7o z+OxXbu(CQiey z%GWp($>0EZzFN^8# z-^4#GU7kiUmUze6dZhJcRu&pmY<(j-m<;TyUlG$epuwlIc4bP(lD2+1Mx1Gib5$JY zKo>{#7w0XhxZTJ`Q(3i?W$ok2qsGkah$z(l*_`LA(}a_Xd}j)=ifm}59j}_sjGmx8 zjrk+;Mhh6pO50%;L{R7BIg?&H)6|^Q1^=uFPgGPFL%Z@KcP?#L-i|SjaGlzt+lW6i zVH%I;&u(vaJSS=0usd|8i|&ZXR+cp-&fQBNZ7ngwIW{Rd;vA3_OADXeuoMm`*hJk? z^_Mro5@zDN>es|=_Mk?aWiELQz6njYbZT?c&5kHS>s<1#v_U3K^x70+O_Z|))*(7e zIEjka3jSn$wX`?Kp}c$eX)@@KD4azQ+WrHy>rVmW0(K1DNzjy3_&EYa>h%dJb8u%X z>D#9eKzG-T@6k61NwNsdrI@0Xoa&1ZVB0OUXah(RznSMzJlXI*>dw`4klneF0z4&@IWc$C*PSSYR!#^g7jte5T5!uW@bu+@>U&sYey4 z4%`l}wxk+6gj%;%(!n@3X5X7saR0bM++t2&$+G8m8sC8TIu@s{>_B1d~ML<(Vjzg4jx!Y?0O0kcNJ%)WfyV}me(kIDjAsPf7 z?SlDSNm(do+t?e3JH0KW9~b#7;uBp@uK>Zsqz^tK@qF`3$~=8@TFm&;YY2<|DQ7bF z=w4b~gHesdp3-pByFTT^lSh3DwF5-!QiM?$ZKUmQkFAnI#4fSed-TF>c+v+mhtv^v z0lNxa#n_fncZYG^)sEo_;}sE6^61Xu8++Q@Y6mAAR(Pq$JjNcaW{OQecTshirOV{Q zuUjSdVId=~#jef?)#$B2F%T^nPjfR0AKoqeckrM5DeP+M^&0;BaJ#zBdQad+BdM#t zm_jYO7IusntJ0k`iF}Q;+a3Hy;K^=07cC*el{dhwYq=$?o^21PlQ(pt9dOvA1Q^p9 zQHP+WcBS1_=BM7}c)RUpIip??^O)|fvyKfjy0eyCY$q>%GC97%ePiq=yON2pfvvQ4oZSE@!Niy%LVwGOXJpA1JM3EL8}Awxtt@mgfQci#IGdlK%g zHZ}pWC-qZx{I+NrJXSliwaV$#uFR956IH*45v#u~x>ibH@8U;>+GOV@YqnNuhl3jq z6EWJEAFFM9Jw6UTUcu=I7Ki*n(FcxPe;R9d(>)3|rzwqV4CJ;g&)20>Q%zBRQs#h1>kO@!XNOM4Z*jD%GME zLgoN)W&$t=fU^>SIRLyd0hj~8*$KcLPOkD=YZ2skMD4`A$XY>B;X5ipgSiYu&j46Z zM(AxJ;rG%Kj-FPCgGax{?OvOYKF@$P@L&_X+FpBsyw+EeG33yq6NG2dXrtfZ?2Rth zL~F6&No&v*d^r z?@n0A*8V6z(v8HQUxgnTL*kzGr!@d-LP>Syiu+zp5|R?o9c~*7S@+5Et8bR(j`T z8s+LLls6WrKOQA6)sa{fM`_%R1Eq5`94!vnCl>qc=u+d{nq-VJ$1#5RPq>qDEqzU6 z3FF8EXwl$BzNF`&3}dqxV-_V_ckT*u!AS9=x;0{bG1jI8sD)HF*tcCO~)TmjYmiexcnQ0IT3VeW_rzhQTP&3 zT-EvEzi`_nu==Vr_s8)|BeP`WE1UuAF6~-Qa_rYBUF5{f`hEMU#aEzkZ{?iZ~0LV)eB#u`5#Y zdp1K-@|D4m6;E-&h6U7)IzjCtig6^a4X;f=LvKt#d&ETEA&BizS9^}63}Lp|RJI~Q> zhNt}|I>-_jRJkRN6&di)Slg2)%i1EP^KK4WU{qQa+-j?H%&$mJ8ZVnxqI=SRGP!69OY7<=jdLg$7u63g^_nb1|=@k?_nd?X=OAI7S3mN-4K+&eFfq2WZga=tykH#=xm*+4 zli02S+d1ldhal-|Y$t+6wNUGYg;Wc?{0wE>30*L6C&keZM;PESNKd1PXjaSzD|JUD zYPqtg7m|c0)=$#UsdhM{8W&cSX`1OGqUQ+B!KeDJF ze&{Bn8R1My2wCmM%o0`u=^_QUG4aC>1^bgZ?&#sN3~qk3Od2MByk9YbVZdo3iY9;b z5OGks{b1962-!bNmjkdTfc<7dvL9M*Kg_frPWI24_5`rs>9HSCZa>nrA4T@NOnU;@ zzu>VSU2Z?dv>!|MWu`p=?6-RC-R1V}ykjAio5# zf8AqWP;Nibw4X%wZ8esa0}6w`hx*}rJo6Tto@k9}de{WR0Qi0ofB?FnGN zj}X@~W-FM5R-m84E`jEz#oXSgRlI7n3X~$X3KXu_ zEz?7EG}uyVZ0J`s-qJl&9&ZcD)i1U#o|=?D0q19^=FMo@vw`nWC)=&{u#rb-;yLq1 zv{%rxDQF6}vkI4-{9>K|_u>AA8;;2}G2{m0*~nuUXn9$@@%Y_{>}@l$q3Rz090aU8 zN|48*c@!=3<0Dof-ug6N6p|Waz#{x$pIz)dk}w4?8dfPHciy31FPx7`$`)n2agkDHYdzt!8Kqxv^29iJA;S8o1 zZ;UVsTchC^0qKR$K<&%lBPe>Bf(ql1!u&p8gM@ejHiPB+*z1k#VQDx=&EdxnHi9!h z(awOJk&>!rO0I;Mg%IjTW!rlp2=?%`&)Ds?jM7CoswTG(HD_Gem2lC#mM;?{BV9Y!rjczCLI2=PmsYQePRTH_}4yR5eJY~+@nM}kUvz{ zX8Z)$@QsnMgo)?~>!C+skkanJEDtv>1ETf9GBEFq&998&4xH6Jiw3r>aHp0__OTgy zA+fs@nh97CfK8my@Op58QUJIK&L#RRc?x4cVSZQQJ^oGK-11+=;!|V-EuTU(TH`Rv z6)ti3`kmV2%P$+vklG+6zzBfaASc7q1}QpKPYEjTMmRO17f%tD z5stUur-(Ab^)v<+G(&2Jrj9AuHn`KYhko5#(FGOoyE!urO#v;0FgEdKLw+_|8W@BP&mKbWhc!S-6a;B#(c5&EFEAy zjbj>qF<;$@tmqXiMY||#S9HUU9v;tz9-)z*9Vs3H={7aw!vsvN79c|4Q}`)A)i@SV z>vG(~Lqo@6sz{7gFH=M`+2#W{?DaVC0UY*u9QXhZuXr5z0Ff>9iY!TYv_r-nE6j$X zQNCo+Yvc!}^oz;QB1#vUk*Qrwh_+30lsWjNKd%{nG8!9RV1qPvW5?1dzxdF+&ThI< zg>#Lub4q?0j;2214Yw&C^)?>fjC)%AK+5o@7g8GJHmX7kOZU?cr*X;u57J0!cqola zDN%UKc^Q6-_M>c#o{4#7A(4AI-04f4=oic@$R2lE2&DTNB9Ce%0lo>e3cp1MR8Xk9 zg8&MV9Nnv-rVxi3EZuA1fN3Ndx$jUT?PyxAg`!?%!)-5~AgxBTknROA!9p8I#}aND z?BaNekBi=>UV(=y3GHJ z{E~@#5snPk{GAm1|I;)dqBJ8s`u%5k_&~$TKgI`|w^Nx> z(QH8GP<9(BkEm3O11lT+FtvbusB>;2gL3=Lgp14Vi66430mm$TGm5fDybwR+h5A2v znIj9H#1w%}3LjHV87H6VTQLif{H+?Yz%a@dr^+qlHga^tp#76Yu4!@F+kzY&v8Dx{ zjByxeye-Jl(ZICWZd#o6wjf7`!?f6DTAcH?AV)`i(*o({Sk9MQOy69dmzA=hwrTN6 zxrLlSj-ewX{2X=7a8{aD7rd>=(Gg7+xFtnr2mYEP72QQ|vlKF`M`j86XE7cWUxGF! zX*v?>Dbs=ZZ$W{%0G0Uz>)QZhE-*0v9YaAy{lNOJm*TLYpb~yyJ>sP}YAC2+A6Vb> zQXDfBRGts4?|UhZ8wx7M2i6l_iVqA0mEHsEf4meQ8VV}32iB8bijNEhmD2<3$6kt4 zhJs4wf%UXfyhzP>D*6LnTlGw4u#B%5F0nSeRZ9n$&0K}Im^pYQ1sES7^H!m2x%Z&R zF_R&kIbXrEFU3wv&6VK6V3qevd1kb@G6|KsIzk5m4v`6 zvE@6n-HjzgG?tBpFT8ey?>)ST87=l~&D0Bgap~Z1i}SVRe@p3(jmtlT1O(Xi z0zYVqaL>$QFC-ZkVt-(L3%dL*=(YJRK`4aORCUj8K&JkIm<>-NKE6f2XF=_)PsvIfsMaSnCNK;=|T zezF(bMGA2OmhZC-@J3eDUM1DW?WH6z^1@{143JA&i9 zNliVarAs_+?g~{Ad&T>flJ7uUdsXel?*6ujbPg`S9-4#?1M)rVh^&NvhGYxFXQtVY z8~bqh6@7!W=r$~13$AP6(3M1<#pWk=Iyi! zDFk|;Al)yrn%I4W56Pc#3p^qJ545A=TX3L{wLgzgjYK-$hNbbWYd(shA=;rae&zjz zGB7_T{5T?$mHC^((O1HF>te^B2rtyV69GAHBZw>5t&WF1v@!aEVGS&>!rr0ySfp_` z-e;V7H=eemG-Id(w}{H_P4MCQj4nPQhnL5VuO;JD&)28;5s{H14CiR=L0&_6(%qMk zB3|L;7)b?D({RZf0;T(Vgr}PyTs}%IIcyO%k9whc8J%!XQ-%}r?^AjFOy%)p-fVa? zlaGhjex4#j7qu2kx&zDC5N{$KNhlv)Ie^X5+92;$lZ$NbT{v)Car-$u$&HO*tL#TN z4$DRFv%A&i72Tz!CaLE_#WnUw?o=G{2WGfYf6#>s`ADXE#wUGX9`B2_JaoX{2N9qHc+iF@3T9 zCsjwG4YqvfDO`UF!A>F28isb75O~%aoc9;1BGj=5$??mpG9GOv9f!u+KWxU2q0-Mk z-q%LEFj}g`YSjabwH;LWfyN<~WF?C&F2Xk~!PmEHLSV`|g1cE#0?j z^62T<5ZEuT0MWSb z=19xm(JAsp(d&gI-TmRikpMxLZRBD=LVgg{kssAjk|P4csW}5ol6i&gP(rU#PePA! zlh=;85aC-e^bJS6oei((z;x~19i`nEb*tz783kXrQGn6(^z$PWFnzkJ0X|(7i02GF zvHlkyBOF!9W2F1?*kSnK{YmMw(x>&jgh-DGjS=+D_Zr;9YC>_~t#Zczs-nFptXQAC z2Z+*7FQAE_6U8I+ZFJ~wb7aFP&OfggO4lzX7v61-eN?Odd2V*fW~WySr)Sxz2|3ll zJLvekJtNsa?_+k3@OJ(i&bQgw4rlsSES+VlBnMdYLOP-H=`BI5T3Xe>bDZ)8?xE`i zG?#TQ<^!NR?-$36gRjOb+-MVP4jtnDx2RY1e*pd?a z=z1$ZXXOJO5#}8#5BUc;=mljIa#uYHnWn$uh2-GwWd!>-`#eg9QAUaXJ>wyR@Cj5d zxQ~dStE!SsSw=nzwouSceH;DK;$f^bY0CEbPzPJ8j6`8{XNQ3tK#lSMI&%Qjlbo~( zg3gOQEBQ#YO-xE@Wx9Nz)8|DoSkO*QnBtUB&Pda%k}V%Qz;P$do0#Kiq`^Lwd_%D% zUvZmG87Z-dq}=^g8rj z!Q1(Em0!wA45E6$R?2&1-aJIFZzFJoBN}G@fTUl_Shm|lcIkQ~N_WOW0#DKBbHQYj zQ6x&BxLoO^|g`Df-CgUa)lFnG>g0=tivf9p0S?S zNC9SN3kf^{TxFy8$tY43|NVEl(z%xcxzG9?9LTd2NHS#ufe?5C2```qGLwu#y%ZDj zQb`dzS})i@UK8OJHVX+1ulBs&Y|#$>%3ag)Cb4THy8&c@us;6j_5FYQ zkB2+1w*@UR$;3ZBj&!Tz9y?izGP8#;|He`q8juQiK&lRMB__Q%}2NvIMgo|H(5wyl^bzoMo*fE zP&7AD{(ib64Y}n4j_^zR8Bf?FppE$jJA&dj9;?(zkL8yX7_M1*u|Bo}T*$y=Lv1)c z!+EfXGUOqJ<{X8Tcw~|jkIhcWThBmWPQGtXJVT@G;G4si*luP@$9mE@vd_6^{>9C{ z(H2o@pe-VBa8GMb?CHii3bs5mz~9~z5m8cuEw+vHbev9ap2R0@!e`;RByC1X+KVV^ zugZx8qH?0hwXfMc!WNyug-X3pSyoh=-0?DKGpe+z%DrBg#neS(H%!aK=@6GZc0qrDBB#C@l$eg+Xoy3(No5?lqy6_H-vwn+U3fs_s7F7J)^N!`gcga4Zi{2wG^vWu;%4IzUjue@!Y}sy zdJ6`zS7;zAB;W2-IEM}9IDEta#KCP5n}0%yZ+jlYRbx>!j*;{XY-oxj)B!22D;D9j z6kdjw6>2Kh+UQeGZ4jdIC0dVR(p9rH8i6Lgj_5GnSwtWFx@f$6o04tCYeebroSy;V zeg{qnyOB*M#9?Y&)1$T74Wmqt5l@GWsB9~eE*i_?%=9N=12v9I@;5?K5f^2IMkAHx zwOIA?E=ATb*dFRWjH5vO9>K3~j2RebdoB9W2WCdd0r+}l<9av&aik&a%6?U78Xt-0 ziS3ZQK;2h5+T(y)rmdlmuV1jmpOafNiJv*sJ(-d4i_hSo?--?%-y9w&=iydvDOfSl z3ND@u_Ax%v>#bpbD(r#`w_qPfM*{i^a!)_JXy(&U4-4S0deL>s z5qms7Kx~#f?wbpIG%h&*C`uGP)@)e2(Icp=D%m_qrLGXR-aD<=kdPpo@6vdi)z|$V zRR|3xo*(#S2)-2#5&Xgf3h(5&6Y zEi~y1lq!uU)Nh)z|JWR)Hsv2}IjmP;Y;|e(^$N@e;zkXfZ|GxRJ=(MnKHRjQD}StA zR3Aw+SBo^jA>AW0_NS#W4VxOn4Qoa2^$Kf3E2wJXlImUpEj`n(1dA&bu;K@q`Am0o zrypJmt>XT@(*9 zTJ%A_V%_>QV*U;_dZAtz3vwsmdYs>_EJ|SGdxo(C`=64!CWd-mXjSAObr@^0mZXCo zVOW}W)nOO^A0t~>OTu9p(Y=egSbV9GQzHcrs?5b8X)HDAO8Mu0LF<(<1rVoB8TlUS z$q)zgAe8*@y%KKQx~K))mQ*HY{)~k12cXM8bU+gjO1S92Ar6IGh)(mb5bHGI|O#}cpmx1=TJy!S%+mzSgd;hchs40SIAaRfK% z{?*?22O+T$bSU3O8elkII4ObELlw zmoIt3pyByWn7NPSBcIR1$0~CuZ{-V0Ynv{#E+!stJd*m6PfePeUK$^(L|32$x#^3Q zrq}P_)t!z;hg(N>cLrSv^heQ5$MvNp`Jqor(ypz%K?Yv%HC|``_@NJs7(w?!68^C- zRSoK+b425V#@c%NX4i=`#_>?qAevCYanmYFp;9xhXJ(;{+Hx6@9)q0|KmOKM)b@4! zQ@f^nus!h4%jGy28-M$!s3`>*Rzyy`M9$O&AdQBu>OXXWN>}Y+9WSk;0F7rSO%Y$V zN|(_$DB0zGgCpa1uI?khjm;&6kvJz;660Q zc8bs_AIevG`EWwGeCV@7G4G7dB`27Rvnva!1@W-)f8B4oE}( zEFm#Twc0^dbUnN&7L|yhgNUHunWM)u9MP*3(%};wf!m2LwL4Nwm$# zcn&gdU$_nN8X6<}^zycmeWWI*JZp+57gVtwp~L=qkVb{0oBpdix;iz#71aDX!J6|W zMF!G^n{l2pGDqXvG+H*Wy1%7?IQY>q7`q4k27|m^NV$>5^3z}!3c7m!e=xb5+5=l_ z0%=Db`jzev;fixIPRU3Mt_;^8G14-j1bKH~p!{?(-F(>1;=cHAj-UOTTR)+?NM#a>wfgALGZJgofl;hr%p61;lNJ)A)(a(QSoK;vgQA*)!x2VzU+Y#(}Lc z7t(zef*-dRox>3ZJqnTsJx);}1%m5XEP|&ao!M5{3&%;@c=#f3=6Q$uV<(kfWBj7b zl#gE=CXZiz;7;QgWr^QY!f`)3ro8Z2b{+>_1q2VCu^x8Rw0J&@*&|=$<4qE{^4e+o z^lNxyU&>+IUMW30*iY9(JT1&bO(lH0kU` z(cpcAtrU(YRy0A3mK+A%ss5KRPV=2=BaEt^F#3Ckfwu@fVQl#KFwXE@Ya@(mo-nXs zNqIWH5GoA1gZ(e*7{>RojWDWv!njD@Jb8gfPdXwV3d1>*G)9p)K0zy5NO~iva8FQ+ zyn>>;VqEYvK*qH(3!MNr_PDSfjv%hC?(4YlaKJUpfUh+5BoNmqMxAmU)76X1{{gm- zc2JvylAMhzlozOx;w0exZpL&pF#4xAES2hphc5P8I1(D}ImQy`F({?HA28(SHJgM-TKDj70xFV?%7?cx z@Pk3G+$+7hhVgDJ++)*VPX=Ck_dyyIhm&Ji5ke`2GA#DwI;IKGQf&mwu4 zR9_&8u4+53(p z`TD@y0ao$jfHes1)Ac0lbs?8#14#Pt@v2dD?AlCu|CY-$aR`O{4X3B-*pkgw5y6%% z`%nlo?4*t5bk_2r<7pgMQ@9Kgzl^7P>@&2*dekqpe&S;eXC0SDa(A+SX)~qmYYw55 z(;S>c?x~!TSLV=h8Q0OtGO|1|m{M3fWmeY;V&d4>kcPdz$tI=`$u@kzS^E7j)9oaUze zNV~J;8*q6pXK_xb_6pI`BW~+@hK#)aPCGAr{hDG>Pu1nT>E2} zl1r^=6y~!W%Za(<5;2@yu5byz%;i?ZmM!{HYhR1d{KWGm)MgsACCigsZudCM*NZ46 zv(SD*#Qm7h23bV{_nH)zV|>YeG|N&e9T&1Z$!*{$%dvwwOb#t6j*j;)Bzb!Vwbfhf z9x#R4^HbU6{ulSGt6b)NJCn{esyf?`<9R7-d6xzY= zw{hd5OE%@}EpCTbxm7Rbawwfj_C2Rl-bYQRw$Zf{wSlNbB-ivJS!WQ*kaZ+qYDjG( zwmqdJyE4fW0|e6lo8|iBRW<6V>sJiGopX7n*BrkNYfcCt-F}3FrXi+rI{_01P&Nn5P9B(QNnU}4o?}(@^ z*|@Jy+8{A^cGQ;cAe}8Y78yDV>)uQv3c@@EU+ob$N=iEvfb6V0w5GH}Hnyz;K^L4- z+F_fhg5AZ5{%mScARtJrA3>H?uyZfb;MCF%3qiR|^O_NbioWm{BzmTmcGv{!$GV~Y z$X}@F&r~zfpczb+;cqu|OPPYQ3|hwYff?osrnVWS9lD7yv05uZ>|*T^z&r>@QO6VO>L}I^uPvN$F%+N9^Y?UqPyOgAOn)Kqy29Ih5OoAxG2|huGf% z#J&*p7SnK(-e%G`Ep_n?bIMUy#Lx{Ns6Wiqo5QRpjvxjh-bd*cU~kFyS+@kSPsSIW z4f1VHF(ir)SXT^PE_SLs%~S)S1YvS}0OXx? z-!py2wb@AAX6nZ^)>!<^bd}TDSp33tf~kqP!*rQ*+f@9{WZ@EQirEe2cA=^Jlgq3r zCGoCU%Cj;$=`OamDVDesXFT(7cH4iA(SP!vpRt3DYon(1~QdE zw*tHMx|ue>-)_)2rUQtt8z_&dE$6nk$Y+W~ndORHQNZ*T!pz09sA)`FxR3P{bC^06 zQ4i=R_UP27UomyBF!h>Z=nm^zWRSSur?f+g)=&J0skccVGquh&bZ424nsh-gfxk_l zHHhId>(-e5u5t`dnelzC7bEtA^^Exb%PH$Q!Jr3B-AxLRn=uAu_bTlm5M~oerJJ+0 zv_l7^%*ixto#D^LbcDx=ej<%&CCAraWH5aZSlS`c(qD9Eir+~7`intKZ$p=5877u8 z?J6eSFtM8HRw>a4v4v^kGh=4GqK^=Jm~Jc`Gi!-9LhNPgzGBR*069Xu%5>kP*O@LZ zGyLsmI*3q?YNN!PvIIH$bS2Sf@iyxk!t$s#R=mTy^$6vt<`zd;Hy{4Cf=)0!0e@Sy zapDwPT4A|b8!yhY?hT}DwU#HoV2WVN3E~GP7gK@wg{jx(F|)G8MDYiQ51Jf$b?Gmw>$%3>T zg>Ea;ckp*qTZ;6OzqZTA%(|&B7ds7qCcVH^h4Z&u?BN`B=e(~HAFyr);tPg{{+hI8gZRzEJArxTO+<_`WR^; z`q4tId?WHs*H1sOt|Q03M%-n3?QtWNzu2-S{0XsMNFO@my@;~@P+N};mMOQT9K(8H zWBQ(BSTB5iN}!7$HD=ZrSo*^sR>O{^+FUQfn4Dz>h5Hmkw`v;2w_ZeWC_9m|quLJ9 zh^Y}`ctzhKnle3wvLK(|l-r88d-G*&#Am_ryqp+A%FQDTnF(yfL$;=`V;O zOrt@QLBp7qfmVY?a2|5=$IL3$UlgO5&O)~YG>$0{x@_#^JD&Z`<}mk)DNM=GEz$Ri zLZ)9ihP|SQ{bh2Pd&Laa-Qf84ikYn23M$t3iP@~1%wg^mbC@2mTX6EEh0U zMk`pN?Gp<*lzGdk4ek?9v+kr1mC|eC8P+||t@U-W+VF>#{EEI`Jj?VOx21!kjOh;7 z!y&PqX$}0{)ZY=inV#lW@Q!$q$+C<};vKP%DV0NcSG>+tinQ$34~qj#QP2?`V(I{T z1@sP6UG&s*+F@~oX(#95WAPEEItO%A`&gV}T^@&dMts85mo3kTOH38Gg`5$WnO^1= za#no7l*pl+#dS2b-LIl4)#t=bZjmb;G-_NDe;J{$AG;ZPkiP_?ssK~TGW$K`nFy*!;%P!hNrdCskx@s#yxL-21 zAm^4gOk2h2ygHk7qqXBU>bE5eh{kHCIMwerq*Tw)tadFbNUZ2Uy4ggqoH?54DJ`7o z7vwJ+``1S@EhsL?>0nu+)nTfzp&%znEYo7`R1)J$Da>8kAbSb&cbr4n1EMe|u)mkJ z@l0O~r!ews=*W$-2d3hz@AWn1;9ta>iM3-e&5+bVysrq&Fem zTiON=MO#Py-qJR*&as(vA8Y5BnzQ98?K0EqdIdTCEvK~4nBGR1{Viv-n|7+{##<(`vq}hBaN8dAjt_3mGpI?wu!*WH7Wol+pvM<$iwb93l->_WMGJGk213+n@ zW~}pL-F2-!(|<>i<#nwi(-o6CGyP~XckjNrf;?R zOe@*)J8cQmHKrf5RZIt&Zfon9dUFgvYg?Eu45l!D)^;%c#q^7|(^sI(Hph_e7wrYs zJ;VNf)%N;Q9gP}#tZ%mXReObX3q~F58?61Ry~~_EoSo7?=#(PPX7G#zkN5O|1BH_ zegQ*{jbV(LT{$T|0de>zdCce;q*-N?D!x6DIgPp)X(>&(u?2 z$dv=6!^pr@J2Ox;qZ1)#RjE#pwua45a><*dtNU2pvvrlZj1`t;UU zF+E^iAAL2`Ar7;Tz6STag2Y)^w)N?wujMdjaqNBcb!?f#mVNd0Oy@wkK7I8KOs%`l zpO7v3>KmCt*xvws8`BQ99H2kX)RZj;=sP)vH(;492I+fPmkP@zK7;jrOit)p`V7_I zV7fXqxP7)5s_$oNG(5O{kQlDN>qqte0d#mKqkqX%X@o&vvt@lyHgx#H0%`@j#)@n) zMGy3sXuHqBFRtVC3jVW@_lxz3rs+XU199#1hEI`R*$x$Bg6!sQazjLC#KnYd(J!d(?f3O=s8Td zAq-lqcW27tQd+I|Wjcv5AX{wIhjJ*{D2Z&bO?NY;GHur-tK=lIab7HK%h0+DEq7udih)V>+Ne%e4M+AwJXI)VDCrU^=8f z$JB`FEq$koPv~#!FEZ6Z>_UG>f63nmWjz<^6#BdRUT!^85WCP1>#wq9KTtbySbu|w z(%DWN(GM`SXF96C>0b%CjmE;m5!!qDTTG!$$3d9vi>mXel>P&va=F88_hXZ=77+P6 zrN6_vceyrC>xY@J6*F{a^rK9lGo96sF*W77J*OXMTElc+|A6U7rcd+_ndWetxS)T; z^f}W-{gl6q3KBi=9$dD#q@Uq3bFCu!RKLpkdvXEQ`&Io5E~S%r8k;S?(7$5ZguD}7 z_uqote8o>{ztnHCzq@StrT#6Gi$nQJ|AAw#%q{CH{Wix}8bhIct^drHR<^vZ|HAa+ zDAL`~?|7y2mi{~I?sdny75Sb1UoYLy`aOT#h7*gEsjPq1|MvGsS-S(NR_=nzb1NkX z^*&@I#bA+oK)DVZCk0R)eTR^6R+Dxwon2zl5d6J?MH<<{R|b0N{A9%d8HuaG(Rh0U zL4*X*xD>yTECXa%0LAzIQ+O(D3zQK|y`dwj&2*D>6=YqePfUtt`pYExhJ284u)hj2 zhAG6PIHvX{B`~>|D#}F8(L(H_l8xnRNlXK=We%QV$VMO`u(l0l7Al(t_#p2+N=R1~ zL?tnnOQNbw3821`RGW0wq>E|o0HR2l&eSuGsJ6^t+RM5+vN=;cmH}pqy0WDaCb#7J zvJ0p4a2e?yletXIxK+M%8*mo-w^J9S#p{eHJ8(wo?~50S~~i&xqQAkKo1s^rZjD2wLTX(ta6Xyq4Qcb>QSt%BYDKts!_1m zHaZ*cPk$fXv5`gmkU*9H=g_WjIkc%KzV8Dr@3=;zX}BOhoKmT9e!k_a4PJI*`okPSP=zut&YOaDLzaE>o)?|;}JYZRyrBO0{+5T1)a!&{&n+s6^dgtQv6-fTf z$G>f%v2^znXY7d`t2FfxZu@Bp<<8wK%*w&jS`Z3ir;QjN#vm|H5AnXj>7&x@d?O&4JrML>Yj$A zV~e;o=RD-Px#yuR9s4QV{i;xT-V3=3mu(}j!R6}oTaY6L{Q^nuhKv&Kb$=+Edm&Vk z)UGtKb>sucy$Q0hCX5;}%6w?Jf8!|OHzNpg{;Vp{ejfY)3yJ<3>fhMYVkh*k-nd8c zsuGf=jY#fsSBGW&Rp%+>suW9BM0JE<#Q65|2x#AKLbcqbT3sABWcd!eUz|)Wr&7tV z${u@93MpSd*Cb!VCX+l286}#vB>Tt)4G>O?>IscI7l#B=8IDDpZzv+$l1zP)*k#KS{E3aWX>QF)OWcL*WXbxF$qUyww{~ zy}Z1Ea`z{sMP$^c+V2P%C3+(K&c&&NodKPTQy?3PeluD%juHo(jtMytz;7>0NcaL?@p=?Q;H%V7w4ZV1V&HY5Z2c#nHn<0fKB%h8aI5Rx-k{xz45 zSCx>=YD2QL5y?Gnl9k!!S_~ZzX7}+dH?wv*B(>P_kmIXSX{-pFs9L+WZX#l@If!J( z{v^9BA{kJ-+~!)$VvLaAu>5N-9Xmou&VbZJ3hG@G?{mmB=9K4gJi>8=ketghs|_6o z;#d=BxlG2QtTfTFGS&5=nuTy5S+f{5{`1D!kWQ?pZz%pdl4{BsPqH?oCYn`Q0Ly7S zjv1p_Sxp+#jPnJZ3mS?i(6*b1+o<0r;#xo*YQ>Vq219n=VFr%0?YP8d5tvkPSr+ z_t_SZn%N6Fa$mTJSUi^T;j3{R9KN7&lvvqq1LT}1${@8lJCOG|-FBlkXU^RKd0`;Q zXZ=YohNKdB4YE!6LD-+0{x;+jYmUN&&Xt{u>lD$sxB+An(HK$_e+)l?bS~-6=V;`& zNAZh%P7g<4=uuo3zIqf3H_6pblJ$8Gu%a&=zuS%EX{5hL@%xD+Gggy)Cx~R-#w0H{ zB3Z9B$@@HW*wmDcvxZUG-XDJ!rMfkESmj`0E4hf2)SE%+9D}-OC??IghWwtKvbj;R zxQkRJi!WJz2-&rGRlqIeD`x%okXb!%p%2dGbMZtcwd&R}l)E(KB1%-A`7_F)&&)qz z)2M^QHb}=K?U1`d10k2O45)EH%?c)O4r$V(ID8JtQ2``x3?!MG9nz$U7=*fLC=PT8 zgWqGJA&^t5mm$V=ET2F-?_7K|faF%lP_c?K3C2zjY2p-43CC< ziF46AZyi4EIG^V^AuPY19}Dg0If+dgiuK%n{)}u47b6$VYxTzcS;__4RRoQh@7AD} zTo&$v&DBtvy%bcTGvHg{nQ$qqMr}SUisY(VE#Weg&j@GG<2)@qs7(}d{c0tWM`2T;r3SC888=*kqbF&g;r9LeYxM)*dUler$-g*}kLqL@dUJC!L%^=l46 z_*ZI>+{V#us7;HxC)I;6jo@<{a(g*l!b+Jy_gg^XE$8zpv| z&vdfI9k}=hKY;zIiezsMBAF6G{n}^)H@e8CQDT3D9r7Z}6)Xd)2Et`$7|B>Z{t(BS z_^Umod2lBR#}Ps4*-|eA?i3DsAE%9S^Dv zgA(wR^U;vRrag*-+K^1du~A~0Stj2%Z;TKgOwB~z|5ctaF_@*e1g=By$s;MVO&NY+!~0*2=iTp86_^&>6{((`Kv zHnoU0UXol;3&Tf4Zdyk+aoon{PaF@IXqIRDQE1(JO@+(t>Xce4JaFNLp9!{!uJD*Z_NbR?RI^lH$#`D2xoNW2$FH{?>(K{MpRLSSOeecf#z;GRBT3^rZg>pk zi~1d10Mw=Y?~#=RhLDYd}oxP`xhQOhd!@YwZ{t1&(hc7kR6v|X@y)ZQxM zr@aJsZ(q+#s?Bo08rA~5>gAXEHN{1K--i2AjFwihkjG3<_}(^0AF-)uJ%RGKuA{nG zxF8lObc{{3TE)}rNj9+R_@L`^^UuQ9K1i(o@ArY#)1qz$UqoA4)|%udNL(H8nEZNm zI{qb`uBswvj>o>}>g;pGwQXd_T2XLuL+)+=6?T+;mibA+~S z=q60y_q3rH1(L(*N#Du&M%DOf$ffXZRh0*T|3vA0kTZ?vVFUD4K>;z@Iz<_$2T z=vbFzcSui8jr{(6epB@`=S!%}dyUXSJvuB{~B zPbQg{OVW>B8W&!}eD8!`4cIr)qEvn-^xuJ;w(Cii&e^lhA5G!mtq0xh zS<{HGtf!2D%db=Np*_@g66CTXI=(V_8lpzc)?B#X8o8(@-mZb9KDZDrpV?MI zHc6&&B4d z~ak*rP?jXA@Yt_I=xG#6s6%^GD~>8dbA9^Z79aS5n73)a=U7! z+8=DEFe_TAJpWIAEqJwcwWM+Q0{r4FmlR)Tr%2q`6)VN^se#ZIF&z{AqBHO=S25F^ zs#EjvNmenBX{E4bhdC|cs7b$f?Vwr3xF~_YrB#db%c|MMgnC4VKf9R5v{Jk{GRkQe zOBKa91H^VkiOvdGLrnh2(&-Elrxay6D~s!j+B&O>KNWR!R_ARC41Z5JYl*tio>2NY zBZX7ZaA#f7QPDUk1}U22j1iL+&2YwvMT+J*6GfS##m*$LSJ66W6LHw2NhMLv6mdaO zj57^)$&9p2DoJ!^2(7+{oX+MVR8gk0rHED3*4b8MDeCBKC%P+o!r4)bRMf}WNz70* z+}Ta6P&CfjLp-l&it|bFmZBNXTya*>JZFD#Q_*7QKyg>mI_FSq`f8*)p<|SDxTvWp z#yMIfDN1yX6>Stbop~ZxQKoZ(7_X?UbF!GDsH1bLSf}U-=XCLsqCU=I@t&gL&QkHI zqH)eS;MNVg#C{vW_+$vsI)Ykc&_)t+t=T7mZq9>d$ir*FW!IrQ7F`oE_J6{pl zco}~yMS90^&eud^MN^yyL_0+@oNtPLism`r5fc-i?E{m( zg+IG?MbYIDf9)4V_niTn70(%|-oM>qb5+!;n{pzU%c)INl8_sI5JfFqy|f96E;)0x5=Ez-eY7QtI=K348x(bR4bXO*w7F%XeXzD)Q3cl!?YN>) z*KqB;qHxy;?V6%GuF=}hiX5&nxQS}y9bvl0X@QCwyT)rZ6s5Z+Xblv#a204NiY_@P zYpoQWc23c{DeB;wrVUWk*;S+&vyxJt%@k|nOx^rxyfYC=9!dPGQ?G? z9aVHWWR7-HQCYRQ+NUOc(`krnuJ%CD<&gQBEz!u|H=W9=Ezl~PG_>Ck*8(j?(dCeZ zT9!%O8x3(S(xxf89P+d_TTxlHCE7BRmb4t=TB3cV=yJ$1?Si7RYRk22CUq(r?OLwg zQ8dZ5O0zUHQucV<4A&ZM8q-oSz0qvfT5X=9MXvSQ9z~Z!p4C1zDYebzkWJbzCM85S z&^K#=*qa11K(TIhS+&htHKvu~Ud}4lW-VILX4iHtNzrqz=e5>~UU$8y^-^@i^|CfX zQ9swK+7y#cbv)vFU0bZEpX;Eu#iZ27j<^nK`xNzay{jEDsReXLw2O-Rx!%`)Vp<_? zBb_I-mRKP}z0tSghpvybO^QBsozeCvy6!rsy{+gM*G28DqI<4SweJ<#Qa{)JH0ier z6;rQhmH3-IE5&aWs;7Rb#VES&`bu*t`o(oaYpdv<>!vnTkuCK*ZKg?8D%MW@UR$at zHubi)$)sDQ4O4&88Z|a@bgMKo^^Vp;QM=UNwXTYuNc~eArf5LwJ*`;L=+wWp#U_2% zc0#JqcPN^XD)qM%wM(_=A1Qhw)vkZ0Xh5o;{->hRsewAaRK#W7YvbJ13VJ<7GhD&C zXO0p+d#^J@_smMdXCHM|(UVQf@YzdJL-l5g)}>a}yDNGwHC!K|Xm4r_eVU@fskQWl zicY6S>TfFgI<>BTThZOr`ud-Ww6q4g4{d6P77{)?FfCrMsHjF-qFzH$bXt<$K~ZvA z6McqBBBw=~Q-vvV+NY)J3ryYVu07H+^|gxnr?t>`DjJs7N#BEA)IaSBomM|l{x-B4mexxzR5UIv zS6^Y$8}Qdhe_m1lv;q2CiiV{P(mzu)E^Vm(CzEk)I83MT@qJ8;!mBk89n;>5!KwpO zcTC$KGcm24_QVvYje5x6Xl40U%-poGipXC%?TJ~GHct0RbgK-VXu0)D+HCz<(=xH$^|U$qc9XiT zB6`83`3;C(F=HeM57bx;w+d2Iyy_>14(!FQ;LOs`{8~yvG zFH-c>x_;@4^}(j@c&nl5PwS%lNK@ zcQJi~qA_hRrf<}%nU;S-_pBak(v@~s(>E!)0otsnr1jPGGCkR}ya3%6y_HF>>>KG@ z6*ZfDBYm5qPg~ze->&DFmdUW(q4zWCrR*QlpVNn#^hv8b>CfwKljN|!(s$~UOzIz_ zXYA6w?@PU)7aKZ^L|1%X(AO~C&?aoCkny6vL+LcUUBBlcdV^`Dpqb+y{isPab9`Ap zWzx$fhg0|IUnn}A`l?zTS}9&G`8xGYy+F}k=i7RzqNC2k`f^1} zQjh4H6|GBsPk&X>bE(Jm6N>hxp3py2bT{=s`gKJ$(oX6>DT+?}Sg)H-DWkL`r=8XN zn6$Rl;nYv`af(i-UetFh`a1P9{aZzQomch$Dmv=?O1EbiVXkepB=u`ORMEQB>w1i$ z=TdL#8H)C%-qJfOs*(1co~tN2?FW6eqU5xn^-q|VinlSpzN353KkqzL(|7crOn+2k zcl3KEQH}ks+cS-HhR;5ndRMQi=yd9zdRr!%8831@(A`S+b*d(xQMA`-ky{lVb=u@U zMN3lc@?AyiQvKw4MbD)M%3F%|rdE*m6x~e?l0I3Ul+{QJkwJ>0(<;j@ijvc+%E?Sd zNrX%9Rvs>wv5wBSH>-uqV~X&`zdWa?rdCt_pa}0g@glrI}PzOIUrN0h%B8By|@qStEGk#|jh?{|&Ps3-3>rx=V->dTfbh>Uy2 z4mnT})^*DgCd0CUe2J+<`pmi;?pbHO+{X-n}^P5qj0I z(%}h}yzvm-R@6EpO;&D0rF2YC8%&q$n2a1{$URI(TgsG&6$Ob*dC{~ae_1lRt*5MO zYRzP8ML8KQ0+48B=Az;~sw>XH1i&iayDhA>%rEbf0I; zl!q1hh}rT2(+#aJTHPFZUFkG2SIW*Fe?(Ca(PN5kR+}rkGJUBHM=O{o2PvJ8m@g+Y z88Ix7bCgaKPs!Daut$n~f$2-li8;eU`Hq)vkv#9ETl`Recv{|M-3{&iuGcc2mUX*O zs!PP#hQDMidB}3vBlIa-9@E;a{VQXc^w9I5E75N@r=~Ea(UWATPJHPrLRd*tsP>etjuKe+g0*S zQ@3tj2A(h;HR;89Kl-ee=S+HcUV>O7KVvGfUzk?~bd!ln!j`#KMszE$zx6UnQKiiF zaf8wX8^~`=`gU%DctQSR(jRlHfV3V)P1D)pMOoD(I$OLbV@>)Sx;--4 zq@aF5*fptzNwvG>YA?z5CN=36Bwmu;Olk++%QDxbzR*V%~FDo;P*-;)29sdBxOCZJ4Yb zkvB};{Duy3MBX-al)t0$50fZ=M8-o<+6QvCqDq+`$p11KZT>$}>rejXaGU>+^kcf=OKtu`8NyV;ZT>?U zZtAGbpOke>9kuzBGS1XdoBv2QGIiAEKa%OD?p$H4l5wd>RJX_Kg3pO$4NQM*1PcbY`)`iwkb61D5I^0Z0RuFuL(O`^7YPX25X zwcT^lGC<&Oj-A@>c^P05wcYcwhDp>PK9TiJqW zGM&k&l}oafq9Ace_EXe7^HW)@$RR$HYYnnf%lcfFF_qY4+TSYgt)QkhmsmE7HVu*-nuUs2`JYHoPInD4iz0ktK?L^!Y}vQS@4^ zoAOmf)iS@8=M`1T{6Su0GUg~h%1%QmWhKJD!s5)^a^f&gI)lVda<-!GnLo>Q265^B zDz`8hrTeSgZR)6W@5on79hL4Kd5Fn~?>Bke&|%HP#*E)(q)Q79W>&RqS9B(` zy5%*KPIWw(S|iIeT)A{BM;vo%s5MRMQ1V-ERUJgspxiQ zk|jgYADN9T9ZlNZ{dQ)GrH`UNGF_HDlfG+pFf+qaqUcO!mSv?$UqIK=vQ5#M%+{7y zO|rH=nAy&9RMDBt4wg$M{TKc^S#Byili9`M{rtU$<*upw3eVAdS*)Xs{C&ISzVk^- zbwxH;AB)4JoRIs@zLutnY_0*8R*LkjftDu~Rm>V{@xDeMZW&?fhIFl#HQX}Zq^_GH zvqo5^n3USGe%44!iAn9-CS;9zD3sBb`KFHUa*Vb-V-mH&v6jsy-OFj5HO{hIQS+<` zmV+jp>ex7IqUD&P=2=rM=S{L>L&a&9TZ(#Q&9MBT=r?Dv#ecL>O7_yrA+s#iOq#x~ zLsqFJNl}lixt1(Nzd7ewdMUab@|0zmLAZO~Cu^Z4-=qoa27x@Kw6A+L&{WgkzV0Kk z7FlMR)Cgs^*z$j|ci-_*6@A0-XOoBSIA=n3h)7ij@P?}!Kz=}STg zO{t-Uj(|v$4$=uR6cJF7rc@&!2Be7+^qJqx?CkF4<^9~(`&`fa-uLId`6KLie{-gt zIem6_y3ki4^#VV1n=53A86G&>ZHdtL(W3+BxUCjy8#N(tuG>Z?z8{?Dwnr*endf$t z3C^g~l?866nF?{mHd6u@x?PYdJ<&p^1}s}AL@a$0Vc z({ihwmRsuvpSq`4$*i91-0nHlbDi5`sZ?dXTPYK7-^XsS6kX08+V_c5d7n6yx5=rz zEpF;iwj3*Oo0~fm-z#o&t1JW~a=Tj{q0+b+fjiy&q!tD4bqkeR9k|~uUutXMA-7FZ z`vQ-+xebHz;5qZLzyi1OLg(UV1Qxp0ms%8f%B{83>cBH@v!%8Mo^x9%wJ-33+Y6~< zffwDhw|NOTyD0FITUDtGfmhucNIh$F&COrxYPsufF+vlT76smL>mzj`@V46ssb_8O zxXqBdTJA@;#X?JyE(hLq+a>h*nqz_Y-EIkWYIr^Hf!jl&CKav+K6EP;!WD`GAIt4% zTt>IRr*3#SYXh#71gaop@decsTFum$i#~UHKx1u$Lf1YCeC8G|Qu;>!9{AiXStxZO zsJqa#2B1MgIo&|-ana{aDCoIcmJ|;9Rc_PPK9vK1b=sf3kZpi{!3(E0yl~^stMYK) zq%uJ--1zecqPQML#b(^ymGkkqk2KjjOdZ)vQRa!cx1U_0d(q0=q*1^O%M zySzoGTOJDxQoMw2&{&AlMCw>zgc2b1OXR-5C?#I%SYVveO{jU)zQ6=!gw(OX6sO)z zQ>-io>!EyyG-ZKQiSm}RUTSxZj>%c(7c`zalzys1VArM2)5 z?yt<^qHXX97@*`c;)ZjtN2C2@$gOy!Um)i_cj!F6A zp~{z1wb~9-u1Wc~eOtLFHKojO<+)UB+jkV#_xN~e-}Y*`5sIf&#kTJ%)unvfj#L^- z-6%IoX)ViM|BlrWQp;W)%IZ9ipzHJvMkwR;R4hvqW!0-OR{$=RQV}Xm5Z)I#$ z@Dk-26Q6IhRB4b2DfxD^RPmQ8QSy}psogb}DSf3XcUa*t%Et$(uzCS&9t+JR4;p_~{T4lY61tqt3{Ycp+V%|BeUDqimr8bsduUwLv z7yPkez7K84LS@QUw|t^hW153P{qlo1D+8GL{(7@AmdDuVP&O-5ney=PuD=IvRu&1t zS;=N)tq|_En&z@g=p<92P)Rz(z7?v=Vt0k^g>Rs-hg=AbzMGX&sjQ$aiu)L-bsmDF z?-r$s)ZC!0PW!s8N+TA7Hf#yrs&rr~#6#)*>upLT7gBoe3f`tXkSPxZf2uqeDdA4r z4yDpqD6f#E+@TC$f;{V^oyvPm1t=)91n*K7ImC7=>l|WxluI&J6uei79cRyTzp{&| z01fGsZuv|($HYtcOz|DhQnF_Z2b4%IR+j_HTqd}-I23$PIpdJ>u=2G-%ELELEZ$QRXwvN4M6T4?e2AVB$S-OdQ_}l%UK@!N-+W6QKmi zvqULSBA9qzpHSk3pg&J2eVMZHH{}A*31ujg72hgXqMT4NnV>%}1s5upm~v2BwIa!b#-~At>Rb(w>Rua#C5&1iAbgd`j8E#9Mn>IVx46oL0W!De6=Q#RTX zKexsOWrBIlPVyN3ApD^JH_9WSe5Oj1ZFNZx`9>Ka z)i>m#vRCTekZ%F+?!Wwc(X~>1!rycaath8V%WaI3za*m1j;ALg)6j+Xro-0cG z9FP@F?oEG_LFvi_>-|yiRb?;}uk|%$gb=KiYsxexp64}X8DEa}OK!+_%4RN>%lFDb zu^eov*OdYx$mP0nm5JwaU3tWpqq!^&xuMja3N?eeYz(=n%;sYI&)dpMCM)at+e!hC zp|G$L{DWfVvgN2Q1s5xQnDTJ5+?^pmDucPu&%^dpy(@J*U_vO+xf22xJ6)% z`(jVT$JqlVo23MmC=ZmcnfP|}v)qm%dt47GQEE-&bxDi-Dde%zOzLUK6D3H>CG@G1 zC{&o{8Tw3F&V>u7dxt(}dD>=!+61#f+n^UB#%F`twY6dO(BG9JmJ8Ige214x2~#0~ z^-!w36oU0os<=*vdKM6P{!przO#B(&E2RRH6~pt6S4wqTtZ$vrKa@H`WBN9tf;`~* z0rtXwD!wdMXi<7L3q|T|slZT+x}2%Na%xI+sEfLZ$IzLGbc?HcNyK3P>8d8qfIR0Q z|3+_xx~j98@^I}px`w)`+k_tW?i#A9=Y%RR?jMTP8%#O4+8gKF6V+=bib)lut3oWZwlgbY*r}{~K6k1*lbStY@ zgkX+tW%Yp&%+al^{=voO=vG$C&f#r0euY zB?NPHYpb4fc^g(_EcLIWHWq?8x^>hJLNG_Su9_?ab9C#eeYw~i-TLZi5ra9pcEKFo z2I_PXgE_hl)n!6E(vJH#QrAhH@^7qe6>72aOz4~HF`=(Qz6$kGzY&7Dy-lQGZm+L; zSHxg8Z&N9l&D%^0X7e^zUy774f47Ac%-{8sg892GRgZbRUtq>=D=C<<+gb`{?6y%~ z7b#(mZd#q*u!XuYn3GJYc<)V9{8&q?o?uG`btEHZV zhN}C-a(N*EC_+8TWX0>~kt#wxC1O>wOG6{o3qp11S4u~!SD6aQRQh4KD79F`V4h=? z`a}qhBvJIsFre*)mf0C3EJ`Iphp3`eZzg_L8KXAlF?Nm;t9IludbZ{n7OVE*F?MDg zs}?Y2j#tHx3&fu|gx1~c(K8>mj=!jtQE3mc^7 z3Vj#qg9fP!gu09cEn~9cL1VqB)`{4HtlnXR)g3~sT2}HOtR54}>kT?1^m%8{RW4MR z)}G2GA8M9^N99!VAEK5ODxLtUBUCsYL_Z$SQa;KC#R)aCf_e%a9|IaCbao_YnozA# zpk+d>#(_TNqUXuO!iK1)q(+AgRc}j82^*%CO3e#Oz;x4;!xfF!A%&cho*y zY-=2$R#*-xtth_i#;_48yoU3-(zv-b-c^sYSfQmsi@7yMsrQ-k=o$6)u+i#csn5bP z)!(HG!roV1RzNP0@|&X)!_D!(hu&$h>_Ragwxdwn!st+_h@9v&A}6UMS&WamN$PBel#|rG4l%2Gl*d@VSk)pP!%3Nc zhFR4MLfe@fw+^d%P3Gc-tm-cgxlC3otc0H6JwI73VzQ#m5xau3)IqBtX2rgd>6UDD zHd7vYI6(=|R#R6)3}l8+Rco%{`e=Ij@abx((2~eX;WN|$LSa*?htE`J3TgwNM_9&9{vScet8ZBn3Th7tEJ(5WQls z3$7TX*cHQKTP{@1LYFuwFm$Q<1}mM9f_&ANiI0M1YAaDQ7zNAJXqi$$%hjP=xJKGT zeT6!T$%@}hs~5gPogiXY$5aeksV))n8U@-d)RpOi(9>Q%Xr+3CiJyC~l=Xx&_?7CL zA3-nik+o9wlWIg`0bKaYaX++QrN+ouiLy!^#Ke1dwMu`aPUKRetW#Gz#MY~anE2N5 ziLG?^cG0;mcEv?2=o9rc&jm&JdaIjkDU}FcpYSbG7e}`Y|I|UdYixIrfA~(RsiVWg z_ekxg=L`p=-lIAwRd;ei_#r0SRqIh9xN0?O9GBYHuv2(})YgW*!#{Ugu1LlXHS|+Y zN$qPmDEze4)`p|Q&#D($YxD57p_9VDRKF8CH8h9nE)&1odrob+9(p$q!Cm5WYNU`7 z`c~+9b&^oEF0;ZfsO>jE$~ow#6?x&`s6#&HdJ)mrjviq$M)l7%w9;(&0K`uPyBh{CQ=lP4; zL&oSgwyBv8vB&C%OnC@5y&e8UT_v=}<97H{^?=ZaRL|5FpF#;RgW+!Yb2V@~Xb#om z@ZZ$f9X6GQm#T?7ZBirtR4eSVsceLcRv=X+LeVmI+hVmMu;#hPrp6J5wuvbZHE!V- z;i0YB3o*Ed)GoqP+r(6CfjdKBc?Gb8TJ2RrHc8$r3-W)V3qK4M~Fr=iPafr{2sHtTOMaAbu z)Y9r7;jtm{Ya{AvLxkqXZ;xo8trglAzc-?hc1b8J{!ql5TG3Hhj?ScvKNI1r)jtNZ zqE+!1BbsTKj)V9fvxW8(6W>x>XumQQq9H48M6}TUbV%u^;R5?|ep(}@LKOe*y$C<8 zg^bllt+ehUHm3fwh}POl2er{oa$)a!xh`$BXF?5`Ab&XTfjrx46;6Qoez(0=%}LFf za`2pG0jRy!PG}Xq-_u?T6*@>`{#vZiSsL@#(wGVflpdgU6N1tMG$;*9hgt`SamGvU zp!MY`S-*5}>X$%mI4^-6-vhOI4k-h*e1}+&c38xqeL-505R?}pONX8hb!vNW>{!o}*+TPtDWSA2am$8)K^n&Y`t zU(Njs)&_Qex1Ux;2=3_i)9NwtySDwb7Cgp!u%8yml!q@&jg0KCB{K0dxdB=?CVnq= zfYw(oSE3BiCh(MO-44_iiREBq4b+axl%8micFG~;VC^OoZ_!|d%Q?R6&JzIj?FCO&%RYmQGX=WBT^ z#<$e@+E$(mJ&JCNT%aA`%dxgE&>(+$O+ueqX3$^abX*S$HP?#}<0UN8sxa}=7in#o zc+D1Ti4L(P+Hx7&61-Gf&xNm~N0!OgwleWN^R)w9tShVzQ#Q z={GyC({2d8)9_T}I_=z5D9?(?fDR{G%`<=anE!u1*J|?zki@4aD-lDbt9#ZoC=T@gRwp9yZ zF<2`K+NyPuIv=@B%VpxV-mZuw>!0lHy|a%>Z4s+3nre+ zZfz}(;U!V&mOa`gA-H1SqwVCP%T=d3C3QJ+pY|gcu9AH#@__b`$%^Y_-=%sXV$32u(k+LyvLg0d9Zz&ftHQ+hyN9(1A#43ym&01B(6n(S z_^?}80DfqnTahu#zdp?XTkgC;llxY{-zqV`G6dz<)FAqn( zHOWzjYdh*#7e`fX?oghxY|=A(>B{=ajof4j%I4ao4zWWGPq>}1)l=C&Oo{qj>cp_+ z0Yy^qN#v6@x%Z3nL8qh^);6Q;O72z8L0y_Rx5$`MrmTxF)hWs@>*Ox-BEYLxSd`dY@|ldRuJ6{NI?`c~@m zly*^KWdrAO3N*>?Ek>~~V|Sy{W_ zQ@nOT8|;D-?1DB(DIKhXqwMmI8XWb#ECD{Xc-^fI=MAQu#doBO{sGCyo zsnc6FvCl@_k%IMS7pyV6>UL_3?b_9()Ud0YlVERSkHP-MuKtU1UF`atu0OjrIH`_P z%HNz~6P*NW)1FIM+N3DEyqAPJs6xJDUH-JraEL`s&U4T;-{uare%$n7q|8&9+C0D^ z27UH}>_O-=yKb)hs)AkDXiwM$`!l-&n>q^iXZF|)x(Blhm2*@mec~r$$}Bq09JMOS zuF@{eEycEaDixcqkFsmCe}Lsj8C&<>wy3*OyWd@c?@6tHcYoAX&($S~~ zQiVxHQ9o-d*wF%xco(7`YFnf(M?KQ^N!^TktQAT96!lbl$VHE8&!c|Ter1BA+65|f z3yxzs_;5nH<%NcstoUStCwifk6)~^2rBT0Wl|`&ZTbJnHv^RJRHE&Czf7e9`C2#?}1 zoIpn%{b?B{EAEu7v^TyXv^%3ubR~S?M<{O&EpKpiWjy~b*O1O5qpRRe_qf{8`@7Zf z4WakzO^B|J@qLI{Q5Mam1|Gn~$HZ&+eI^+5^!G1tHW!BZ!mr^K4zZdT@_>6tZO3Fq z*Tm}`Vy|Pz&$+#h9Y5#x26p_MTW!3JEtiMfqvuA~#g~PC_n8}A4;Kp^_E{WVA3qXO z%TDrWfc<`g(&wN$F}2i&IFcz3jceK0qY+-kV{8s`W6bZO@@G7vUpB;&Aik~o9@xt1p z%x3td(CXSpqMKp2pP>XRelV_)TXSp*{XT9?hvwKz2#$>{aCIU0M1KohS7^igjokdO zkI?S-$8_++t(kJrXOjz~TjE7Lh88tD8{G=mE@9=NrBrQjqEOwY>jT<3tucS6HRkWM z#sZwySRgL{5c1?BBp5f9@L&`bm^Odin6UCU|ZAiioSj?tBrM%T7-0%r3SBT*mSPE_?1kb=ya62yg z49q7y6^{^tr(PX#Hj@?gsHewt!U<1VF7#f>?i%ShUCKYaJ3b-=&%k=(uxC6aJOk^8 z7=V`$&~2!*ROM z2ww%ggU2%QeZdH)5i-JQgp6<+A@4ekkWq45+4{C88tou&HB%}u!V`^gkheNk>Wf~U zXuN~G)d^CUB0bS02YIVjyq?uM4___s=b44K@HXI|$``cB!h3lPeHd0PCL7oO6?!6% zs&-5co-EY0zfVjqo-gGWGYzk0f-&KVrsL~U{xLJ~Z%l>wlkj)T%*6Nw^m*D+E(1ZE7K+0QPhQDO8qN2!zm=*ZGRL7WA z*zI?yrxhKiv9z*;|@Or7V4jXV0Q!#-nqK)_*lNI;uIWT4;zAR#J z&HM?zDPqlf9*O=0-xo1BH{FDP6@oL)P1x-v)TNlf74#-tRtU~GH{lvWa0R^yHxhy? z=uNn_5L`iT!m(TyxPsn z20b74+Fq=_f+%Qe%zo_6g}qWMRX>Pd6Po>&N>xwj*_8P)2XPajtJyy2Abv|Ia|LLm zkm3%SD725IoG$bhi!Bg3LeH}f;*~-luw1qZO=Kx;ZRpr!2`&8yi_JkZ-B-jM!s;Ka z4Y(}vL5Fb@p(GvDS;*Z4WeK&wpyfheG3^to&T{!$Xd+v#MCdoBT7UBL!iPaF;X)s> z<$4N*Ac&0>`oaaYKxn!O+A36um3~slmyXZF_WPvq?KVi945o*R# zHWs?eQU(bvU@6}cs>S+cu+Ya$lY}nudJ5HHZP+hVhUq#J---`oZwspn9X;z}4&yhO ziV58PIf~l~!JUkwIGD+bSJ&Pea}>vj7~BgwhEqhWPp{oE$1uGzpzSLraA)W^9>`^Z z?dUkp5rXZg054~Pv1>sm@aIwoVou<@TxbYxtzl{Ib6I8ot4WRt~!s^Bt~C z?{LHMZ{@HbV!p?9g+3hibIf(ziixj>>$roIg0AC8E;N7olb9PgS?X7+bg9yqn|OuL zlf^EvxAA5vm1>Wa5qk$86Z(E}+1O%yPRfhwid2=@AMp=Dn;s%8)r2ZTszvP2c&$*2;I^?3@ph>IssmCXv5)ZQLJfnXVjtrR zQgKw*q>^Kw;2(uYau0a0#${wygVhcfc%NykfK-fq=it2xa?R&hD%MO znj|$l)`gJ&U? z$z8D=+_|hm>U%@Yvhe6d3aUcrOZuiU2q@MF1U|r7u?6J zN}96ra`3Rh*JG=aHca%hUW5H(s*+%)Vgh$HtC0jDxT{%>bmX$YUa=Y(!c=I1y<&Az zvkF_c`1<>~F0YYTAz%9Z=ruB)3oV~^D)u#!EA>NcO)_8V=h!#M4WZw=K98+K9#my{ zqTjo|imgkst8oqM_B^&eX+eLh4~{YmyI4>IvR`OZcP*{~DU!Mz*^pe4@`!tr+-9<( zIx{N9H6e)p+9zyB<*9thNTJnKO-Zg$ELAho{xzPmbDP)Vnv+bSo;22im^FFq2pt7} zWF`|I^L}I#6YRa~$N7;vBIWJ3n#HvumtTkF=Agp2+QhXckC?2eO2=k#ZAgadjTUQifGVuD_(ZV4l!r94ptnIdIDkz^4U zdOoDJYb5clYtJQ$v}b}De1qenNN1t>@gw45iQ}BT1k#Vi_%Sts43l~un?OcOmG6*9 zCP}>?mqeB^6%%+alT1G1G4_q7$z+#^!Bd(Pa!|zJ8%L9L;5kAPIt zvOWmD{bEvF8i`<M755eyBy^lU34M#aD+K$qj%2JYM)z4ANw!eT zIB&BPnJLs|+-;>3Ss-+H+Pt{VWSP+UX^W|L3BjJB3pvQd_Y7S~p@?mo5`emrvqGOu zDN(wTZ-w4{+XtnS>q1#?dr{pLippLY*Nv2Iz}k+xWv`?1Vameq57->nowO9n8L)$@ zgGf27|NgihBtmF>|07h1LZAA69+yEn2_5$h56B=rg=W)FiS#4`g|^rIBCaPHA#|nx z*Kxhb7^W275Xp{v`=V#qJnypV`90pOLJZNkW)gp zmMW+Z`AVq5gqv}F$yFvRu0P=?syiaq+wXZ?Kk`86J-^~|{fI(;^#!g%?zVUy*Pplx zy=qZhu0N?Ov?H!GZUFHSDvEQ7A3%bI?hGaI14%TK75_1`3{{GVl`l&_Aw#+f)h|mw zAw&9bq3JU%XfT;7w4Q0d(9%T^E0R*EZVIg#S}}eIdBJ2w+w-f(4<+Mk(k9UT1pH#^ zP|~asw21E&hmruM9Q^$n9~z4i8kGo25}KUoMb(9=&;m~_hmp}j@YM2c+p$q;OEsL# z;LD+qS%ahAAv>80EW4)M{#`O(s$u*{^0W!WirGA5kW8n2$or%`TMoAO=J8`leJ1*?v-E!QSmMi+#l9hSEaCUB zi!Jcvb(|DDc^xkWPhKa8n(@2m6GmG6*E@}-`~P9cw^y2j^_+?J4w6f=uwS+%XBU|C1UXGdK$UFl*K-QK8;)zF?f14o!l17!PBeh%(;SpAYhe6bvPsAq($`}iQQAUEKIZ3>icHXh17qfs zmP~~h<})lHF*3F_W&xS#5X&PQWNcte9!YNpdGdL33(0#@)h&z2N~wV{OUP5HtuaeU zWP4c7O7F1JyNqNB(;U>$vw_PpvX`ltz`ToPQflk*}5&-j*; zD`;0rr$I2jnAC#A1a6=74-e z&I#@JD^Wfomznagv7&*?I&wp((u%9)){(nRIe0|bT$lCak)7|Qt3?ed)7ydi2s*Dv4*Mp!0 zx<{dNB=(aAOjca7a$Ed<(u|33ai028zA$&Pn!k+j8#4niTLbWyK z5DAbv5`UQVW6HvCmUonl7lQM_qhvl)A%<~%lx*cf(1S;b_!R;Sqvt5uD`L?0qvWYr z4#vxIQYr*v_c(D4VfDnYDIgz6?TIfWr={wnB7#G0 z?K>5Jl3e3LXBS)0X%ZR6V)PrOyaG;>ZcK$3YIcSU5P~h|3^^hMtvy4En6hz|{yyjo zIVa@X-;3%pQx5J-N9z~lrii^mN9z~lzKC6*8hxrF9i3!pOcqDFn{S+Vy3WKTVVdu3z8@V^Ot@jGlXFN((h!6 z5X@hCNj5O?tK?F$iwSzZK|(1x#A6ul@Vp}Dh2Rd)D{@B&?(n=KzY4(}o>xRqg}M}C zxWn_xX^--XR1-0{!}E&NW`gp36JC+lA_nFCK{AD)gg?k$At?P1@wXR?J@gQV zlx3V!meFG!QhMs|IixJBk7t5Dt8OW)&vr;zUdNqzU0}~wL9fNc>r&CFgo=7YkrLYO zt+#eaSxN7}1SMEdB|So_RYD~_Q7i{NSXo~y1i4hvQ5Rl1^k7vzor#xT&8hTidLNMz zmaDE`a!6UjDP;})x^v4b)1- z2x|R?-c|@ouceD)F@jpx)?-Bsda#aDPtov&v40TF}Q=FRlX?mQ*THgB$P>j|&{jXvN936` zE1{kKfQgT~_WGY(s32v2LVLY@Ur3pQK2KSi;ICI_g7VU$0`&SqFjqQIkL<_ujA*+y zAy{84^md&dQK9-pCSF3geox9bAzXLu&q~1S+wMw;&`mD7NBN8@UCK8hQlHN>2Q_N> zc|w%_fXRwZ);XIHt*;!wOaIgFn}is>(?FId+m7P(OfJ-;&W(h4eZU}y%|Rcxc$ko+ z-xM1k2YFYh znb=iF!+D;O)-nm{dNn5A_HKF;9%J`gyXozj_z3Byqjz`-ujSNB?5<}DS;x0X?BTTD zGxQBC26=W!%+QONiY+jfdg`@DKrY1=7)!nMc0v&At%o|q`Z(p;S3kmHd1zzU+StDO z8L5r2{q#z7e+1`lfA(Hod4SV$1N50J#?NgA=!=+mi=0yq)a#GrxeQB=NF1nF8U=zj zq$Up0eVF*1p<#M!CM%jZAj2|D&lUQJ>TP`~Pf6z!d8@1+^eUrmxx7*)>i$xWMNH(oqWrvbMzikca;VDWGNRlPv0u_y|PHZAoW67tUr@_r7Y1ajj`otkMrleWk3{uSq>o*64pqSnP@2ZyDlC$80N zbJ6i~Dt@g#l8Ju0E0%sHO()|ar4^x0K2*L!pV09}HG#)|f1_XGI^As|*FLHZ`qx4# z-8*j7TTkM#{g} zb-->tKnU&y?baihiY+knc8{LOV`%hZ&?iD))7I|Mzh<(cdSyVfr$BjpE8b%}BU6;x zJL2|;?VaC!-K(!+DWPUB1NQ3MnCR!+Xv%&1AsHJHwO{|jA@-SmRmR?rI-uWoh#k~l z@EH4s(L*|&00V7DULgw-59zT&?jiY!hjq89JO*tzqSxf2bpg?Z=)Xc`^x`#%c11<4 zNjxfJM|*goV|pjKoPv()Ev7-9bZ$)Y#>4_Wj41~{weCzT)YF8Xj5$ozm#4(BQ%_M1 z73$73O6W-r#KsGK7<`UuijY6kETL6Q3xtxHRx%Y^pbdrk4Iya5=lUa_5=BK_Of1qT zO@~?+TcAa!^fOFZXl?5?iKq1;GkA;Uwzi-%y5~$Tzo`*b&gj`f?@skWXZ0IQ^U#Ks zHxke4b7nzGJ_^3nS2N{c|Ezn7U+No~tT;03A=M5ZV?BRPFJ$8P%g^bTh2TEzdHsP9 z+^4;u|0$Pyp7@pS`2m#2x8iT~aZFa!vldGFMz1ypV!S85(Yp#kPh8adG11=&qht45 zeWZv%PkgJNVS@2#L6`I!T)23(nsiC8G#B#B!4Ih}>xn{NH&TjqN}9uw+=Zs?VG47H@S zzM)r`&+5Xq%^P~I5N!Q7^ruXGJ>1ll1uP}4i+{{by#fp*AN2WowmjD){-{6WLPhx=0eAHZ3t0@S*iE*Ma-K%C4HbT5wV)|p8o@V4HKU&^0U58r2Ker+oYfMy&~n#!5tEQ z){lzV68iM2L_aBF>uAkN^a~;e&kY~ySD5&7!-x895gV2}FYb~46H_*RKX)_Y3zw!L&#;;-O5k&`b>qE zs=*fYRR5DH2c2!`NmYsNZ|R=M0&DY`?W#b5W7Tv028(5*qisNImq5yF)MRO3(sSK+ zDTvO{ub-IoLQfSM*sNdDOMNF(HmWl1huBy8112l#=y|vDpL#|gokQ*^$KX4Dn2fY#O|Z1{*+ zWb3I^twao-QxYSTiyj}=BobqjkbB4nNxCs$1uLCxRk~3i1V;8(HUd?MgCGARF8Do+V9ML@uw>1#6 zqOO%BUdHp;ED<>D1k#i+`}bE#_7ma+Xw z)r^@As^L^ZP2;JS9tu<0=!J>1<4DY&?>&f}}T%+8gc5H8HkG-AHO`6ma2%@A;tS#vLwHrME{w zbEEwyY&q00!y}-Dk2G`{1ZSN7#w8}$!rhbojik-CT6-sVFfzFCjUGNI&=|mE#n0$*GthX4#}NDi zQIL@%1iwHOY~*v%JiP)!j8C}eZ^6up3pI8y!Hhw#fKY>066&eI2njO|$mJR&gd3Nb zcpD;&4qKpRRy3tfjpRsUfKV(|l<`2QB~`ScZ?&~yV^WOKTFQcAjaa5)OT{95ymE|`^oPbXfLF+ zB2?yC@+hMbQw};!N6%=ZjnI>J|UK(M9M&7D^doEE2j;HO}}+2$ex8 z6AZU~yoA#|aLOdZQ|JjzIoW8zl!r#o@Jz`z0{278Ip|o61};;KPE2{I<&4THQ;fSJ zHZHP3%2YWbVT4R~kYDmlo7@}Fxvw8c4a;qoVwXRir(>5I;V2jSL|VoawX9#Vqv|Bj zw&kfrjA@-RSL#Amhm?6zWildD=1ZY6sVR9TxujS6%%ODQlm4I6}P5a@lvCgh(Y`EjrWD1efdVV5VSAfSS|$Z%QyBiS=m_1 zH;xFwSjsm}3LQxPAZeL#Ug&)Cn#5(s6(Km2TW;JEf-|}0#sj8e3-s9vqxAu35vWe` zDkED6`fQD{P6+yJt#MTd`s^d)sSxzpdL#27&jtGIV?(kFg9J2eIl0vrCoj-wBJD|YVJ2I$Dr0QdfrVr zV0bd|)5cPn(%U?1Y>=uGd)C+^Q!413aYSlpzG_dr6vd5HoD4`jd8ItK&o48u`ybvRM1^xlGL<-d&UfzvUltQW0BMls`WCZ zf=Y~SQnLdd8lTCOZDSuBMN%PD-^!EY~3T$IZLBAVy znfO?GY4|(DN{w)-F)6Q%Bqr!x`UwlOyVPu|p)zGbl8ZTsiJvpLnMDpU#k}MY(@eh; z_PSt`&)~ahd5@m!6El&;Zd#h<)9VNG2^VSfVO9z;Uy4{*4y3fjZp{v$aw~*9Z(7O> zpGH&m5IXlx3XSz=;$woC*&+tz>E;0;C{H(Q7eOvo)Lw;HAk$4&y6#lEJqD%gW+YF^ zO4rRbLQuMHe!|2{*PU8xm_;Hblx~>SPO>(TtPgi37*6HcV^E%9*5)ZK1BcH~G0b;` zpghAI%f!nw%taywtu@VaLQtM*Za8Ict!Wl8-DIVkPNmypP`YWJ;VD_^rdjng?|CTQ zG;1+I>0SY**^CQMHRv^$*+Gb1ftj&FFi*$b94Z8JB;3t0LNFK3-JB`}GtS)2`9d&@ z#@$@SMax?p=WcEjG2M4cpoe+TwjBMGfrojDiGRAp!~9mn;0eEnc}EDI>3f*J2*LAy z5AzQpc*5^t8fT!jIc!FOhv|6i@GvW}SQbih@l%~+Wz5zhw#(J1QO3;RxzJj#Nbxjh zFcl*B{f7!pd3u@0#d5wb7gaCwf?UoMd7BTou+fBmmd1Q4RIQ08s${+r>e6L%N@Y{| zg4cRLmmO3dLgfeTPpM*76skGs2-Rysr)bYtHR}mor85+(I@PS2>C0kS2x?Z%?7&mf z7FkdYGgj*Jlp1DNrb7BDgTNZEnS*3(w)VO?&LQ@O>2a3TljgEUt8La~;>*=Bx64?g z(0b+xF8Z6gKB&I=jnJ9iXH)8%x42Md)RfTr<|CmZ8f##_;-V!q3TD@?^)==rLfG)B(Z z+V^$Jn`TQc7V|MXJH(opW4Q3~F?UmZ&1FJoM}m$BU17Q{m;0Q?9y1lvZ#SM>qp9h3 z-d0{oN^`S36OXkp#jH*QzfjQ9e8VBu+H5D6+kxAfu_6X3+nM=H*=SUw-8KA8?+Z`@ zKkw;azQzPw|4H1z^kL%V1)2#mHd_leyF0`}%*isgMhi3NIK;x8MqQ-2i^a0gbJeI3 z=@g4HzZJ13*r*ZZ6pJ>06S1wts1fZHi!rNy1#QTp&&G@zF;1~q(_h3a$fyzP6pJ%^ zh*&hOOPo_I-n5F?3|g0Xr&xlyM#Q?)x+FNo63vq$){NFA(J7W>{v=|4v@S_zxv!zt z{G2w~DP^)*gT=DY9hx%PY$Vjc)lW?^LxlpcpPFiR6RJo2)HL%wq3@~QGCvghLibZU znj3@;(7jtH^Qe$UbLnhe5khpiF6I+kN~*4=`3>*gy)>6}r+RiX>#!J%muD&6%p@kh zAIuOb`F#DJ=13Nshe8&+r1mr`U1V)XWk-_KUglgT$mOxw+g!y|Ous`v0QE61*DQDXXRSHA|Ryt@}H*Z-8lj%iF%j z#exQyRhXcjyK4+EeWmKA4l+ZTcrL@tOd0b;Z<`^PAeS6EGpA|laB~t9U+?cYmG_Q0 zlf|;o=a$x~@0cr@3K4wM&j>T}GVim@2^~`3HFKGuE*3P>oXulwuER*DJV%=OES7~j zSW56nbB9C9QBEmGnMXv*MJO(Hl$m=4%7br!PoZ)=QjRvyvKVi}=zoY^VKLeU)HQXq z`GZgeORv;Sr<7yN7a~^4CBrht^t{U2$J#K~DdkwR8jEG2Tr@0oteJg{^(SllSaUrS ze-1m=+{wgi_K&$7VX-WvyBIab%KazIkQyfiv!}+Jj`O7^m|w8v_{^h;<`pL1^H%c~ zk6EVX)6bLG#-}nhe`IQw`GUpfqdM=8OPyk-e+RXmkIF<&Nu6q1Zn4%PuRar^rQ_cEC#h!&@%IqL(1i5 zn>)5O-Lc$CGl7Y>VYN9*#%83hHFq%4Z%>FRQP!L1c?`#T&QIN7UKaYcOs>lY^QK&G z35_|9>y7`QUs=j5G~8u%>PFN2!B&?S$|vR=E)(FCh_s+h=7eHf%8unW zne(MSPTgW|lG>KK)hyz|zVthtJ~b~01tsrK{nWfBQz~e?`G^a3EO#_@huPvsRsw1} zrYLo%IhBciHoi};%Pw<~P-&(G?K1IQNNGh6GtZ^&GDiyaZG0_tk9kh0VyjzJ<~^RW z4%J>WTWD~DpHlak4}?08f0p{0nR=h695(({>H#xXDCjNMw1X!4iN}6k;+l5E3>5lm ziJ5lXsdo#^k6Dbb_X4wkiC;yYFsnU)T=-Sw3A4h_JWsf)J7M|?{icDsFx?~_=#|Y0 zr>h=&46b@kn0()wpXfF!#cr52p4wY`!)z>653Cf?U~ zoR+&|W{Q;X#P5!Ij0r|ha@r5(d8T5^;A!cWV)K$v*Eyc3*eqe#3V z8Ppnb>63QPe9b`*%oYxMXhu2cvDsZ}XxcOLT_#@Z7f!W)VNPVREHumVUfK(Dme4TQ z@oB%Ac`_GzH_d4acxi59F}}sUG~ap-_2m1Pmrh%NJqBCAOEZI~Wc!zw=2jut0$!SX znD`d=()?P);GRyY>G>-wf!#4HHIMuT;&-r0&3jC|^irqN?J+35)O^ZQveHYJR8s*?-vT$%vyTzVf~yY`0HN-DgzsPG!TrP~!nG(^Y^ z)gR~l{{N);pZ@uuvGG6Kh2ws}@%8`N*x1_z_CK)aaTR->fBudI!TbF0f2H(mru<|5 z;T;S5cfG%`(Ld%7?^w{^y+1VKAJfA-7L@Rpeuj4}=wD3_M;6=h#c{3u&-?ti`9J;e z|7}0C^?>o8O8;7r<7*hJE@BS@uPtn!^Y3`)RXNBR*1Pkb(EdJs-qRXNoHgCHZ92ZT z?f2}pvLO4iuBahxiyN!0BI^H-(f_mbP_FIhX3yC<&;K{m{I$JB9iiWOI= z(o{@@zG^TM)`k7GbN@KL&vWKITz{c`4Z>^ZrR-^3MSWm9bwSYEwxbxlc3#S!=3iOL zzU?^YW`EySB5X~zt)3q*>}me{EPIKa`RuF%Jvk)?dKKQ`dp3H#`5#9AZdBOU^52gH z`#QDt=YPC5yTw7Rda!ZQsR?^cuZ#Kq?O*xZgDv&fzp(E9m3;o6rQg^CO8M*Gzvc$l z^)ASjUgOglI*Z|No8|D=@o4Dy`ajd>_9K^V+}fA2Z6klTPWk))`Mtrvx_w%7CT+w$LQ?W}JDqmgfk@Ye-Bp!{NOczXJvPI?aQ_ro|3-~4z;HbVMi$bj^kgx zz1(EAS~UvNzp4d)!~5Hpz36Ly&C`dEx4+}V+SQzu^>?p%l-KRIMX>DIG-zE8-CAAI zf0uXe4T734qWeY{w7NOGcHIBiU%R3?Y>#Ar$1&xmVJFWzRyPy zU#E_*=k$d1@Yls@T=6yNIDQ<*nB)77qqlh$G11-uS_6aK3C@RyGbSZj{!%ki~s-SKN-zK!s$7COA3(j@m`P@BBNiPx;9F>-8yr$8p^L-D^Ic{~C2X zXX9r({4d|)`1LhEpLZNlj;|q4+tK9jw&?#qr-7dTXZ>S;pI`g`@6zz|jsMJ9C0sMw zuDQgu(rS3;C>^UVs3hb+dd;t-_}|*gASI0af5+bdcGrlXS=nE^viS-0*eav^9XD}? z%-`p2|F2V%1lFJHqdYxb5bxpo!=RV`^Xtg5pY7MnwzbBuo$Iom|Lbes4~~0-@cB?W z-)2kL*~O}<_ILPME|31>YZtU{?mtiY*L?Wc!|WL)&yAmZ@VyGJ6@R}gyEfZJ7UagRVgIfy z$CQqF^4y?}uI$N<8~VBK|6=dWLL$ltDgr74Xb>F59mRzKF_DO%D9WZN4DVG{cZPNteCCOP%w{(WuL^SVEOc6z&huG&yMFRDIXWve>d&y?L(&(C+EB{^G; zXB}uy)RVK%=6=S^E@FBORvuzMaW6dwCXwRxiOD5_G_*|f*mgKJQe=ZMSeQQ111 zET2%R&>gamsWW)H{_s4`tj0dU2*6oQOW5KU)vM2uN@cHux_*`4PJ0|>tJy(7Dr_F-0br@)8>oNTRryHw%h9HM2Xe&ukch~ z#eW{E@=-OhUz_%t+sjhd*PrM4=b7)liici zRUB`53&u=#Pv@I$yH}1C>VEJ6eAa;H9`dsW`v|7u2x{_kBK@|X6FnlIt_c3SnCiIH zta`h0f05&u3+n{VUdOXy&W7B5(+-z?UXvqR7kpxczmb+P6@Q&2JnC4Umq#J|8e7m! z9M@R+Ns7HqUWVUbqGi;zQ{6Y_A*O1p>K z5j$^Qztz2Hm3*!^G+7+A>hm`}I(t+;OT3xNo_}=?H$(puk39#weQR2Ks2ZQ`V?uRp zUy}Vq@#cu}$I)Abs`*aQ9@8E=xQS>7yT@+ZQ>nfo&O2uf(9`hjQI6H0$gx_@sw$4X z{Z;Q8D%VBI7A5|1{if=m(%R=Q<+*i?RWqOpRil$y|0t>&s?gin_WrNtK@nePqeH}T z-JJV0xlYjKxNR_xYT>^>PiM^FCR3sIao}I;P@VJbj`z=7 zL!B2D$37$6YO9%4P-98A`K(IiBd#p0SLNuZJhxJ<&;&JRKO@So`k{SRdIlp~^_`1Y z!&J{8?d}wX{dPtB=L@P_MZ4c_+n;7ATg{9O5(yG>Oi+M_84f~3#DX+2c z-Vq1}q@(dUu>_4N%(qs$t!@Ga#*|JU^mC8bB z^>w6b{=Zt|;f)YBGF4*++aZrgj9vflto?4TEvwf>Y7L|OYFtvQrax~zd#Jjm{yUFq zpONypmikOzjpxc%y;@z}d*oV9^+tPtQ1-Ac;;gA_N2JxM-~M;Cx;53!Gsu~;#dEFd zPdDtLYP45r-=qJi^)5blNTuTqS zTf`Lp>Q9Yl;S-QQjzac2oOnRw#-9{%)cX>f+Y39houGIhLu0vMb)LoY$@x{ehWSL+ zYS4c*N8CCZtF~H_C(2T@&px>tQTH!5-^Ac_NArKj6HzMa^Pki~_1Fy<_cRtI?`MVm z@6w*eNcG3R1-t2~UgfG@q&|N?AfHaCxli<&>N6|s>fWg4N_&61)t_ZYI{Yl+n*RI>;)itxa7b)g*^hZFnT_y%e(A<=TRfS8VPG- zUif3%s#U@5YWRQCuim9m_vxzKTUS|jk6K;aDX;old&TXJTIFD0t*QHzGCAW5R?m;h zui8!Jrdm&VZr3vQ9^P=AXzg1|R37#D*Ufci^);n>!dN-)DBB)Kd2Uzw|HQA}np2-0 zsIm8Z^!(~os2VqJZD+Nf6l*Gt?l&9A@kDv9PrBLPRGz0(#pfDo#JIW2(%5==Rod6R z>PUOr+QFVyj750!4XJQ1CQGrmyuBUldG44cQi*r-G&a0PaInty%F*LSu&CAbAQAdU zTf}@lN5rfSl_koUDy{N&4;TKUnCo@cy03VW(+sRWr)r!O?@DoY!IXK*>sqy{{T-^C zF;O=eU&T>W$E9r557j+|eXhJATjqB67pj%in~>@%2wW;^)k3zz0QnSJ#knEh>9U_e z<+sz`w)V8Qv(-C|_R!nqph~xwrEJwJlr7r4`uZAZ>uI;9vX^qZob7!^)i6-rzu42N zyA1mss9Fgq+V32Nt+CWOqK3-fb%wBS_WA1hQT2Q^Z`$pDEUb=S{pRX!d5x$%)eNh6 z1gj(bMG59vjm<|Kohi@FJay)jZ<(s`&2Fpf{btQI_F;g?%|3&x-l9CJ?@>F*d#=WE z{(5}ANM&ysyWK+G^9pJ#q(H`$X~mfm*RQy~)Y$Tnyxx5iMI3RLT21v?t$OmW>{m2# zq~bGQ;}4(n3jZJHIQyCX*R;2fX;0My_s$vB}&?X{?T%Mj#ki`mJLUbU z^86Kdv$)~j-4R`pS{{O$hgM1|U)flNp1Rj(6nm&zXh|BrLCHLBMh zH$D76_p2}Q}J{ceJoVORBv0|uD9D`K0QIiw?C2oPdxTFk(8}IdmXw$rQd3+ zoNs=nT>Xxj-E%uzy@hhS(ElXoTjQu!{hv^so&S#NZ2o1q7z10_&f{hItW`a$SD#BN z-i%-Usm+39amFWs)qO+dCRQm1>nh*FQGG*w?xUXbbi_==nffe7J(E#)RbKh5?3hD@ z-j^p>TY4@?&jdNktG2Swt;)9F-`Su4sJUC+WvkCqgh&1DmB!}EdlUO7+RC=4vgfAm zW$dB<6I;AnQhom@o*r;{Z=&8gsrIXyS3m0zXG%SAmK|PU=-J?nu z9?sMVW507$Pn_&mQ+;`U?PHPsJtF%Z#7$e5?-Ut-c&F%gD=Xz!??e81oZE$pwF*Y6 zb%I0WjIUNE$`-NRe6ae8Znw`M)` zHYlSFn~kjiTMxZ0_S-_+A#OWXgsnjD0Q)ZZ?}EQ0^2tIuov=-1$=XzW2mUl{OR=qE zm)T3uo!CA^xgTLW%JTHjv3L;+BM1B>}N@x}I8-!h8pR(($O8*DD2V0)bc{a8@ zUFSY*Yjp>I6x&+e%V%RNz?P;5@asH?`}H9BgLx6Q0zHH;(Zir&2oHx{gJ|@ z&zh6@V0}Js&*t-`*ji)z6x$KzhtCh6A3i^Pe)tOc-Po35y9?W=*p9FT@GXFE0elPK zTL9m7{;Kr?w!M5HdmX;dxEtG2Y!)`Le}sL(hqB{*6t<<?=pN>;JX6f75J{ecLhEd6W@#-0-7vZ z+DV|BrGmjMT{2U$t7IR^A(A%z7;~n_@epJ6oLYRVtlMEWv{^G= z!jAN74+b{O0)OA!gC92hIsIWzENsk5nD_;c9me@?K3>H-6i)*)`_AU)*gf;6Apt6w(qd=m9P%*F4I>@ZHFhC2-T z&B;dhF3Yt{^Q}#*5OZqD1}#>$VJcsWUk-`oqE^Xh+per3T05PsE_^%xsvotPhyN+jWtgEl%`hdpZd!1Y9 z>*VpCW#jH{r?-`5Wy!Ki*th*ft2#=1@F8aQjK#X(8hxc~haE=vqOE!f`$3+UuQoMi zM~ox=zSIx!U+$~|t)&P;oY&SfJQIj=5$8qY7(Bbd znzdgy3QgfZ2LGGJG1UJ(c%Jef1z)TGrcsag$M30B^31*qj2*_u1HLzkWVuDMlpV_#yf#1X~ub&|_v4khf4vS-X={P)ef4bg{# z*>ag@JTB~9r+CG9hkKT2Md43?q4O8dH`W{G^9 zl0lL+z`-dTF$brJQU<4pQU<4pQU<4pQU<4pQU<4pQU<4pQU<4pQU<4pQpB$S3yM+( zr-)Jpr-)Jpr-)L-@5Bq%uu9BU^W(u$VYR>&DO>fWrn9J)wN(&?79e*yRJ$iVfMfX^H%rjGh*&cJZzu+<#&3(a%sJKJZN>*7Iu0V6#fme^bLI2$aky_T>M5%89ZzGHhC^~ z$H*d=o~By%_<^FJi> zUoPV;muZ)C&mxn(hd7Tqj)J9*aBwX@0q%C3kk??993Mpf93#x+$zn`sx#+kyrXU_)b z%%1NoVJ}aA(s@{Wt$wNV5^~$=yapb28YuBmhZih$fL&b(;!`@xPvIL%~_DRE&xb zfa6OAMcWF_a$UvvIm;zRo>{I+O;EJ$qmoa!b{K*4p8>mfIfT*+Hy#F;4>;_~H#ar- z3`}Ww9IVr`0(`@H8hqFJJ(zF(1TL^HyXxV%bayJ~bYEpl3nIYlqhdgPKms^?NFBF0 zt`yiYy@coY&4MQvw{%A%RTe@EH+BV=59sO+foGuG1&)&bvC==*&Ec8hu4iuZEkxRF zz9mSz&G#_kZ}Y82{B6Fqh_lT%)y4TX-xhZXi>v*dI~*;BcaXH=(z^E6G2oNbXd*^wpFW@+O4lJ{tteP1+wMn3J?&&a1e`oPix zA5StTPd@4i*NWDi_Z&0F%(()tY;w)B4x?*h{g}BK_Ayh;vo5V=Fn%XZ>x^F`c4;Zy zYIv`r#2Bwjix?*C;J$Z&orCMbbH}h#W?NNHGdnNcTVf6YcNhn1clRdAz9HtaKJa`z zV3@auwzuUZFV~+)p6Sg-AD+hR=|6XQ+?$6w4{}V>#26yxg|865)!pBCXCUVb-U69_ zffjjBLO_8ge)VLBcC|?K*ye?TnFVzNaHfXVaW9wGevxdABH0=)%=LAdOPAw`E=H1c zvoNKewvvf&&R?k|E?N_?L5^J;FkTIEh@Q_`s$9vW>b>uIJ|JCxv*qppmnHlz>*YQe zqjdd_14t#>zf7(x()C9l!i<1(aVB7mEInOc(K(Kb;`9Qx?_8wAJ9sSy}$i7T#;9@kNLYRrxcOd?NdYOTN=)NL)=?Lh4=fnsE9rHi&2 z7?`f_3*&Fg7r24(XS^S8#M1M6uu8czr;F~r_w9i^zXuh7@m=&60mdA)R zLCpID{epjQCYUvBiB`f+)J9qCLTWRfX>Dn~FEG>c;kUZC$sW5)wnHixYo}eZHB$L^ zh%e5_cY)jFSy-wseIPn$o7TI2V$e!`;{y$X_Q@;d5T$)^co&3P&&ra9Ax z1SQF|(ctKyb!d$k?>c>6S21HgclY$5@s@G#17M>iix6{BS23S1#W$V{M&L?G!|E%^ z_%Qgfpd@1gewm}toV-XJ=_sr^3Qcj0h2|SWu>xV+leYvN=3*Utn8$~{6m%5VS~{C* zJ(luC&;h+(@t0tDR#gx;SGGJGbV3vBv=cJU9@OfWpnS{fsR!p<&AL0mu$}?IdvwQ? zCE6an7FZ?Q`6#&CahQ$i*_a(>vMeUbIwwPS7<_wvTHKtHC&am`8ApL zFq@t?FIdD}2p(?G&?)9PlU+qmTOE9r1r^o7Xlcq(Hx#4s5&i6(zXUI}@~s!aH=M74 z?>b)#He`v0F3y^vf3WURhoOJI>6_rg7#lAHdu3?2WF=T9L|l)JLz1-L!aTXk z7_0vc43{~?B2LecJ?7J+riLWzV)O`?Y^aM7HBA>IYFoq+_XQW$ZV1UDJFV55$nB)e z?FTSf=GH?OBY;=h{bdfgTSgAyu#+9Qdxo8-%Q03Dy+fR-InxJ)iWTGV&`G#j)7c*V z_sx?+&$2Zw7l3W^pOB#&L-*)u1D9wsWa*Q@-Hx+hFk5FeOuw?)gLLR%`!5mqLqV z&6msCu8}q0AngsZ=4)jBV#JslwniRll4&ftKa87eS{8)44DlNY;)os(6Jz*a!VdF6 zO`D1@f%zFt+)=!I*!kp%_m@|J)_>-zCf4C(GR>OW7w&--R=d zXLK^3LbFFnW0qum0gvF1W|9#p*0)CARs+J5jGpjE4ME^M_N7qBL#6z;I5+;5ZyM&4Bw}e&Tn#GG+p@NaA$HL!3Jw>lb zOS=|+%ow>OHsUZ=@)v@S%K9JGPnI@jNA-w~ukaJnBbXReC6DEtY~f3?tP-|h{<9GW ztOuK(j5xw4VXQmGU1`nuHJR#~jDJlY?={)G3>;BnkYR`(U7LtNJljT^XoYG`!nG!6cH=J|MRv$I#rF*k!^#2$|v+O{4a zCG0Ouv637G&)}5tQQ1_kXqh}|=gHCwWUJ=M7R$p?VC5i>afYn<3|aFbh;OoN=`WD} ze0bLK0ty}2bB23}F%ZAS31W2JYOSnaH~I*A*IJ&0m?_aoMqxwTF&Q&TTf)9y_R^0B za8@MCEiy#k7;iMg(~_yuGu6nyle6)Lcz!b8cz^K>cah=lI3l`8)_gpOImq~A-R9^5 zx{gH6lZ?mG&qQ;5Mau8dq7IIlT<_B9ca%6MOI#gdZIEOvOm9{*2`i`>SUq;dJ$??J zUEEbO-*~Nl=bDpb{*z?OEXVP7WozW|Zjk;m$qk0+&l_Z&H^|yKz9;iPD)ZlJ?Zjwv0(HPOf|zT0mCWs&JR|iqv68H` zo*b|;rqVjmIGbORz3!6ib!V*&o9k(YDQfFA8oaA=!60Vd6 zaVv4W5iH#dU7H&Gvz7N?V|LX_PMP7}VXj@@9(TlVtqlL@YZ{ru$hammsnxC*xLG?X5}Rj`F8O?m`Z!4{sj(j&MEw(w+0kKiiU!qY=~ z1XsZpp8nD!xC*xLWJ{0WD%ir4Cq06zU<=PA=@DE7TX@pV2ZB>%ttn)STjuVo3;g}c+OB{iu?WLc*4^tevP!x;+L*6;y0L2Pv{k2W;RS4 z8NUtwDe=1yXJq_7ncF_uEB2Xp^+;#?OwqUZnWAqWlA(uW=ppGpB>nl?(t=g-@0mkU z)*93qe`$sMx5uxMze!q!yTU{9=VXbOz$x+9kk49fV8poK^;#9Z69U35@q{qe689aDVz9*3VBin~-qU63AfY5T$3LAC@I#8q4ZG4~lhcG_J=V&4%)BrJ*IR zm$uSwOSZVC+RFO0wZzkmEE$?5L$fR~lM0XU%aPv_@v~(75;+?5z%jnUv(1;&$A)K{ z&jtyeMgQz?%3fhUs*CwVW)A zO$NKL>0l2w8{8m0#nMwIJGQ%?}5YHr)q z$(SWt$*@E#IW5sjUQ4u6uqBSPq1CA=&Z*^ThBGc>?vgQIl`*p&KKSz-qrq{G3C&PX z$DQ?^>{o}#^O{5C$($n3x=zs!XPm-+&MEvqN&hA3Z|D;K6qoR)xn`qR6uYJ%&sW{T zzt1iF_fouf)_1XNZ$rd+&nt5N$SZO_>YZIHl#Py@3|_udFs_bZAJEB$Najf13un#Wun|(5v1wA3$?41_;~eLqyxqnNam^b~YG{283F>Bz@NibX2h$@=>8 zprr_32;Ivb_mx7QV~2+c-OKj-%Aq3NK?<*+eH^}wp9~f0JIehkU#?V7&O)h8b4p1M zN*$6@1r_miU8MKt)ROv4P6kwz(~YhvY0IEhR03ihRnUB3%XPDH;Ajj&7*> z*COpGwP{WsR35L~znoJ_dXTgdDvtk@+;5tr!KPdf8b1G>66m%!+I7+A}w+brT3va0GWDkzgp~7E_ zw4>CfIk}_@$zMuZ1{LWK%KghZr=+5N@P@`-b~z^rx*FlNzJ4m(YHx+^>;a4i)(xApb$>znmj3B=(2oBtu2{nNSh0qx4_S$))f@@-LM8Xn)!-mHS(AD`~$9D)Qkj zl}{3BCTST|hPx@8G?O%kG!H7r49!p$+)^xh1rJfV2uK;+1)o z=HWdYv0n}q?N~ut2^INc@|EEkP!aAUts=i4@9qeHAymXKru`DyFN2Ew570iA7BYS! zX&zLBFNE%7pXVmw?^tEIP~p#jiu^Ol@1y;4(gWnLp#4hPuY!v7Wq6xUmJb#AVlY+Z zljcB$KMyM6`N>~QnjEhD#ZY;Dksg4GbX62y7@_vdpdz2VNTrof5s%kUnhX`;RitH6 zYCkJlX&Gr&P1+}|gvxwklU9%&_M6@~L!Dm;la4=T#7r2Q(|=gAb0G?O$BD&kj>=GCV3P*H9b?dRP| z@ksOP&^{@zOZk)LL1n(Ate)uS9}i0;&5-)juuP~ZCx+G$e&nW zWNSX(g^(4(}r1lp=MZHQ%tH__% znBtS>G*R*Lpdz0_+AkqJKw1Hn^C0b4K}CE$MWwGr+L5%BvC7gEWb>7HKAF zN75Y9T+%|)g`_2gJ8(o>`y?@5Y&l0@2(Gz%*7SxEb(qz6g$Rw|tV74ed2Ka(_vw2-uf^Z@B0 zs7O~y`#hcML7GXLLt02$LRv|R7X@Yglc6F%A9OnAogDJ#LdE!1Nc+VUUPAi^NDq=$ zP{~+lpQr1?b!wZY5e?vw5MDo`ne@D_>Qa^Lei>BccYyW}l2($QBIWH=`FL4U)}t0_7F47^M2Zi&Wq2M`_!rWCDd|DdQ=~~9 zRQzP9%!jms{47I-Cz586W5FNqpR}Cx0BHqj6;#%vE7gNkd}ohH?<4h-7C}Y) zV%je!tsqV6rqU%tMZ8Sf&mk=&Eg?Mw74h=AQ$2c!<5)V}fXehxQI8zbV$w1SFQ@$q zQr44>gEWIQlhg-2$PNw9q5VSA64C>tdA(HmB~VfR0n$oR-dp*zprW3Iv|mnILCWr- z`jBQpMf`H8nAejAs_;zG98y12gcs6&G3^_JRQlw>N~=h-hN}I%VHBRN)CU#$_(`kC zZ;VjkWh0dy@+mFKQCc`k)vJWG3M%SdJX)-y%n{{M>x`(7+I<8YBmDP{C?BiJs~|0( ztj6PtYQ0bGv#CmprmK9j@|F6bqP>er%jPM6vR`Q#X>y_3XA7u(Ni#^ZprXD$+V_(d zlU7l9*+Lbsyh!D92rAO$EmE5NpwcSRvc(j>gu<6nIBD53wQoG6w20JLuJ+4FGghc| zt&g-^YGiie!)l$H2Nm`3%l$*y$&aZ0VyI}Ja?(TOub_SQs0z=5iu8v_GgguxD%*wj z{iMaD8IP-YKGG_vh+p=E(!8}wlh-M&A}xDT?Psl5dWbY@1MQRgH>v!KNsCHVcm-4( z7hb89ngtc*8c$Pt(xNSDKkFF^f0n{Yi?&kuUzGZxvOkfQk-zE%O81gdbY2-Rku-zU zN16u}_3^((`H|+muKX1Tl%Kt!)JN(kEha4|tsuolSzrHP~&q&`wVX)$T}Cn|mg zDLYE(Ni#@&r1*0Rb$p~5q&`wVX)$RTR2*+P?N^Yp&s07JRD>tee&TWE&mi@Y`bmpP z%SkIp*$I`7ouc}Y7N1u8<)js)>{}}5yiy;jpR|~?;v$VRmy{-w7L%5fR*?EGt9X9W zV$#Gb%AY~%BQ5$>9seQH#NVi1q=~=NKB5LFyy*lU9&22gN7NAoY>@tHYgCKBQ9)K6MWT25L)%G@e`7F6`VL!=etXCA6AX-4(Fm#gRVP&pn{YoOXMCru7g z`4*AlEjU?DRi&vUK>Lc}&7L%5fR*?D8h6m~Lgn$2`s=FwVp7(K z$|dzTrf|}7(hAb#CX{b;jv;)-h{RT0-v9bYGg{L=slScNkF}?ANb@o%pG=X@@evtP zn~d~9MScCG#iZq=6{PGg%8%6OsPgkeWq%>9%2NJ}PRj2i^^+EpR*>Qk-DLVi(hO48 zh5V!$q&`wVX)$R9DeFqd)n;y5Zu*$|3PnnCI#^^+EpmXlVHW{gnjeWYw8Lc}&7FYXoRK3_JN=I4_ zJ;)Z0%*Yjbc%*-v&|qKjc+PY&50SD7YCn-QgVaarCoLu|CrzBF(q)kPNd2V6q~)X) zq=}O#9jTAhPg+b`PFg{laj#0}BlVLOla`YvPF3xYLFyy*lNOVflU9(jX)2xnL8Zl{ z8Ox|#(h5@ckn$&zW{~|shrnnCI#^;hc}6|b1I zf|NZ*=}9w4eWZTUVp8@v#V5@m^^y8Xi%H8#*%OqGG=tPf>L>lpY?g*^(`Srbuo& z{(`<+H;nGaV&m_|1*4|f&}?mHn3K#$%pK+{=6-Xam1|A1?zbMZHe1hHJFTBA%MtEq z>Bw_D;3#(-aeU+W-tn{Jh9laU;B4-^%h}60z&YAE)%l?F5oeY2JLg5`HK*l@a@BXG zxH`GIyN0?Jx;DDDxpuntyFPUN<_d7PbN6-+bKmREcR%IcjmBu z_*meEz|z3&fo}%B9e5?MSJ23y{Geq)j|8m`dL!r`LA8SG2d4*T1a}P{9DIN9(%==r z8-kw>elz&J;O~R41#2MzA?-s3hkO}Q6>>QwKD13}&(K++%R*O%J|DU#^taHMusg!q zg^dg=40|YSW7x}KZ-jjob}H=GFe^MUym5HD@E+mA!pDYB2%jImG<KY|A_SN{PMnw%PDmJQjRCd(Vs5wy^qTY}CD(Y&KBRVKLBD#Hazv$7?Go$B5 zKN!6_dQ0^A=$bVf)=aP2yXJ_RV`~=Ie6!}Mnm^VIkEt1x7;|S#!O5(LdBdHtbtOwWem-`0#^Oemr z9E?>p5F8xV4t=@h;&z&c;TzysB#UD;SUihj4e&+`-tuFu;c3I}z@ze}tQ~8?Id*FXh{O^VTz45;<9%S`ngIRw(=o!k!vTQbm4QJEX2$s)AvN%gvjuDdTZngNmas`|8M~J)XOr0qqSejY)}$FW{|g3V;lvst+L zzMt)8v+*WdKKm@Vyxo`qe(8+5<0?d(_f0{b2B z(Otv$6I{oebT?1~#$RTfzk-{rzhc(f%S^tXS^PETVm|HAV5Z)^^~#^&;WumaBbBF_19T;nfroxjLU{t|cao!rIW;a>g`58xl; zI}X0%!TcN#;Xm*&{v(gz7kMPV#H09S9?b)^7#^g>@<=U#$7_kazLvyOwL5q#trkz$ zl6f1gHvabRPTo$d!`o|hc?Yc?&(P}gOsxUGOKZqGYK?f7)|hwFn(;1LTi#V`$Gd4A zcy}#}_tfs@y|m7Jkk*Y4*1GdyS`VJB_2Of+d-%PYk5AKb`E)Ih&(Oy4nc4(CN1Mp! zYm@mB4d0ER`T0XyAzz^_;E!kv@%K_ie66;O7i*95GW?bJ7Ht)OMq9)GqHX8fwdeWs z+6(*z?S1~D_6dJU`wV|;b&S8P9p|rTC-@$Gm%(1`GT*OV;jg2&*IHLJfHA*MFt(4N znIgDFvb@_e*ca9cwy!U^Y`EZ-K97R;Wjzj#Yqb-n$DtU;0;Y zL{>RCs=?pDUJc#@dxw4uwrKJN=;z1$+{zjydqt`!UHNZU?l*I9AkOVdw3nqySGnDqzui-7ojH)PMe9A_g!GXACH+1TKemsc znIgDFvbfFU|91Z)O^%Ft9ek!{_xGCz z|An;+!Jhex!O{I51-p;9Sx@iq$KZKi@r4BGyVt|sB71^rc{}a?i=m?D*gd;i zl>9U8s=GzcESAg|AZ(S7J-*#mwH>qM8RYQJvhDxON2OA|@xqv$@Hf6gTv=9k!K=A~ zDGfy5`|qwnmCygFD{;~KJ*eT{j-q9rD|#LFLxrMl>I${Dp1KW`s< zTD$%Aokx&EWtJ#q@?61n3qOZvR|_$EJeeyPG*oc;gM#LK!FQGkUM~_%FBGhtBN#JN zaJ6J^fv|6_mGTUj{WVH?SyFk@x`=*gKd1Jyru?Y`&LGuSbHq_c&lFrK`RgcA^V0=l zRP57D^xF^a{Sma6K4!@!c*ZRG4cyg2#J@B|Q1dfvF~b8weztZ7>~W*+ z21hg#Bl+ll-Cs2OMK6XL9?8K>`xzQ}EL zYf;ve0fN6S91KtY7UFnSzp~Fte?Eh#abDF&)uiR%T;%pvld<5vlJ=Gq*abX)lyiwVF2IUgW^ni`v%OAdXRAFdKHy1q;E5G|@6wQe`{K7FMOVE_oQC6}3ft z)#h2L;uuw%SIO2kLWQS`96g>ZT7&rS_ZIP6wtf=!GFevbzQUu9T^(JUEaA!Wh_tWH zDMrltv$uebJGOzJ$Q6Q`3!bel&ig+K#0;zE*}vusTg|HK8ayBN65_mY_siga*IQ=w z--om-`o94_Fz9XY>Y@+8uZlzs3pNS50tEL<&roR}lJ#FDLsv^rgiFL3;1&$=3bt|z zelD3LLl;W_b;)j%Md)hj@63dKL=$}25{#9p(qum$A!BN~@V_8KTS(728GoJh)RES3cf7otRKck!R|gytX0$%cjz8bx6|td8$J+^&^gWP zf?V>wo{eE^lheS4AtL{;O9daiM^N?QN4%{OYG1*st3!<{PPwL4Ba)(hq`GyCQsd06 zBUKx@I#M~^@19f{PL>yhgtSs1(lI6jo{%H?%gGY@FDrdDOSM9HA zVjl@r9n@H=N>MdYG1JD1JZH-MFV7TZskAE9|EY25KOZ4gOf`zC5%qRsX?xkWzxey0 z&dUDZW%o(h|4iGtqZkj*ZWOJd@_DZHD1@ppZQ6iwuzC74P>r8z75Z!8Y!(Ke}rTI7ISk$$^q17Cs68B5AAK9+0atRo08?#R%o=#kHeCuT0tkPwK{P zpt=?oEfd#~x<Va>}t$?TPlVV<5wCp?BnevKrcNS?a zIWPaUzZlK_JdVoe)4o3;2X&-3QpB8?v*HRo#v@{^u-m&=h_j>oc6+}^oJVzZs?Xc6 zR&{l&o*$SJf|jw5nSb6(6Xm=-cjz^gyMBT;1ap&IrJR>z%SX9Rc$8f^ClGebOu>^g z1S{u+OON2m8G?7Ts`)ScH8>HTOF`m%mCKdw=ze#?GyY+5?CMC>aXs^}=v~U=d|31` zW!q!^d)vwCyEPWf8h{#}3*mP=SVOk~Pa{ynQz8?d47UYOCaB>uCdECxK`^ zZ4m5QpoZ@y9Rj;Hh?dlb!L9?MCAHzO>w#!VZ6xdlAX-w(f!zp1OKQ2Wn}8Z?rHzK2 z4r;8mHWqdpP-AVi@vz&08f&jjgxvweudizN!tM-etcx}Uc2`hi-L$E&yMr3*p-qR~ z6VzBQZ6@sApvLae?uXq6)L36FA9g=bWBs+cum^w|8>r2LJqX12+iUY-4*~J}uv#JP zVW7scwS};UgBly5ErLA~#IG=Di(!ueH8vLC*UH&AP-Ek@hhR?tHTHnE0``1RV}9)s z*oC0R-oQ6eY3!i38vHei&@1zYDg~-v{&b55dv;5pazD2{=~&6dZ?drNy!9$G{2tad4vkCAe1q z3S6gGg6s8DU@5+%R%2!Qx8T$IS#XQ~J@}0N1Nf|d9^9(`48Eve1b6C}!TtI#V7Y!3 zd`JHsd{@5?zNg4lV6c&dPYyyrw4PB5b{L4(Git+*0C5Ew zb-*NiCnc^RqXF2+XauGiO~B?xD%iqk2DUVsgRP8~U>hSHY-_Xu+ZpY^_C^OV)5rv~ z@M40-IvJh7yN%9ZXQM0F#pn)pHF|>GjNV{(qYv1_=m+*R27tYcLEtE32$*jS1LqmT zQQHSV{C1Kt61E@ISfP;vE--Szg~n)bu`w20VvGlu850rnAy8w>jeB9Q05!JKm;yd& zOa<2))4`3#OmLHNKUiYqgJs5C@EKzs_!nb7_@Yq=?l2aDFBy1h&vt_NJrQFuxZ79? zzHB@MzGAEZ_ZW|We>GNudyUoLKI1WPzwre4nz0Ui-B=Hn8&81;j7{L%MhSS-CUIg#*i~Z>c+J=g&vg)2 zrLiBpVZ079^8m=rgP>);33|=95HkSOSb}*Nb|Q$LV7?2sGT#TgnID2Z%_Cqh^Ap7B z4PxvvKZV@~#Moti4)(*hkYemIkHbFz#5c*CUxN3VUx8E2O8BRN8k=sOf;|J&*i7>q zaF+QkxWGIMt}wp`A2ojfA2-i~Yt5e#e;tVPXkLW99@N-V=4G(d`~`f*yb8W({toUi zuY<3eH^99n*UR@JBNaJZ~m|KjHgIaYoEq;03cbc+so_Ucz^;YV5Mv0K8&00-4nW)U8y|Z8Zaf ztma^_)e;P|(lva07>H5MY6CkG#3*OAgB=Cp%C$OxNmeF!ht(0RWpx6Rt1L^ zKC3%e$La~zwR(doRv$3c>IXKp27t}1L0~Iu2y#vbG1FPYzzl0Rm}!j!@3L~hj#e(1 zWsL?qS!2Pwt?^)IYa-aix)+s9B*v`Cs-xmM5`2>WIYYuYdr%_wzh&(tmnY{tnJ`b>jiL{wF8`P?F467yTO^( zE8zXs9&om`7tFWzgLACc!MWA}u)sP9&a>VGAF$p6=UazCzx6KosP#TtcqOQ@Rn~{F zSA!Z`V;zD07>KdR`ULhSP-Df`r?5*vjcv9*hg}L{#<7mU-U?!LvW~-k4#XPI`V#hb z5Wjpm{X3|!zT%9M{3tjvHVb z2iGx!ICQX`0~aJ~?{I(}94@fC!vo&q2mt#yg229x5U`&k4D9cS00%f~fCC-T;2=i~ zIM@*f4sj%aLmf%ra7Qh0grhb%(oqNWIqHEqjt1Z;M5^=HOUI zOK_Yc9USjy15R+X11CBeaVhnVQhP@8N zD#9@q_QxQ`F~@k=M?sB!>X-4e$5hyV2XV$7(_xT;s@x{WXZyh+{77Do|tJIOc(;9rM9&9fjZ-$3pO|V-fhBV=?%>V<~vf@eoq| z0HWtOR)FUnkAN2(E5VD7)u7w?80c|6ftX$p>pXcjue%_W&_kI^Tlb3&d#YJPi9D5Z8k9UD$m=TnoDh~DTt274BW5zKiUTDgMA3ZFRC~rVE+x&*jvsTu-^tXcGwvWe(sEc=L-!nb8(<>0IZ ze(kIcRypf{-#F`mr=1PJ^Ug-#PtGRb&(2ivg0mTNy9i>n;A{^2GKkfJvnA|bK&ELh9HeiUW9sHpnRtv5UV7Mz2jBs@XBVC=q8m`V@l&dQk?dlH3xO#%IuHImrs}C6O z>IXJ-4FDUt27!%TL%=4kVPJ}DIGE}h2{v`*fN8E=u(@kA*upgyZ0Q;gwsK7b(_Qz1 ztzA>V4A)dJ%QYSK>;$5pyJmttUH60cxbne%uDReK*F12jYd+|66@t00h2R+1B5<5* zF>)9WVk~tn1!uS(f@da(vDCE!_WdCGu{<`H+)sgS_a@NeE&;vnQZT^%G#Kc91`Kj<1%utsfg$egV66KElRja36r(4a8{RJ_x%9 zh!%6d3A-1F(ZKx{?0Z0r2JXYK`+{gm_q(wBgJ?bX`>^vs%xLZpVUGbZqq&d39tUDZ zbAJMR0*D#S{VD88AZ9f8=ddS(n9w?N$ExPO3s7{q+s zILVU)-sh?XT8J-5_^^Oqrpt?Sa6Vc zJUGNV5gg^c7aZrE0#5Kw1@H4t2d8;wg3oyG2e*3j!56)A!I!-Az*oKV!M}P7%{%bR zLv6jO?1bLho5oJ-t-Q_IcVI_$#%Sf8ikZ=Jzr^x9mU}+m5ZMgBw6ig?IanOo5!@V^ z4wgmYyS@09$WGw1ksX+yZ$nH!e;zUY{3XQn^IeGP=Px6spTCNje*Ra)Eaa~tW+5*} z%tHP~WM}XYVixkhA!Z?eJF+YI4q`6gA0Xxe{t;p>;71X20sjm!7w|6-a{>Q5VlLn( z5c4y>C8`3!A~OQ30@J^5BwT2Pw* z=rXpFt!10oGk6Dc4|{{Xi#I!u<4w-**hRdPY4SkcfRE<$`6IlM)?LffrfMH(pJ`ud zQF?!Un9hwrBf^L^Y8h>eIYy{iV%D|Ft&`Su%j;l3vk2+5{ zkGr!xy*$G`i#^*syF7W`Io^5RXT7g@zw_1z$P1_lxD;?LU`61uz{(BYlI|(WQE)x;tyFGvMS`|kaHp4(1_5cp}CeO>c)f^L5g8GKB76~%k@F)LM?M?*dgR-YzeKL9vAxFUH7?Y+RwFHH zP1MU#uSNY7)h#-|W?{{xHCNT#U2}iUBQ^hC^J+~k#uL*mW^~N4n97*5F;`;r*haC< zW81}cik%s|J@%E@`{D}XzK;7o?zgz$_^9|h;# zgqGAZ*sJwTmamnAb2P&*exuBRr<90>EjH<0{Jp(+^SJt-JE>csu>a^=*zZ=~bA4|0 zwNCq2UszIyf0JJz{u&%_jNtQ>$-E((g6%$RQ?X6MHXYjxY%{UV!gfEl+1T>2&A~Po zTLHFtyfJ%#H^tZ>uKl*Sp4;I{?Z6iDp{xkoB5V(0Tg*qYC44Mfir>>(hV3Cf3BR3# zx0ta#jO`I@kMe2w&hu$(6~CXY#ItkL?9)FXHXw9oSyN z+sQlm+xXn(96q%Q<-!9T%v6x*lR zKI1L<=RBQ%!Q0?_#oO_}^Sk+RY$vdN$-D8BydVFH58xGiAin8;2>%+}DL#}}@nQTM zp3P755&T;|lAqzD_*ss3r};SkJ+^b$e!%u4w)5D2!uB(^3)n95Nq7r-3f_Xgk6+<) z`7ii&9noJZ*oj_32lG(@LN{@>UqbpE>2}h+r29$VB0Wrcob*f5uSmZoJxlsM>1F5RJUL?It`U|P9tNNOxE>gE%;1TWMB@Nb3Hx(x+Sg+qq_#^c_&BT7B zzFqD|Q@R+^SY6dCj`rhezcKbjy2iR{#}x86B~2r3K{}Ll6yqqpa;SFL|%4N`|w)ic1Ujw6V)5&4^trjj-zEp)2m zT}=BsXn!~99@71!VJ=lpZPGfV^++4IRQcU$zYpnR@-HP_LHY=VucrN{T<_wqs2O{T z{F}&MLRw1t0)_7;eUtPp((g%sAU#hy(XHw~o%DXvxukI(72bq2le8;oAJPFH>Mx|z z$-jtnE9rjH*GUhOzDfEn>HDNtNw1T-ysAE7q;XOWcE4AZpD)#5iv!jEQmF>JLHj(2 z;z>2w`jCz@#LT{%v~#Em?+VSw%yR}a#u>~KXD~CI!EA5_Gr$>)_-8Q6pTWp}M*ja9 zyo~KCHcdOjE$uYYokqITNOv0PP9xoEq&qFsMIufoZ6p5P%ww@d>6dv; z?9cXop(8)@3?GASf%%>5GXKss&D!9?H~zb>Sj8x3Gq#P`t~q*X{||L<8yn}9oe5r& zl1Pdo-K3&+_gHMx-R-u$ZLuxM@<&?jq{I)oVt$!bvg~v_m140-RjWSORYghcjuBFF zI|vrR?#v=TJjeh$KY~es9iRuBEHJ<(&z8s`wqVEo%x?0zk|PjJpIRCxO3(|eDThi{{w%2{DsL=KlcwN zPkrqlym#uKoqurZ|2#i}8&45XswpFQIe8KJ3 z`;}tvW~05`x!Wt%yLal{EEMsm%q1(cR(=Tyuf1BSyik!GzEX+3R;yGN8@;_|^4W*}5(& zl$Bkv%5HYLy?&wBt9Sd2PP^2v_V=|$$-!|-px7()4%)T#y?VFGjBHdAP@>yMCAaHc zDR=3mK`mcaC~A{HvEAr5s?Emt>#RpWoBQqccB#HsMg8^it!}-#Ep5Ck)uG_!R~TCA z)v9~-V*3tCZ@=AYF5E(aTHiOWd9uU4^s3b%fq7d1i4}Wjx!-8j%LjY)wQ5UxgobYP zFvaWv!o}V~wb!q1HS5dWPRj!e+uO^XZmZfy;~tdMj562j{e@1u*YECIa|%S)J2jcY z#d@#SZR{ETNRe{A*I(cIZoSsmDy!XH6icn^#fu($fr%FMi2OVJ_ZAyFJM}K2rG6J{n2Oh{tq{+R9~AbhXd;V0 zSAZzTz%K&6yx*?jYf}cYSnXF!o&9dD4$#_uvq`K$u(;ITZ-I6!_Pu>%)W}A+zTE&y zFk7M4->)`h9Ek6$Q;SwNr|<^-`#5Yc+O zd5{7wbXr)7Mz7N@Y*+VyyujiB(>j==-eq_R9c?!Hs3L)d%)SET%VrBH*X!+iw^6eU zA;D$@_>T&Fwn5Z^)IzsgJt)<8TbKewlNnPAt2P8$Txs-}x>EiA0lxaciHmNh4u;l6 z0F-pm?N$4?F1i-i_~lCFZnwIJe4u?0cMHL47f4n5>ebg?sZ^Sv(q`|XyTi<_N@cmx zt~Q$of`LZS7caT1*Y+FDZD9-BmCB_{ZnaVCc6yzi{yd2C@+DX9+$gsD63}nmdO*CF z!Y&jMYYLhWD;mmTC73y&LPq=sLnP54m{5p>t*?lHB@sPeV@I>Zb16+cmomg7@rZa( zTdqIY?0$6s91I*_A(BgB<+Av2$-PlO5WL^0Ho7QKTxCp*FI~Cza^c077GAjW(zREYU%pa!dGWV<)d1+B+ZPBe(YwM-AH=5P{4n(Np zqI>&V=Ux=u=yq!LUJnVCcKu!---_&DsS8VP;q~ImVx@R}ZGCg8vbt0%6|NibW?^%! zxOTmi0WWQCu5SilQrYT~TU}o)E*FjT# zN~!qEOKxqwQhsM+sZ!Wv6Q%2JacQ}L+?AE$+EQg@Y3+LXbyq4atQ1}8px3Xr=5N-w z=5G{3_bI^^<~cD!W)&1Lb<%O8Pdz^ z8~H?zX|1~Eiamb%){E<*<+nFN`0}NaTUuEuZj_28SAKnSX{oZfUM^v|u2+_eD@&E- z_082n*_Fzhm`#jswODrL&B6jwRuL+$Y9N`&%a_)Y+^dDR-FoS*rOgrsRa{$MUwYfO ztjq2eZq;kIi#x@h#n;!$OK+DeZ!Epz1g$C+SFgI8-A2E@z#YpKDHks{?r|#@KtB_g z3=q;ab?M$7(!p*R;kKj*L53oCI2mDCEqsN+O9Y8sUv#}5=GTjwroDJny%HW zb-K;Qmg{Yi@LZ+l5UcqT8~a<$Moovf(rDMK-9meNjiMi*Seqn-(bTs$I*oQef;BrJ z&Gv2z?3XggaJ_jiEIAc4SND7UYjx$dz85~SQ0>=liQeX*3A%_Eh;I2|7-@>UI$jRY9bS05VtGjx3_MEj?JRwyV4KZO!9h3o5~8liC>Z9k1{q z=hfGml}ba^!=yM?%$H6;mFo7kuXs&rKqQ+jNzgWsqtdOnI(O;_ZQo7UjdodwskN+; z=ODMHEL7VRq#bl$4RE~L5l(AXYt^-1Zx^;YP^sIyK4)bwnOax5EBdmfbfXEC>D#P- zZ@&S}-e=&%W^I5GV~`PKfN>Exg{TaLgrGunvksfp9l#^Bf^g|)GBGe=DPgw) z(`!p&V!(nh(*O!^D^gsN&865=xS_VjR;#zocsor+8xIMCB7#>-}4u0dOocrVvKBdcF*( zs)~hPj`y{MIP%#cunwqX6_Ox!lYDlu*5xK&H^sqe%P`0cP9YxC<}o;x7&17;TYCp5 zg1TWZ?H>$IU21Qap|0k~C4@6L38Y9BH(zE0W>B!QW~qiI^T|}b@=yvrgHv=82d8;C zEMFa^jsdNp&&Q;cz~J)LBtt0|L_N#rSnISOorxRzG3BlBG09Q&$K)Wd)A>FogYbuZ z$Bp!kNsg?4`LeLU!ys~Jz=RPy*LU(Ima)r`C+AaW?{9521u@sVgY#^_x(b#io9G=F zmvV##17-E#_~e!9R((LJa%XR)erHh1DmX<0Taz9}9Fqw)U6`Trov~`U>fFEbIg0IC zbAP*TyG%aA(!EDyDD+5_rM+r9Us!fTSZMPp%Uv8QP~dwDhZHZ0~gPX(ar?Da890q=)X{WU+?Al%E^pDvh-G z6I`VjmCr&}N`+-mnhZpQ=6pGf4*EzQZY({YvcBIJ<#IqF& z59x0}ir{|NHE!TK+<}* zvCDIehh$m01C4G#QEuTl8P0V>2wG1pb7{0EmcTC7cXptic(2GzyI>3;?uc4nn{%U{^R#>3@E zgQHf$W-fR#SB0-POCW%r#;Dv$yOr=`Qf6_DqC5^HcjwWRW`I;K|%#9*8C zJshjTzDMMVnu+6Kn3lsIXoKzM^I^i1@mv0-)?WW0&gya0(hGZgINH8dZSTTT*6|o= ziJSF)mxtCe1vUR&g5!)sF@6aqBqt(0Ip~%X`SqPrz1Bevo<-lrssdv|s+?QGV@PtW zHXtJRG<*ZqcCUeEw;jwJ7F_AvwO}&@;WL6$cV;C{DsG7Z$OpOR-p1=8V&mwgVUT;k z{KRhSa{&@ZbpRnvmVX^M7Rw5>n&N+-i~a;Rs||}rO>iMXRnklZ5<<$xy%jN4Fv?TB ziSzd;4$MuOxcb`VN~I+h2X}oR2tl#Y z@hBNXhfH#(0f{sXjbg9?Ce?|)gB?^19Zm7G`H~XVofNX(-KlmZh9O+<@!(@TW)?lx-POa2; zvY^ez?yVTsM3%~4C6 zQ+ifRmrx0=K()S-lK|lOCg1n`H`up`vjXhjYT#4{73gY95E2Ze5D9K{_V#h`D!QQn zxG*>r;Afj3yC5g8EUQ&o6=&D*-%R(qvZPzMuKF`~#|9m`#3&BKo!i1}B@veP7Ck9# z;f;EAWV_9eBq_O9~|yn%IU7jE2y&`W`)_3fF+47l4s_?JdDjG>0(>sIK$9@9{y=~qYi9u_cfwB7W{9-;D|2D4hGK{ zX6ud*!;;b#ogODxTEGvCo+i_c$Akw;0VV0CDlBwn6nP@P&YJs z*idfKEM9Mwh#&yuIFhsgD%pQQhQ{6lESsi8w0kL{ciG)1*lGZf6Db50gx3eFaFl51Nxi zbcdZzGUB-X77n>2o*c>;%XYG*CyI6grbLiL`kueT_lo?av=0NWRM+h6$~PAIR??nX z+hy!Y1iL8}UY{L8x`wVS@=H>R#0C3kk}Hm*)ofG`N@A!Hoz#F5 zrUOYF<4Fv-f@8+1B$dvjREn&q8W9b^>A@T%ClfM(DS%A29bACL)v3hu8g5rSnv5QI-*=4)!bs30T2FZUG0#J+ZXPz#xZp`$^3q z=5;XFQe8~)dP0{zSh%bFK`6x{=gaGzG*%#IaYx$q93kSNLxd zQ#K}1QcN5bu9jq^Kq3(@;Ye6_ObJG;9Oud~r8c&`945&-s)9?Hb3h}DM5u9z0a0Sa zOEJSrtk^U8czs6zIN;_HLJtUUDLtQr1%i2(Y;;$$%0$;|O*mA0h{|fp;Ct5&AhAY? z*I`|4L)B;=SoU)FK=fG15mF%pbos7S1(PJa2I(1ILd~Yczelr{jRTL6`ZBs)waA)B9Se6I{O4r6@7r%IH!P! zijB-eFiN#y^g#2Hhtn?sc#*ISxDAA2*@L-h3QVO{36@LyTfh?wgHu_Ir|;a6)E*%j z*gj2p>cS`>R2fH^gG@TfZp=;qeRhcZWC@xIsIMx{4h-JJQ3Mn?b>v&Xaf*ypT{(o- zd=Q<16FZ91E5Zw>u0%t+MWDPwhp?C&oKaSV1B3|>=Gz=R5)_3>q(*v5aGua_^2ScL z&;<(ip%XBHEfu{#h4j!H`~ncOXWl{qSgEN)R)C<-# z-?UW|HEbYjHj0ZUh@+u#0T&WDBv$3=S|-}Um0i6}VDU(VH4r3ot~C`gScM`er)kgP zG=5pQUB8R8{UnZw=Ef=31R$_wW33i0(r|QOu^r_)PFIXPN0$M-Od_bzHg6uaQtG4{ zC}~u_k`jtf?0SS=60HCYfMOB`TM{djI%w(sdTjx)EQiW%)h%QR0Bhe=?3s1^b7YVr0M_PpFfqoIAHN;V?>yF07l_=}>r%6lO4KRpnbiAaxq(IL#9m-$fvAS;~ZTa2bXDX$ABAq+n9wILd=FTXIBTy zoj4KxmOOjW%7IA9If+6*b{R+&yPF)fXojn=U98ahhKaY?prlXtHTZG{w=@ymK&$>{ z;}3DrOtNFApngLQuo@^2n`r>BsO@qA8ZAc}$b|?H zvdA=q7q#TD%w%h~zD46mKPtt_Z5|RW6dZ!a;!rnpt?z_5#5pA^l3)OXfhZUkw_~_9 z08{*Sy#>=)C{h-KcjAH*5^#dEkNX7&rRq+70RddVZ01w*DL{XyZd@){zv2QkZ1YZY zfI)=`5#3Zn+}w}?1l9t%4HF>Z0=2$Fu0k!a(QAb?Mbdir^~N?V`2oIkuU~J|%_x9u zdMM+1Kcjpi3|l*m-F;=7Az9W>{Eq_6>Wj{8Lt^HrG9<7jPxW>H6%y@KrH2a_G!m9O zAs7YFRXn6~Xi@HLA&5cD#y|Pgv;e9mx4hNP>w1mrfe}01=fj zL>E>{vguKp571=q4WOil0VF7pkT@+d@Dm8hvggSazW`Gr;bzzGVvE>42ua|VQlTGZ zNHDBoKdbGigdRYLjCSH5Aad3lMb+XX6~W5f;PvH@YPw&5EZqYy!0x@;X!DB}Tseo5 z5D%neS2ildzA6Hl03+_7z_E*l43t_l)`R#FV%-0&#*jOzE&wyWrm7jF{ZA9&NK4@i z0?N6DMfUUH@A2|D1@A>3!y&lT)^GMk2tX>=5MgHe3TbJGnHMx2?3w7JyRm{qa?+rh z|B_i(ARAGWnZ`Luaa_vBfNHoOPg^`?DlI8SlyXNSV!sS6U^~%>_Cdp#26R}%;2;{< zRx_+d_PmW$W0gB}`Il9PIR^9QK=atT#Z2TO91duodXRikpqCP`t2JS*!9fLfogPDw zQE;ihxi1lxTcf5SDJz{_?nYiZ+rhmQO<*o_0`^#dsbLYOaBqgSip*bNwM?9Oa8jm; z!XD<6ZE+q`39CFNv)`L9`t3Qu<~@X{vndy-q(xrk#XTxq^;5@IdV~rLCKTMZzz~?h z4uo*p%L^NFX2jv!10b%rgXuCm+xiae98nDR%1#`o$p)F&4!`!ds8J(?%MfBSk|530 zA%^=TVn7N>Nt}~Hc7!CNo)3y60zkAz7h$fuhcH~&9C;s+-ihbO)BYJ(0H zuX?MbRE_b|Lh0M|bYktQ4ulG+jffT{flNbwO_`+#>v;WUwJX`EMiN+qccldAmMQ@n zRdtZA>c7Pp;KM@7aX4WG9!QGuK~bfBSRZ_$7eNuqE$0x2g_bXI@g&yxd*-ke)M3W< zS(M~`1erp}pS4&%^j;i}e4HyJzP3apZPw4DAeuttjTpBr77cc6wE^onzO@d>^N02WMs@^&r1{X+Vf?AA2Y`goBpkRm&1Zd_o4?H95*JYfCpP)%q-`jq-OZ4%(Z z-<8m6r`;)c_SrNxZ|tEuevrZ~$7^{)TM)Q9%iwpna9G`E_dM+i!csIPA-f$5@R&&; z7_59N$%Iocy|$oLM~7h^T+M@cQsq;LEGA~LRm&|6-PL7zn+l4%=05w~1+3n=V0uqa#zoOnCvMs5Q(drxTv>?*F)yMvFd@9If0h1)H- zMfta9k|>#EH;M5`Es0cWRz`hd)J!9aFX{>V4Z4bWPd=CE4Il?{xX0<1?lt;Jq%XD! zoS^~ET%JCBwh*g`kR$nOa^q8i6|rp*VWF`?Us9ksPfBbP)Q8$y2lBO1uiqB5!1jiV zbsC0RciUC8CmWqklMdx*fh*wkrEa_4 zynJbX8xdSM2@(3td3c8NNZvQ#1ML>C@pxJ)lK^Ew3DDgD324DoC192dN;)P06eUCULGEro z$O?Gw=A*C{!9B)GXu+lkOO9q8RKo%sgVZMhJ|Bjs0wi2&a33L;m#ChUhA4I!s$L;O z#aL#N2hT`w&yKJ$Nn+E6ISEko6@Qm90mAcFZ&xOej6E)a8_P@pcdhT%GZ~23YJ`+@ zn6x09`A#6{Mh1dm`q}Ee^djz4_`?_&gXAC`2NbZ<>So>L##(ANT966b@SB02iIaO? zKoVfNixduCji)4a@2A;mK~@3X@NgXFLZSx%K%g89YH{*#quXJ=^^)0MrS4S3pByAG zPI4B;4*8>nRK6^X`D~~1rd{Xv@}yj4&r+^a8U$xanR}&!UYHz^DkPsT0GS?6oM#;X~MWwN0`1@v1R z_0T0V!Mon~7fOp>0h4hiwi1cODT#PzK%!m_2y+4)YW4BcTq12Mq=Z}o#}V!r%j!l^ zD;9ya@2*zA+p$Z@u<>BULKH(x-W%P3MrS?th-y)`N_q2cp?zSm${jTofeDy%F;=;! zrYFcNT`VUjo2&&-iwsDC$|oLE4Yd*KRnhA6V$B+YX%;|H(xZJJS2Y9 zR!T4WLlBv#BvRQnFgYezHSvq9O@kC{_~;baRszLN0?j`I_Zypv-#9IlDm>5(JZ3IS zC1R7CPbVO|bRB{n`$1itAdMvmKnm*ek<_kF;Wa_Bba_eu<*59_tt1AanmD@9fi*n_ z$ZJ`?Iy$Mbd9V^_^AwLHDz;elgOkpw1J!1I$4h1LE2R!&ODsXbdyO+Ic2^>F1Qw(M zW|)8{D<+nH9CXHTlFuM`jmHa_yg&=sHlj-L6lD~nFe9d+2v$q?Ai1TlNMm>Qog6xa zL~6st!9?i<9pEuBS&|5d>4cyI11Y8!T+N3#^uz;G&p|1AR3um!?x3^2R(goL7W&6GtIluJ4FzKuA*utthUnnDpV# zHba^ccH%=663_vNKx85H00cucN0|T=8%Bsi5=qVs0+g!)dW86tftgqh0X&_ehvH!~ zOsD$oCGnvNsVNo|z^cChSp&$>S}z&~IQv@U;Zy*X_+VHMW=O-FT6G_n%R+n&n{gDC z;rgM4Ogf|lD}`%?)U@Ih;JOm>u2clXV)8J>pLB)vAt=JgDdEwLvMvGKgKbixN^;>D9BN>gn1fa|c0 z!zt3o;J77K=su>5lut&RZ7YIQYQj<_m8S$SNz0>8BntXb!l+73+HH0E{Z0$FYiZXr zAoi^cqyqD+Y$?N$H`OVJp((;WxecnWd9j+XEAX!=ti1xd@CuKv)Xh@W6 zO~Y|=MHMR*R2)uf6f51@hn49rL{c#)a?FBzynyX)v~Rch&BCRw9>O5um&w3qTX-y|D@qScv#EG-MM*{2?j4o$*W=kLz4fHxdc6n^BaL z7e&c0>P=Ki60X8{h@fFo+1W~9LF<>;VP-*<#Z(sMZ?v|@>E_fdgb zrel{H;(LiWO-YROy3IQntJS^1%w`8BFq{zsMR~KHH@I<_I?r!cYS!y}PGrJ6u&W>} z;t%9tiKtCPyepUn2bn!j88lXkC~fDf;Tdly)&L$lI&oWdxVDF;Lr(*>0VzWSCkMYV*vK0PDDj>(P zjzSZ6xw zUbFO(fRdDCfF5#@9mdc&mY`&ic9NX9H_!uDP9*SxiG zaps~NrDQUtV6ZdG?v?`TT3InOsaf2LSX|ivoh=L^BS|7^OJt7?Bn}A{Q3cE&Um7qP z59J2F?Pf`pEkD_Iq`KafJ4jdUm6ToGr{yZ8q7`j9y# zN}a}^k%K4@MT<5=5iD&$jS`5x(DvkHjb?!;30@AUoVdoxVx_*VD0)|+MLUEPexi4L zNmf=Y1;#rF6y$Nk&~6aL}jX5jQuvvT@qvV~h|Ijn>58pVmhK8n{PxXFNf<9QI-Z)iY> z_aCSI^1G3A%)$xtGl0Js?^ni)TDmex1Q<;t9*=(#nBlDKX$e&3D~a(yfwO{RbUrhr zrUnp-9MeTVqM}=C4(cUobj=HQvT%vcp9}?712}f;Q*Z@2u@V^rZ)fAtlsywUoII%G z^zu3m-0&s?hLk?n5(TrX2U|YOt;Wlx9-`dMN5H@X7{@CzhEW7tokMuJENZgI_@`oXsd;3!vAoO z@JtIE23x$UKPco>kfD44MhP=5n}s+QBAjIOahIlCy&H)fuz9J3VQAocs&+toS5Y^U z$WJp}#-F$hC^I-k#i>xoPSOrnUVb7j{5X%NM+k(MUU=a$lnjh51@phH1viQnzV<|s z+Efw5dglHJc@+9J?onZ*(ciw}CK|;m-H?K#6wV~N$V^d?lStu(m-3jD@CN~~`|9K_ zGvL5u_1Ee+;hp%@#`+JFaEmdvkqbdVZbfs$tnIwA#1(Ld{48fwC{HVgbWy87R zRblUupR73r%yaIQv%H31W9WO=j!&y*5iURNiW3vjylrLTsqhJ#@y8bax9UFSIY@U^ zAAWpv6VbwDGQ(0--}V>Qu=vK}1EkW%{t%*ev&kqdq!6c-P6NynYXD$hGS@Z`2fPl! zi+N+nL75DZL}p5o=}`=3i@Q+}_Yx@2Jd+3x)RJ&O-ULLxpG4NXNl^ezUy%LkC7?P5h^3WtIo8A(PPWXvC3|fAU44>4Hoj33-!X_ed ze@88e^W0cECsq=2wKxj%1~1a$*vcD=g&r9Ouow*5W>^K34+acOK-B}`JYa-rk)AwY zLKK(a2g%nRuu@E z@WB_67Paz7N1W$Ncjs22gGZ1m0{MoN=ec=%8|P;93_85glks(0;5mB5jH@|L1jX@gca+Y_Fjg>e8G z`)!>4m?U*CkL|ctNFL9O-cgpxl~u4D+>%m&s0%4LGsbo{t3a*R7Gr6kkVUU2HymLo z;?FG{gD+x*6LCPE7l9KJMY{wV#c+;Ce|W=0sB=_HabDml$V&ma3{pi0Tdurfm`kSg z2!n7pNpFCo@Myi~sG!4jFL*nK#{iQ=RVfB1K&cpz5SZP7#2D0*E5*I!g|5^Sd+2~% z?ggRJ`A-o|993wQQXGq-dWNk@!qt#PjzoP)JwP$@9~?cMf2Sb^VNK&GSKN!|EI>4g zqI)X1Gldzo0Z8$oYK@>$4M4PK8r=W&CurpDv7SBbz$eHof~~_RLWY#nty2Gh$!v%k z4;UHr?6z){jT#kM1*0(y_>RiEQa#5#6B7y#bm7yGSR31@*)Dlf59aYT<$vDk6p>uC zW3ty4<6Jj|;5vf_*ck}2^1_Xuog{{SXeNCbRvN$)v1~_*q3>8&x)QP&$`y;E z7*59e8u!4P@1p!1qux<8Cd~Va9#O!5H6~t=xU{Hn5%GW@!829ivKZ2w4|%GU`NfXI z`&B&`UfQvh$5t-a`{qFXmwv)EE9J)>=recPC@e#NHyLFfcNdZ(;OI&cXz?9N30xeZ{jFUSqKhH z@_LQ<7bI{ff7H~)_lrh4av6G#B^wnDOSmn!i>FTEY+ycPI?p&rm8_hn%=`O-Mp>A5 zb4uzCdl5k5=vBfUDhSJ3tvrBkk?Xi>6!~9h2jsQ(-~*w+v|mIIM_5{&H^#xm@!CF4 z&@n_c|ADGISP>orlE87CruE!tB2a*fQ?mt;Q_xL7@D!Ktj?c%_tDb{x9hQo1jd+8L zj!8l2KTjm_&Ki#FZz)WV&4>YTF7qV^9)Y1B&88lFDWb^X7xqy9&3n2+gvW?E6pK9{ z)Ui=>#X@7&afWXZwGiNeHt6IA^Ky<_khLtaDz@l?26GS{8U52aENDb*Oo4tDz>cCM zVvtdS=zonG$PAmC6l90|ev*N5_lQ84q*k#WWBmkjoi?JhO zJkU}+(hxTqHE4op(8DxDOwob7y)OWA?sTj2g1Q*0Vf*SbjR#3m{m4VtIw1#Ckr1gS1zDYJ zkvbM1wBOb1?DsrG52f;G3KD?=U2Sl#YEhW=dT~wkW{4Cjy!n{-{|l22gfb7-l<%sF z^(360`tLB1$Z9=#s!VIa4ML{DKL85AKD?I&C5h7r`mLNnb`8u#U#}6Y@p)t}SOtDrJ>wpV*$5p)X(Z+cn6BrWx}~@HAzKYU&Z-V)a02 zSOTmFj;)v=xx!!Qa}S53w8O=>z8C!|2q40&%2hppdoAFp$C<@f-aEEwn4+hKw9~MQ zh)=N8Ck7@gUwd~2PZn(Z3y0V6pumnA5gl&i35`p3PM?o*Rify1XaONn*#ded-aSML za0%$3^vIBkz(DxaB-}@QKvQL@#Z zf8+ohcc<_8Uca;+T_>_%*x}pa!WHG$KoNlh9)CE;UeS&qu-u1aZmpV;Bjg6fWBCAy zo09r~$6fJj(L7mKrA7^sT?g%M^2Y?6JZVGYL9?^HYrhAKx1af#g%^S7J}tkeAOVmt z{f7DO4au3V>=I`0k_e|eiQrdWaZi<1Kw48n90g36II2xLnc}_x918HwYsNBtULX>W zAq%tqVozp$y=y=@@C{Ms(OpJ(iVqeGylvnk5P5ybcNhp;H<0gk3}P;@XGQQ-#ym86 zj@P%aS_c-3UBd(96xD|z&fpGi<@$J~$2aJF1O`sr)Ay0<*vo+% zyd3T!jpQDN2V}NlSHkI+oH7dL`k-Kh4|DWhK=2SwQ5s@b+I$9Rv4OpMSYq}PX(ic- zER{N0u8cC&q~tN_Ik246`il9?GH2FD{i}#_L+b_*(Bbl{e#cKiFkzMF$FyeG+uL}$ zNpRAidjVPT@D~`jTyFM0p8kz)$QKDP!lPwm8pQb-Rrqa4dtHuL1a=Ot+8K z5slrTD3~muy}L^lE)t0>t5y)5Xj_6vTEZa=f(qayfQJwa04GvB?9Va6@!f|wi^WA4 z3q%?V{$mM5Rc4y2GN9zx-^z-BIvAQNZURwK9{_YkN#YRk`BO;P`>bjVg&hs^!BYb- zEjoQd6Zq1XBAr$=JJ2;K7vfi~6VV|~B^9V}n>^hm{3Q#Es3o1z6HEYB_rRlNj-l8r zc4{J1DwahFKluiwkgruk&*Vd5QP${^3#OMudRzcH>E=1N%q zX`zX#PEb6T!t7AG%=Vm1hwcxTm;OO6K_@qABlL=>Y+fg{SYf*DvN6n2um>NL7-a6K z+Tc|a0kJ|+Oil};xO&<|fIKzJ_2gtVlu<+7v!X3eeyF}sCC^;LY0BVu}5?^2S#TwC#){v362!)s6tkqTS#xd5+4*Bvl7y95`m?xB6 zS*nL~kx-%j)Tz|glV3e$kX2y@Xl&+{>;zQp0r@2FUJ}$tdKKK2A3qHRyx0@~pf(_# z#>vp*xR@JotdWL!?Is3#+jOWE?@xp(lL%jxQ!qFr?m+wS)_%`|wPa-ai^8rdKP)W6 z2PV>Vg4-K>t&=gn2}bQ_8@8uvsR>9$Y!-NkUQH!*8_`gAAE8Q@_Cqk|ZDHH;ETo1i zJM@9qFbEoI28wZF^f*A~$e*6+xFbUIfCPtq{3iD-x)Z>w4j<5_ak#d{AT5tK7tj&wa*0 zk#O4rFn0<-PTflJ(Q*Krnkx{$BBmq@43#w50;f_~Z}LnbSvyu>6$g`e>Jj)Mc_0a< z?#|E-;9V9N>iffdhS4Q{v1X2x42EXW4qzm;EXC3|5eV z->Yz_Aqvq(EZ<(Zr>5^afPl7&z`a&eQs72px4x5{a=Rbdt-%-Srh zCg~#FL92XA+~)|VJq9VsYgHwH;0?(J(eWMk%N8&g!UB}PFsD3 z))t2azCli_L*)|ER&8+(J&x0aZE4IaR$>D%a|%$xyaw0TRFaqxtsrYk7SOkasUA{glgQVHf zKVRUXob^03LU^A~*jZE)t>vgRI5J56#opUnoqKqg(r+Nb$?1tuuiX~S&WWEW=ZlJy z%o(;2^NrOwekh>ZtseLaHLQmx8m>wzpBclW3VeFI)5dd#joJZsItZ+7gkbXA)*2vK zIk+*mApRg(y+BnLouVvuho z0t(M3>L=OsT-z$GT0l{5xeAwEPLheoWi)aC4H%j(z6F!_72R<;2ks4&l!mW z5(n1p&8s-eAE%YGd_1BVj`<@P9x4qP*lCy}A-AxKD1lE`!UTajDh;TF{3Uxq6}vhm z6O}~3M3OKLM&)vq6V+K!3Y9NoaI8cRL?Zy_gePQ)%wqSf(m-bO{3qn(0{I8fOqG#d za#$gk{4nqmAG*OQnaz#H4I|}5?;2!3JIj+W565`2feVO~_KIyFzQ%AQx>eO5Nbr8? zqFdUJCV0Z6gBr`?DFOdRJ>DMxdJ9P3|GC4r84Q#J$uICED{vlJRZ2{velvydx%>=^ zj8_yFw}mHaZ{w%;+8RZxaL2)e7A?4X;(R0ZR-}OyBa;Gn7*%o$PF%+UV!PZiWe12E zzdzGU;8=wu3`|JEc_&C${JyJv-#Pb#f~&c{+jmvhbaU>GeDAwD!ar~?xcBhA?K+6} z5W+KA$UEm6uI2WSzm9MG;kPzBH-qo zo2*7{yC+KyR4;j3NL@p@CjM1X16y*3zgs{uT%J(4j|@xhd%oN3TF>1=^(?X-b#x24 z=Ky6X!gr9Ti|@E5JP3^;^xX4F&UE@ba(7WawD&Ap=fCGrq9J8Dz$#k6pbq~qu6*8Y zB54PItO9Rg;WJe9v*~yVUE?}EwA=gXUT>fbCwmSht5}z?_Sq@r1k521b8`A2nR?tH zG%T1-^PH?^2lH^7lXZ}8wdi(H8<&X7_L;VP_`__|TpVIT4TB)YG=Qw1c{kom_hL0S zg*8kf$w2X!7!HBm6VV*{yW=Nc375n*=gP=ULRxb75UNQTo&E(GA+hxy(%pqQ7Zcrg zup~>E0TL;RwJm5v@@9&A_a^$%1@zOWJ=ER_wSV>`gZ5gXy`s$GXNqoBUFUt7(a&W5 zdg&H^CUfYShK;HW9$W>se8!~vG#L%?o6Lk1S^~xw@U6UkRbpd zad)=jehFzsq?X+~$iL)VVI93{3X|_)+21;q} zML!E}VjZpMc-#}*<~TpfVe#NN`p`iSfFbW17d;M}w`9z>(7NJTsD&FJ=S(-vHr6Pc zW9aZVj&C|<>s$my67JxA5pq~@mRZ4z9_ckq%#JMN0&;Sawq>EXLo0DC14`Df3)q9W z@_;x}NAVaVm9B^f+-o?4x)8|M(& z2luVxd$TJ;QCy}B$I0M4&$;iTEPLQ;Z^>G!_^NxO_A|>dj;~9nsh-G|Hc}g-JINZ| zxf0rhITjNc=)rwap*KKZnUsshLmHS-#SeaN$>I_NDTI^0DDYBfa_d$iFMe~}x*im} zh|4>GXir!NX@@h~1&sA_Ozus#mleu`Sf|+Aad%N05iE#xHl{t7Mjkh56ta%?-Qj<| zDpNwH$qL9ID476M3UP@is=rV5Y-Zb=t9Oxp}jDm%N$;sT{Y2)c3T;=JN&oY zi^!qiCyl1Mm-CrT`|hVX9#;hmtzk0?Qe48YVqz5shWn(F3i6Ooj{E!gzGXnPLkR&pwxp^POF^ z|K+D&v^;(osr-GQT!CY;nm_vJ)8i#q<4P)bOs`pJ zy(_G|ihL@}gN2Vgk4^I5mpyy>B>Pg3ZXU(V9qeZ`lUuI9Zth+L0qy&yOl>~9aXh#mgMqbuA58hp0KJs{5EpDto9jhaYV zFe3lVX7y2Rf4n*U;iIbinat?B>%e>p2_|dtn{mp~RGUmaGB&&_bV8I?vv=A;92+%% z9_#go6qG61{Ond~aEl*nZGJGgj-Sbbz?_oa9p{|;O01BYOsR^gu`Tz_VR4Fu~npSza#&qv8V_*5eCmTL3^eu5g928rq?`5 zQB&O{FY>#ilhk@?`(Sr|c1Ux4t69VeHWlro3Dq$JRa#2-K3h+mpEYqol9Q8PKfXUd z6C|9bW=68zz`_es{JM!BCT&trza?V69(q{`6_HrR^lyp@Izr_kv3;K6l;x!^Z~A{w zs}!Z&w?Aq7+|{WPrOAfEm0I(#t4u7RU5c!*4NR*ppjHvFKAcs10Q=4r!cWFIH(Efg zO;{$%UWSQ}@6tzyLHA%s|ZgQRPpDS{lVTu5Zl~SRUy0v=zx||%@JFeXxC*A zvpH0hcIP;=>4QhGl2^+he`-2rGvv4^4BGr?|MF$sI2i{^x|a(BYBtipi@wJ7g_(BG zTt!;GPgXLqC_iT{&A|qvDyU&ye2j|Gj1xz9P^X(<$}Uy|;b*oG=A5bMNhO-8T*n41 zWHy)XxvQAfkn^~FuyMnlO(`*8vb#_NBrD)$F`ji(33BID(4tv^y&$tiKWEJ>6hlpU zcaN>3*J_=mLC2N2Q>(Fuec=jjqxamcgNVu6xe?ItL<1;wSt?#;Bvl-=Q($*JU*`?M zDDC%0uIK5&vq6fAMgZ(4t#kBloRR`JBKJiKuFOTNH`Ca2w(p)>6Ip{J(iu`~CUHnP z2}|8$9p4N&^HzdKl%2jRlppnT)c5T1WBN6M7DtE`CG?MWODaHO`8!9ezd=mhrG=Dd z3Ch!wykFE4f&fkOuX0Zb#v{%xH*VrHSDmY8m_<{Ii2!P%Nz35iZaC-QEU|s!iQv-p zhqs^{o?I8t||NTFudal6nnriaGWtFbJcY{N##aE+z-haSu@vL$G{m-p2s@e zbl?!$144AB6_-F|PhG`~wPo(8X*R`x#T`NU4%TtxD)7-}(T(~YXX48~$Cp9BO8@CT zxi<@_Mc0M$u+rY3eg^t8E~|8?qX~U-k8`a9pRrYj4;pHZF@jX2CX6s+q#IK;Z9bLW zw3qC?dxm&U%Q`%OP~$4fkc+9QQCr`}47+EHD_4cTDi<-aE!5$jBu^&?wjAmxlkoD# zb>;%+d;>Xg`gVoAjro@H>cQiu=~Q^dPqE)F4rtFkk?q}EvWnz0?$wXe!P*I1yGSaAF!N`E!L;+AT3?LVdV^mZT zrhIt~Bb^(duh>?r#7I)15O^1TaTCje2vYOoL9``tlT_$<;+`Ucq~}%HRFdOjD9Jt# zn%hi?8=q{Z$yU-Bp{z=0X=ve-)f(5~K0?p97J*5{;%=*vL8AQ?l`pb6Sry*ExCOL(X@=1 zYpo$&g+dhx;;k|7Ez4P>i$JKy)H9>w!Kqhqs!1&I;>1L>aZd)THYn;s3H>LR=7BfY zkuB=VslZHURcq5t=S1a)mgoLZ$66%iq1NcCQZO<#s`Bce7i* z=PFl}QOwGYpGta;A4Hx?w_u(lRa z%g0p+>07QwAye_md1%U0{BhH?^^(TP5lAa;){KD4-{Raz{YFStgPKykQo#W1JWC}^ z>kmAYhj@fJ$O9^=DZczXV){>0sII8`$KGqIdpbyrwi?81&N=HO9|a%irN_-w)cR;C!zqypryt6`m+>OwA^J_3PwhBK(=w*KfWK29=|K(>m%V%Xh~aOk6TXnt$Yp2 z%8cl;HCd{7RbC0(%yBb8GBUfA*6D6Px>P-fC;56PDy2u6&Lcg1E=E?xHqJ#5F3h6p zzF7d-55De_-S)Xr^pMv?O82;0zG(YU;lYc$UrD!4MwPW@xXUWka>Nvs!|~BW)Um^V z_~;#JP^ZgifE{1NH&I?)G0EGMKNXOAfG*Y&AE|uKJTX#sb*-{Yhx*#79-wAb<^Jj0 zA53TagCsO1Kgw8~O7<;qU@n{RMYNW$fqdFd>hgO|UhY#VPUTK*hvXViBasS!p@3eb zWxc^trV&5_Ed6GZ{E*)!>*_#*9tBL*txtG0xy{gl4NCmva`m z|1_j0*h!wchuL8cG9}i<5-IclSFQpDndi71*wbfij~Xb)e1%A?B&pKA5`5e%_f$5I zY7ZfgTlhGHNNHgyM>_6FVzQ2dn56yS{-~_jjsLudxe1dmAXhwA1VvD);QC2N(bcQCCap?BprY%<@g-x(U zWh3tP+sT3BV9AuL%=!kiG+qw)hFl3S_HPoCn%ZM${-KlKKwkIlkJ6&COs)STw=nS? z%z)nlPTqr7=|9E4xh6rc0CRIZ`%d8{K>${|F|10@`tT$05kbD_dXu}+zu8oW43 zWL=!v_|8LCS)!-4`h=LeV{BA8Iv0`4tHy>o4DPfnEX6Z2KAr$@$Kr`tOz@#UWMX7V z<~YsVchEbkL1a@T9rlW!)~1a`l{va2YA%zV=!!sfedzGNc?N|-c2>+wV$YzmxLM`L zq==v=rYDB9!p&G6U|1*f8uw4PQkFJvODpU+v6r;44eLt@%b;=I^5hPue3J4dr-?Au zej9%w>d_b5k_bWhdS1en$F9TOBC%(hg!26(oC| z_?Z7^dqesr0%)u31?2I^w2c+C$vJS}Tu0q$Uv}~(&KAcP>lVDm7p@wB_nf={DjK@D zCOuUCVE&zKS1odR^yOg@=}-T?hVam&ad6>jCz(!r)U&WKfnP$q_w+o;6b=7Mq_vnf z&pt~HqR(7If60{rmCMb$g_`*r>7xN}b>KicV zy=)7{jqZ8${0fA#IWR>UTAmlf>bo*UmjUO*{y@xoL+|ij*fJ*lCcKPzQ|vo(7RGy5 zyy-)EmUlgQzDaqWrZzGL-WB_f+-Om!UM}HV=qFLy-_&}V_gz9N7oVo>ZIq?)jD|EA zA1|kKtzucfi&pRxcd6PQUWR>pM48!iJL%fp=u2QMmvLaiJ7M^xP#LZJ`ol?4`Kw1d zoY5bD-z}AM^d^vc4M!{beHm-xCPTP{RSq!?EnmK2 zV|*3gYxr|#EyR=?$osl;UnfTl!mECY9Vj7-2#s4DY=`_)9b`)Hg`5 zP?1G9GF4$!GGmV^#M{dhrro!M$5`#KOpQ{MxaZvU4V2&&3QCvcnB4wo)XggP!OZ#s zaQFq};QY)1n;CPD>xi=TxF4|I8u&0h#^@>50LQ(J+Bu_p=qGtN?ICx-2k)Wf?*mt_ zVHFp#{>$z(n!f+PQ}%Jw z6woM+sZ`R#j>M3TEBzLRdyHZ^ec&nbp)ADNpn#*~g|dv1q8haqJ(e>S+I-)1MZ3UR z=4RWAeval;d^|_dG@CXg^T+nc4cucCtJ$`9(SFRvq@Mfk@gNX$-b~0Gnj{vPnoe)g z(0`R=Fbep-W})tJ&NXK<_Wwm*?{AuhyT^&q1MaiePGe@~Ku1(dOpl}iin#G9-99)M zgmk`7<4qw;$F-@4AnGkl9OS%_l1M>RK`6HohedrUe$rZUIQFq?;=N>@rTC~2ICv#{ zFicLVYS&%qH?O==X$aCP6p_c$5I2J3@DZp}H+b3*6jZ)@vI#|q+>@Lq_-_3g@Q8A- z(&#GEOoM+Nt&?7v|2fFb;P!`qL?N0TC7~0voa-c^&w}{|)cZ9b)6?f)1G`m1{WY*> z+C|eHN|!959Wz{~Q_OQD4bA(T#OZz*FNZM<8o|5}EfGlVhD0ZMX6D>gOdmHlLbySG zgZ3b>p#XD5wZiEXt5O!H6A?LHl0B#0G(s}DJ;a#CB?YrPNi=aI5c5WLA>2u#uRBS* z2OYW<$=yVB+5W7FBeWl@KI%r*0OQ6@Sa27!V$H*PD4OtNYHOvsK$bu^%NFhE_-^>` zw*RjA?*;$8>c6Z0TMjxK_Mw*;{BRBzY%D)8{0Odko#zLuC zL>IA`q;gP9wPnyU93r7RvTHUosT?>{?EqfOP!s;LBG}i7QrXiMT}(nrXu9WtA3!1` zafN=lH$HmlvPY@)Xm26H5+RAKZscp&@xO)^XeIn6;_$AW{F+FK+@lGBV-g^=7g7@k zWc+JFFdE{KEke&(ODZ*n`x={QDHwWz?9Xk;cw+Mtj{!(n%NTWd0>sT;mtK-EX#mfp z!l{rJR1y%RKStJJ6~1$no{~7X9F_1uYtIeJWuxZt4A);A zxvInoJrf9RWzD!@=7LVa+UR&{#&k6X>nd{=j3W&l{d4eKMc`)vy7L9?f5Ns9ok`9qO%UK4Y z&ph(k>nDK`rafJ=i*4J*;6>BTF80#k@*X$HLDS3ajg!XusRMCCiM1<^+7^yx5Eo`25oO|)N^ zKlhZ0r#jz!>W_~`#yPmUZD>TqI$M`!oa33nIdV1OI(51Z_xRwFZgw!-AGY8Ci1b1e zch`LddRRK{bKzJe&ZW=_>czry@CW8cu=&WbH))$MrqD=k6RWA*zVjt3gnw9y5-h=0i6TT5w;nxuaA?`vs}k zTJf`%Jm#mPik(6(pud`H4i+9=t)k2oFWuW_Y6>gIH}8g?ur^sAaV@my&Xv&%!mT#W zdbrJ|yq0T0B{1+9VmxP?oP+C51wrLVjzy`Jc}$ITbWhZV*iB|4OXfo8;JM$^_8ORj zF3t|pgZ`b)xp~HX6mFC*$9kpJH9~Mx(TE$dU zBc770#Eq+36nDYAL&zI+fSfzdFL^%ag0m4sD&I>Q6RlH z*sc<|g9`1$ZP@L;LLTslBLiF?H^n&?*&*nPfJI8M!-P!wFL3u|{dAU6-bHK=N=P_h zv)NKP!c#Dgozt|*Q{x8rQa0@pL1<-R$%lp5D){!pU7>*tER zC@K5&pt8A{dTLNEG6CzC!vVgoL@DXHYZYV!Y|q$K5Sjz4AvTd-$OA}2oG*&}G=|x3 z5)4eoNvf`M4P|uCBc%ua5EMyeZJ$zmHx|)9(lHgAdd6tC04VP<65F{O^5~R33M`ha zlYV?UYVMw7vhMbvQ53MFad#o-$<}P#lWAJp;F@hlO2V1RKlPANz4Oww+OI-*$D-R- zHtt8<&vfa)(LX_->a0u6hIW{n)~NDrk$$+cGQRiKtY))FYd!M%bjuFiE6jX51`r0&vmFvW%S>_mPJu#mpZVAJb7{_F*O5$hTlE zU%}~q0j2dolYL_EZIs*&IPZ1}5kw)jtE?m~1VXfVbs0TY8&43S!ltCGU4<12_0}es z?CPMB+4_SRYa8=m6Nh`|b<}O!NO)j5O`quRIFA*1?%>Wz5ACdWd+(LX9A<*B@V^nN| z1G+m)B`X7aQu{+{(N;J+q$2go85+F@-!OQT;+x)zymrg^<|adt9Jm7$3r$9x!!B@U zClRJh#M619CsJI}o!i7nDDJSwC8WumA0F94lX>YuT^UIvG-?~Hga}Q>@fj`qd)9+A zs#z~SW_x5m}*E?D(`BZ&vX{PLZ=$)b~FZXYvOA3U;`qelNq2tu)LV-dzc+} z_}j5R&b+KGu}(R_0cd*z#nd{lN(Zaw)e-&*!=N-f1j{M`%0YwrkyZ%QC!a=h`RTIN z&{>7)WsUrG3sc#NUaEd)sgq`B?m$X+v1qFc<7TrvUP>gxtyK1WPrS;O&^z_ka!&_d zN;f;FYlSx<1e2e`xEGHfx5=Dm6%2)nDpBeFco z=A+Zk&J%%DjLPx_wf3-f%KUp+w5-_Ro>VJ_Ay*BxvBS*CiE_9oK}L04x=y!yhUsc2 z=P1(Gg_VZHsdNO65-)QDOgmc>1$f*^yC8KuE)&mbIL%xLj*w3B6s<6Yvu^=HSDi8- zJYC+DoZeM+G8Ma=CdUHUwz{F%Eo1Vzbf5W?JRC9mlTQWZ<1SWkxue6Ka%x5Md9QWS zEoc>8YAQ;e}(X4xl4-9O5l=wM6LidM1XubKHu}VVfh7 zcZI%@hHfAa@sYE~oq(gFc&heh2;71-=XKO5d9 zO8R^uhCQ;!soan3?`&LmuD6-gOkbbc#%u()`FUXcqjO~D;|YqW6ukzNPNika&5}19 zTQZZHDJ$;fq@vt-qm;}@o}jQvIblGlR9dFoto|%0`QU((nbb_#C%Gd~6*#7JEEb2l$8oYG_Qq#`Wv8eog4t zDg7GNuSxwnqhBZW>%^$kGX36|)IIZllYt)(`M@6`uxF4xFN1V=!C}j1-y9 zy0b$gr-#PyH;%v4_?tkM>Gu$r#NU~d$bWb=c6#XC^x+SOh5_Q=c>^%dl;ru%;Zswm zIPTf=694T}qr)@rzc|LB-v7lB=cZ0c6_Y32(D3BM=*Z0BhcgfUWajXnNcIoWIW#OE zGtY+P5B^^a^6;My4YQu3ztG6k80tRy3)FkcjbNtF1CxM(!&75p<8Bxo{;TQxzl%YR z&5nG1bX+Fs{pRe|LoN42$mV+JvBNqJ2f_S#*IuL{@K*b(d_j7-yf5qB92Lz!WYWo6MY-T z7yd^rQ&U{Znf=d=o|G<3O#$uC&m8`QL;Ud&W{Vx0I)PyWT}H;nFq0$W>zKIffdzGE z`_rQ*GaZu2|3y+eXOl~Met2^9MAT&=guf$MqQMWx@jY|+_tQs1gdd$0oS&RInk0uj zn#8o>Q)usKT*zQ*3XQUJm@;A#M)(trqbfu>73{efKoni2X z59YvmzBI&L1yFW^^$wH0o(>sLogQWZnX*4%1VzYgpTbZC`oM1-A3Xcm=!q#H_t6q& z`dR$Xt&Op>E`dHdIz?Lh^Yc+QEcxG@KR-4M_)jq1$c^D})no#SsEF~S;uQP*ymVlk zOjLLV=l2!#?=+SKy}E+p1YHfFR{`P>SBIuF6L>1xz(j%vAN>V#AN_0O9>+u-6~O^O zB_m{JWapT|`!C4Q|3t!HT-1%MAM^6)Ufe}XQIjbZw+TO7@z;^8xAMo-F! zi{Q|LGDk)3PpAnQxtLR9B;=7XA)4YCR~Wn=`-!aHQ4xt#W7r=Aa$;<1Y7F&Gf_R6{ zoIeTP{2qf7{5Z{zaej=+G(2#aa}*yYlNdfTIy#IvIsMQu1c+19?~$cWzX$ot$=CFI zTv5bP?Ia?Se}ZKv&^~5LA*TsBtzj~m;c=v5W)%VfYG@dvIE5M}PLDG>29`K9Cj4oP z)s3-+v2kpEva_`qJ3j^<*qQ=Dd~I}Ez})oiyO{?LD{+2!`sjP||2sfEVrC1=583L2 z-{pUUclXH@43mM8eok5j6T%qfe;v?$<3jh{2~h9YB+%#R4+O)2UchoP z?2(akqd@FG$Nyu)*gHS?J*44(^7Szh(WmeKEhppf&wg(7^z6x5)bSqv2PKao^Ds#L zv?BLOlI_vS(YcYa*^|I9Q270?;{V}OBU7WNr?78AXd8h51!-t_YGedE6(y_b`+qk^ zB0>6?au@PL@F?;YOayjq;cyc7RR1^NAVRBuGv-D>Ak+8%9wVHZ!kA8zRm*BJ!w0|T zIrj&@_qkCJ)nDQNv9V#0#H>sQ0e=oDMfmXfS-~*b!TumHihqrMj6*1%`GCO3Fo|EK zJo~Ilv}7Is25{*zvnnSOCh*|I%;?nQ@6vNoU$Or%shWtQeK@UOp;n7~FwWuep9CDXp2K4`+`4372I0 z!4U8hk(r}uKxKJ;pR@Ad4`u{oewTuxGzldL9m38$HN`!8`sjCMkA^^p5ZHueg4BVm z?Ay^lNB3rqexJ2I7?;m!d`>?&_oY!X7B=$1zq4}o&32Td{R>J(U`BJp_yobCz0aK; z0zwi!fJgsQgr0vnHRizI&^3*pqa;0hewdy8@$mU!@CgWTU~iDHAaRNaOgaIFrIbi< znEzPGgQu`+!>5KpESNLx5SG!z%fk=-AP+yBm}3sz5WhSM1OhrC=g}Ww1NsmPgW#VE zy)t#_$K|2u7;1&0o&E|5YK}|AfNOxgmE` zpnvcqna@Nof;0v-`0%f1-v2q~#wSqX@UMw1V`Ct4krP14b0^uiVaUrPBr$9Y5FEjW zAkm)0Fvh`$@HL@dU|v9!6U^_0XHle~PLIvBz;Lk2q7Z80B zze$}5iqHte&;J>N6*``I@T~v-suEsNSz=MJ7sNNsVLbR9j|~sL>V>x|kmU=|J|6r? z=@~0J$yo)WJos;AZT}L{qo)vkmhc}Fo@9WaLleM*XNRf%YkJWBsYyI|78?shT?F+1 z$B~g)P?O|@Z0z`tONReOK^qT#hx9Hy^ue>A7kc+S(mK%9=dCZ&DR%bRvk*0~iXsX> z`05P*|B-QxuTE1qp;<)+#%d_e9{uI?|JUBxz{Yi5`TY$!B!?0?CdafRdntRA&MIxqIQEG?7{EsQJvLQ?<0#Hx`2g=wkBQw(Mgu8G7HnBR&c@zO-vr%Q(LeH<-DTK&rl zk|L34V+4)>wbyF7)o7n4tw9$&+!I6@T$J{8ay0ppnG^36r%#KOaM zkac^cxrNnHrUB@(wQyY9?V3=OQ|Qq9fzY_s1z zmkiFz=%G4MVJJYO-BoDWX~)RlAW>nlmq1PZs+#&p8}e{8VqM7XKt|AZf)rSX9K0ja z4j$|hLe~%t4V0pjX-dQYOe)rCA-&q2j)R*t8`Un?Q?>(bYg={KqK)P{u}tk1#zoEfC)kO82qWTdCnABQFzoI`*qq*J)D2Cu)rX7M;G09hcuJMoUH#!a~d zKyQbv#fPd&)Qd?M#_6LrmSTk6-FHKSpJET!tY7ev>zG3+ z;ks5zG?@?qINer=@#cQ0<~a%560~D+{xD&pu*5)1xPd*ibl4wsDH|(gL2d%%20dVP8A3`~Lr6k9($Wgt%?4!>T>ZBPC@dw! z*j#00utg%OmlB%l#Z;`JuDv>!A+bxbXW03il{(?%fhqCl5;BYgMvx>1QS#v9t@$Ai z`z77-*R)*A>4JWBI-=%jgGqUd<12KJrMZ4Z>Eauc3v3K~)Ga zl3}#|*5l-c`2{!tKg7t{C^Ydiq^vi0qjfm@iaNZQaX&jnw;$KYY0hz13Cg9jKpziJhAtKLRvEtX@ zW)3FlCN^lO?6@|E=BwauaFq~j&hR4yI9=E1v}Px9q8hSsZPhRCF=_37u?p zt%dWEs011Ve-rELAOzT&d(v&)1ayUpkW8q(qlLQ;m>rk9mCc+y-S1i<0yPaQYE{eb zycSQePaEn_XeJQSb8i~I`mwPv=W;0FqUcT5Ww5D7qxOW8e!IKT!mMDFw8e7BYF#23 zxxD=S&0e^*a1i;l@b%WhH`tQ6(Xt1cJUOkm>yO3P0p~v?%a>8md=il@y}E-sRO^Q zP`12xS{L5dgC3}b^NjXCB!+9beA`u{gAg;+5#tOFFW}OKV-7gvZcop&m|3?vS{s_8 z&D$CS=B4`PL*$Q;5A?609t_teOUj;SsV#}@BKu3!jsZE-ka zLIr7l!rk=MW!=poL}z6`MiFlBRfEIJFmTx%2(M^B%Huf(e;m|QHnN(SJ&8hMH&~XZ z!+=`6o9prlR4R%5isxd55#yrn8P4KEw&+Hy_PWAhBiqs{%b7HHR*N$G=U~{PPdjcY z=F?Ey4BwQVKz>t5MX1EOZ*yh?r!{S*W zl5^gj3*LzQo2Nz}xS{v0gOL~SeB`%V|9r(4vd6p*&kJWg?+BU`^))!e@7ukp+Y7TP z^RN3a|8VxZ&))Tmshj@gp1=6hJ?TGt`^FnT``jP&{@$JM9ys>RPp^%({rsJ8|C0v} zCPt@zJ63<<%ezk>I@S_tIQpZ%{Hx^m|Jf_69)IGq=j#5;fB)*tD_sl4mN)zx!X${9@x>$G>z_@u@@q^WmSge{SG2FMs{Om-oGNf4snp}&54_2N%Usqmu}y4PMh1gEtVXb1{>6+@l& z0Iy2ERH-)cQJKpb>OeLSR7j4fDU56fDG?8Q#KRu(aENI3&jKBIy;d~P84h~5)D-=4 zJMf@aSFd+0YFTP67${gf!+EE>Dzge12B}58Eu`{Foobz4>7^~z+3)gl|0;M}OT`@Q za%=B6D3(&T)9lnJD`T&2S9Y;Z(^>kHDy6r^IL*sILt2_%8j;iQx?C4ZiumqprEVLt^9;X*-xuT-K4s1x{?D8JCG^beZbkZ~qspG5u zFFS|M$V56}P8VDY-1SL%zK0B!SwlSfmqeTqCmk(|fGr$j zfV$a{-AY9-H|2%3z4tG*Y8YWIRjy)EthW(6YnJNo2xXR5`@dsq66VC~-sNY!UOf^bk`xwLAWx%~T?S-sw9En>cAc|YNNi^FCB z@z*o||I5s;W2>5?IpTdUbE= zzFsePy9*Hdj?7k!wq$6w(`(uU9coY0j@vH7HEmCo_h#vcC!U@5T6C6C;8834q<6gz zahHF|prdk#y|Qs>)EW2$CL}iwTeE>Fz23kl89=gSlS~X1P~+{2RQUbUcX+jF$;o)T z+7^A4OO#dK(u}4+G*Bm_K}WQIX1trKKLe>{s~v9AHw{U9EA9nFDH@yep3>Vm|KEH= zC42)rN95~2d+FH!`j0Q(kv$z}HXV!k)%}dXh~5-fvG@FBKCuu^>4?wktG)0oI6XUT zLN$BS5LNXnCa&~Sh)7@#Ys4757p(oGOk;bh#~~ZakGF+|>ORU8Hr%EWwBUri+D~P( zx`nHlw4f>4uG{KPU0~}LyZE|7FUuK`a~3E2eXM|_d?f3M`qu1m(u#J;-9)H#sutZY z(hJ9H>rp(X(jFC{CYPjyvd<{mi?g8e3oSUgRynhBR_ke^%zXfJ4+;4WrQU**J*eoo zF4?)OTu>j;#I~54$(>S7X;mw7M!6g1Y@shX4I_6NC%=~H!V^mSk`DFa&CixFal3pn{Y&EZrXjupW|fpUqU{aLl; zR4c4iCaI7OM#F=A%9^uX@G?QI5m!QwwN;{s!;@b(q*8)d{&VX2he~fzRHRZkEaybf zU`d$E_u*KL(nf_e*5V}2Vg@I_0Vt*QgbG<<=M_bJ%K#EG@~L`SsSG_HC=HfFomP00 zo+}F88uig01`;!L6x3MhxSSKpv`1hnx&xrEBUE?@CoAH}z9*1+GFNy)QQ?iV3j_a@`d?DLojsLx;V%hX%q=8ZYLz#SlqIres%Dq zf_U*9{qyx3h-QDNG{)AtI8Lav3TIK{Egh0GBIhAFDV)WkLd+0Py%l;|X~(s&^{7CR zGk$mV7_br)?UY`XbDp7hVljb%3W_r|QdRSnkGPTLsR>3DXp-^NgJ@%;ALSVg(G_Sx zTQ0iOL|3l#qo@WGmHr|LJkhbBN;Eh7B{2OW+SKGno0^)4!bbR!L?8SJmT5e>g>}{# zq+0VEdGP2Gxk1L{g);4aw%{wVxm-~xFaFOA7}H*;CByL1k#Hs@$lEMykjP zMKn%DRx08~DWf8E@NoUSCgu49;xV3(hM5E|`9cSe;+`QWbSTKOhlvjS8TJlwiZP)Rjv0qrzdkhR)+wm~Jeeh;RkE}4I2TN=) zRj*hlwsFc-{RW;&E2!aFg7vkt(n!aWMmoxkD81ZBhu?@2{YEIpcOlLpWphZDI5WVvK>QEmz;frpknDbFWbTSDQgC{^1SW>t!-g+T|1r~FEh zoC1`LYN!gkGL3?4Kv53~yAY+W5j;zF#oS!x6K;A9P@{nE(wu1O2}M*#@j4JKV`1jt z`B?TlzGkNBoAWR>4$8kpj+BKo>S$u=*b+sb~&`8S7XsYtdp5E!xPAu}m%SLJ&Y*|Dbi| zgmvRNYby6f)Oz!t^WHWu_o0iOcHUX%op;_FSO#Fx@v7rGRMtl2yghoXjTDCr*AjQS z73_=%9x)U*P;5figpQ+@R648*NOXEEZ_59nC~Ku&x%cBO;dv;EJrkOhvFUaI68gA~Hk5gMG+@ zsbVk&rG8JEC$Yj2NCvHsBP|*~!CrAERE-T|1l2|Lm|;khR^uxir>HViZI8NE zM9XTJrA~2Fu12M~A(a=3i0Gr`c4Y@U9E@eS-ZQ2vIEc1QLFWogxu%}+V(crWmqsfn zwNG2E%COa{0IjHDmCha%r*I+md$)%unKIYFHp@B0jnifi8Y?DUE3#bvgKC%`sFyjY zO5R(}d)vJHdvGRgQ$OcduA+$BPLxJ170@tpugT4~86e0LczNhjV4+LJPTTq{JZDgI z7&FubP%Yw;8!^-?Co3YZkN&0Gc~Q<03akh)6|$X&2E<5A3%tg)){E_c_<&i1!xSvS zVry|sL46%nk6{W5H<`;mMwqt(7*kN#6wPzzl>$>x`VkAeal#Y?7p5Q&rXUZdAP=S> z52hebOu?ECTU1QJqMeEwQ&1G9ps1LFMT=&EU`#>j#uOAVrl8K8ur^rgq~=-b@>uF@ zeZf*U2x6G^qG$7PjVa_(BJx-+6=m7U3;c*5x5b@H*|5j8&@o7sYuvHeCK;htyXERy z;U5kD22B>LiGI+L?b-l77EEEt7@*KlHQHFM62{gq7%|?GB>N@&Dr9&qRs ztLJX4O-AmAmt@ZGyR% z8)U`Ic5KKwW5~~)aicy#PDA?!tCQNav)` z#I$x84Anc~n7#;nT<|t}mx)_5J{r@G9lL?S^m~iWP;l zuZY7R@Hx{Pn$n5BxxG zLraUssMX_>icy3msA45%ZP8y>SZ&!r;aRnqA;TDJF=AZ7qYRx}f8ir_SxEhs~3 zVB|UgqoTZLLxW&W~~x}D_8n~6)XHeW1}BHQ?3AGlG3Af-I!p0+-w6i$9Z^C z&=Ot490RE(=1KleR*Zhx>1hVkO^KuCF<@?{79-}T{#Y#ca4h$55aZm+PcZ}??P$2Q zwXT--dgUMx0K;}-$vC!q8ln;DJ50<|fS*m@g0bKH3y#VY&@6hx`3_OLd}B9u6g3d9 z21J{Gm7$c0)?!AqqRQ8_(zQ5{is4rX3Hgm!Z&^})V-$hNlKh?pvFtN!JdtutqlvU& z14w0p`mu269>nyFV;Dab>Um!ST}6*N3=!ipj@ZJPb|vykgAO&yotrR4uB~M}Taic1 zwo~#Nf}D(^sESB9YMH}f7HwL!}U6j=_{oKP90G%$lhH@QsaUGqltC*$iYLp#NVVDa&fpdLF zMOnK8op&84GP-XiW3$&dN;#Ly)lL}7STGQbr|N>;1CTH4YL|+!u-WKfDz;r zMotsaCS*i*8C;ONi04_DTU$-Rs#t5w z$V^tPE}GsR4dl#P0OMyyP>fsCc*1sv+Tcvt0r5o1lWw@#s$%o4cN;iCwD5#YNv{FJ z@Pt*Svo)^UVvBbEEDk!zb}3PK+B#5pTE$AbgWwF_rVeC}yBx4ePN&PUm)D5KbHmO$ z*@7yO{l46M$jV_9tH>4?@xARz<2FF!S?{Q6JuBF?QdG~aGgzlgLZI?=>*ki!V#Fc2 z@HGdr&X(~k=WT#8u}U>hhMmK%Orxz8SQurMs`IeK_v?&_#fqs|A!{XJ3d+DvPd7;f z#A@AYpoJ_Xp)H^pQXvx~B_-guN4S@&iEtUcY85nvd5ZA_Xek0m(mu_>n@Qu8&1Ot; z3xw8S`3Fl4F~F(Ana8L*sg?&_ebd?o!-EL~tk3DCQ+A zO7ETd;9`UO3aHU8 zI*JK~u8>{-*u6-sP;`SEuiCU`0Su^dZYg{lMmRKtwA$Giz}+;Bg%NHbc!s49p>r#xl(0gjPN0?d z%+kh6&=yB&qfo=s7g0qi!J`96374>Cv^dBumM^qqE%~q|FJ_F~N`sDaeJGj%M|JrP z>RoBQ3gf9}A$yH(#xzE36J?rroe;rYo+AO?7-P?RT0K_^e&(l$6-8xEXE1vmOk)84 z_*AbnSSGAsJs&oy1M|#YH%4yX4!Le0j+9ffL8y>u1rtmAVoRski^ZLgGzBCAu+S=y z{(>}5O)*GKZSFe%=~T1DF+j6tRV^Yh@DXZeX%7CMYp7PRMZvbPcYURH1P z;oR)f&MC5RH<8%Fur-o9=W;f<1MCIKJ-oAv5oeFGol@?Ujn0><+z}xEA-O9gxEJDj zG6o1C29G&-so6i-2$XvX3hxcU<_mJtI4Rj_nCT?IPhBeNh=Dznab0G0ha@`8o$Q!k zY}-cRHf@-hzXe9&&Y+ulXacU*wZ5#=cJEbCpVFlCmosi)B4(qdJxP@89*Q|Qk zA6TM)*b6#X=yXNbu)wTYUgM}n)DfN31m6Z;IBDS*Ya=#;vD^>Uv7&Vh3s%Y@jZ$af zElL>e@O~PV5L6^k3-_vAaSvTuVIdI!`W*@*QQ{&>lER}Lg*zM7OR$(TYC~cq6;V;H zVX^QuZE3_3<>Vq|mIszqIiw%CvjHSFVzu~T85OK0)eu%n)(`e@YWQK1i1u1i*sBFe zBha>~^xkq~?36*frB0P&N058M+BN>KIB)Mzs`>z*#f6n`dU9oSS%bJQMHSd|SLH(LE5~Jf57JoJhxq zXJ#g;a(l?T)m538k0;}qxnwFmm7M!(d}d$#Qt-|6v1{knk$7(xZ`)U6>$(QIy1RJc ze(uqbmrG9Xr$1f$=8{wC12c19?aHL*GxKZX!~6G6PK@1^esV)1(bJpIU+08&^y{=m&EnOl0uj@{ylj{Z&d%K4Qd-v{3_NThj$$|bvx_d0ypXl!! zOQ(CglikUlfuXTv&$`~Bb?f$}hXw|ciJ|_Uo}MuZ_U;=>_a(arQhoh{L+cWKWBsXt zece5Y{^Vd^vTxm3@8DQcO${anhK5r8>2!KufA`qXU~+G&dvKtCV6bN(HJ0d0CDY0N zz5V<4rh3wY{e!*TiPX^Ebh?k$dXn@yl}hyw^`z2cgZq-biQc`*-oByk^kDBma&TV<&?{8|l8UAOuby&8jx@o2OZb``NvDxb?Be-jXMY1_LpWc+o z%uVdwpGn`o{)_u3CR5wyW~S~)J@QCDYk5P+8@y7z-81{=#;#bqr^oZY5c2w#tG#XF ziOl}FD^~3t^t_EB?;m_b)sJqwd%*M7guM1;u~H_8E8?wcYOe^TJW)48?aQ{~WB#6y zxBb$A?3m7^=cbdBU50NKN7ryti;C1O$xL#1ZszfcRC@0A_5U!PQNp&FIZX)ju{-4L zydt!%Po&58i)9#Fndn9^A5CW-**!k7FEcNg@Y7ES=C1we{b_>< z_P2(-jhFWGzT|XjW~xGMF0S#p+1%4z9fx{(WAj3@|Z~e!C z**d*{s?wE9A#4tLcZ`gu`{#_bfG6XfMF?`Gr)aa{MS1kPTeY?sbsF>uPkLjED#gMn* zem0p+v+NC1>FG?FY~xUId{)!WG?%ks8JTp~JtLb)ozJ9`DewOf#O`VkbapFazr3?c zCi%)kUs6odvOFS}6bm5--k_o1JDnbxm`d+XXYQXZkKV}mDxetqt%5R=PR?zaIWWBx z(DE~}q&r?Cy%r1eywQ;N;I@g$^wuXPknULR^9YR-)0sE|WU5LyU`es!Oh!=gd*`-H zAUI@Z=AOK~rkgBQ=VRab)9c1!fAiSAO}ShC#XtSYl^I!k*&3|%d{+Z7|+y0OGFI@ALBlXv=+xy?X_uV&E?K|+)IWP9j-(7g= zr+;+Y(B_4)+kfxoo97SQ^&8v1_>+spQyZW9(a~ST`+nB+*4)2-F8n*0g@62+Th{#H zjo?_+rmqz@7uj)_jkVWR^wxTd;QMe z*>mzx(+#cflI?B&!sz_m*r*A=zN@&gy7D$Zx-SsdMrZc^*64kXAB|3@GoM4ka@DFN z=h@U=b>Ua$@9E#<&ffp~1BK&3Y^i^ws+{LNvUz51%jD!ekdHStKQ=R$PIsjy`4B39 ze|rlsTH<`w=d;AtdTYGf`FQ8A|2_!}gglwstn$3M{N|JC1UH$pdoSjE57avUa=BY08G0Y){)dlR~_7}PhaJo456M^=)u?w>Tw z&4L$MyFZF0Cg18?CN1uDl6o79T~^uM^ej$X?{b*~hRpNzDNcRsPxG(8$KeRo?KldM z-J;%UpgwULn%AY}FP+^>=XTKQ=v$HVhM&FkSZ`qXxO&3humAoY YVIW@TH8Gr%U-)}8re6=`sxk1t0W1cas{jB1 literal 0 HcmV?d00001 diff --git a/csharp/GildedRoseTest/bin/Debug/nunit.framework.xml b/csharp/GildedRoseTest/bin/Debug/nunit.framework.xml new file mode 100644 index 00000000..788ba07d --- /dev/null +++ b/csharp/GildedRoseTest/bin/Debug/nunit.framework.xml @@ -0,0 +1,19434 @@ + + + + nunit.framework + + + +

+ The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. + + + + + The default suite builder used by the test assembly builder. + + + + + Initializes a new instance of the class. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + FrameworkController provides a facade for use in loading, browsing + and running tests without requiring a reference to the NUnit + framework. All calls are encapsulated in constructors for + this class and its nested classes, which only require the + types of the Common Type System as arguments. + + The controller supports four actions: Load, Explore, Count and Run. + They are intended to be called by a driver, which should allow for + proper sequencing of calls. Load must be called before any of the + other actions. The driver may support other actions, such as + reload on run, by combining these calls. + + + + + Construct a FrameworkController using the default builder and runner. + + The AssemblyName or path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController using the default builder and runner. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The full AssemblyName or the path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Gets the ITestAssemblyBuilder used by this controller instance. + + The builder. + + + + Gets the ITestAssemblyRunner used by this controller instance. + + The runner. + + + + Gets the AssemblyName or the path for which this FrameworkController was created + + + + + Gets the Assembly for which this + + + + + Gets a dictionary of settings for the FrameworkController + + + + + Loads the tests in the assembly + + + + + + Returns info about the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of exploring the tests + + + + Runs the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Runs the tests in an assembly synchronously reporting back the test results through the callback + or through the return value + + The callback that receives the test results + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Runs the tests in an assembly asynchronously reporting back the test results through the callback + + The callback that receives the test results + A string containing the XML representation of the filter to use + + + + Stops the test run + + True to force the stop, false for a cooperative stop + + + + Counts the number of test cases in the loaded TestSuite + + A string containing the XML representation of the filter to use + The number of tests + + + + Inserts environment element + + Target node + The new node + + + + Inserts settings element + + Target node + Settings dictionary + The new node + + + + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. + + + + + LoadTestsAction loads a test into the FrameworkController + + + + + LoadTestsAction loads the tests in an assembly. + + The controller. + The callback handler. + + + + ExploreTestsAction returns info about the tests in an assembly + + + + + Initializes a new instance of the class. + + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. + + + + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. + + + + + Construct a CountsTestAction and perform the count of test cases. + + A FrameworkController holding the TestSuite whose cases are to be counted + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunTestsAction runs the loaded TestSuite held by the FrameworkController. + + + + + Construct a RunTestsAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunAsyncAction initiates an asynchronous test run, returning immediately + + + + + Construct a RunAsyncAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + StopRunAction stops an ongoing run. + + + + + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. + + The FrameworkController for which a run is to be stopped. + True the stop should be forced, false for a cooperative stop. + >A callback handler used to report results + A forced stop will cause threads and processes to be killed as needed. + + + + The ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + The ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. + + + + + Gets the tree of loaded tests, or null if + no tests have been loaded. + + + + + Gets the tree of test results, if the test + run is completed, otherwise null. + + + + + Indicates whether a test has been loaded + + + + + Indicates whether a test is currently running + + + + + Indicates whether a test run is complete + + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + File name of the assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive ITestListener notifications. + A test filter used to select tests to be run + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Implementation of ITestAssemblyRunner + + + + + Initializes a new instance of the class. + + The builder. + + + + Gets the default level of parallel execution (worker threads) + + + + + The tree of tests that was loaded by the builder + + + + + The test result, if a run has completed + + + + + Indicates whether a test is loaded + + + + + Indicates whether a test is running + + + + + Indicates whether a test run is complete + + + + + Our settings, specified when loading the assembly + + + + + The top level WorkItem created for the assembly as a whole + + + + + The TestExecutionContext for the top level WorkItem + + + + + Loads the tests found in an Assembly + + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Loads the tests found in an Assembly + + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + RunAsync is a template method, calling various abstract and + virtual methods to be overridden by derived classes. + + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any tests that are currently running + + + + Initiate the test run. + + + + + Create the initial TestExecutionContext used to run tests + + The ITestListener specified in the RunAsync call + + + + Handle the the Completed event for the top level work item + + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + Verifies that the first int is greater than the second + int. 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 int is greater than the second + int. 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Verifies that the first value is greater than or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that an int is zero. + + The number to be examined + + + + Asserts that an int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is zero. + + The number to be examined + + + + Asserts that an unsigned int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is zero. + + The number to be examined + + + + Asserts that a Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is zero. + + The number to be examined + + + + Asserts that an unsigned Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is not zero. + + The number to be examined + + + + Asserts that an int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is not zero. + + The number to be examined + + + + Asserts that an unsigned int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is not zero. + + The number to be examined + + + + Asserts that a Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is positive. + + The number to be examined + + + + Asserts that an int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is positive. + + The number to be examined + + + + Asserts that an unsigned int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is positive. + + The number to be examined + + + + Asserts that a Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is positive. + + The number to be examined + + + + Asserts that an unsigned Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is positive. + + The number to be examined + + + + Asserts that a decimal is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is positive. + + The number to be examined + + + + Asserts that a double is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is positive. + + The number to be examined + + + + Asserts that a float is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is negative. + + The number to be examined + + + + Asserts that an int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is negative. + + The number to be examined + + + + Asserts that an unsigned int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is negative. + + The number to be examined + + + + Asserts that a Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is negative. + + The number to be examined + + + + Asserts that an unsigned Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is negative. + + The number to be examined + + + + Asserts that a decimal is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is negative. + + The number to be examined + + + + Asserts that a double is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is negative. + + The number to be examined + + + + Asserts that a float is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + 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. + + + + + DO NOT USE! Use Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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. + + + + + Issues a warning using the message and arguments provided. + + The message to display. + Arguments to be used in formatting the message + + + + Issues a warning using the message provided. + + The message to display. + + + + 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. + + + + + Asserts that an object is contained in a collection. + + The expected object + The collection 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 collection. + + The expected object + The collection to be examined + + + + Wraps code containing a series of assertions, which should all + be executed, even if they fail. Failed results are saved and + reported at the end of the code block. + + A TestDelegate to be executed in Multiple Assertion mode. + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Verifies that an async 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 an async delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that an async delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + + + + Verifies that an async delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + + + + Verifies that an async 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 an async delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that an async 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 an async 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 an async delegate throws an exception of a certain Type + or one derived from it 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 an async delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that an async delegate does not throw an exception + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate does not throw an exception. + + A TestDelegate + + + + 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 + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + 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 TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + 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 TestDelegate + + + + 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 + + + + 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 + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it 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 of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + 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 TestDelegate + + + + 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 + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + 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 + + + + 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 + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + 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 function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments 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 + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + Delegate used by tests that execute async code and + capture any thrown exception. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter names in making asserts. + + + + + 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 + + + + 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. + + 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 + + + + 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 + + + + 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 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 + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 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 regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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. + + + + + DefaultFloatingPointToleranceAttribute sets the tolerance used + by default when checking the equality of floating point values. + + + + + Construct specifying an amount + + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + The NonTestAssemblyAttribute may be used by third-party frameworks + or other software that references the nunit framework but does not + contain tests. Applying the attribute indicates that the assembly + is not a test assembly and may prevent errors if certain runners + attempt to load the assembly. Note that recognition of the attribute + depends on each individual runner. + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a NonParallelizableAttribute. + + + + + AfterCommand is a DelegatingTestCommand that performs some + specific action after the inner command is run. + + + + + Construct an AfterCommand + + + + + Execute the command + + + + + Set this to perform action after the inner command. + + + + + BeforeTestCommand is a DelegatingTestCommand that performs some + specific action before the inner command is run. + + + + + Construct a BeforeCommand + + + + + Execute the command + + + + + Action to perform before the inner command. + + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + + + + EmptyTestCommand is a TestCommand that does nothing. It simply + returns the current result from the context when executed. We + use it to avoid testing for null when executing a chain of + DelegatingTestCommands. + + + + + Construct a NullCommand for a test + + + + + Execute the command + + + + + TestActionAfterCommand handles the AfterTest method of a single + TestActionItem, provided the items BeforeTest has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + TestActionBeforeCommand handles the BeforeTest method of a single + TestActionItem, relying on the item to remember it has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Perform the before test action + + + + + Perform the after test action + + + + + ConstructFixtureCommand constructs the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + + + + TimeoutCommand creates a timer in order to cancel + a test if it exceeds a specified time and adjusts + the test result if it did time out. + + + + + Initializes a new instance of the class. + + The inner command + Timeout value + + + + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + A SetUpTearDownList for use by the command + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + A SetUpTearDownList for use by the command + + + + ContextSettingsCommand applies specified changes to the + TestExecutionContext prior to running a test. No special + action is needed after the test runs, since the prior + context will be restored automatically. + + + + + DelegatingTestCommand wraps an inner TestCommand. + Derived classes may do what they like before or + after running the inner command. + + + + TODO: Documentation needed for field + + + + TODO: Documentation needed for constructor + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The inner command. + The max time allowed in milliseconds + + + + SetUpTearDownCommand runs SetUp methods for a suite, + runs the test and then runs TearDown methods. + + + + + Initializes a new instance of the class. + + The inner command. + List of setup/teardown items + + + + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. + + + + + Construct a SetUpTearDownNode + + A list of setup methods for this level + A list teardown methods for this level + + + + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. + + + + + Run SetUp on this level. + + The execution context to use for running. + + + + Run TearDown for this level. + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The test being skipped. + + + + Overridden to simply set the CurrentResult to the + appropriate Skipped state. + + The execution context for the test + A TestResult + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + The TestAction with which to wrap the inner command. + + + + TestActionItem wraps a single execution of an ITestAction. + It's primary purpose is to track whether the BeforeTest + method has been called and suppress calling the + AfterTest method if it has not. This is necessary when + ITestActions are used before and after a CompositeWorkItem, + since the OneTimeSetUpCommand and OneTimeTearDownCommand + are separate command chains. By sharing a TestActionItem + between the setup and teardown chains, the two calls can + be coordinated. + + + + + Construct a TestActionItem + + The ITestAction to be included + + + + Get flag indicating if the BeforeTest entry was already called. + + + + + Run the BeforeTest method of the action and remember that it has been run. + + The test to which the action applies + + + + Run the AfterTest action, but only if the BeforeTest + action was actually run. + + The test to which the action applies + + + + TestCommand is the abstract base class for all test commands + in the framework. A TestCommand represents a single stage in + the execution of a test, e.g.: SetUp/TearDown, checking for + Timeout, verifying the returned result from a method, etc. + + TestCommands may decorate other test commands so that the + execution of a lower-level command is nested within that + of a higher level command. All nested commands are executed + synchronously, as a single unit. Scheduling test execution + on separate threads is handled at a higher level, using the + task dispatcher. + + + + + Construct a TestCommand for a test. + + The test to be executed + + + + Gets the test associated with this command. + + + + + Runs the test in a specified context, returning a TestResult. + + The TestExecutionContext to be used for running the test. + A TestResult + + + + TestMethodCommand is the lowest level concrete command + used to run actual test cases. + + + + + Initializes a new instance of the class. + + The test. + + + + Runs the test, saving a TestResult in the execution context, as + well as returning it. If the test has an expected result, it + is asserts on that value. Since failed tests and errors throw + an exception, this command must be wrapped in an outer command, + will handle that exception and records the failure. This role + is usually played by the SetUpTearDown command. + + The execution context + + + + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. + + + + + Constructs a TheoryResultCommand + + The command to be wrapped by this one + + + + WorkItemBuilder class knows how to build a tree of work items from a tree of tests + + + + + Creates a work item. + + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + True if child work items should be created and added. + + + + + Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. + + + A signed integer that indicates the relative values of and , as shown in the following table.Value Meaning Less than zero is less than .Zero equals .Greater than zero is greater than . + + The first object to compare.The second object to compare. + + + + EventListenerTextWriter sends text output to the currently active + ITestEventListener in the form of a TestOutput object. If no event + listener is active in the context, or if there is no context, + the output is forwarded to the supplied default writer. + + + + + Construct an EventListenerTextWriter + + The name of the stream to use for events + The default writer to use if no listener is available + + + + Get the Encoding for this TextWriter + + + + + Write formatted string + + + + + Write formatted string + + + + + Write formatted string + + + + + Write an object + + + + + Write a string + + + + + Write a decimal + + + + + Write a double + + + + + Write formatted string + + + + + Write a ulong + + + + + Write a long + + + + + Write a uint + + + + + Write an int + + + + + Write a char + + + + + Write a boolean + + + + + Write chars + + + + + Write chars + + + + + Write a float + + + + + Write a string with newline + + + + + Write an object with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write a decimal with newline + + + + + Write a formatted string with newline + + + + + Write a double with newline + + + + + Write a uint with newline + + + + + Write a ulong with newline + + + + + Write a long with newline + + + + + Write an int with newline + + + + + Write a bool with newline + + + + + Write chars with newline + + + + + Write chars with newline + + + + + Write a char with newline + + + + + Write a float with newline + + + + + Write newline + + + + + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. + + + + + List of Child WorkItems + + + + + Construct a CompositeWorkItem for executing a test suite + using a filter to select child tests. + + The TestSuite to be executed + A filter used to select child tests + + + + Method that actually performs the work. Overridden + in CompositeWorkItem to do one-time setup, run all child + items and then dispatch the one-time teardown work item. + + + + + + + + + + Cancel (abort or stop) a CompositeWorkItem and all of its children + + true if the CompositeWorkItem and all of its children should be aborted, false if it should allow all currently running tests to complete + + + + OneTimeTearDownWorkItem represents the cleanup + and one-time teardown phase of a CompositeWorkItem + + + + + Construct a OneTimeTearDownWOrkItem wrapping a CompositeWorkItem + + The CompositeWorkItem being wrapped + + + + The WorkItem name, overridden to indicate this is the teardown. + + + + + + + + + + PerformWork is not used in CompositeWorkItem + + + + + The EventPumpState enum represents the state of an + EventPump. + + + + + The pump is stopped + + + + + The pump is pumping events with no stop requested + + + + + The pump is pumping events but a stop has been requested + + + + + EventPump pulls events out of an EventQueue and sends + them to a listener. It is used to send events back to + the client without using the CallContext of the test + runner thread. + + + + + The downstream listener to which we send events + + + + + The queue that holds our events + + + + + Thread to do the pumping + + + + + The current state of the eventpump + + + + + Constructor + + The EventListener to receive events + The event queue to pull events from + + + + Gets or sets the current state of the pump + + + + + Gets or sets the name of this EventPump + (used only internally and for testing). + + + + + Dispose stops the pump + Disposes the used WaitHandle, too. + + + + + Start the pump + + + + + Tell the pump to stop after emptying the queue. + + + + + Our thread proc for removing items from the event + queue and sending them on. Note that this would + need to do more locking if any other thread were + removing events from the queue. + + + + + NUnit.Core.Event is the abstract base for all stored events. + An Event is the stored representation of a call to the + ITestListener interface and is used to record such calls + or to queue them for forwarding on another thread or at + a later time. + + + + + The Send method is implemented by derived classes to send the event to the specified listener. + + The listener. + + + + TestStartedEvent holds information needed to call the TestStarted method. + + + + + Initializes a new instance of the class. + + The test. + + + + Calls TestStarted on the specified listener. + + The listener. + + + + TestFinishedEvent holds information needed to call the TestFinished method. + + + + + Initializes a new instance of the class. + + The result. + + + + Calls TestFinished on the specified listener. + + The listener. + + + + TestOutputEvent holds information needed to call the TestOutput method. + + + + + Initializes a new instance of the class. + + The output object. + + + + Calls TestOutput on the specified listener. + + The listener. + + + + Implements a queue of work items each of which + is queued as a WaitCallback. + + + + + Gets the count of items in the queue. + + + + + Enqueues the specified event + + The event to enqueue. + + + + Removes the first element from the queue and returns it (or null). + + + If true and the queue is empty, the calling thread is blocked until + either an element is enqueued, or is called. + + + + + If the queue not empty + the first element. + + + otherwise, if ==false + or has been called + null. + + + + + + + Stop processing of the queue + + + + + An IWorkItemDispatcher handles execution of work items. + + + + + Start execution, performing any initialization. Sets + the top level work item and dispatches it. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + true if the IWorkItemDispatcher should abort all currently running WorkItems, false if it should allow all currently running WorkItems to complete + + + + ParallelWorkItemDispatcher handles execution of work items by + queuing them for worker threads to process. + + + + + Construct a ParallelWorkItemDispatcher + + Number of workers to use + + + + Enumerates all the shifts supported by the dispatcher + + + + + Enumerates all the Queues supported by the dispatcher + + + + + Start execution, setting the top level work, + enqueuing it and starting a shift to execute it. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + Save the state of the queues + + + + + Try to restore a saved queue state + True if the state was restored, otherwise false + + + + QueuingEventListener uses an EventQueue to store any + events received on its EventListener interface. + + + + + The EventQueue created and filled by this listener + + + + + Construct a QueuingEventListener + + + + + A test has started + + The test that is starting + + + + A test case finished + + Result of the test case + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + A SimpleWorkItem represents a single test case and is + marked as completed immediately upon execution. This + class is also used for skipped or ignored test suites. + + + + + Construct a simple work item for a test. + + The test to be executed + The filter used to select this test + + + + Method that performs actually performs the work. + + + + + Creates a test command for use in running this test. + + A TestCommand + + + + SimpleWorkItemDispatcher handles execution of WorkItems by + directly executing them. It is provided so that a dispatcher + is always available in the context, thereby simplifying the + code needed to run child tests. + + + + + Start execution, creating the execution thread, + setting the top level work and dispatching it. + + + + + Dispatch a single work item for execution by + executing it directly. + The item to dispatch + + + + + Cancel (abort or stop) the ongoing run. + If no run is in process, the call has no effect. + + true if the run should be aborted, false if it should allow its currently running test to complete + + + + A TestWorker pulls work items from a queue + and executes them. + + + + + Event handler for TestWorker events + + The TestWorker sending the event + The WorkItem that caused the event + + + + Event signaled immediately before executing a WorkItem + + + + + Event signaled immediately after executing a WorkItem + + + + + Construct a new TestWorker. + + The queue from which to pull work items + The name of this worker + + + + The WorkItemQueue from which this worker pulls WorkItems + + + + + The name of this worker - also used for the thread + + + + + Indicates whether the worker thread is running + + + + + Our ThreadProc, which pulls and runs tests in a loop + + + + + Start processing work items. + + + + + Stop the thread, either immediately or after finishing the current WorkItem + + true if the thread should be aborted, false if it should allow the currently running test to complete + + + + The TextCapture class intercepts console output and writes it + to the current execution context, if one is present on the thread. + If no execution context is found, the output is written to a + default destination, normally the original destination of the + intercepted output. + + + + + Construct a TextCapture object + + The default destination for non-intercepted output + + + + Gets the Encoding in use by this TextWriter + + + + + Writes a single character + + The char to write + + + + Writes a string + + The string to write + + + + Writes a string followed by a line terminator + + The string to write + + + + A WorkItem may be an individual test case, a fixture or + a higher level grouping of tests. All WorkItems inherit + from the abstract WorkItem class, which uses the template + pattern to allow derived classes to perform work in + whatever way is needed. + + A WorkItem is created with a particular TestExecutionContext + and is responsible for re-establishing that context in the + current thread before it begins or resumes execution. + + + + + Construct a WorkItem for a particular test. + + The test that the WorkItem will run + Filter used to include or exclude child items + + + + Construct a work Item that wraps another work Item. + Wrapper items are used to represent independently + dispatched tasks, which form part of the execution + of a single test, such as OneTimeTearDown. + + The WorkItem being wrapped + + + + Initialize the TestExecutionContext. This must be done + before executing the WorkItem. + + + Originally, the context was provided in the constructor + but delaying initialization of the context until the item + is about to be dispatched allows changes in the parent + context during OneTimeSetUp to be reflected in the child. + + The TestExecutionContext to use + + + + Event triggered when the item is complete + + + + + Gets the current state of the WorkItem + + + + + The test being executed by the work item + + + + + The name of the work item - defaults to the Test name. + + + + + Filter used to include or exclude child tests + + + + + The execution context + + + + + The worker executing this item. + + + + + The test result + + + + + Gets the ParallelScope associated with the test, if any, + otherwise returning ParallelScope.Default; + + + + + Execute the current work item, including any + child work items. + + + + + Marks the WorkItem as NotRunnable. + + Reason for test being NotRunnable. + + + + Cancel (abort or stop) a WorkItem + + true if the WorkItem should be aborted, false if it should run to completion + + + + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. + + + + + Method called by the derived class when all work is complete + + + + + Builds the set up tear down list. + + Unsorted array of setup MethodInfos. + Unsorted array of teardown MethodInfos. + A list of SetUpTearDownItems + + + + Changes the result of the test, logging the old and new states + + The new ResultState + The new message + + + + WorkItemQueueState indicates the current state of a WorkItemQueue + + + + + The queue is paused + + + + + The queue is running + + + + + The queue is stopped + + + + + A WorkItemQueue holds work items that are ready to + be run, either initially or after some dependency + has been satisfied. + + + + + Initializes a new instance of the class. + + The name of the queue. + Flag indicating whether this is a parallel queue + "ApartmentState to use for items on this queue + + + + Gets the name of the work item queue. + + + + + Gets a flag indicating whether this queue is used for parallel execution + + + + + Gets the target ApartmentState for work items on this queue + + + + + Gets the total number of items processed so far + + + + + Gets the maximum number of work items. + + + + + Gets the current state of the queue + + + + + Get a bool indicating whether the queue is empty. + + + + + Enqueue a WorkItem to be processed + + The WorkItem to process + + + + Dequeue a WorkItem for processing + + A WorkItem or null if the queue has stopped + + + + Start or restart processing of items from the queue + + + + + Signal the queue to stop + + + + + Pause the queue for restarting later + + + + + Save the current inner queue and create new ones for use by + a non-parallel fixture with parallel children. + + + + + Restore the inner queue that was previously saved + + + + + The current state of a work item + + + + + Ready to run or continue + + + + + Work Item is executing + + + + + Complete + + + + + The dispatcher needs to do different things at different, + non-overlapped times. For example, non-parallel tests may + not be run at the same time as parallel tests. We model + this using the metaphor of a working shift. The WorkShift + class associates one or more WorkItemQueues with one or + more TestWorkers. + + Work in the queues is processed until all queues are empty + and all workers are idle. Both tests are needed because a + worker that is busy may end up adding more work to one of + the queues. At that point, the shift is over and another + shift may begin. This cycle continues until all the tests + have been run. + + + + + Construct a WorkShift + + + + + Event that fires when the shift has ended + + + + + The Name of this shift + + + + + Gets a flag indicating whether the shift is currently active + + + + + Gets a list of the queues associated with this shift. + + Used for testing + + + + Gets the list of workers associated with this shift. + + + + + Gets a bool indicating whether this shift has any work to do + + + + + Add a WorkItemQueue to the shift, starting it if the + shift is currently active. + + + + + Assign a worker to the shift. + + + + + + Start or restart processing for the shift + + + + + End the shift, pausing all queues and raising + the EndOfShift event. + + + + + Shut down the shift. + + + + + Cancel (abort or stop) the shift without completing all work + + true if the WorkShift should be aborted, false if it should allow its currently running tests to complete + + + + TestCaseTimeoutException is thrown when a test running directly + on a TestWorker thread is cancelled due to timeout. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + AssemblyHelper provides static methods for working + with assemblies. + + + + + Gets the path from which an assembly was loaded. + For builds where this is not possible, returns + the name of the assembly. + + The assembly. + The path. + + + + Gets the path to the directory from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the AssemblyName of an assembly. + + The assembly + An AssemblyName + + + + Loads an assembly given a string, which may be the + path to the assembly or the AssemblyName + + + + + + + Gets the assembly path from code base. + + Public for testing purposes + The code base. + + + + + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + Built-in SuiteBuilder for all types of test classes. + + + + + Checks to see if the provided Type is a fixture. + To be considered a fixture, it must be a non-abstract + class with one or more attributes implementing the + IFixtureBuilder interface or one or more methods + marked as tests. + + The fixture type to check + True if the fixture can be built, false if not + + + + Build a TestSuite from TypeInfo provided. + + The fixture type to build + A TestSuite built from that type + + + + We look for attributes implementing IFixtureBuilder at one level + of inheritance at a time. Attributes on base classes are not used + unless there are no fixture builder attributes at all on the derived + class. This is by design. + + The type being examined for attributes + A list of the attributes found. + + + + Class to build ether a parameterized or a normal NUnitTestMethod. + There are four cases that the builder must deal with: + 1. The method needs no params and none are provided + 2. The method needs params and they are provided + 3. The method needs no params but they are provided in error + 4. The method needs params but they are not provided + This could have been done using two different builders, but it + turned out to be simpler to have just one. The BuildFrom method + takes a different branch depending on whether any parameters are + provided, but all four cases are dealt with in lower-level methods + + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + A Test representing one or more method invocations + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + The test suite being built, to which the new test would be added + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations + + + + Builds a ParameterizedMethodSuite containing individual test cases. + + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases + + + + Build a simple, non-parameterized TestMethod for this method. + + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. + + + + Class that can build a tree of automatic namespace + suites from a group of fixtures. + + + + + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. + + + + + The root of the test suite being created by this builder. + + + + + Initializes a new instance of the class. + + The root suite. + + + + Gets the root entry in the tree created by the NamespaceTreeBuilder. + + The root suite. + + + + Adds the specified fixtures to the tree. + + The fixtures to be added. + + + + Adds the specified fixture to the tree. + + The fixture to be added. + + + + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. + + + + + Constructs an + + + + + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. + + The MethodInfo from which to construct the TestMethod + The suite or fixture to which the new test will be added + The ParameterSet to be used, or null + + + + + Helper method that checks the signature of a TestMethod and + any supplied parameters to determine if the test is valid. + + Currently, NUnitTestMethods are required to be public, + non-abstract methods, either static or instance, + returning void. They may take arguments but the _values must + be provided or the TestMethod is not considered runnable. + + Methods not meeting these criteria will be marked as + non-runnable and the method will return false in that case. + + The TestMethod to be checked. If it + is found to be non-runnable, it will be modified. + Parameters to be used for this test, or null + True if the method signature is valid, false if not + + The return value is no longer used internally, but is retained + for testing purposes. + + + + + NUnitTestFixtureBuilder is able to build a fixture given + a class marked with a TestFixtureAttribute or an unmarked + class containing test methods. In the first case, it is + called by the attribute and in the second directly by + NUnitSuiteBuilder. + + + + + Build a TestFixture from type provided. A non-null TestSuite + must always be returned, since the method is generally called + because the user has marked the target class as a fixture. + If something prevents the fixture from being used, it should + be returned nonetheless, labelled as non-runnable. + + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. + + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + + + + + Method to add test cases to the newly constructed fixture. + + The fixture to which cases should be added + + + + Method to create a test case from a MethodInfo and add + it to the fixture being built. It first checks to see if + any global TestCaseBuilder addin wants to build the + test case. If not, it uses the internal builder + collection maintained by this fixture builder. + + The default implementation has no test case builders. + Derived classes should add builders to the collection + in their constructor. + + The method for which a test is to be created + The test suite being built. + A newly constructed Test + + + + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. + + + + The number of test cases that cover all possible pairs of test function + parameters values is significantly less than the number of test cases + that cover all possible combination of test function parameters values. + And because different studies show that most of software failures are + caused by combination of no more than two parameters, pairwise testing + can be an effective ways to test the system when it's impossible to test + all combinations of parameters. + + + The PairwiseStrategy code is based on "jenny" tool by Bob Jenkins: + http://burtleburtle.net/bob/math/jenny.html + + + + + + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea + + + + + Initializes a new instance of the FleaRand class. + + The seed. + + + + FeatureInfo represents coverage of a single value of test function + parameter, represented as a pair of indices, Dimension and Feature. In + terms of unit testing, Dimension is the index of the test parameter and + Feature is the index of the supplied value in that parameter's list of + sources. + + + + + Initializes a new instance of FeatureInfo class. + + Index of a dimension. + Index of a feature. + + + + A FeatureTuple represents a combination of features, one per test + parameter, which should be covered by a test case. In the + PairwiseStrategy, we are only trying to cover pairs of features, so the + tuples actually may contain only single feature or pair of features, but + the algorithm itself works with triplets, quadruples and so on. + + + + + Initializes a new instance of FeatureTuple class for a single feature. + + Single feature. + + + + Initializes a new instance of FeatureTuple class for a pair of features. + + First feature. + Second feature. + + + + TestCase represents a single test case covering a list of features. + + + + + Initializes a new instance of TestCaseInfo class. + + A number of features in the test case. + + + + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. + + + + The algorithm starts with creating a set of all feature tuples which we + will try to cover (see method). This set + includes every single feature and all possible pairs of features. We + store feature tuples in the 3-D collection (where axes are "dimension", + "feature", and "all combinations which includes this feature"), and for + every two feature (e.g. "A" and "B") we generate both ("A", "B") and + ("B", "A") pairs. This data structure extremely reduces the amount of + time needed to calculate coverage for a single test case (this + calculation is the most time-consuming part of the algorithm). + + + Then the algorithm picks one tuple from the uncovered tuple, creates a + test case that covers this tuple, and then removes this tuple and all + other tuples covered by this test case from the collection of uncovered + tuples. + + + Picking a tuple to cover + + + There are no any special rules defined for picking tuples to cover. We + just pick them one by one, in the order they were generated. + + + Test generation + + + Test generation starts from creating a completely random test case which + covers, nevertheless, previously selected tuple. Then the algorithm + tries to maximize number of tuples which this test covers. + + + Test generation and maximization process repeats seven times for every + selected tuple and then the algorithm picks the best test case ("seven" + is a magic number which provides good results in acceptable time). + + Maximizing test coverage + + To maximize tests coverage, the algorithm walks thru the list of mutable + dimensions (mutable dimension is a dimension that are not included in + the previously selected tuple). Then for every dimension, the algorithm + walks thru the list of features and checks if this feature provides + better coverage than randomly selected feature, and if yes keeps this + feature. + + + This process repeats while it shows progress. If the last iteration + doesn't improve coverage, the process ends. + + + In addition, for better results, before start every iteration, the + algorithm "scrambles" dimensions - so for every iteration dimension + probes in a different order. + + + + + + Creates a set of test cases for specified dimensions. + + + An array which contains information about dimensions. Each element of + this array represents a number of features in the specific dimension. + + + A set of test cases. + + + + + Gets the test cases generated by this strategy instance. + + A set of test cases. + + + + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. + + + + + Construct with a collection of individual providers + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Waits for pending asynchronous operations to complete, if appropriate, + and returns a proper result of the invocation by unwrapping task results + + The raw result of the method invocation + The unwrapped result, if necessary + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + A base class for multi-part filters + + + + + Constructs an empty CompositeFilter + + + + + Constructs a CompositeFilter from an array of filters + + + + + + Adds a filter to the list of filters + + The filter to be added + + + + Return a list of the composing filters. + + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is explicit matched by a test. + + The test to be matched + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a MethodNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a NamespaceFilter for a single namespace + + The namespace the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + PropertyFilter is able to select or exclude tests + based on their properties. + + + + + + Construct a PropertyFilter using a property name and expected value + + A property name + The expected value of the property + + + + Check whether the filter matches a test + + The test to be matched + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + TestName filter selects tests based on their Name + + + + + Construct a TestNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + Combines multiple filters so that a test must pass all + of them in order to pass this filter. + + + + + Constructs an empty AndFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters pass, otherwise false + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters match, otherwise false + + + + Checks whether the AndFilter is explicit matched by a test. + + The test to be matched + True if all the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + CategoryFilter is able to select or exclude tests + based on their categories. + + + + + + Construct a CategoryFilter using a single category name + + A category name + + + + Check whether the filter matches a test + + The test to be matched + + + + + Gets the element name + + Element name + + + + IdFilter selects tests based on their id + + + + + Construct an IdFilter for a single value + + The id the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + NotFilter negates the operation of another filter + + + + + Construct a not filter on another filter + + The filter to be negated + + + + Gets the base filter + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Check whether the filter matches a test + + The test to be matched + True if it matches, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Combines multiple filters so that a test must pass one + of them in order to pass this filter. + + + + + Constructs an empty OrFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters pass, otherwise false + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters match, otherwise false + + + + Checks whether the OrFilter is explicit matched by a test + + The test to be matched + True if any of the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. + + + + + Returns the value matched by the filter - used for testing + + + + + Indicates whether the value is a regular expression + + + + + Construct a ValueMatchFilter for a single value. + + The value to be included. + + + + Match the input provided by the derived class + + The value to be matchedT + True for a match, false otherwise. + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. + + + + + Construct a GenericMethodHelper for a method + + MethodInfo for the method to examine + + + + Return the type arguments for the method, deducing them + from the arguments actually provided. + + The arguments to the method + An array of type arguments. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. + + + + + Default constructor uses the current culture. + + + + + Construct a CultureDetector for a particular culture for testing. + + The culture to be used + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + Tests to determine if the current culture is supported + based on a culture attribute. + + The attribute to examine + + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + ExceptionHelper provides static methods for working with exceptions + + + + + Rethrows an exception, preserving its stack trace + + The exception to rethrow + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. Excludes exception names, creating more readable message + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined stack trace. + + + + Gets the stack trace of the exception. + + The exception. + A string representation of the stack trace. + + + + 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. + + + + + + + Gets or sets the maximum line length for this writer + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a given + 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 result of the constraint that failed + + + + Gets the unique type name between expected and actual. + + The expected value + The actual value causing the failure + Output of the unique type name for expected + Output of the unique type name for actual + + + + 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 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 ConstraintResult for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + Interface for logging within the engine + + + + + Logs the specified message at the error level. + + The message. + + + + Logs the specified message at the error level. + + The message. + The arguments. + + + + Logs the specified message at the warning level. + + The message. + + + + Logs the specified message at the warning level. + + The message. + The arguments. + + + + Logs the specified message at the info level. + + The message. + + + + Logs the specified message at the info level. + + The message. + The arguments. + + + + Logs the specified message at the debug level. + + The message. + + + + Logs the specified message at the debug level. + + The message. + The arguments. + + + + InternalTrace provides facilities for tracing the execution + of the NUnit framework. Tests and classes under test may make use + of Console writes, System.Diagnostics.Trace or various loggers and + NUnit itself traps and processes each of them. For that reason, a + separate internal trace is needed. + + Note: + InternalTrace uses a global lock to allow multiple threads to write + trace messages. This can easily make it a bottleneck so it must be + used sparingly. Keep the trace Level as low as possible and only + insert InternalTrace writes where they are needed. + TODO: add some buffering and a separate writer thread as an option. + TODO: figure out a way to turn on trace in specific classes only. + + + + + Gets a flag indicating whether the InternalTrace is initialized + + + + + Initialize the internal trace facility using the name of the log + to be written to and the trace level. + + The log name + The trace level + + + + Initialize the internal trace using a provided TextWriter and level + + A TextWriter + The InternalTraceLevel + + + + Get a named Logger + + + + + + Get a logger named for a particular Type. + + + + + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. + + + + + Use the default settings as specified by the user. + + + + + Do not display any trace messages + + + + + Display Error messages only + + + + + Display Warning level and higher messages + + + + + Display informational and higher messages + + + + + Display debug messages and higher - i.e. all messages + + + + + Display debug messages and higher - i.e. all messages + + + + + A trace listener that writes to a separate file per domain + and process using it. + + + + + Construct an InternalTraceWriter that writes to a file. + + Path to the file to use + + + + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + + + + + + Returns the character encoding in which the output is written. + + The character encoding in which the output is written. + + + + Writes a character to the text string or stream. + + The character to write to the text stream. + + + + Writes a string to the text string or stream. + + The string to write. + + + + Writes a string followed by a line terminator to the text string or stream. + + The string to write. If is null, only the line terminator is written. + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. + + + + + Provides internal logging to the NUnit framework + + + + + Initializes a new instance of the class. + + The name. + The log level. + The writer where logs are sent. + + + + Logs the message at error level. + + The message. + + + + Logs the message at error level. + + The message. + The message arguments. + + + + Logs the message at warm level. + + The message. + + + + Logs the message at warning level. + + The message. + The message arguments. + + + + Logs the message at info level. + + The message. + + + + Logs the message at info level. + + The message. + The message arguments. + + + + Logs the message at debug level. + + The message. + + + + Logs the message at debug level. + + The message. + The message arguments. + + + + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. + + + + + Construct a MethodWrapper for a Type and a MethodInfo. + + + + + Construct a MethodInfo for a given Type and method name. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the method. + + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + OSPlatform represents a particular operating system platform + + + + + Platform ID for Unix as defined by Microsoft .NET 2.0 and greater + + + + + Platform ID for Unix as defined by Mono + + + + + Platform ID for XBox as defined by .NET and Mono + + + + + Platform ID for MacOSX as defined by .NET and Mono + + + + + Get the OSPlatform under which we are currently running + + + + + Gets the actual OS Version, not the incorrect value that might be + returned for Win 8.1 and Win 10 + + + If an application is not manifested as Windows 8.1 or Windows 10, + the version returned from Environment.OSVersion will not be 6.3 and 10.0 + respectively, but will be 6.2 and 6.3. The correct value can be found in + the registry. + + The original version + The correct OS version + + + + Product Type Enumeration used for Windows + + + + + Product type is unknown or unspecified + + + + + Product type is Workstation + + + + + Product type is Domain Controller + + + + + Product type is Server + + + + + Construct from a platform ID and version + + + + + Construct from a platform ID, version and product type + + + + + Get the platform ID of this instance + + + + + Get the Version of this instance + + + + + Get the Product Type of this instance + + + + + Return true if this is a windows platform + + + + + Return true if this is a Unix or Linux platform + + + + + Return true if the platform is Win32S + + + + + Return true if the platform is Win32Windows + + + + + Return true if the platform is Win32NT + + + + + Return true if the platform is Windows CE + + + + + Return true if the platform is Xbox + + + + + Return true if the platform is MacOSX + + + + + Return true if the platform is Windows 95 + + + + + Return true if the platform is Windows 98 + + + + + Return true if the platform is Windows ME + + + + + Return true if the platform is NT 3 + + + + + Return true if the platform is NT 4 + + + + + Return true if the platform is NT 5 + + + + + Return true if the platform is Windows 2000 + + + + + Return true if the platform is Windows XP + + + + + Return true if the platform is Windows 2003 Server + + + + + Return true if the platform is NT 6 + + + + + Return true if the platform is NT 6.0 + + + + + Return true if the platform is NT 6.1 + + + + + Return true if the platform is NT 6.2 + + + + + Return true if the platform is NT 6.3 + + + + + Return true if the platform is Vista + + + + + Return true if the platform is Windows 2008 Server (original or R2) + + + + + Return true if the platform is Windows 2008 Server (original) + + + + + Return true if the platform is Windows 2008 Server R2 + + + + + Return true if the platform is Windows 2012 Server (original or R2) + + + + + Return true if the platform is Windows 2012 Server (original) + + + + + Return true if the platform is Windows 2012 Server R2 + + + + + Return true if the platform is Windows 7 + + + + + Return true if the platform is Windows 8 + + + + + Return true if the platform is Windows 8.1 + + + + + Return true if the platform is Windows 10 + + + + + Return true if the platform is Windows Server. This is named Windows + Server 10 to distinguish it from previous versions of Windows Server. + + + + + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. + + + + + Construct a ParameterWrapper for a given method and parameter + + + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter. + + + + + Gets the underlying ParameterInfo + + + + + Gets the Type of the parameter + + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the parameter. + + + + + PlatformHelper class is used by the PlatformAttribute class to + determine whether a platform is supported. + + + + + Comma-delimited list of all supported OS platform constants + + + + + Comma-delimited list of all supported Runtime platform constants + + + + + Default constructor uses the operating system and + common language runtime of the system. + + + + + Construct a PlatformHelper for a particular operating + system and common language runtime. Used in testing. + + RuntimeFramework to be used + OperatingSystem to be used + + + + Test to determine if one of a collection of platforms + is being used currently. + + + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Test to determine if the a particular platform or comma- + delimited set of platforms is in use. + + Name of the platform or comma-separated list of platform ids + True if the platform is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + A PropertyBag represents a collection of name value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + + + + Adds a key/value pair to the property set + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + + True if their are _values present, otherwise false + + + + + Gets a collection containing all the keys in the property set + + + + + + Gets or sets the list of _values for a particular key + + + + + Returns an XmlNode representing the current PropertyBag. + + Not used + An XmlNode representing the PropertyBag + + + + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + + The parent node. + Not used + + + + + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. + + + + + The FriendlyName of the AppDomain in which the assembly is running + + + + + The selected strategy for joining parameter data into test cases + + + + + The process ID of the executing assembly + + + + + The stack trace from any data provider that threw + an exception. + + + + + The reason a test was not run + + + + + The author of the tests + + + + + The ApartmentState required for running the test + + + + + The categories applying to a test + + + + + The Description of a test + + + + + The number of threads to be used in running tests + + + + + The maximum time in ms, above which the test is considered to have failed + + + + + The ParallelScope associated with a test + + + + + The number of times the test should be repeated + + + + + Indicates that the test should be run on a separate thread + + + + + The culture to be set for a test + + + + + The UI culture to be set for a test + + + + + The type that is under test + + + + + The timeout value for the test + + + + + The test will be ignored until the given date + + + + + The optional Order the test will run in + + + + + Randomizer returns a set of random _values in a repeatable + way, to allow re-running of tests if necessary. It extends + the .NET Random class, providing random values for a much + wider range of types. + + The class is used internally by the framework to generate + test case data and is also exposed for use by users through + the TestContext.Random property. + + + For consistency with the underlying Random Type, methods + returning a single value use the prefix "Next..." Those + without an argument return a non-negative value up to + the full positive range of the Type. Overloads are provided + for specifying a maximum or a range. Methods that return + arrays or strings use the prefix "Get..." to avoid + confusion with the single-value methods. + + + + + Initial seed used to create randomizers for this run + + + + + 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. + + + + + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. + + + + + + Default constructor + + + + + Construct based on seed value + + + + + + Returns a random unsigned int. + + + + + Returns a random unsigned int less than the specified maximum. + + + + + Returns a random unsigned int within a specified range. + + + + + Returns a non-negative random short. + + + + + Returns a non-negative random short less than the specified maximum. + + + + + Returns a non-negative random short within a specified range. + + + + + Returns a random unsigned short. + + + + + Returns a random unsigned short less than the specified maximum. + + + + + Returns a random unsigned short within a specified range. + + + + + Returns a random long. + + + + + Returns a random long less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random ulong. + + + + + Returns a random ulong less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random Byte + + + + + Returns a random Byte less than the specified maximum. + + + + + Returns a random Byte within a specified range + + + + + Returns a random SByte + + + + + Returns a random sbyte less than the specified maximum. + + + + + Returns a random sbyte within a specified range + + + + + Returns a random bool + + + + + Returns a random bool based on the probability a true result + + + + + Returns a random double between 0.0 and the specified maximum. + + + + + Returns a random double within a specified range. + + + + + Returns a random float. + + + + + Returns a random float between 0.0 and the specified maximum. + + + + + Returns a random float within a specified range. + + + + + Returns a random enum value of the specified Type as an object. + + + + + Returns a random enum value of the specified Type. + + + + + Default characters for random functions. + + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + string representing the set of characters from which to construct the resulting string + A random string of arbitrary length + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + A random string of arbitrary length + Uses DefaultStringChars as the input character set + + + + Generate a random string based on the characters from the input string. + + A random string of the default length + Uses DefaultStringChars as the input character set + + + + Returns a random decimal. + + + + + Returns a random decimal between positive zero and the specified maximum. + + + + + Returns a random decimal within a specified range, which is not + permitted to exceed decimal.MaxVal in the current implementation. + + + A limitation of this implementation is that the range from min + to max must not exceed decimal.MaxVal. + + + + + Helper methods for inspecting a type by reflection. + + Many of these methods take ICustomAttributeProvider as an + argument to avoid duplication, even though certain attributes can + only appear on specific types of members, like MethodInfo or Type. + + In the case where a type is being examined for the presence of + an attribute, interface or named member, the Reflect methods + operate with the full name of the member being sought. This + removes the necessity of the caller having a reference to the + assembly that defines the item being sought and allows the + NUnit core to inspect assemblies that reference an older + version of the NUnit framework. + + + + + Examine a fixture type and return an array of methods having a + particular attribute. The array is order with base methods first. + + The type to examine + The attribute Type to look for + Specifies whether to search the fixture type inheritance chain + The array of methods found + + + + Examine a fixture type and return true if it has a method with + a particular attribute. + + The type to examine + The attribute Type to look for + True if found, otherwise false + + + + Invoke the default constructor on a Type + + The Type to be constructed + An instance of the Type + + + + Invoke a constructor on a Type with arguments + + The Type to be constructed + Arguments to the constructor + An instance of the Type + + + + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() + + An array of objects + An array of Types + + + + Invoke a parameterless method returning void on an object. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + + + + Invoke a method, converting any TargetInvocationException to an NUnitException. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The TestResult class represents the result of a test. + + + + + Error message for when child tests have errors + + + + + Error message for when child tests have warnings + + + + + Error message for when child tests are ignored + + + + + The minimum duration for tests + + + + + Aggregate assertion count + + + + + ReaderWriterLock + + + + + Construct a test result given a Test + + The test to be used + + + + Gets the test with which this result is associated. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets or sets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Adds a test attachment to the test result + + The TestAttachment object to attach + + + + Gets the collection of files attached to the test + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets or sets the count of asserts executed + when running the test. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Gets a TextWriter, which will write output to be included in the result. + + + + + Gets any text output written to this result. + + + + + Gets a list of assertion results associated with the test. + + + + + Returns the Xml representation of the result. + + If true, descendant results are included + An XmlNode representing the result + + + + Adds the XML representation of the result as a child of the + supplied parent node.. + + The parent node. + If true, descendant results are included + + + + + Gets a count of pending failures (from Multiple Assert) + + + + + Gets the worst assertion status (highest enum) in all the assertion results + + + + + Set the result of the test + + The ResultState to use in the result + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + Stack trace giving the location of the command + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + The FailureSite to use in the result + + + + RecordTearDownException appends the message and stacktrace + from an exception arising during teardown of the test + to any previously recorded information, so that any + earlier failure information is not lost. Note that + calling Assert.Ignore, Assert.Inconclusive, etc. during + teardown is treated as an error. If the current result + represents a suite, it may show a teardown error even + though all contained tests passed. + + The Exception to be recorded + + + + Determine result after test has run to completion. + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Adds a reason element to a node and returns it. + + The target node. + The new reason element. + + + + Adds a failure element to a node and returns it. + + The target node. + The new failure element. + + + + Adds an attachments element to a node and returns it. + + The target node. + The new attachments element. + + + + Creates a failure message incorporating failures + from a Multiple Assert block for use by runners + that don't know about AssertionResults. + + Message as a string + + + + Enumeration identifying a common language + runtime implementation. + + + + Any supported runtime framework + + + Microsoft .NET Framework + + + Microsoft Shared Source CLI + + + Mono + + + MonoTouch + + + + RuntimeFramework represents a particular version + of a common language runtime implementation. + + + + + DefaultVersion is an empty Version, used to indicate that + NUnit should select the CLR version to use for the test. + + + + + Construct from a runtime type and version. If the version has + two parts, it is taken as a framework version. If it has three + or more, it is taken as a CLR version. In either case, the other + version is deduced based on the runtime type and provided version. + + The runtime type of the framework + The version of the framework + + + + Static method to return a RuntimeFramework object + for the framework that is currently in use. + + + + + The type of this runtime framework + + + + + The framework version for this runtime framework + + + + + The CLR version for this runtime framework + + + + + Return true if any CLR version may be used in + matching this RuntimeFramework object. + + + + + Returns the Display name for this framework + + + + + Parses a string representing a RuntimeFramework. + The string may be just a RuntimeType name or just + a Version or a hyphenated RuntimeType-Version or + a Version prefixed by 'versionString'. + + + + + + + Overridden to return the short name of the framework + + + + + + Returns true if the current framework matches the + one supplied as an argument. Two frameworks match + if their runtime types are the same or either one + is RuntimeType.Any and all specified version components + are equal. Negative (i.e. unspecified) version + components are ignored. + + The RuntimeFramework to be matched. + True on match, otherwise false + + + + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. + + + + + Single instance of our default filter + + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + Regex pattern used to delete lines from the bottom of the stack + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + + + + Construct a stack filter instance + + + + + Filters a raw stack trace and returns the result. + + The original stack trace + A filtered stack trace + + + + Provides methods to support legacy string comparison methods. + + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if + strB is sorted first + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + True if the strings are equivalent, false if not. + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + The expected result to be returned + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + The expected result of the test, which + must match the method return type. + + + + + Gets a value indicating whether an expected result was specified. + + + + + Helper class used to save and restore certain static or + singleton settings in the environment that affect tests + or which might be changed by the user tests. + + + + + Link to a prior saved context + + + + + Indicates that a stop has been requested + + + + + The event listener currently receiving notifications + + + + + The number of assertions for the current test + + + + + The current culture + + + + + The current UI culture + + + + + The current test result + + + + + The current Principal. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + An existing instance of TestExecutionContext. + + + + Gets and sets the current context. + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current test event listener + + + + + The current WorkItemDispatcher. Made public for + use by nunitlite.tests + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + Default tolerance value used for floating point equality + when no other tolerance is specified. + + + + + The worker that spawned the context. + For builds without the parallel feature, it is null. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets the assert count. + + The assert count. + + + + The current nesting level of multiple assert blocks + + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + Gets or sets the current for the Thread. + + + + + The current head of the ValueFormatter chain, copied from MsgUtils.ValueFormatter + + + + + If true, all tests must run on the same thread. No new thread may be spawned. + + + + + Record any changes in the environment made by + the test code in the execution context so it + will be passed on to lower level tests. + + + + + Set up the execution environment to match a context. + Note that we may be running on the same thread where the + context was initially created or on a different thread. + + + + + Increments the assert count by one. + + + + + Increments the assert count by a specified amount. + + + + + Adds a new ValueFormatterFactory to the chain of formatters + + The new factory + + + + Obtain lifetime service object + + + + + + An IsolatedContext is used when running code + that may effect the current result in ways that + should not impact the final result of the test. + A new TestExecutionContext is created with an + initially clear result, which is discarded on + exiting the context. + + + using (new TestExecutionContext.IsolatedContext()) + { + // Code that should not impact the result + } + + + + + Save the original current TestExecutionContext and + make a new isolated context current. + + + + + Restore the original TestExecutionContext. + + + + + Enumeration indicating whether the tests are + running normally or being cancelled. + + + + + Running normally with no stop requested + + + + + A graceful stop has been requested + + + + + A forced stop has been requested + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Unique Empty filter. + + + + + Indicates whether this is the EmptyFilter + + + + + Indicates whether this is a top-level filter, + not contained in any other filter. + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Determine whether the test itself matches the filter criteria, without + examining either parents or descendants. This is overridden by each + different type of filter to perform the necessary tests. + + The test to which the filter is applied + True if the filter matches the any parent of the test + + + + Determine whether any ancestor of the test matches the filter criteria + + The test to which the filter is applied + True if the filter matches the an ancestor of the test + + + + Determine whether any descendant of the test matches the filter criteria. + + The test to be matched + True if at least one descendant matches the filter criteria + + + + Create a TestFilter instance from an xml representation. + + + + + Create a TestFilter from it's TNode representation + + + + + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. + + + + + Adds an XML node + + True if recursive + The added XML node + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + Type arguments used to create a generic fixture instance + + + + + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test case has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Construct a new TestListener - private so it may not be used. + + + + + Get a listener that does nothing + + + + + TestNameGenerator is able to create test names according to + a coded pattern. + + + + + Default pattern used to generate names + + + + + Construct a TestNameGenerator + + + + + Construct a TestNameGenerator + + The pattern used by this generator. + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + The display name + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + Arguments to be used + The display name + + + + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a ParameterSet from an object implementing ITestData + + + + + + The RunState for this set of parameters. + + + + + The arguments to be used in running the test, + which must match the method signature. + + + + + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. + + + + + Gets the property dictionary for this test + + + + + Applies ParameterSet _values to the test itself. + + A test. + + + + The original arguments provided by the user, + used for display purposes. + + + + + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. + + + + + Initializes a new instance of the class. + + The callback handler to be used for reporting progress. + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished. Sends a result summary to the callback. + to + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Returns the parent test item for the targer test item if it exists + + + parent test item + + + + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. + + The string to be used + A new string with the _values replaced + + + + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. + + + + + Initializes a new instance of the class. + + The ITypeInfo for the type that represents the suite. + + + + Gets a string representing the type of test + + + + + + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. + + + + + Construct from a MethodInfo + + + + + + Gets a string representing the type of test + + + + + + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. + + + + + Initializes a new instance of the class. + + The type. + + + + The Test abstract class represents a test within the framework. + + + + + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. + + + + + Used to cache the declaring type for this MethodInfo + + + + + Method property backing field + + + + + Constructs a test given its name + + The name of the test + + + + Constructs a test given the path through the + test hierarchy to its parent and a name. + + The parent tests full name + The name of the test + + + + TODO: Documentation needed for constructor + + + + + + Construct a test from a MethodInfo + + + + + + Gets or sets the id of the test + + + + + + Gets or sets the name of the test + + + + + Gets or sets the fully qualified name of the test + + + + + + Gets the name of the class where this test was declared. + Returns null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + The arguments to use in creating the test or empty array if none required. + + + + + Gets the TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. + + + + + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Whether or not the test should be run + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Gets a string representing the type of test. Used as an attribute + value in the XML representation of a test and has no other + function in the framework. + + + + + Gets a count of test cases represented by + or contained under this test. + + + + + Gets the properties for this test + + + + + Returns true if this is a TestSuite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the parent as a Test object. + Used by the core to set the parent. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets or sets a fixture object for running this test. + + + + + Static prefix used for ids in this AppDomain. + Set by FrameworkController. + + + + + Gets or Sets the Int value representing the seed for the RandomGenerator + + + + + + The SetUp methods. + + + + + The teardown methods + + + + + Creates a TestResult for this test. + + A TestResult suitable for this type of test. + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object implementing ICustomAttributeProvider + + + + Mark the test as Invalid (not runnable) specifying a reason + + The reason the test is not runnable + + + + Get custom attributes applied to a test + + + + + Add standard attributes and members to a test node. + + + + + + + Returns the Xml representation of the test + + If true, include child tests recursively + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Compares this test to another test for sorting purposes + + The other test + Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test + + + + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. + + + + + Initializes a new instance of the class + specifying the Assembly and the path from which it was loaded. + + The assembly this test represents. + The path used to load the assembly. + + + + Initializes a new instance of the class + for a path which could not be loaded. + + The path used to load the assembly. + + + + Copy-constructor style to create a filtered copy of the test assemblies + test cases + + + + + + + Gets the Assembly represented by this instance. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Get custom attributes specified on the assembly + + + + + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. + + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used + + + + The TestMethod class represents a Test implemented as a method. + + + + + The ParameterSet used to create this test method + + + + + Initializes a new instance of the class. + + The method to be used as a test. + + + + Initializes a new instance of the class. + + The method to be used as a test. + The suite or fixture to which the new test will be added + + + + The arguments to use in executing the test method, or empty array if none are provided. + + + + + Overridden to return a TestCaseResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Returns a TNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Gets this test's child tests + + A list of child tests + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns the name of the method + + + + + TestSuite represents a composite test, which contains other tests. + + + + + Our collection of child tests + + + + + Initializes a new instance of the class. + + The name of the suite. + + + + Initializes a new instance of the class. + + Name of the parent suite. + The name of the suite. + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Copy constructor style to create a filtered copy of the given test suite + + Test Suite to copy + Filter to be applied + + + + Sorts tests under this suite. + + + + + Adds a test to the suite. + + The test. + + + + Gets this test's child tests + + The list of child tests + + + + Gets a count of test cases represented by + or contained under this test. + + + + + + The arguments to use in creating the fixture, or empty array if none are provided. + + + + + Set to true to suppress sorting this suite's contents + + + + + OneTimeSetUp methods for this suite + + + + + OneTimeTearDown methods for this suite + + + + + Overridden to return a TestSuiteResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. + + A list of methodinfos to check + + + + ThreadUtility provides a set of static methods convenient + for working with threads. + + + + + Pre-Task compatibility + + + + + Abort a thread, helping to dislodging it if it is blocked in native code + + The thread to abort + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Do our best to kill a thread + + The thread to kill + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Do our best to kill a thread, passing state info + + The thread to kill + Info for the ThreadAbortException handler + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Schedule a threadpool thread to check on the aborting thread in case it's in a message pump native blocking wait + + + + + Captures the current thread's native id. If provided to later, allows the thread to be killed if it's in a message pump native blocking wait. + + + + + Sends a message to the thread to dislodge it from native code and allow a return to managed code, where a ThreadAbortException can be generated. + The message is meaningless (WM_CLOSE without a window handle) but it will end any blocking message wait. + + + + + TypeHelper provides static methods that operate on Types. + + + + + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. + + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The display name for the Type + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The arglist provided. + The display name for the Type + + + + Returns the best fit for a common type to be used in + matching actual arguments to a methods Type parameters. + + The first type. + The second type. + Either type1 or type2, depending on which is more general. + + + + Determines whether the specified type is numeric. + + The type to be examined. + + true if the specified type is numeric; otherwise, false. + + + + + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. + + An array of args to be converted + A ParameterInfo[] whose types will be used as targets + + + + Determines whether this instance can deduce type args for a generic type from the supplied arguments. + + The type to be examined. + The arglist. + The type args to be used. + + true if this the provided args give sufficient information to determine the type args to be used; otherwise, false. + + + + + Return the interfaces implemented by a Type. + + The Type to be examined. + An array of Types for the interfaces. + + + + The TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. + + + + + Construct a TypeWrapper for a specified Type. + + + + + Gets the underlying Type on which this TypeWrapper is based. + + + + + Gets the base type of this type as an ITypeInfo + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Returns true if the Type wrapped is T + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type represents a static class. + + + + + Get the display name for this type + + + + + Get the display name for an object of this type, constructed with the specified args. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns an array of custom attributes of the specified type applied to this type + + + + + Returns a value indicating whether the type has an attribute of the specified type. + + + + + + + + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Represents the result of running a single test case. + + + + + Construct a TestCaseResult based on a TestMethod + + A TestMethod to which the result applies. + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Represents the result of running a test suite + + + + + Construct a TestSuiteResult base on a TestSuite + + The TestSuite to which the result applies + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. + + The result to be added + + + + The TestAttachment class represents a file attached to a TestResult, + with an optional description. + + + + + Absolute file path to attachment file + + + + + User specifed description of attachment. May be null. + + + + + Creates a TestAttachment class to represent a file attached to a test result. + + Absolute file path to attachment file + User specifed description of attachment. May be null. + + + + The AssertionResult class represents the result of a single assertion. + + + + + Construct an AssertionResult + + + + The pass/fail status of the assertion + + + The message produced by the assertion, or null + + + The stacktrace associated with the assertion, or null + + + + ToString Override + + + + + Override GetHashCode + + + + + Override Equals + + + + + + AssertionStatus enumeration represents the possible outcomes of an assertion. + The order of definition is significant, higher level values override lower + ones in determining the overall result of a test. + + + + + An assumption failed + + + + + The assertion succeeded + + + + + A warning message was issued + + + + + The assertion failed + + + + + An unexpected exception was thrown + + + + + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. + + + + + Apply changes to the execution context + + The execution context + + + + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. + + + Attributes or other objects should implement one of the + derived interfaces, rather than this one, since they + indicate in which part of the command chain the wrapper + should be applied. + + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. + + + + + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. + + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + The IFixtureBuilder interface is exposed by a class that knows how to + build a TestFixture from one or more Types. In general, it is exposed + by an attribute, but may be implemented in a helper class used by the + attribute in some cases. + + + + + Build one or more TestFixtures from type provided. At least one + non-null TestSuite must always be returned, since the method is + generally called because the user has marked the target class as + a fixture. If something prevents the fixture from being used, it + will be returned nonetheless, labelled as non-runnable. + + The type info of the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + IImplyFixture is an empty marker interface used by attributes like + TestAttribute that cause the class where they are used to be treated + as a TestFixture even without a TestFixtureAttribute. + + Marker interfaces are not usually considered a good practice, but + we use it here to avoid cluttering the attribute hierarchy with + classes that don't contain any extra implementation. + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The IDataPointProvider interface is used by extensions + that provide data for a single test parameter. + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + The IParameterDataSource interface is implemented by types + that can provide data for a test method parameter. + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + An enumeration containing individual data items + + + + The IParameterInfo interface is an abstraction of a .NET parameter. + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter + + + + + Gets the underlying .NET ParameterInfo + + + + + Gets the Type of the parameter + + + + + A PropertyBag represents a collection of name/value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + The entries in a PropertyBag are of two kinds: those that + take a single value and those that take multiple _values. + However, the PropertyBag has no knowledge of which entries + fall into each category and the distinction is entirely + up to the code using the PropertyBag. + + When working with multi-valued properties, client code + should use the Add method to add name/value pairs and + indexing to retrieve a list of all _values for a given + key. For example: + + bag.Add("Tag", "one"); + bag.Add("Tag", "two"); + Assert.That(bag["Tag"], + Is.EqualTo(new string[] { "one", "two" })); + + When working with single-valued properties, client code + should use the Set method to set the value and Get to + retrieve the value. The GetSetting methods may also be + used to retrieve the value in a type-safe manner while + also providing default. For example: + + bag.Set("Priority", "low"); + bag.Set("Priority", "high"); // replaces value + Assert.That(bag.Get("Priority"), + Is.EqualTo("high")); + Assert.That(bag.GetSetting("Priority", "low"), + Is.EqualTo("high")); + + + + + Adds a key/value pair to the property bag + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + True if their are _values present, otherwise false + + + + Gets or sets the list of _values for a particular key + + The key for which the _values are to be retrieved or set + + + + Gets a collection containing all the keys in the property set + + + + + The IReflectionInfo interface is implemented by NUnit wrapper objects that perform reflection. + + + + + Returns an array of custom attributes of the specified type applied to this object + + + + + Returns a value indicating whether an attribute of the specified type is defined on this object. + + + + + The ISimpleTestBuilder interface is exposed by a class that knows how to + build a single TestMethod from a suitable MethodInfo Types. In general, + it is exposed by an attribute, but may be implemented in a helper class + used by the attribute in some cases. + + + + + Build a TestMethod from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. + + + + + Examine the type and determine if it is suitable for + this builder to use in building a TestSuite. + + Note that returning false will cause the type to be ignored + in loading the tests. If it is desired to load the suite + but label it as non-runnable, ignored, etc., then this + method must return true. + + The type of the fixture to be used + True if the type can be used to build a TestSuite + + + + Build a TestSuite from type provided. + + The type of the fixture to be used + A TestSuite + + + + Common interface supported by all representations + of a test. Only includes informational fields. + The Run method is specifically excluded to allow + for data-only representations of a test. + + + + + Gets the id of the test + + + + + Gets the name of the test + + + + + Gets the type of the test + + + + + Gets the fully qualified name of the test + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the Type of the test fixture, if applicable, or + null if no fixture type is associated with this test. + + + + + Gets an IMethod for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the RunState of the test, indicating whether it can be run. + + + + + Count of the test cases ( 1 if this is a test case ) + + + + + Gets the properties of the test + + + + + Gets the parent test, if any. + + The parent test or null if none exists. + + + + Returns true if this is a test suite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets a fixture object for running this test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + The ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. + + + This interface is not the same as the ITestCaseBuilder interface in NUnit 2.x. + We have reused the name because the two products don't interoperate at all. + + + + + Examine the method and determine if it is suitable for + this builder to use in building a TestCase to be + included in the suite being populated. + + Note that returning false will cause the method to be ignored + in loading the tests. If it is desired to load the method + but label it as non-runnable, ignored, etc., then this + method must return true. + + The test method to examine + The suite being populated + True is the builder can use this method + + + + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. + + The method to be used as a test case + The test suite being populated, or null + A TestCase or null + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + + + + Gets the expected result of the test case + + + + + Returns true if an expected result has been set + + + + + The ITestData interface is implemented by a class that + represents a single instance of a parameterized test. + + + + + Gets the name to be used for the test + + + + + Gets the RunState for this test case. + + + + + Gets the argument list to be provided to the test + + + + + Gets the property dictionary for the test case + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Determine if a particular test passes the filter criteria. Pass + may examine the parents and/or descendants of a test, depending + on the semantics of the particular filter + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + The ITestCaseData interface is implemented by a class + that is able to return the data required to create an + instance of a parameterized test fixture. + + + + + Get the TypeArgs if separately set + + + + + The ITestListener interface is used internally to receive + notifications of significant events while a test is being + run. The events are propagated to clients by means of an + AsyncCallback. NUnit extensions may also monitor these events. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + The ITestBuilder interface is exposed by a class that knows how to + build one or more TestMethods from a MethodInfo. In general, it is exposed + by an attribute, which has additional information available to provide + the necessary test parameters to distinguish the test cases built. + + + + + Build one or more TestMethods from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ITestResult interface represents the result of a test. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. Not available in + the Compact Framework 1.0. + + + + + Gets the number of asserts executed + when running the test and all its children. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Accessing HasChildren should not force creation of the + Children collection in classes implementing this interface. + + + + + Gets the collection of child results. + + + + + Gets the Test to which this result applies. + + + + + Gets any text output written to this result. + + + + + Gets a list of AssertionResults associated with the test + + + + + Gets the collection of files attached to the test + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + Returns true if the Type wrapped is equal to the argument + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the Namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type is a static class. + + + + + Get the display name for this typeInfo. + + + + + Get the display name for an object of this type, constructed with specific arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a value indicating whether this type has a method with a specified public attribute + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + An object implementing IXmlNodeBuilder is able to build + an XML representation of itself and any children. + + + + + Returns a TNode representing the current object. + + If true, children are included where applicable + A TNode representing the result + + + + Returns a TNode representing the current object after + adding it as a child of the supplied parent node. + + The parent node. + If true, children are included, where applicable + + + + + The ResultState class represents the outcome of running a test. + It contains two pieces of information. The Status of the test + is an enum indicating whether the test passed, failed, was + skipped or was inconclusive. The Label provides a more + detailed breakdown for use by client runners. + + + + + Initializes a new instance of the class. + + The TestStatus. + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + + + + Initializes a new instance of the class. + + The TestStatus. + The stage at which the result was produced + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + The stage at which the result was produced + + + + The result is inconclusive + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test was skipped because it is explicit + + + + + The test succeeded + + + + + The test issued a warning + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The test was not runnable. + + + + + A suite failed because one or more child tests failed or had errors + + + + + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + Gets the TestStatus for the test. + + The status. + + + + Gets the label under which this test result is + categorized, if any. + + + + + Gets the stage of test execution in which + the failure or other result took place. + + + + + Get a new ResultState, which is the same as the current + one but with the FailureSite set to the specified value. + + The FailureSite to use + A new ResultState + + + + Test whether this ResultState has the same Status and Label + as another one. In other words, the whether two are equal + ignoring the Site. + + + + + + + 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. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The FailureSite enum indicates the stage of a test + in which an error or failure occurred. + + + + + Failure in the test itself + + + + + Failure in the SetUp method + + + + + Failure in the TearDown method + + + + + Failure of a parent test + + + + + Failure of a child test + + + + + The RunState enum indicates whether a test can be executed. + + + + + The test is not runnable. + + + + + The test is runnable. + + + + + The test can only be run explicitly + + + + + The test has been skipped. This value may + appear on a Test when certain attributes + are used to skip the test. + + + + + The test has been ignored. May appear on + a Test, when the IgnoreAttribute is used. + + + + + The TestOutput class holds a unit of output from + a test to a specific output stream + + + + + Construct with text, output destination type and + the name of the test that produced the output. + + Text to be output + Name of the stream or channel to which the text should be written + FullName of test that produced the output + + + + Return string representation of the object for debugging + + + + + + Get the text + + + + + Get the output type + + + + + Get the name of the test that created the output + + + + + Convert the TestOutput object to an XML string + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + There was a warning + + + + + The test failed + + + + + TNode represents a single node in the XML representation + of a Test or TestResult. It replaces System.Xml.XmlNode and + System.Xml.Linq.XElement, providing a minimal set of methods + for operating on the XML in a platform-independent manner. + + + + + Constructs a new instance of TNode + + The name of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + Flag indicating whether to use CDATA when writing the text + + + + Gets the name of the node + + + + + Gets the value of the node + + + + + Gets a flag indicating whether the value should be output using CDATA. + + + + + Gets the dictionary of attributes + + + + + Gets a list of child nodes + + + + + Gets the first ChildNode + + + + + Gets the XML representation of this node. + + + + + Create a TNode from it's XML text representation + + The XML text to be parsed + A TNode + + + + Adds a new element as a child of the current node and returns it. + + The element name. + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + + The element name + The text content of the new element + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + The value will be output using a CDATA section. + + The element name + The text content of the new element + The newly created child element + + + + Adds an attribute with a specified name and value to the XmlNode. + + The name of the attribute. + The value of the attribute. + + + + Finds a single descendant of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + + + Finds all descendants of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + Writes the XML representation of the node to an XmlWriter + + + + + + Class used to represent a list of XmlResults + + + + + Class used to represent the attributes of a node + + + + + Gets or sets the value associated with the specified key. + Overridden to return null if attribute is not found. + + The key. + Value of the attribute or null + + + + CombiningStrategy is the abstract base for classes that + know how to combine values provided for individual test + parameters to create a set of test cases. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides static methods to express conditions + that must be met for the test to succeed. If + any test fails, a warning is issued. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + 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 an actual value, succeeding if the constraint + fails and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + The message to display if the condition is true + Arguments to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + 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. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + 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 + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + Marks a test that must run in a particular threading apartment state, causing it + to run in a separate thread if necessary. + + + + + Construct an ApartmentAttribute + + The apartment state that this test must be run under. You must pass in a valid apartment state. + + + + Provides the Author of a test or test fixture. + + + + + Initializes a new instance of the class. + + The name of the author. + + + + Initializes a new instance of the class. + + The name of the author. + The email address of the author. + + + + 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 + + + + + Modifies a test by adding a category to it. + + The test to modify + + + + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. + + + + + Default constructor + + + + + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. + + + + + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParameterDataProvider. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Modify the test by adding the name of the combining strategy + to the properties. + + The test to modify + + + + 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 + + + + Causes a test to be skipped if this CultureAttribute is not satisfied. + + The test to modify + + + + Tests to determine if the current culture is supported + based on the properties of this attribute. + + True, if the current culture is supported + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. + + + + + Default constructor + + + + + 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 a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointSourceAttribute. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointsAttribute. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct a description Attribute + + The text of the description + + + + 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 + + + + Modifies a test by marking it as explicit. + + The test to modify + + + + 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 giving a reason for ignoring the test + + The reason for ignoring the test + + + + The date in the future to stop ignoring the test as a string in UTC time. + For example for a date and time, "2014-12-25 08:10:00Z" or for just a date, + "2014-12-25". If just a date is given, the Ignore will expire at midnight UTC. + + + Once the ignore until date has passed, the test will be marked + as runnable. Tests with an ignore until date will have an IgnoreUntilDate + property set which will appear in the test results. + + The string does not contain a valid string representation of a date and time. + + + + Modifies a test by marking it as Ignored. + + The test to modify + + + + 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 items 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 + + + + + SingleThreadedAttribute applies to a test fixture and indicates + that all the child tests must be run on the same thread as the + OneTimeSetUp and OneTimeTearDown. It sets a flag in the + TestExecutionContext and forces all tests to be run sequentially + on the current thread. Any ParallelScope setting is ignored. + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + TestAssemblyDirectoryResolveAttribute is used to mark a test assembly as needing a + special assembly resolution hook that will explicitly search the test assembly's + directory for dependent assemblies. This works around a conflict between mixed-mode + assembly initialization and tests running in their own AppDomain in some cases. + + + + + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. + + + + + Construct a LevelOfParallelismAttribute. + + The number of worker threads to be created by the framework. + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + The abstract base class for all custom attributes defined by NUnit. + + + + + Default constructor + + + + + Attribute used to identify a method that is called once + to perform setup before any child tests are run. + + + + + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + Marks a test to use a pairwise join of any argument + data provided. Arguments will be combined in such a + way that all possible pairs of arguments are used. + + + + + Default constructor + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a ParallelizableAttribute using default ParallelScope.Self. + + + + + Construct a ParallelizableAttribute with a specified scope. + + The ParallelScope associated with this attribute. + + + + Overridden to check for invalid combinations of settings + + + + + + Modify the context to be used for child tests + + The current TestExecutionContext + + + + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. + + + + + No ParallelScope was specified on the test + + + + + The test may be run in parallel with others at the same level. + Valid on classes and methods but not assemblies. + + + + + Test may not be run in parallel with any others. Valid on + classes and methods but not assemblies. + + + + + Mask used to extract the flags that apply to the item on which a + ParallelizableAttribute has been placed, as opposed to descendants. + + + + + Descendants of the test may be run in parallel with one another. + Valid on assemblies and classes but not on methods. + + + + + Descendants of the test down to the level of TestFixtures may be + run in parallel with one another. Valid on assemblies and classes + but not on methods. + + + + + Mask used to extract all the flags that impact descendants of a + test and place them in the TestExecutionContext. + + + + + The test and its descendants may be run in parallel with others at + the same level. Valid on classes and methods but not assemblies. + + + + + 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-delimited list of platforms + + + + Causes a test to be skipped if this PlatformAttribute is not satisfied. + + The test to modify + + + + 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 + + + + + Modifies a test by adding properties to it. + + The test to modify + + + + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. + + + + + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + + + + + + Construct a set of ints within a specified range + + + + + Construct a set of unsigned ints within a specified range + + + + + Construct a set of longs within a specified range + + + + + Construct a set of unsigned longs within a specified range + + + + + Construct a set of shorts within a specified range + + + + + Construct a set of unsigned shorts within a specified range + + + + + Construct a set of doubles within a specified range + + + + + Construct a set of floats within a specified range + + + + + Construct a set of bytes within a specified range + + + + + Construct a set of sbytes within a specified range + + + + + 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 unsigned ints using default step of 1 + + + + + + + Construct a range of unsigned ints specifying the step size + + + + + + + + Construct a range of longs using a default step of 1 + + + + + + + Construct a range of longs + + + + + + + + Construct a range of unsigned longs using default step of 1 + + + + + + + Construct a range of unsigned longs specifying the step size + + + + + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RepeatAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + 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 in the STA, causing it + to run in a separate thread if necessary. + + + + + Construct a RequiresSTAAttribute + + + + + Marks a test that must run on a separate thread. + + + + + Construct a RequiresThreadAttribute + + + + + Construct a RequiresThreadAttribute, specifying the apartment + + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RetryAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Marks a test to use a Sequential join of any argument + data provided. Arguments will be combined into test cases, + taking the next value of each argument until all are used. + + + + + Default constructor + + + + + 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 identify a method that is called + immediately before each test is run. + + + + + Attribute used to identify a class that contains + or + methods for all the test fixtures under a given namespace. + + + + + Build a SetUpFixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A SetUpFixture object as a TestSuite. + + + + 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. + + + + + Provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + The author of this test + + + + + The type that this test is testing + + + + + Modifies a test by adding a description, if not already set. + + The test to modify + + + + Gets or sets the expected result. + + The result. + + + + Returns true if an expected result has been set + + + + + Construct a TestMethod from a given method. + + The method for which a test is to be constructed. + The suite to which the test will be added. + A TestMethod + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + 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 or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test case. + + + + + Gets the list of arguments to a test case + + + + + Gets the properties of the test case + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if the expected result has been set + + + + + Gets or sets the description. + + The description. + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the reason for ignoring the test + + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets or sets the reason for not running the test. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Comma-delimited list of platforms to run the test for + + + + + Comma-delimited list of platforms to not run the test for + + + + + Gets and sets the category for this test case. + May be a comma-separated list of categories. + + + + + Performs several special conversions allowed by NUnit in order to + permit arguments with types that cannot be used in the constructor + of an Attribute such as TestCaseAttribute or to simplify their use. + + The arguments to be converted + The ParameterInfo array for the method + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a name + + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type + + The type that will provide data + + + + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + + The method for which data is needed. + + + + + TestFixtureAttribute is used to mark a class that represents a TestFixture. + + + + + 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. + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test fixture. + + + + + The arguments originally provided to the attribute + + + + + Properties pertaining to this fixture + + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Descriptive text for this fixture + + + + + The author of this fixture + + + + + The type that this fixture is testing + + + + + Gets or sets the ignore reason. May set RunState as a side effect. + + The ignore reason. + + + + Gets or sets the reason for not running the fixture. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Build a fixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A an IEnumerable holding one TestFixture object. + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. + + + + + Error message string is public so the tests can use it + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type 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 + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestFixtures from a given Type, + using available parameter data. + + The TypeInfo for which fixtures are to be constructed. + One or more TestFixtures as TestSuite + + + + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. + + The type for which data is needed. + + + + + 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. + + + + + Indicates which class the test or test fixture is testing + + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Construct the attribute, specifying a combining strategy and source of parameter data. + + + + + Used 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 class or assembly, sets the default timeout + for all contained test methods. + + + + + Construct a TimeoutAttribute given a time in milliseconds + + The timeout value in milliseconds + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + 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 + + + + + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. + + + + + 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 + + + + + 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 a static method, property or field 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 a static 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 + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + + An enumeration containing individual data items + + + + + A set of Assert methods operating on one or more collections + + + + + DO NOT USE! Use CollectionAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + 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 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 + 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 + 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 + 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 + 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 + 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 + 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 + Arguments to be used in formatting the message + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset does not contain the superset + + 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 the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset contains the superset. + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 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 + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + 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. + + + + + Constructs an AttributeConstraint for a specified attribute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + 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 + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation + + + + + 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 + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Gets the expected object + + + + + Test whether the expected item is contained in the collection + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether two collections are equivalent + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + 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 ignore case and return 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. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + 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. + + + + + If used performs a default ascending comparison + + + + + If used performs a reverse comparison + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + Then signals a break between two ordering steps + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of the constraint. + + + + + + An OrderingStep represents one stage of the sort + + + + + 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 + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another + + + + + Construct a CollectionSupersetConstraint + + The collection that the actual value is expected to be a superset of + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a superset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionTally counts (tallies) the number of + occurrences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + The number of objects remaining in the tally + + + + + 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 + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Construct a default ComparisonAdapter + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + ComparerAdapter extends and + allows use of an or + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a + + + + + 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 + + + + + Tolerance used in making the comparison + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + A ConstraintResult + + + + Protected function overridden by derived class to actually perform the comparison + + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use a and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Set the tolerance for use in this comparison + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual _values is allowed to deviate from + the expected value. + + Self + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + Retrieves the value to be tested from an ActualValueDelegate. + The default implementation simply evaluates the delegate but derived + classes may override it to provide for delayed processing. + + An ActualValueDelegate + Delegate evaluation result + + + + 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 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. + + + + + Returns a DelayedConstraint.WithRawDelayInterval with the specified delay time. + + The delay, which defaults to milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + Resolves any pending operators and returns the resolved 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 reorganized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + Pushes the specified operator onto the stack. + + The operator to put onto the stack. + + + + Pops the topmost operator from the stack. + + The topmost operator on the stack + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Pushes the specified constraint. As a side effect, + the constraint's Builder field is set to the + ConstraintBuilder owning this stack. + + The constraint to put onto the stack + + + + Pops this topmost constraint from the stack. + As a side effect, the constraint's Builder + field is set to null. + + The topmost contraint on the stack + + + + 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 expression 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. + + + + + 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 + reorganized. When a constraint is appended, it is returned as the + value of the operation so that modifiers may be applied. However, + any partially built expression is attached to the constraint for + later resolution. When an operator is appended, the partial + expression is returned. If it's a self-resolving operator, then + a ResolvableConstraintExpression is returned. + + + + + 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. Note that the constraint + is not reduced at this time. For example, if there + is a NotOperator on the stack we don't reduce and + return a NotConstraint. The original constraint must + be returned because it may support modifiers that + are yet to be applied. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + With is currently a NOP - reserved for future use. + + + + + 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests if item is equal to zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 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 ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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 constraint that succeeds if the value + is a file or directory and it exists. + + + + + ConstraintStatus represents the status of a ConstraintResult + returned by a Constraint being applied to an actual value. + + + + + The status has not yet been set + + + + + The constraint succeeded + + + + + The constraint failed + + + + + An error occured in applying the constraint (reserved for future use) + + + + + Contain the result of matching a against an actual value. + + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + The status of the new ConstraintResult. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + If true, applies a status of Success to the result, otherwise Failure. + + + + The actual value that was passed to the method. + + + + + Gets and sets the ResultStatus for this result. + + + + + True if actual value meets the Constraint criteria otherwise false. + + + + + Display friendly name of the constraint. + + + + + Description of the constraint may be affected by the state the constraint had + when was performed against the actual value. + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the result 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 + + + + 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 + + + + 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. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Flag the constraint to ignore case and return self. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Allows only changing the time dimension of delay interval and setting a polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawDelayInterval + + Parent DelayedConstraint on which delay interval dimension is required to be set + + + + Changes delay interval dimension to minutes + + + + + Changes delay interval dimension to seconds + + + + + Changes delay interval dimension to milliseconds + + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only setting the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithDimensionedDelayInterval + + Parent DelayedConstraint on which polling interval is required to be set + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only changing the time dimension of the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawPollingInterval + + Parent DelayedConstraint on which polling dimension is required to be set + + + + Changes polling interval dimension to minutes + + + + + Changes polling interval dimension to seconds + + + + + Changes polling interval dimension to milliseconds + + + + + Delay value store as an Interval object + + + + + Polling value stored as an Interval object + + + + + Creates a new DelayedConstraint + + The inner constraint to 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 to decorate + The time interval after which the match is performed, in milliseconds + The time interval used for polling, in milliseconds + If the value of is less than 0 + + + + Gets text describing a constraint + + + + + 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 + A ConstraintResult + + + + 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 + + + + Returns the string representation of the constraint. + + + + + Adjusts a Timestamp by a given TimeSpan + + + + + + + + Returns the difference between two Timestamps as a TimeSpan + + + + + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected key is contained in the dictionary + + + + + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. + + + + + Construct a DictionaryContainsValueConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected value is contained in the dictionary + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that the collection is empty + + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyStringConstraint tests whether a string is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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. + + + + + + + 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. + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Gets the tolerance for this comparison. + + + The tolerance. + + + + + Gets a value indicating whether to compare case insensitive. + + + true if comparing case insensitive; otherwise, false. + + + + + Gets a value indicating whether or not to clip strings. + + + true if set to clip strings otherwise, false. + + + + + Gets the failure points. + + + The failure points. + + + + + 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. + + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flags the constraint to include + property in comparison of two values. + + + Using this modifier does not allow to use the + constraint modifier. + + + + + 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 + + + + 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 + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + EqualityAdapter class handles all equality comparisons + that use an , + or a . + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps an . + + + + + Returns an EqualityAdapter that uses a predicate function for items comparison. + + + + + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps a . + + + + + 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. + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + FileExistsConstraint is used to determine if a file exists + + + + + Initializes a new instance of the class. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + FileOrDirectoryExistsConstraint is used to determine if a file or directory exists + + + + + If true, the constraint will only check if files exist, not directories + + + + + If true, the constraint will only check if directories exist, not files + + + + + Initializes a new instance of the class that + will check files and directories. + + + + + Initializes a new instance of the class that + will only check files if ignoreDirectories is true. + + if set to true [ignore directories]. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + 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. + + + + + 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 + + + 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 + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + Interface for all constraints + + + + + The display name of this Constraint for use by ToString(). + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + 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 + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + Keeps track of an interval time which can be represented in + Minutes, Seconds or Milliseconds + + + + + Constructs a interval given an value in milliseconds + + + + + Gets Interval value represented as a TimeSpan object + + + + + Returns the interval with the current value as a number of minutes. + + + + + Returns the interval with the current value as a number of seconds. + + + + + Returns the interval with the current value as a number of milliseconds. + + + + + Is true for intervals created with a non zero value + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + + + + IntervalUnit provides the semantics to the value stored in Interval class. + + + + + Unit representing an Interval in minutes + + + + + Unit representing an Interval in seconds + + + + + Unit representing an Interval in milliseconds + + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + An extension of ResolvableConstraintExpression that adds a no-op Items property for readability. + + + + + Create a new instance of ItemsConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + + No-op property for readability. + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + 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 + + + + + Abstract method to get the max line length + + + + + 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 given + 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 failing constraint result + + + + 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 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 + + + + Custom value formatter function + + The value + + + + + Custom value formatter factory function + + The next formatter function + ValueFormatter + If the given formatter is unable to handle a certain format, it must call the next formatter in the chain + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Formatting strings used for expected and actual _values + + + + + Current head of chain of value formatters. Public for testing. + + + + + Add a formatter to the chain of responsibility. + + + + + + Formats text to represent a generalized value. + + The value + The formatted text + + + + Formats 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 + + + + 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 + + + + Converts any null 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 + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test that the actual value is an NaN + + + + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + 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 + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + 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. + + + + + Returns the default NUnitComparer. + + + + + Compares two objects + + + + + + + + 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 + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occurred. + + + + + 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 the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depth. + + + + + Flags the comparer to include + property in comparison of two values. + + + Using this modifier does not allow to use the + modifier. + + + + + Compares two objects for equality within a tolerance. + + + + + 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 + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + 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. + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + 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. + + + + + 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. + + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + 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. + + + + + The syntax element preceding this operator + + + + + The syntax element following 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. + + + + + 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. + + + + + + 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. + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + 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. + + + + + + + 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. + + + + + Gets the name of the property to which the operator applies + + + + + 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. + + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + 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. + + + + + 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. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifies the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Modifies the current instance to be case-sensitive + and returns it. + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether one path in canonical form is a subpath of another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Gets text describing a constraint + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + Construct given a base constraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Formats a prefix constraint's description. + + + + + 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 + + + + Returns the string representation of the constraint. + + + + + + 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 value + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two _values are within a + specified range. + + + + + Initializes a new instance of the class. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + 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 + + + + 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. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Resolve the current expression to a Constraint + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Return the top-level constraint for this expression + + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. + + + + + Construct an EqualConstraintResult + + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + 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 + + + + Display the failure information for two IEnumerables that did not match. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + 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. + + + + + + + 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 + + + + + Description of this constraint + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + 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 a given string + + The string to be tested + True for success, false for failure + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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 + + + + 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. + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + 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 actual value for a failing constraint test to a + MessageWriter. This override only handles the special message + used when an exception is expected but none is thrown. + + The writer on which the actual value is displayed + + + + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Executes the code and returns success if an exception is thrown. + + A delegate representing the code to be tested + True if an exception is thrown, otherwise false + + + + Returns the ActualValueDelegate itself as the value to be tested. + + A delegate representing the code to be tested + The delegate itself + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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. + + + + + Returns a default Tolerance object, equivalent to an exact match. + + + + + Returns an empty Tolerance object, equivalent to an exact match. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + 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 as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of clock ticks. + + + + + Gets the for the current Tolerance + + + + + Gets the magnitude of the current Tolerance instance. + + + + + Returns true if the current tolerance has not been set or is using the . + + + + + Apply the tolerance to an expected value and return + a Tolerance.Range that represents the acceptable values. + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Tolerance.Range represents the range of values that match + a specific tolerance, when applied to a specific value. + + + + + The lower bound of the range + + + + + The Upper bound of the range + + + + + Construct a Range + + + + + 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. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + The type of the actual argument to which the constraint was applied + + + + + Construct a TypeConstraint for a given Type + + The expected type for the constraint + Prefix used in forming the constraint description + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that all items are unique. + + + + + + + XmlSerializableConstraint tests whether + an object is serializable in xml format. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of this constraint + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct a standalone ExactCountConstraint + + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + 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. + + + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. + + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Asserts on Directories + + + + + DO NOT USE! Use DirectoryAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + 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 the 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 point to the same directory. + If they are not 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 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 + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + 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 the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to 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 the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + 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 the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to 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 the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 regular expression supplied as an argument. + + + + + Thrown when an assertion failed. + + + + + Default Constructor (normally used) + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + Abstract base for Exceptions that terminate a test and provide a ResultState. + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Asserts on Files + + + + + DO NOT USE! Use FileAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + + + + Class used to guard against unexpected argument values + or operations by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Throws an ArgumentOutOfRangeException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an ArgumentException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an InvalidOperationException if the specified condition is not met. + + The condition that must be met + The exception message to be used + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 regular expression 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 a subpath of the 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 + inclusively within a specified range. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + 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 + + + + + Basic Asserts on strings. + + + + + DO NOT USE! Use StringAssert.AreEqualIgnoringCase(...) or Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 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 + + + + 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 TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the 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 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 + + + + + + + + Marks the test case as explicit. + + + + + Marks the test case as explicit, specifying the reason. + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Provide the context information of the current test. + This is an adapter for the internal ExecutionContext + class, hiding the internals from the user test. + + + + + Construct a TestContext for an ExecutionContext + + The ExecutionContext to adapt + + + + 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 TextWriter that will send output to the current test result. + + + + + Gets a TextWriter that will send output directly to Console.Error + + + + + Gets a TextWriter for use in displaying immediate progress messages + + + + + TestParameters object holds parameters for the test run, if any are specified + + + + + Static DefaultWorkDirectory is now used as the source + of the public instance property WorkDirectory. This is + a bit odd but necessary to avoid breaking user tests. + + + + + Get a representation of the current test. + + + + + Gets a Representation of the TestResult for the current test. + + + + + Gets the unique name of the Worker that is executing this test. + + + + + Gets the directory containing the current test assembly. + + + + + Gets the directory to be used for outputting files created + by this test run. + + + + + Gets the random generator. + + + The random generator. + + + + Write the string representation of a boolean value to the current result + + + Write a char to the current result + + + Write a char array to the current result + + + Write the string representation of a double to the current result + + + Write the string representation of an Int32 value to the current result + + + Write the string representation of an Int64 value to the current result + + + Write the string representation of a decimal value to the current result + + + Write the string representation of an object to the current result + + + Write the string representation of a Single value to the current result + + + Write a string to the current result + + + Write the string representation of a UInt32 value to the current result + + + Write the string representation of a UInt64 value to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a line terminator to the current result + + + Write the string representation of a boolean value to the current result followed by a line terminator + + + Write a char to the current result followed by a line terminator + + + Write a char array to the current result followed by a line terminator + + + Write the string representation of a double to the current result followed by a line terminator + + + Write the string representation of an Int32 value to the current result followed by a line terminator + + + Write the string representation of an Int64 value to the current result followed by a line terminator + + + Write the string representation of a decimal value to the current result followed by a line terminator + + + Write the string representation of an object to the current result followed by a line terminator + + + Write the string representation of a Single value to the current result followed by a line terminator + + + Write a string to the current result followed by a line terminator + + + Write the string representation of a UInt32 value to the current result followed by a line terminator + + + Write the string representation of a UInt64 value to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + + This method adds the a new ValueFormatterFactory to the + chain of responsibility used for formatting values in messages. + The scope of the change is the current TestContext. + + The factory delegate + + + + Attach a file to the current test result + + Relative or absolute file path to attachment + Optional description of attachment + + + + This method provides a simplified way to add a ValueFormatter + delegate to the chain of responsibility, creating the factory + delegate internally. It is useful when the Type of the object + is the only criterion for selection of the formatter, since + it can be used without getting involved with a compound function. + + The type supported by this formatter + The ValueFormatter delegate + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Construct a TestAdapter for a Test + + The Test to be adapted + + + + Gets the unique Id of a test + + + + + The name of the test, which may or may not be + the same as the method name. + + + + + The name of the method representing the test. + + + + + The FullName of the test + + + + + The ClassName of the test + + + + + The properties of the test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a TestResult + + The TestResult to be adapted + + + + Gets a ResultState representing the outcome of the test. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + The TestFixtureData class represents a set of arguments + and other parameter info to be used for a parameterized + fixture. It is derived from TestFixtureParameters and adds a + fluent syntax for use in initializing the fixture. + + + + + 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. + + + + Marks the test fixture as explicit. + + + + + Marks the test fixture as explicit, specifying the reason. + + + + + Ignores this TestFixture, specifying the reason. + + The reason. + + + + + TestParameters class holds any named parameters supplied to the test run + + + + + Gets the number of test parameters + + + + + Gets a collection of the test parameter names + + + + + Gets a flag indicating whether a parameter with the specified name exists. + + Name of the parameter + True if it exists, otherwise false + + + + Indexer provides access to the internal dictionary + + Name of the parameter + Value of the parameter or null if not present + + + + Get method is a simple alternative to the indexer + + Name of the parameter + Value of the parameter or null if not present + + + + Get the value of a parameter or a default string + + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Get the value of a parameter or return a default + + The return Type + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Adds a parameter to the list + + Name of the parameter + Value of the parameter + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + 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 ArgumentException + + + + + Creates a constraint specifying an expected ArgumentNullException + + + + + Creates a constraint specifying an expected InvalidOperationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + 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 + + + + + FrameworkPackageSettings is a static class containing constant values that + are used as keys in setting up a TestPackage. These values are used in + the framework, and set in the runner. Setting values may be a string, int or bool. + + + + + Flag (bool) indicating whether tests are being debugged. + + + + + Flag (bool) indicating whether to pause execution of tests to allow + the user to attach a debugger. + + + + + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. + + + + + Full path of the directory to be used for work and result files. + This path is provided to tests by the framework TestContext. + + + + + Integer value in milliseconds for the default timeout value + for test cases. If not specified, there is no timeout except + as specified by attributes on the tests themselves. + + + + + A TextWriter to which the internal trace will be sent. + + + + + A list of tests to be loaded. + + + + + The number of test threads to run for the assembly. If set to + 1, a single queue is used. If set to 0, tests are executed + directly, without queuing. + + + + + The random seed to be used for this assembly. If specified + as the value reported from a prior run, the framework should + generate identical random values for tests as were used for + that run, provided that no change has been made to the test + assembly. Default is a random value itself. + + + + + If true, execution stops after the first error or failure. + + + + + If true, use of the event queue is suppressed and test events are synchronous. + + + + + The default naming pattern used in generating test names + + + + + Parameters to be passed on to the tests, serialized to a single string which needs parsing. Obsoleted by ; kept for backward compatibility. + + + + + Parameters to be passed on to the tests, already parsed into an IDictionary<string, string>. Replaces . + + + + + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. + + + + + Gets the custom attributes from the given object. + + .NET Standard 1.3 libraries do not have an ICustomAttributeProvider, so we need to cast to each of + it's direct subtypes and try to get attributes off those instead. + The actual. + Type of the attribute. + if set to true [inherit]. + A list of the given attribute on the given object. + + + + A MarshalByRefObject that lives forever + + + + + Obtains a lifetime service object to control the lifetime policy for this instance. + + + + + Type extensions that apply to all target frameworks + + + + + Determines if the given array is castable/matches the array. + + + + + + + + Determines if one type can be implicitly converted from another + + + + + + + + This class is used as a flag when we get a parameter list for a method/constructor, but + we do not know one of the types because null was passed in. + + + + diff --git a/csharp/GildedRoseTest/bin/Debug/nunit_random_seed.tmp b/csharp/GildedRoseTest/bin/Debug/nunit_random_seed.tmp new file mode 100644 index 00000000..9c0a1d7d --- /dev/null +++ b/csharp/GildedRoseTest/bin/Debug/nunit_random_seed.tmp @@ -0,0 +1 @@ +1540031247 \ No newline at end of file diff --git a/csharp/GildedRoseTest/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/csharp/GildedRoseTest/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..8454eeb70110f107f13548ca4f1f7b89849d8b02 GIT binary patch literal 7376 zcmeHM|5F-A6bHqPXiS5(#%R8fHf@s(UO^;&nehiJlGr5H0koa*7_;0hxO&{t-942$ z{w@6rI{g#d_YOD|jja=|;}0Ce+S#u^8+`8Bb|!U zcDQt@RZy46xa+5079*M1Trs7&wPS6@VcEn-3 zt4PbxH*uja=U67#`ve<{R8*Prrxo0?WNH(X$mhIjJA!3dg@P+KY^h*gFt$b&EC-uzO-F&}Nzww}fLb zDIKv2tLF-Af{<%XVP@X76|b?@lx|H;FUcuavOKFW!E8{K6HX139)PBMqTTAbg$$5E zLPDWIkOSdxn7|ukXyA{bLPIK6gYbm?H53M%_J-L^a6@|!&ia_z-MwZAoQNH2xonGa z@o~-{T2O-9)kM4|4M$kK+&N?a{fI3r(2S9JomxuIv*hAZDRJF8Zs}5k@I$G$ZoTE| z!r^|11`$R6X$nI5Esv=lAE17K1`$L30PWQeXDN(4I64SoBpSinArwFdLeV=Q;A0p? z6vYUNQ4k~KF31oW1Cc$=x0us%0f_W56-@WZuC8sa7kv(yIGWco+FYVdL0fcl{p5_? z15Gl!tXH|x4Y^N6U4H}27^sdT*(}f)>ajYzI{S_)dU;3@sG#nY5A-Z6yH$`9_-7F~ zQl3f2I`Ro|hY)E7HTGHb3$)`th({Nf+UEVuC6gG8n7|Qn-ilStx;dXeWWJ2 zMJC{G1X`0?I+;!_MZbdYp^+H+8Q)|Qg?7yCnn@nOeMB=Yi%fZU?1aT|E4-y4|Nr@O z9aE>qA+0j08D6eHra|e!jg_{w=&N-g&PUWjr%NpjMyAp_Fge|3YChT3jdsldp7?yc zZN)9FfZBIsW_--f5X5~1xF`QJ?k4yk)0X+jCGZ1_HY)CK<>1#kb3KA&`PeTnw zfvHYez{CC~Xe&KzJZ8@UX)j1C5#(C{*$)x~4zBiAsb)JmfWvb}G-#hbEnZ!_ zZk&-HpuaciTM{&lo#yE=GEuB((?Ah}foLQaX^;Dk?g@t4eDnRWWiel4Bx;Q- zUuZ>R!AQ8is@hk{zj5V_J)w9{)T$3#J@KeNG_HJ3&(csZFwY5k#$1Q3Z?ZJ>Gxj_dee!^XZLRKJ-TZs9Z{ISls ze`(0#T^oZy+$8_6Y7rF7<0AgH>Ha`G5-m#FQ`{Ko>h?#iXelq+7-_TSL?bJLZC13H zf_cHyEjKKRc^3LZJyy)+8Z^jNSU9*iTVBoTTBEYubF<_6@19UM^XRWe4#kg|kfLN1s_iQWfYl_Fa zr5y%xtMU0-y8VG={tozN_JVLQ?wjbV^;NZmf=gS%R=m2VCEP=4yYiMi)x@d60l87# z?W|TZyTQnA)lPfdwyUAL8;JFX7Q}<0U>qobjg`KtiJFm46}YOpM&@3E+^6Y&aw_k@ z^@yAyxKi7IxGh<}(*QVm&qI;ZvAccGDIa)oy@5fdT_KY#D*aT7+@k;C@@Bqe$alqn zmk$eRo)tf4Ron{mff17>HVk?D2PE&VSRfKbeU{nmg>1S8B%34z7X`y@k(Dvu^hmTT zVcFiuazIgUw-fseSWZc+j`qhAEz%c|Q(!>dXeG*PUu4uekQov8!;wkHKxQ&6>R*Wm zqD0_+$ZS9n*cb`72RnMA^3g4`+#gvUk*zhHZ^hz{r$J?lYTy$;(?bW~3a9OUi?qY} z9f^mkL55`wZ%SIx@fq7&lTROV%xL|m> z%&i=`oi>o>&GLuQN$WzFROWXO^6RfrwI8YF3xly9f2e$3yr(S~DQ94UUU7FM8ebT+ zR$9?iZ`h}ceQ51c%{M#X1Jl>D@6*>fkKJe*R?7Z8L1`R9GK%C&Bwr>OO)`dLEXkoH zhmnjU8BgLPsUWE&sUn#`GLfX3q=sY?Ni9ho$z+l#B!`n6K~hh0B*|2eLf+6}se9G~ zzyu;>ICdCA5Se0ZQWEmV;PA4i{luE{tW0;7>+8i?l@5UpH{ z>EH$NOfcyMI0LMvXciLhdw|CQw}PGbI9=lU;oUFw+zyvC(KH-_wKvo5X8x!Fw~)1a z53qZWMVjlwS032*)-RikW8o-cCdqLio>?H8BaPYM3)xEU0nXeF5GiYqr+EYs+x$!r z&Ebzai1{({>9&%e1>Y!|syh5X??S2kG;EyB=LJXxOQ!hN0z9e@u^fiv6*9@hG5F5{%6Yc6Em= z#wVjX{V~jq1*}*s5^abEI)iac5n@iVIXu0GgU?hlf?Zuba<;G}YIXU$yREkA(MZ=I zfn3}pR3v1zCubMa0xcoLJ;HWJY65bG6}F2LC~RDLruM&grgiaR zmLt0lMij&o18GRj;-y07D$eBY$Xsr?C&b!j#6gN0L0oj7bm2}Ft-PlmoLa^Jl1Cwf z#vKhv-Ow%RYQ^*{#t<;*5H-45S0pB;k-|I}=Z(#-)^^-3%U%o;Vra7bl0j|*F5y`L zG9+zc)L2RRDiD_`7}F88#%i)moDL!wlSuIyNO-;iGFy$MrY7IytWwIuoIBeo53j*x zix~Jw@6uoHo%isWIL%lKQpV_shhW4+S9^LvGHgE!B7?S@f{}={@och`p93P;QJ3O# zm3SS+?37CJ*O2g>2QuH`kzMdbRn^kA+P10*)$M^v6RgU1T-R6+QpEnR^h*i8cfl`T z$7#m-Bo~leNV0+CB9eSze@WZ!onsF7$)g;%DTuahNavjO_BsY-UNOBX&%_O&w z+)8pA$!3tU00U>dDaNZFLp9dr_&5#Km|){Ngg*^+@fO3)6ET=RN}0 z+!4>FpUQ^UEM#}+zq5ll2zTyS16SPW$Fd^SHJ95}>n3ME2EyWW9Mm|Nf22Do{7y=Bh%Q7_PwDlM1<(tRf?8PWTy5 zBSSF}w>cFbcQ2R;Nd`Zlzf}c}s3y8ZB@%>Vnf!@;P6CXF@l4{|CD`|r);^2GzN&|j z(f>4!U*cD3@pDM@irqKanNwm}m}b9I#a?1%JdfKDhr+h0__%w)j7>850e%<*&i2D- zF!Y10WP&|n+Yc{L9fx2SS7Pf$BqX+8qL?;I@ykm53dLuE5OxYYxVSt7ySdVxzeA$T zVS(`~#KvnN(wVO#ar)=vOQPuwS1=^d!;0cd&`w;}dQn(poeGc3&yWx5|qlYU5`X&p{=`hoF_^uv2dWP!oo zAvWFzkudlN5}zjwK0yA$(9JJSGrveT-;*>y(WtD)sZR614ymj)|3pGorcas0`AYmR zCEiZ)1xn0LwbT|!2u4%#A_Yp!F&4r2N{Zb|%!S~B5tkHul(>lEimEF2lR;1m5e6|cnzT)@)(prPJk_>Jgt-&^Mc5Cn^m{e=Ph}8)L zMy}H25x8=O$s-{$%0Z;b2O;r!n0zqu6))>1zm#V3i@M1#q?ydX*=aH(VF{HnxU$6Z zSZ2Z4Sc(r-;=?GuT8YOg@py`_QDUDGS5SPd5?3m56~%o@JVA*kQhc2fS1WN1#n&tG zBqgq;_y#4eQ{u@K->Ae>l=yIpZ&KnTl(?Sao0a%TC7wz#BYbK6QA*rEF=KuyK3a(z zDZWjKrz!C<6mM4I=}J6<;@crs4`L)`4-O5~cEOPViM=MMIeKx;5E{pVNc7D_;y>Dp zI}RC&yLH&zl?J;zb=Yl5gWVR`Wy8+y#oY<1^yOS!S;B4}v$#u%=PU67nX?ivRN_Sx z-=oAQD)C7a->bwYEAc55bFe~Y*`maYDdxz8DiC(7Sr|M7hbLr#oC>v(pD{#XwDO{| zaF!qyQmtX*l!`1buTALLUQ3Y4*Q{&+yZZYxL5&I<0iB(o5%CX{Ey<5xaC$ z-_rXaq&y15!=UsIa!5N09|5~F5fU#jJb>l!e6?t<757IwK=29^qjr}lz|X?XFe%r@ zW(x9SGZ@)Qj?Huc2F2=)1=HvR%Q|BkL8Qdx8fwKRjWNYW9m1C-A&fKelxIk7LzuAS z;bqv{hfjfP6r!G9mun*!4`Bv=?!1O7hC%{=Re!#r`_3z7e$qAKmL;z}xy1VUoBQuS z`l{=zFPr-I%D&4F9yfIFkGEa7X5sqEmaetKJhz@a@23~^l@=FW`Kv$w#s9?Dw+>&i zYV=EmFZ^*?WUFu8Ii zhxh;Zgwfj$Fh(D}>XI?TzqsMNgO|QB%2QLh-{$J~M)t04J-a?KG5Xf^rw*TUPVD)> zGwbUv*j)FLEAZsHLoaHc^OHX{H|+1((6F_xbHmIJW)1y#(&TgR7}>V{sg_k=edWVf zy|3XeWm8?Yb+> zh(wphm?ESjYFQeh1Wt9fPaNFOBPxdx^$is8KKe!__A7y=aRq)$3|L%=lxWwWBrJ_F zMVpSRKpL(%E9Ar#XNU5*%3)kxivljyamDrJrqKs+0#er@B~H~)Bo=FoDOz+$ostGA z&L}z|#hJxCq;eQix1fLrYnzvt#;uSf&~zJ8Vxa~gu|Q)?F<(d1yficw;Z!G@iXqLT zDTmSYT@f+r7@;BP6yJ=G$0u`)d?gnVaNk1hk^8c6tG&~ zxClEP%~}yKjr$->0P23E#B>cq;uwuF#WWpIjcI`5q8BHixcDUxs2m2=Lnz>~WRREI zDaSM(hCG3(A0Z`<)LXn` zDdE!qB*truDaPq&IxG!MWjNJ|CN9&=qbY~c^lKFGu;k-T?)jS7_s%qagC7#0`Ylr8 z%NmZvmo&x{qjXRmk_IX+?sb65%N4zS7((CkrzN@UIDJ}jI3(GoCA}m6Ym6#)7{!&o z*^F|J!4LWBpTpJvcf>+!k=(0b6P5loq{IlVo{KMPj42M(EByg!m3}NvbyRvc7kB5O zl*3T^JqlR$OA^D)e}E)`rniw2U(f&~_R$zq?5(3|uQW9AT>vMV_)b6`O*xFFzo3A# ztquDtyZifwUb3+~2f4qM9VG_@asU*QbeB1`+PK#HSi# zihqK$Um5&gFnnc@dU#VkE3WtsTOL(ND}|h z7*o6tuAVQI5pjP9lY$lBeRMWgdg0qPwvDM0b9Stp?Q_G}(dISi zyacXZA?!skDTGbViZH&wpKq{oxWO6?#CYu&;S>KK&NRl@h#E^o{YnFocwS>n@f^5% zg{WVGNg;}RJ~$tN-1{Mqs2oOA1rU=qrC(`-sfu9wxrQI{GmSCD)8OhAn4SWY0uy%% zae|3EhUCGN!(gffV${%iVoJZxM$=@X=}`?p;t`E8#ZST2D>VHCObSg?v!dy!JepJ= zDmS}RQ-PSQQ~F2QplTqf9@KCowrY$i9spObK=nf~DNr?J1r@g`$~RFt+(gX)V!Vm9 zA=*1iO*W#MiKy>sAQJa#j4AE`SFaFtH<%QnxU-e>p~oGr@`%b|L>&*rq`y!y$41i$ zMALUP0Es&^#uT@Mt5<0HHkcHexFMPoP23nQkER?((;^^74V`1R^VGlXHH{N(Se-;z z-K-%=+@vw4xDi~vg4GRRQm~ql4OZS}Nc%9({+TP;KKGrUxSyX~$!72T#C`VEqOT&( z72w0e&294XbtQ-EN-L^?w&-h#T|fM+AJ=GALR_sernm}Ry{aGI0+XsA+)~kQcGcF4 zZf>oZhf)qhsRM|ymsE7xKnfB_muuJ&n=}Sn?18ISK)MV}3P{|9(+MPQ#+e6F4g)Cy z#F)vcZ|tpM8r?RSmJ>`HH2jDQH3l2YfvZBKyka(e`1B@m;=(-KQj zSJ`MJ_YFU{bK+KI0Bpd0QdvLu~h%aq8&NlkNz&Zd&()A3tC9#|Nf7-5#pg@c8Oa zHh%QsmI-Sr-uu(s>ZXs5sBc;P?C&0X;L1nFEE_lMgnb`sd2rNWS2y$&O}K08_P3fJ z{mXsZ=621Eyu6od)4MO8@m^`~RiPJt^VQ=wfAirg^CwSTzq#;`g=dWaWbNy7?)Kik zb?I~OUU~nqKmE#@!^iyXgEt=+e%vXe(h_|1!`q1;WB~j9(_0qqSN-aG5lpILbLF(d z+wD+Y-k<6!rE2f8xjL!J4UzT3+pARV8#pVeiqc9uyyrPo*K1cT)Res!J5(>}PxT6= zTJ=!f!aF9-t`S#is@g?e-ad!wb^WQ{>QKF{Kh-Tt)%L)hNmYjj?o+Dvz24uS>cdKP z%hcAjWzU;a#E<$@eO#$--t=D4>I*-;M?8^KWohvP*45|5Q1vgAs(r7|Bvl>v`WuJp zZQH?xspW;&bOwwE}VDGYSvK>)rS65n;fdmnyP-k zUXFds8?Z}@W8hhDfa94`)pi!gHM6QNQL1*q`ukJubf^aVQ)OtD?kt9AS#N;-?sQf5 azq6|LDplL8v-(p#PpR5wt?x&5@c#kOmii_D literal 0 HcmV?d00001 diff --git a/csharp/GildedRoseTest/obj/Debug/GildedRoseTest.dll b/csharp/GildedRoseTest/obj/Debug/GildedRoseTest.dll new file mode 100644 index 0000000000000000000000000000000000000000..40771d07eb1b8850d9a44e741bef17ecf0d30935 GIT binary patch literal 5632 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 B-e3R# literal 0 HcmV?d00001 diff --git a/csharp/GildedRoseTest/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/csharp/GildedRoseTest/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 00000000..e69de29b diff --git a/csharp/GildedRoseTest/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/csharp/GildedRoseTest/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 00000000..e69de29b diff --git a/csharp/GildedRoseTest/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/csharp/GildedRoseTest/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 00000000..e69de29b diff --git a/csharp/GildedRoseTest/packages.config b/csharp/GildedRoseTest/packages.config new file mode 100644 index 00000000..99a41d06 --- /dev/null +++ b/csharp/GildedRoseTest/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/csharp/csharp.sln b/csharp/csharp.sln new file mode 100644 index 00000000..79164b76 --- /dev/null +++ b/csharp/csharp.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GildedRose", "GildedRose\GildedRose.csproj", "{4D4B37CD-3E06-4870-A020-C0CF4CABEBC8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GildedRoseTest", "GildedRoseTest\GildedRoseTest.csproj", "{CC49D432-ED2F-4DD7-9707-B379F138BBE3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4D4B37CD-3E06-4870-A020-C0CF4CABEBC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4D4B37CD-3E06-4870-A020-C0CF4CABEBC8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D4B37CD-3E06-4870-A020-C0CF4CABEBC8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4D4B37CD-3E06-4870-A020-C0CF4CABEBC8}.Release|Any CPU.Build.0 = Release|Any CPU + {CC49D432-ED2F-4DD7-9707-B379F138BBE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CC49D432-ED2F-4DD7-9707-B379F138BBE3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CC49D432-ED2F-4DD7-9707-B379F138BBE3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CC49D432-ED2F-4DD7-9707-B379F138BBE3}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/csharp/packages/ApprovalTests.3.0.13/ApprovalTests.3.0.13.nupkg b/csharp/packages/ApprovalTests.3.0.13/ApprovalTests.3.0.13.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..fe7a45d457e20ae8914860561b76517cb5bbaf60 GIT binary patch literal 57809 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�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 z + + + ApprovalTests + + + + + These classes have all been moved to a seperate Nuget Package. + Simply add ApprovalTests.Asp + + + + + Throws exception if Html is incorrectly formatted + + + + + ** Warning : use at your own risk ** + Deletes any files that may have been abandoned. + + List of deleted files + + + + Throws exception if Xml is incorrectly formatted + + + + diff --git a/csharp/packages/ApprovalTests.3.0.13/lib/net40/ApprovalTests.dll b/csharp/packages/ApprovalTests.3.0.13/lib/net40/ApprovalTests.dll new file mode 100644 index 0000000000000000000000000000000000000000..16d1157c375f538ce73f8b7ea9657b5258e95965 GIT binary patch literal 141312 zcmce<2b@$z50<*xb&s|*s6?T^(pd z5%pBeIdLZ@jAssb=76H!na}KI#%90l=RymVitk~o5Ieuz>+B+wW8v5Hcs ztw<^+k}#!xc0fKAV2m<(6j5&e1^-GGh4?@Jie%L3BAxXA`F|~FP~@4BF`35vs1Pw* zr~k~1Njqew0B`ef`Nr}o5%eJU*B0=E93)bE%&ZfR0X(2D_@YkxYUK{lP&~6X?WYf6 z0XrDT*e{AW3N^LqSx0(6q^ts&g(y`m@W!w@@<+YmkFv!iF00-aS$3!+C0d$K>QJ7| zgX_(WYevfyX}U--c-11aS>`$-NfBn7OB`uJZ87R@k<8=Bv8cHuCf?T$8WE|H2&vCt zn=?o$2|~3#Xe6>oimST}jLB}`0-#JXz$&iq3{Z0(z+~5Er!J0?6fmT@1O9_*>UBt5 zh=u>>ahp3hQU^5PIN-Chsq&%nqz4-0-DO~r>;epkQYJ166CMcH_4-2Zp8x=b;D99by6J7&wz&Om@V-=y{p;CXMdT_x_7s zG;~9`+a6L>Hc;bL6s?YisJ*tTFVHdR?F1C`nDj)BeH_Z|+FX>=XcyGxYqU9qCayn5 zyBr=g>T!Eix5@VxD$Vy7e57l>k6j>lfkYxVC~*%YlJ4=~;FgmO__;8fgufbkaZ$-( zlNpMu7+M=tj57kJ*}S90HDw-%BwctTZ9mtv2k|7el*HhL#a8pkJ%B zvKVU43rBjOuV99G!6FYvk}R;Koc!b;Ax7TDWIfnbw9fMWl;U(XqRJBGod(PKrXfrl zTx)0#NsBdIaae7tg0{1BC(%7)EYk%3_)n-j3Oqz@v=$}B56q%|4XKmi(>B>nD+#!3!p*2L@E;55T{9K5*cbtWZr>As6u2f@ldBspY}S z5RWZcqdbh-^0wj6p+5&8+|X1L7z%~aBxOpcD}b(& zNmO-hv0jG9j6C2!LUNdXg31nH#@3NoW=WueG^*#jleFVOnYSCk>c6$315;%XvD8ck zqPM$Zn-~SNPT)hzBt2f2BrM)2GM)>4O9OYlhwvfU07&&;hv{il9E}1o4rJ2^9}hh@ z1hO?5*wkSuh}0RFeiLrb=pwzR%3;^kDG=4&(F&Be7|I@QbL=L!nGo<%x3&`~y9gzc zh`}t!UC9x4m2{zy{KDWutc0<_$iQ?N7?(>x6Mn|Vd4T4pZ>HM7E4Ku=69LqBqv~M8 z?sQN~0f0f7;8*iDw5$hbsQzKlP{$Q^Y-nsem-`D{y%NKG0H2td9qlm6dGYN!TO==n zA|^IsTUL6z1fpTYNMp$ycQ1%UlVxzbWR59pMz~A5F{y`$IeVCphO7Vh;}7G*$=ft4(!TYA z@Aw}I;CRe@PGLzgPR5_4oy4k;(iYki%rDFVsH;c^b8d6HB5^V1$vFY@#RIU6=c0&8Zy+zK4hsx4V_qX zhc*D)NW&TEudJodq%P~}PMGngf|k6eitf-hP()iQ!hr$C;MpE}OB@6*d6iYhKM z6I0KfK_jjbl)AK)MMi?aj2!B8Yc>D&WJmVJClm5T9%J_58Rgot?`56^CaB56Xb$oRfko(2_o zdF$_q<27?XgHARo^amhLa5GyuC0M1DVbk8Ptj3H@HX#zV^uzVPx%MdWTvYN`z+jf(f5@>4X_WpK23yhs;toZ1mDVzz}(>4{4N2R zH?cdBco5 z3q7pIXku@P6*w?0-Q*C+dqnKC0ny=e!<00#@kAS3fdE^xx#~(4)8rQ_+6<}cnG_*a; zKkbysI4M-BcWm9qUd&oh_x5Eo3>EcZ0qo`LwKWYC6AwB@oo1YrR=_J6Z(8WON95Y= zk9Nic*qBgwF)}W$;j;DmUdAx&A1uxG?*IxyAvNQqloJHmNdGXy^ZheGq<=G6PZ2fa zqy&Go^#9BKn@i;voWprX(i<_3EEY(rf32Z$k$Fv*64QcO(Xl)N?Ne-)gO<$EH3cDv zDOB^H3p8(@;q_E&3{;NwHi3L`!D;=JIHCZ=e5=7!T z1Dm?O1$73d-fAEhW;r?{1}SUXj&zWUv#$2|xzJ;2#ET6~z{w#KOZ_ zsC;VuCKP1ZAhJh=&0&?>1$Daj;AD#lBS666_~H&DmRS|uIiOpxmof|e7N$>ydqox( z>bFSXo`bz2=0p{6bi=6AsvQo|UDWGzcQLDzF03tSq77)sgJC6HOy*=08!DQTD41}Z zH}LNI$1eDoD9I*JRz17$6iJv_Gps8;JZ59Q^bF+OC%`~l4+!3TBy8+qSx;7(vb2`L zxBAF%FYX9Vs(2=9e7b)c+6P_n&r%?KkPKXN7Sw2j0i|O|9Sd<``LVWKW4yvi1bny> z-PipEH1qKqE0nf(97WY-5Nc+zcRXcgj|_MM!Dv@a#fgfCv54;E?NUC7TIEunzP1?p zyAg@TH|g66-Wz~9CF~Ar3#_bciz!~_FAk}Rw%Aky0aZ2)5)w;L?=L`0_gv&OPU(fY zHUsSuJm6fU4RY@3mI@j|k&QqPwq!bP3r#;zg;{`}b4|poNlLI;fVBb8&e+WYbmj&pZO#0QWj@ec~Qau=-k@sN_LT9@Bq0T~Hoa0-F z`{o95F)0Gyh*2g(YQ{ZN6w(>I zUVYsdA^Yd`6`m_QcWqA0L74Aj#wN2mjFEL_s?H*gUEW@y-a;I%Q?P65)jb20=r-4b zL;bjCt_KG+*l*6T zvq4Qq7kx1f=Nv7GSu5nR2q^G?!@Ug+B2squga7~NGWOmFvLRqGYp4zj+`g_}>7StM z77r}Y4Q~-Jyv0a@2NsxU2G(a4E#??wu6f{tV5rQ$3$liXv}rr&N#|-KbM6wd*O_}a zF#YoY@=172W(aD7r%~G@-<()UgbRRBnPsJmR(LQRUG&#K7u4J$HoPnQuXavJJUA;n z*YNKJ7e051#&I)LS0BL=8SvJm&^>96RSW0*G~@@U{UYpFT^e7+1z{Da8ABxWH$s6c zY`G??!A3h|Y%VGNw+?J0Ay^F=3vmpw&MqZSW-di0l}uHMzbq#P%BkEGT9~9|6aO+` zdvLZ~w~gVtm$L{yGPwa^1HWA%6XzP)ilB=<$%%j37xwx7Km#cjdsiwWm{rOlh?vSm zN-!4l=Uo*Pc~_ep`lh*RApF1J!B~Lv1ZHS-d@Rh(3Eyeh61Cbx(}`;WIgcSCd+uS0 zg7WIR1&AKjB{NJ|U{J%pgl)Ce_+Tilu(jCa|6CkX0XbmMrk^?&$khES2CXoJY5h4H zqNxA(GLmWQG9D)xtkSxhpsAa4MjWL-Nh?%c#svn?=Q?>Gs3#kLw_P@q04In}3V3>+ z!%2j|3Y%*ADTHE@H*&Qwed5ZrG6JPmpKRE zG0izmZZ6*p(%vmhZnct-zYD#ZwHOUlRrHH-`3Mj;Uq*iKHX!*}x^))#ci8sg-)S3j zr2rM^jLJ5TgRmsfD`Cfc4{}X#&3fLZPc66{Bz+ia(t}$in(=kseFln2Bk?_WV2~}6 zwNtHdEgoC&X-9e=4l4&NJgn#(28@nMkBZ^Sl6JuG#KnIAAfBM;10M%Latu~A>s+Hh zM$M;QB_lz>p)NUA@EXBb!bY%&CtWJE#XJl9g>c^PTU84ieK|>@74j>hgAEs%gbJ=KhG&3_klx*2Sm zXnYUX;CUD%^cC%&P%#-|6iYo^xIXcYOWiKOND!xZJf48zag@-(`A3B9oBy54w{2G zLkYY_6MPYN04RPQ#Jm@%oAD^B#u1qAyK68qh~o7Ovr&=JF>Oz^%N6r-Pj5~rYWEA8zGdA&JC4L1=BJOJB&d#Oh)evO-q#m zS4&U-A0V|LQbwP11h@|j>s9B^D7tm+0|y~LCZl@Ua^;X4H1$q2G%eQ2rxOUnqeLcB zan!0#Wg~<8AuNz*<3$`-8N_*+ej5(f$K+QZLS#12V8SImObV1n0{Lj$FaLDg(cs&W zd^3|M8(5|P01?Xyj3-->(Y4jo81+uG7 zv+QLWPcSXW-c_4*L6?NKXdhgW({VW)bg(lI)+4MM@EW~g$HASROX`n;kk^W zRc!F)x`jC_*crlhRV>58sJ|XGVNzPY5BqIJjfi1zv4xrCrFUfa;7*ggGMu~Q ztlIq6C}D=UUo)3e*>|R#^J52yus!7Se?nP!QZ`Mo#!V$R?G8ZP52zr{y2O8g?XLsq zVVd$}hi5Rg4>=*V6WitN%yX$FJ-5ha9`V|Y=nBL{1SKG&j0x}HklKqsm&@7f6_bWopJnz@?7Qb3m~)eE~p~;G-AGCJ1kopb)G(nPPV-AqO|fBchsAClv8od5sw* zjC0b5Oi34GQse%J99<+U8%fZ^peNI%Z826XB2`m_cO&MzozaFgyErhf>mHV6ryY9sX1g|BaH*lNFnf3k)L2^{gx>a9F z0y^(#rG}1zn1yD_QWs0+45tp*os?olHZa(bAtGux#s)FDhwQ@@mD1pT5W`nYBis<6 zw2XyK0mC<58^8mn&pFKLL!hLbV zXkZ_F++tSI{Zh@?afSF~??GTQB~oZ0b2ataqp-@X4?uw_fB*-QZTT+>JF*=V8P#2p z`m14_qhK5LeKW$o52hO&-b1W}-${9pK2#E5HWJI6a^m`uD%XX&bPYO3#h|r^5GWu@ zsBa=YU~#aMz)X|HBXYrk&Jx;XISgclyBVjRiHmjvB22f;@1hbJvnP5}R~5mitqJ$l zjoO+Mn8nGc{H!#}f}vZ1xh{}4WGM5Y(U5LH8>6Lh8dckLU|u)Sa)EAGSxCFrz=V7V z+9NsM>5J%R^s=Yloq}*?uQ>)TS+_vx|CC@qJpg5lc2JwQ2d^gzT5Po;QLxp9dRKV8 zfCSrs2`D-h>uruQ)qJkp>rLVTme&W6*H^KEvh^gxC`npw$*l^UI z<8mhO;3i2I%`4E{OiU+*3hR;C&w3a=mgc?Dh1OK4Hl5QWOtc>;nIjA1?sQDSB1JM@ ze~Jms>kRM*0P-r4z(xz@V4OM5n(&wYhJ7hQE^_i>+vWNKA-4nxz>KGL`nB4(fT41(MhkUVp}whvs@(kQ z1G$&X*iT2wlWJCRCyIQmh z_nUKZqx}vTDrZuNb{PWhkL9Fccl2>XMsLmmyUP798k;wEunp)jHZuD;-B+cTlp^$i z39$2KUk5|d{TvTDbjDlj=j}(frEX2zigvawny`KPcoet@1q+*@U0mNU97FvZi-)P? z_ggmv2ZK$<4_M^?mqz^#r z*I_WjNPsqv*3m#Q>ThG*cM6We%6u$vp*0-K_Cfh&8_S)sboIc7F(w=Nvi&%=hl`K4 zKQ!MS4!^bbVOeHm4hBBnHVja+GXY1}hc|Qyp%Epi{Xr?Ox>5Ps8!QD}d!v|gAKGphIBoo=$)Q6#KzEz<1 zlintvYac{f^Tz>Wlm^zJMD{S!cz`k+pZPeBrj24Ub5Uhim&{`3-M^y+$nd>JwmqC} ziw3r(kJLYs$;?4%dQZrZJ_-p2F0x*0wTUy}ROf+=zZ3fEzF|qLj&Q!f?-P`z-vx!t zSgRsEo*4%q{X2VzC@Se*NIA&S$C{AHQe=!j*N{=5F_C)CAmGpwaB5eL!YT`S-&NZ0e3Is57vsJF1}0!0(VIh7$&o7XdCVILSeH z18)*Q@XB!9+)K<3SBA>a6C*kKc-C!4Zq+ym(EqSCsstg{KjRP zwTUuKpiFRfoTqW!3sae7n}Vsx;?Q(Q5R;qkZ<#!&Kn5`y%Zr%5%;bxif5+tMt}^d2 zpK}lJ4?B}@2Bp?Nh2Nh=13d~{pI_RQZBJs`jq9Ol6ZJ5aG_#~>=HkiBhTicsu&Fzx zpw7Ty-^o~W3A=$m)g{I`qRaC^B5O*+V~oFrzujd@e+?@K*uk9v68NA?z`DLGYE{(~&^-v8n~0)CiX07WfIM64 zyaRzs2~_s{``mFoQ=3G7?qtZ8Zr=qDcVKzC7_+zTZVK29Xbt(ND}hwFps7HM&~>|c zo`Pn0){hCsl`qA1?(RwoLU1ntQv?&lE!cn_^9&yeBW$&Ep*XtU)cOZg$EQ=rx=v)y zMAj^>k9Tb;i&h&s+}F{PYc0$zUMy#Niy&smZ~znrJo#z%lu`Y!&^kgEyC5 zGWO!|d1WYG{s2|>T|jJL=Ku;n*A7R}^zD^FTm7yNc{Y-tyA-$fS~z*&a<1%we|1kv zYtpAk4d{uvcxpZ~!}6Uu2RL8QAq&v#z^eQAelT8S*z zruFLJIAFBY0qwsc&{ujoNC)=O>Zc7N@n@}nJh@&#t{Y#^&j)SY6SbIz(Q#-b%?nAB zW65=_^|8!c1RPEa4^d{aN|le+s3$ z1T9pO=5CX4)D`S8&2!^Y%9(xx+|nNfN_F>F!eMtwCg$P!%i~%bCvw z9<-6%y!;d7W;Iq=BO`+hHaj2bl~l5#{i?l6ltT z+c3`&Lb=9l)GG2|Eg9|-kWVr{oB5m?5mzmu%$K87ZF@Lyz}vjH8Eh%A(sY8is?;S2 z=M;d;0`CO|GiR-rzNP-C8TaYX0T*2 zY{9WTMB=HU9b`V#z|{e6&Z*nntDY3Z-ncMlYWnKD)bX%ODd~{nM9zdmq>tnEOLC8H z6G31Utovr|o=REWi_kZ-){+(&U7!WwLlbae{}80|?meD8A{@*`c`WLW^i@|_2J;_QgAnCL|Inq*^rA>rr^zku)nGGm!eUY?IUM1{WzlV zfS3|8j|$CP1(fvrkR#opJA}5uU1ZKRprVyIH-Y$Yjy5hMA%7XUUQMndCa%>QlUf8_rLantcZ~izhqXR%tPd=ny!Ni^pTf)h?Y1UEXG6d$ve=sno5L< z$%fbY%mEa%sJR^BK(E|OfaZBaC)s{1c|`qTtv?IRv*f!8Ys?aAgu}j(HRc-jkF#Ir zAx+l!)Cbu9dQ`UNPS@1V@<*3&M_b@;yuFP|rWBIkNMW2FL%*Y-{N2B07XeOGUwibdjD_;7p%?PF6g7-=EU8s!!{%7Vz_HkAgOD+ z@lN#v6o&DpKY|IclS z2Q#nzpv}-;k{+U5oTiH`RlJo@O1iiQd;@&i{LD>MBBG#V&K0O#Gyq@6&`qPYeq4;L zb#3Bc>T`4VugHasArguxohs1LSWa=Pl%4&YWBPFLr?rKRg6}{4j5hmF*NUx5vij|a zn&3$g6!a1x_jOD?H)XdL`jIo$d*&8&EO6;JBj233pXPv|8IL1a=~mdGkhPsas7gQt zJ%r}h9?ML@06|A~fQ|);;EPKhLhPi6m>4Aq6NT`hQt0WE`GitES%79-yc2+&rP?uN z`Hyxm{23{8SFTQm%#%*AN~hMp2a;!R1TNlFTg5y(6j@_%evIL!WJ*7M3v?R{yskOv zM>*uJoEybC&ssevt42bSed7qESiwSaXEAqaOlef~!YyESJXR*5~L-tk~@>|jo zpOmjBAN|&J^%v}tx%GpMNfyl2U(fa#Z)X&pla$f~O+nlP#YE@HZzei{5v}wMM`aB$>9cb(xGOh;gV4ZoG zd=j5hgZg+m%Szok1ZLuH0Tw9`z!DKeEcTl`AHo21s`sO@VB#kIEOHCX^C#*$|7`Ge z%1vXvFtA^B6u5F2emJVLLpnE*&_RSC;w#jDv-PBe#=}Z(5f7OL*oZ?0Pa>(M)a3w3cG+D{{j-c z@?zXp9WrU`(psD?P{!yRC@l(p!+Ub7^$H_4w3ghX?)0H z%FcN0@AwyMg^i6{BY%Uk19|@tD(O%p6gH!ii+=r7Risrm;}QG3h2GmgO)FtUJfi3) z^5_^%ywg#xWz>py2B8hyd#dABM!TXfID|h+%J%LR?2`7$>`iCNmS+cdqVT;@v~5L? z`lAIps5G#(AQ4{8!ww1Uxi^A`3FuItP&f_SI}^gY>(D&v#n>jH_I_}nUmZhj$hp#T z!O#guwb91y3h`4*!jXNN_FvEGTN42?6!BiMVC>5L&nzun+#r9`BM?KGndR)S7eLSm2Ft z-dSpWvUVB^u&|pKW6VManVrg%q6T#BVwWQy_)9+6!Sv3(ZHzadF|$L@d3G2j(_jmD z&Qm1lrT*zLSY`T9_&syszhRB@_gTXskVL593Z`kH>w&8lT70Bw|neutxqb|4B;2@l?k8=U$p*iEU z8J`YEJB|6%U7<*wGNCnl%`?I4%62WpvZGTM4%seCi1eaz{Xn^%pj>HnTGV3`+4M4qHd3B<;H(}@k$alN}7a?Pfn(2t^P^F}uH&c&$cB0LNj zx?fqOCA1G7w3CUhp}IqpwYnEXG=NI%;}~PC#ecTx{*bNVzWlZAmY0kvz`Udzo=h`fagk2P)lP}Rzo5EDob_=`a@dmPocdE zLjLTt)Y_)ocoEw?$2MlH-sCXpSZy&NJXUeyJx{#W_jfO$Dwv1YGas6JZP@k&wtb3& zn|Tr0^dTT$I2p9Y%meo|7>5P`8@yxDP`L@ubf+35jBM~o1^UBO)<-H3x)>Gd8AJ*_ z)1{C;oJ1nau3<8@cz*UWyOBY&*89S0)0gm_z+8xnxw(P6Bmd|6byq>ZD3)K!e$jQJ zUuH~RVP{?gZi_KtP0KL}J&&xbYW3O3&L|E&8zC7VFXbe%|1f-4>zp4CqsD01Ip6Ao zH?J#NnRDN%7^%ZJN7x`e8yr0N(p=Er)m>ue2&YH>_GwrBs+7GCgeSk?NN*8+225Ys z8x=4U8$0tdk!@5EI~HN=#sQaqt#l)UQ_$Ql6b~b?3*8KT@XrIm$}B70EfJ3Szrn_B z?_laA)cC3@ry)>ClYwjfa%zsGB5Q%Z3#gZ#RL=188NCjJ;f0;W`2Cvv+C{(TM($%2 ztY7A=ts-cXJ^^|*&JuHGM>xXh;-Eat{$JxdwV)_Ubp6_#eR+d@8OMHR(p1Qs!F;dv z`>_7aeErb{^(ofBm9O^;>ie<&?R@<)1@!}1|4zOh=gSfP_@TE%_T7B_aRv1*>)&I2 zt7{Wh4bH2;o^mlmBP;mOxHbKmy@pdE8B z){%g&+dHPK?j@lTE9|#BxJyymq;ymXVXr|SekH<|BMd)mIxkfclo`M>0BgnuXYuZ3 z0r|XhLhsx`7##g(l*Sx&II0pp{>6Zs`;lu9;h58W?{XAtc(Ue-mSs7X9yZTtZTIgz zpbz7u29psR8b+9bAu+EE2wE}i*>}G6wrou-(|TE?^<@RE?S+JV>+RT@Sf=%iNNZ@p zbkOp~83$hl+8#(oLTWV?fxHIxkxGXClkQ)TcvrEAahtIXygsB&^erH+-^Kb4n;~PZ z+ZZ?ar(S7ei&Ai6;$IC~X3$y5Hpc2WU>G0-ZS<=LqWnmXy*~u~BX333nbL=i)Q`h# zT)gpsaE8lL3eEXTA7)3beibv$3|7PQyqy6a1&8Xq!+1WL9TnKMcTKLZ!1h)E;`hI5 zyz8_adj~+u&cnlWH3p-VAnxVXc6-R=-GFL~xj$pvXEqq)lG%+Uh(38Yv8nxLS(S`A z+{Cl_@16KJ1EE#lvz&b_jQ4LLUG^POSJSNkxDGk`?V5Q(zZ+S8%zilOqOvK4TZ3-9 zx3g_z%cQ;lyJ5VyZ~c>Z2axn-XzxzsGIt>fj*9VY8ebK_gT17GFN?FRbhpwo6T^p+ zX&4cVoW6-3BDa$5>@VOMa(~T}W2Gf$Mq2kH7eV32&eYDBsUE$poL@uc2YqOylH9)` zVgIdtn{%>Yy~*Kv_W{jY)f#TCkEgH6EFJ_#zb%08(qcv}hFIx47+md71n4kS{zAAs zG}aFSwbikvPsaG=eLH!iP$2$8Xw&o?J+uxxhaMpi3*4Pyn@zvlDt?tAasu0t%~MQt z(4h)5tqM#)?WZd$bzMz=!Z;?PHp+&eN)Ta``IGDvR__5pnmz?rGixXoW$+$mFBum$ zeG-;U%TraLq^1>^Nak}O1vc>+8ziQHi8V1+x?8J>1vY{HBqj$K)?SQdbahvQYwjgX z7(N2v@6n;)ffHU{;MS_SoC);zM!jIaDgwlaNcTj)QH+`0o_;DJ0>;lJ_i<^ibDs@9TR9l@!8E#Kl2nUYzPv z3J5#`9KH9NQtA%pY;^2j21cRnhi!vzuSDxjtZ4KcrS})3<}K z`#dp=kwiIgOrvyXZ8F{aN%sZPouXbMx_HnJGTMS)#of;riFUXZRACeM?- z^oJ&oZM>xaZSs1+^PS1ZS^ksBCzx+vt#lCn;TgN$9JpxU6s%Z6#w~ji4B55>I{^-hHIF7S7c^r2G8y63U);Eq(`zw>8f2IjhoLn-}J5)Nd9^yr6q zR_@;kB2B-bv5q7&<|pUz&_3zijLIr)cc$URxyiu#MAaAEMZ()YWSu(mZJ^VYOxczu z=bc72{{waI4b54i`t%%E?-pPbx^(sF*u&({=Nc)YcPnwJ_j8bG&1qB4eb8<}FxMK% zJNnx~8YkzkJ8ubedy5@ztUa97IL-ucF>TG#5T1Bw5M4vB;S?x{p~G>+eJ$$E80X`N zEh2r@s9J*^+=eg_Pn5jsXBV{Tl(XMpT?r3GFJJ`5XKWTjl2e=U3DFtPH3yT-uDc&w zm**`B^nO8*IgbNy5R57+81>RGXsIS|A6AMQMi>%N9ka-U)2e|u6A9X^dW zMnI~Cq`RV!ZY-c{NM1{l7eK@AP@T&yY}}l`HU)jwO{h-4zoQave~!leoGvMF)+;V%`cjSVrJx;M zQ?PcyW)`8}y3tUJqh^A&i)+Iu5K^0T??C%Z0@Z2r#_l#gPtaRZVYxIj| zQH}5$U2WidGt{9dG4BJk(j@{XHkgBuWu2BFP-Cp5l9|UBcj~*^_7sFd-w3X`?e6Ai zZXGRdq9HOiN4VVVuDwv}NPB=%;$5>{n(EH3SLs@*XDxvYK}QAxVu!iF0e1&b=ud6 z)fm6q8%%QkqET_LZyguD9JtmNp^M8b8b!3X-O(F02i(`e`dB?qGDRF;c3O+DAahN* z9&}FP7;1GmR=`Yy6Zj{ZXW3Hg{e!^By$y-M_YWw5_bq_;EP(eefEO3Qy8t%wS$U(U ze9;(UjGEmsN8w0KMbsF>zXv3;wB^X0LreiZ-GDmt`!Orfxh(tb!z_~CztBy$9;WVn zf}Hm$654wT<|6KA3R%Czh30P{!-&$D_2*iRdxbrK%sqnlg_eM@emd++K(<0{_U*jQ zw){kxUR5agh@r8oU1X5`4J3{mWR;UQDnEytHen@h;RlQ4EYLXxbo>XjPX?X3YQpR; zmh^ya7y+2$mE3u@`;~UkY>qNO&iRnG$TufegO>kq;8gO1rp0apy)eXRPCUq(uTkR; zqhA@$ipZ5r-l2I1GM!499?Y_}d~%|w#u zXM03DaCZQpqVPg*_{$WWd$?B%iB97fhRqCfZv7US?_tgcbr(7+#I=4)kd^dE4jgx= z{UBEQLO}X;E&VY=jg-t$qRtt0eb5ii_rvSYu2dB3_#xY3_dawI@4!5af3j3a1Xt&m ze+Xz)^Vv2OJOO;8>l5COLiu9gC{d1%UUQ)g1$7*zT%CEgnVHE@=SgtqW`cKK(95Oh zmuios?N6HH{5fAoU6__LxI>7@%=NH0>QCnw;H??h4ylY*Ww!9o#TwU~LEH>3b>>e0 zaa9oy6aI_T|Cz;ER_3D~LzGWB+%ZZxIteKQI>v92at{sL9rb^J=| ziQka=zq2^YN=CD~q4(FRh%{4Us=P6q^vaktGkJ@{7p;7jc-9K3LUQo0KYho{5 zh&8P7-VZ7YH}%GLC8l=lJNP#nLsBs2aan{up3Oe4!7js44#q15r!K9(TV-C6SOb?4 zyljQrRM52PtZ9fjWE~TSA{SWTUa(gTo;t|vz5U}?W+5)Dr8G~zr&Ur7PkMLSkazWw0n4_52ofRp+$2PF3>rzl>U{lw% zpw7Uiu3JH!fw_O`4&CPB8+UArX%_Z9Gqfl9-y#ftB!@OS8FbDu^954`x0{mejEfnO z_mm5p6|OlZjyOshZZz>}t^Y6dFG~$Y<_N|Sa+X1qYPmtj zL0xS02ROc600k91mHb26G{eG_SzYN2ro3OW05QH6Ko%ZTsmh>g^s_{6#J@|}K7|a#g+5{f zO}J(i9t)}vo$f~*%n@1@zB+**!*JqCfq{W3M|MY$z~}|K$B;s0_IJ}Xf}mVVDHtBR zmjnIas}poY(Lk0l&+TY;UPNa5Aqn(v66z#94_$B@umaFb(pTgmvcRMuUF`<%Rd9w} z#noaa68-E%AQ0sPYWfpugky?3dFGp=`rX)OCj|_BU(zg<4X3D0VVOlpfW@rfJK`L# zQD|^}ZoImK9w&;vVrCm*)Nm6|<4WGS%dHM-@yZX9yc_=<;@6a?$^Nh^#85BL898~xu(ailm;KaEU zlZzoWPEw4GdblpB{*Vf-@1`B%aL`>8p$bwQ7AcIekk!XNp*w!FR@#p=pwZ8eE&rgC zTH?@#D09MD%3x`R)N_|JPZzcp&7RVlH|S?V0f^O%(O17=_qfwVCdvRLl+0Up%)M#LEuC%Mblx` zVN+uVOp)k8=rilMKC4YEqWh(e`av?cKN31YPFgjA6!1(7o~#9WKIU1Niiao|mKJq- zw8uk$c@gDQeC@Y>xhI8ksiPdEqvhTJFii2p2gZ&v>Y+7UmMiW-^mO?lQTyK<6m$A! zr`$^IMi`ND^=}m~g;Mn~VRYOLD9YVU%XM1~u?nIg>*!gtd~GXr@3cTjb>Rk``qB7sL>Zc20znivH-4IGtBkR{7N%tR2HQ_DC-Wc3X zNcdK~{&-K9f$ijA$aV>NZB@u?>pZX87Q8ruo4`s@++A|~O8I`cEG55f3i-jXOvuul z7({-9k)*e=ecMES?j*|!dTb{Lf!C$vwQV6U+}R9x;i_OOytp&ng#Njh{=x4cmGWJE zSw?=iGN}Wb8@Hi(es$zmk0iZgsBatR=kBVk*sq!3a~b(G6!ICC=QDi0e40y&H_|tE zH_NM(-(8@;Eb~Vc@*0`vwF7yLLXtkPpidj*#XY_Gy_$CV9QSha8C}R{OrFn<8|2fB zU(Q|cn7O+Lyh`<(M~Iut{GAGUjm`5KM_%KRq)%<7PwV65BF4?ltplLDE6HaeNs>s#gMkmPT_4ez_0b%+tY0n!g|}$jn3sg9DL+sEEYD?D87K$dy@EZb+vT zG{S^7GNO>jrch`uDHRviRTG@%a39-Fzx{9>$LJ7Bg2g|#MjVO)10`lrV6N>!ptJGi zA@3kuOi?{Ywb7k^PDObmMCCKEGJkd<@5A!E4-a^2T#=arFwo{)HcK2q1fxw>{;9~L zrD)X2k&x>K%5@~^g>`Zi3an1%ku76_uue9(yo6K&Ph6l9@;w)PajsCtD?CxY^YeU< z4)|&;l1T#$^x?Bv;usXRmGx?rS$oIrN-vt3*jbAd200Vt2WV1vQ5sW@q85Zx)i=}eS zgGpktUj`2%NQigFzhzh%iNvWQXR_oZ1BC6d`~XqdrF?~sR3V&eKMy3 z4D@k2nrB!M>*FjGSbdyLwv1m28HSgU)|k5pn+qlj z_;J4Q`RVQCdrl$WbMt%`1$;Gb$}9#L=wk_+CC(#)(FZGA6K@m6qD+TFraLIp`J@%r z#RVv^y10-m8TYitti_U==k8*6RGwIY&^4bP(PqD+^OR#*?qQDF6OIaxARS|76@w8$;{hUXzI)Sx`^ zd{FKt&npUfUYY0lmw>0nXPK)2270)f%@WrT!RUdN8xk$A3%3=KRHoUG=^o0og0#YV zxE2Lg57&_;%dESucd1Js+W4p{v00TYT%w~yO zh+y=<%8iM(evwor=qLaDNn^Ckts$1TDa+gQELpiRmKwz|q@iAIbisSOT?QugImAlp z;0_WB>-|m^v}3S{ixzj~0Gt@!4M0akA2~JM6V&luR?=Tda6O@KFfJNo&4NTqrjZo% zAyV#fMu+fK=w6T$Jms&D)5zofl}y+hEVW9*`l5NVq$O=wk8gB7tWaC2+eho$inm%zaM(k? z|P&=u69^>8It{tvXY6*^;XusYQ3U!dW)3m;Wcu#5x zo*+?&-rp7KBz25&o7;5~?itxByDgJAZ|2pEoGVz{93)>j+ zU9#b?`3H8Lf(LdWjGeJQu!9VWHZPCXAwWZ2fQGIp+7@}Vb^#jd0yJnu(bnNd^6c+U zCId9o1!z!(qFt6pYa5`UEVxB4R7nBcjzhV0yGS)qLt>+iUTy%1!%AqMSJr1 zoNTQajj|kyf4kye{;~WU{C5TZJGY?x zWt4r4|L!R$#~Oy0Tt)E2JwoR^lpl>U5)IS$P_zo=TNIS@?8{@L}`AE51@ zv-LX9p9c`3VQ^m9AkI9c^I`}`eZotHv<%+M8^y~gy)^}R>PKEFq-k*fu}Qc~lg^Xubb2`TX^8fbF@L!_*ziWl&hUV}08^-s4pd3H`89B_H{b@aPH#E=x zv+*|me<{z;e@31=R4>15fcA#`!T&a`o&PK4`t8ri)ndN?z7bZN>NlGI1Rehm%8g45 zQQy$QZ}_-jfV+bm#iOpR?_nH06mIBmHjc((jC%{4w0+>$qBY=_wcY7eJ0Jw$H3CfD^LlR|Df-2jDic=r;o+PzT&r7X5DEwhEWXqGrM_o*Sb(=B7>~ z9_r%B3Xj9>-JM1VqI(}NiHv?=$~y+`8*eZ2ej2VB$%v8C9h)O(9JmCxcdz2pYXm*~ zHp&yg!ac|`|2h=r_f^M$UO_i+ep_IA1VHf!;1Dy;@luP>Qpzqx7 zC9V%>x;UiaiM{z&U`omc$&9Dic|rbM>B0V+J1t%rsAXpI^0QTf`3{GcbHxjavFCL3 z9>VFgL8?wsyw2K9iidk#*aY=*H#2wTYD4xL&f_jNtc-{g@pRnzDcOCgmGP7CVr>6|*Sy8g$ z%f?AXohIKu?f;a1{7^y z#8-P3BfU=3+lz?*lBQp4+E7f)am7=M6LL)PDM+8ybRE*9B;sXp+@eI9kiFupy(Lck z2?^q#pCGkw6QykuGP&*HZ4=U{>Fg46T&U?%O|L7t9Uka$&5ud4cCx0^H9bgEKS^o} zH9Z4q2l+PnOEMuLB-ZdbCqd*}d~D>51A|;Ja_xyDY$1-Ph%bE`8)3&3~u)c-IB;fxOt2V==wkf!&}1O&{q-`76q)|MBI! zmUos}u&SsgiyB9oH`*7xg3GoBGXy_TEByLe^>8xj%6R_9xDW{;Cv#YhLs$0#2xB@IjmXgURH2YI;RwT2-Q8`f!9QU(kwi#N!EVQZy9P8+sl z*bsRHLLD#;tn(D=h%Z7DI#HoA!7E|lx3~@Y zb(S$I%aaOqflns~2jNs)y2(VX8_<@R<@gRg<$NspQZkPBDE3xp-_pZN2_2x&J?)-G z?9m6_pP0WZl)|^32=!^tx(a-$BQHyTyi3ixe`wtR$tv_MpgPRJlNH*h!@>?Xi;K6^ zihy}G4ypK_>sea2y5mAzlCHs<7?gSn79K*2wQgA_)@_BG-sJF4g|^1MO+w!)REt|^ z`QC0LS1WWTBG$MJloblSqR=4x<_j^4Ibk}8X5|y;eJA;<+s_I;r5uhx%*47E z6?5rkw`~^3IKQmWP2C^t9+zQQ$4f!wpq}`}7iXBftL?r46vxQEtC*+sCgvoZJd)qm zeF*I;pQ|i0E%c?fyQeSPO_86p?zO(3_KnL_`LEU;S;4xg@~igtbcObo-xc%x3S#0~ ziNoG*+i!F~LNO;lMl&R-P~!kn*-zRjWHf((bkKG;3>e+7k26y`Ih6CR0jmeZWu}yA zU3H~_x+!#*g?fZI93;J+{5TveeYMWm^`X*V+nrstyeclUrAnbs6gmtiuax>HK+iab zORYksTP&}7%b6ns6&eXBjxTTyR_IU*ZKu%wF6-vWaOV_AeVWVu9W5gjdPu6gpYZN9!(-V-@POH8C%g6BXK0p^NnM3z(@2T_Rbn`-?)C%4rJS2Iv`Q znVhB2LxA3LmdiN`y`puO%OZuo0_4Q5kR=N3Q%inVVolDE`;~Hu)~!L^Th3LoOriG` zx<-~O^u4xQAy+80<2Iyntz4zh9tvG2*D7?ZLf6Yp3f-;H4RU+P>TZy`v~KA@^1Bfy z`*~Szmix5s&_NuBTjc?TmH~?6*1&3oeggE2bC*1!P;4;k?v}qR2Q&NcLBz~?Wai4f z^1Nd12Fz!imGYuOhiSXN%F7|{56i!_-R%h6If(< zkIUBz4N&L_`OYZ;_k95E?>s3#Y2EpN_I937C{#3r8hlYo6xv*&m!(vpAqu@B?G+ji$ceow9b)Y=yp-eH6M{p>JeAh3-}8TRBjnXGgw0GA`fA!OG99jo-<9 zg=$7o&hPR5SAHCRkYlv&c&+ zXb5_KzLFBV; zr*1o9uj*W+Sn1~q6`7p%2-1(v%3{>{C?hzTI%DBRA{p)g!($86slDy<&05itU?ve zP73X(P(Np!LcT)%oe2t^qtF0nXN9g&sM49F&?<$hoLv=qS)nbQDGGh6kn2oU=nsXq zboNkav)w6KwKH9zZ4|0;_Eu=TLR&dA6gp6$t)2afI6ID4sMa|^>rPf^pmUHymnk&J zIYcq~X~?eVZ0k)w08Vpb~D z;P_g%jY7kn;}jaN&#kL3C+9SU z9#m+obB1ERs?a#+EUjCs&;;jPg?>_KqO({r+fSp^J3HrT-DV0+axPS88-*r27c1s? zg?4q8Dzv*oQ=H2bb6pnE{6*_V?LiLHo$Iun*&prY+@P4J?s3%~ zal}qH7hMgzz8jeMRa)nkq9L-M^R`sTEN3nDV-Gq%X3W{8p6Tjq-fS=O}p}C2X~#xI+BcZAjlNdJO67ZJxxA z{`EG$;F;pkwvQpb5NVYh6}v57CE3!uk)h4_dP@o}o1 ze5|-kwrYQKqD)4%zc)c%e@#yBrI89@IV|Cu@3+rptN`M#(LjzfaT0HGQKe&lCDG z-|1gHDRZ}8Yq9@G^*XV=BU@{JM2{2Ec8r!x>XkwHVaS)sCB2_T`aII<*(3X~@5drd z$nJfaPS?~)t;8?-c1%5l^!U{4NPDLKj&yB9wa=ffdh3vcK-EneUp(Qth+J4S$n!g*||Jah;%d3r4f79{@HEoBFFwk!E zGLP#zKvvh#mY&x1RiydaQ@fJO9eB|&=;OUwvP#p3yOzn$TMutToX54~>8|B+SM>R2X121nXZH%(Y;fQ1X7(lI zp*Duv!QH248wa!R7Y)vIA0*cz#V#Z=dXUR7O-E@u32*t6jw6>KW$o@gD8uv~)3Xn6Z%VFL%v&_QQ`40_@;bRclwTdn zKLN@mwYP!hH^pT=%OyReyeH|`XgW~S?KN%CbO%j$(sW|a3OR7-u6R-W-*udoKh-Tk zzNr50c!dlaw!Bw`++BB7FH+um^KvN}-XH0fNE5Pr1ZU8-BmT2FYrFU62(q?rP;ca4 zAJMz_^z81i!0Fi&M=~|}e2UZ89jL3(quBRvier7tW$#gKaH6<)R9EDm9a-JCOzuFf zBOj0E2<|avRbM#pF#*kDIcbEGDwg3pIw?}vF+~a!kS2HHSlqrN=`$^pqOtp@94Q@p zm|}hkob-^dQVIEYzb*Q)?cjcte<;$K<3{0>c-c6%U4fLf7ovRc@n+~+z*u;>q;_c~e^IfKe& zg2fMHX893=%jGCr9+v;?ZOi3CloO|DyK=eD;#|8O{Qm%s*L%AS$2stOlgVpP@sm0V zA2o0kK5dwiVq|be_oJM3u=7K6&_4lX6?)3K!1)@N_HI+?g6_9CKjIPbDutG|?HlXm z6iZi}pz#gdVKLUZ7CJCikGiad7RDwyZREBbG!@WW3SA(}V@F|w;`Sqz3uJX{A)pg1 z^g--ACn?WZsI+L3Q!4HH8-54IZUt1AgYI_P$rKA6T(rt*FNfyp9>$Zp6D;&#(KAj* zxi|;?!zq)ya+s@dmi?rKekxk)bd@z0swn=C(@lQPVg3fF6HWoy_XA@cW970{4(b`} zE~6}TWpQ1sha8%N#>O_6g*oWZSRYxIgU*gs$U`~kir4^oEeGvcR3(!t4Zkakk1g6l zR_36;7Huh;R|R!H6m2D03;h}|DXx`e7OGCHat6vx7HR-ANLE?s5I}?FH4FKPZpGWm zS2<`4SWeq53`KC_q$;_t*p$d4Af6zxXJb~vpJ?0N?orO>JJ66$u4LlrWT zjlvg0@|dG!p~ZXxg$#O*w`Wh$fFDSHBK4{yi zc#3RZqmq^U(Dp`Wcl}8j$XW7R+ivmQrOwusmfYw}m7OeBYPFs-!o}nbW#iz?kg_cUcnzlx^s4xN(n+sfE|r?nRXCaFQ%JU}DeV|LNcK?3*zO@RGY74XA0i8L z&@=H_a+g9+IS-e<6+c`~8%QdIz5{gKAOrnex(?shyURkqm)>1GSJqglbGy5XkC3ef z6Y~OD(r)|2k8P9_Cs>H1a-!U2A&$xd`B5Qi zsaw2JrVLSj+HRpNvJl%f$z2v=yNtZ1&{EmI{p!R?vd%)MwSPO2m3Bi(g>~x^Crft= zo!0)piBn{PLS|G>lRXqNGww9WMxaFz%w-ClDl6L;wK+|$v(OXmlWk6yl_AVC<e6eh0 zp_4jxi!YI#6k;ESl$<9sO`UULavi>e)ULtw{gaMUO3s%_IcRRlh4Q3ArtcTanh5ls zLZ?c$)0rg~%g?#G3juY--5FXW`*4YjvJm^QRF1R|N99tvS|M_{rev8s6l!;wd=_fA zT)N^Emo(Y#a+#peQt4QBZ^;$1hlTz>_TD`_s_JYXUTe>ukaGe_FbM$?l5h+mfdB~x zAtV6;2?-<$DmD(80Y;Kcn3)JDwP0wKmbTyzQ7dgxP&`nJnp#w}AQaJ}1*M9LHcE=1 zh^XkREwD^4=--tzxo8woO!P+3z6RCY%=8eWFdvPC|B{xYZ)NUu@Je@_E15!ARwHyV#{s zS)bPE2ZWyhKO}M{lWc={v(FvT4~umgU6S;5^lwCD8Oc;09udim zRQ?{}uV;p2MJ($OBa`~XJR+uBG=D1^EM9&quGN~Zr13Go70VfI60aqe$LtiRG)hdq zA?7i$W(vi=NmM7Vi|G`nG;#wyA*#zswn6+AXqV_@q|*76*b_usW1bSn8L4*mw1})A zy91Ki*=|v!5w(|Rgp(0@*%b4vSfypuKK~$gSnT$QV-~x;BC?WvZW6bobjCa<=yQjZ zvRhJ~i#Z?;Yjiy2-Iza-0DlMUG~>Oj0MLlOgzBcUOw#=KvRJRtguZ`|`LozOP06mh zWKHbhpxwet`pUzC&bsk+S){s492UnIsggJ>x*2tdSNqO^-33Op0=zT!6_Grh>iw9wQ_J2;Jso>Y?A9nQ&4_zLbZay$Ef(m4vJ-zx zJ01HbMJ85>4Ve+?bK>3#qOs}o;@%FTdZ53GTW1i1^3W~b6`hRUm5=x967Pv!8vQW# znEgF*ZYF8I8})j>U&XyAE+`~RGe{E)1(q$!*algmLh`nZM}ThC=tRboKpPoh&Coy5 zd`}$K=o6q5BDRLSY!b$RM6+AW*C-C?Z{nav{RjLd?xZ-+NR`t2B6*gwn>Zlfd|%{g z)G#2$JT3NXbkl(I;*2<|(a#xmYxLUzyW|;BSF5}@GR}*S!~+_A2H8jASP>< zW(>?X&xul;pK}`o`c%-lJLO^fz+c3l7hf_`E#z}y&L&v^B{J#|&kyXv`v}t+Z4#em z&Pe!Nq~g?=ykup4KjH796z9DZgDY!y!av2GjFcB4w}qjdj5@>%nF$F(R`Ut3DkUlB zF;aF?IvI6{saba?Na<%p?K3CQkX;r{Q=ZYXM+aS*Xv%q)tCT%Ds4+1@t_-3ziBWP# z5FJR2laW^hG|wa^N~cE8Wsm5cB%O1W?2Bw?@4j*yBbBmLxibvyX4E16HR#F2R9QEV z?38A@oX<$f(q;9PAz6l;$4JS5t_sNpNGGFB;x9Rg<^Z`xqccDQ9 z%I;|HkNXUk)r^$p5IK*Ls<9!mEljqOQHMC6d)^!(J1v?+7~)o?OmI?KDQpl^W4bW0c&*NTs?!?q{S@ zT_6uz>!D2T?MqW$tDZ4Q;nUV52MplH$>cV7O!erfyHi^rJ^;5Mk<}t7P}epyv1&Y6fQ28sQlsE z1hTD^8$&HK-M13+mHMv%vQi#jCR+@{*%WBavA~kuo+`>quWwzYG zNco&CcZJE$g~^sLCNE?+8(wxWQYGIY_iIEYe}$xfA5E?2j z8V2BP2$^^tY3`SlzpG^hBbBmiBmIW$Z*FHE*MOm-$r_GOrCi-%$e_}syW^7r@TR(YNgwNIJik)n+> z4@70>_X0{}v`Ji-KPsh7?$+ps`H7}ip3~@8`B$g-A8k@E5bd61Dx%MavHZI@KAOa4GQ+m)Bg3KGp# z@=Hd_ZnZS859J8&S~2Pn{(_vot7V==cC&0?bU;x4ZkC%FZ4kdNDDKrE4{J2AFh8zC zb}u8JDlHxITo}5*NX6bEBbSqAhbSv-?%N@A7%ABrIhm0fG1tg#jFitG$(@YUi1{NK zxq`fq-A9+)A`2KDkbf*ZE7r>S8c{v`L}uJTnj6GRg+}U6<#I-=#ra-IsXv$IjR7w> zE0INvRDA2@U!A_L8SawVei zPPvVdDwj^V$D;X!JY>;)LLRedJ|Po-L@7HUCym`McgcB-RLXWqCnFWZF4-28oyFHJ z)+-e0gxyoJQ=>LU#~2+D_a=}m@fM0f`Fu*|F;YIClEpz;W7<=)A&3^GJuTZ9sT}Q= zMYpPSQXhL(7HdQ`y+^h&QZek6D;cR6_R3o=c6;SEi{?JL)1tXg?hcb33zKz+$&%Mn zT2u`CWF{jO`##waCOaM`%lom_u9H!~?o^m8?U8vP>T zMA{$asi3AvKOjrjk)2xCJujzgl%4;m`MjLRNTvFqbTU%0ACzs3I>e3R2BjaAtCStD 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
|7!R@(v4t7JmEBd)Wirp}Ofg?B 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 literal 0 HcmV?d00001 diff --git a/csharp/packages/ApprovalUtilities.3.0.13/lib/net35/ApprovalUtilities.XML b/csharp/packages/ApprovalUtilities.3.0.13/lib/net35/ApprovalUtilities.XML new file mode 100644 index 00000000..108171d4 --- /dev/null +++ b/csharp/packages/ApprovalUtilities.3.0.13/lib/net35/ApprovalUtilities.XML @@ -0,0 +1,13 @@ + + + + ApprovalUtilities + + + + + A better string formatter for enumerables. + + + + diff --git a/csharp/packages/ApprovalUtilities.3.0.13/lib/net35/ApprovalUtilities.dll b/csharp/packages/ApprovalUtilities.3.0.13/lib/net35/ApprovalUtilities.dll new file mode 100644 index 0000000000000000000000000000000000000000..152ae3c8efc41419c11f0fbd30f914f2ab3c363f GIT binary patch literal 65536 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 + + + ApprovalUtilities.Net45 + + + + diff --git a/csharp/packages/ApprovalUtilities.3.0.13/lib/net45/ApprovalUtilities.Net45.dll b/csharp/packages/ApprovalUtilities.3.0.13/lib/net45/ApprovalUtilities.Net45.dll new file mode 100644 index 0000000000000000000000000000000000000000..f7d912283f96f44a14ffc68baff6f9dfa26521f9 GIT binary patch literal 5632 zcmeHLT}&L;6+SbwEDN^z4KXGz83JvofhlB{B(#|Fv*6MgjM+6#C^F3MUSRBDXFD@s zQ;XJB6jzb_kVbB*yd_E>qE@Y3$yKaIQ7cu=Q(d*HQspgv@Jg&DyLF$%>qN0KeGL3J%Xq^V7kuy?>>N6|)-Y~xvgt%ihU>Xm za5A=G5L_s^9`s=wM)Za&YzKzyj+XGSuZQrIwPB*sGBzMNuV@^bN)^=IMzmT*q)6%g z!>HPcs#U|8wp9xPX`{wojZjVYS??kC>guSvRgXTZZ8flQXCpJ8L=kVb*9352+O@BX zDvy-=I|xnSPbJX2#ClRMvRHGPdDtO9br(gCU`|Em0wslw*HTmzE^PchD~}o$_5P zzv8jQLS<0C_ERZZ0?lP?KXz&|iM{~-Bdof8)OIp#jE40orw^*JDt-?>R^s$3F-EI02@_F0s34dFvZ%=XL^4XHsNrPIo<)F}Nz;vI?G^nJCF{(?bKI;)t_ z{!rqVCEk>HTbYNvQF#gYPhuQW9tC!5^J+Dn!wC|lC+H3&e2`=qSbvNcuHMJLMUqk|uR0rB20~exTG*qsEpRX3)U#I+%;Wucv-h;uYxLpi{sP z)hU|MVM3RiH`TXbos-;crA2*3=7n|dR4}K}t5V07?_#d&CCm3w*Y_m%GQCP4!S6pp zu2qXEl@x0uG#;lQj(W*GheDl^Z@+@Lc%5&+rikT|fc8`sej|7hs)+s611so|q}zbi z)Ca7?S{X+qPD(rpY@%l+no?p(d;zG?cO)K`x#^H}hs;Wc%+QbMnD#7n$XL6fJxj09 zkXE1s?62V6;k*n|TsuQaXy2maz;|(^w5acsLHnp#F{qKg0DOeL1Z<~qU>8jT;}XA4 z^PtBhK27IAr)UfKZF&xv#m;+O`uUy2-(&AIE4L*5BweMS(;uh>HSMGc*gj7`rR(%3 zid^Dzy}a=$$~(T;ZqrXBS#I?K-IDt*8rD5RKbAJpu#biP{;)p~_O+) zs_W#Pb#F%#xPZw>0Y9Z1rhUq{Y|FQVXG{w}(NBX@PHx>6LzJd9FYCCrm7%mF=Oia{ zR%HFOGb(t}+&z5E2-mYbU*xlb#+MQ+5$ag|y31sz+r%DAM+tgoz? z8C&dFVDOyfS$D}sJWs4;?9H_0mz$?NiD(U4L4fm$C_ym$WG}Q>5kFc;(KU z^ylrDpMGhj8qDX^<#d)lW^G>!{P zUmQ1Cg%0kiczC){g}mbc(Y~TkM}NG(KmJrg^kkR&GChfbM54#+eNyxcEce9|PYm<{ z;c`-;7GrumU3$s8!#?VaxNDz6bc&MznMd7r$$` zbj_xcsodocy&E6TCvW`nXMb%K@BN!29sAls78`k?xT>`9e0g4$B)d-01)P)%@+J5* z3!{+Ba3~K<`xm}timj#_lwRa^^{gwk#WBZC+V+%b<%6FSA>_Hl2HRhR557`<-u^E# zz_)QCd`exqd%5yN;BUA+a<=1d$7hBC@{FF_g30X>5ZDJA%6(~@m$OU* z*T56L6z*q!gK~(?#<)&oT)}-`AS)dA7* + + + ApprovalUtilities + + + + + A better string formatter for enumerables. + + + + diff --git a/csharp/packages/ApprovalUtilities.3.0.13/lib/net45/ApprovalUtilities.dll b/csharp/packages/ApprovalUtilities.3.0.13/lib/net45/ApprovalUtilities.dll new file mode 100644 index 0000000000000000000000000000000000000000..152ae3c8efc41419c11f0fbd30f914f2ab3c363f GIT binary patch literal 65536 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 for NETSTANDARD1_6 + * 1975 TestFixtureSource doesn't work with a class that has no namespace + * 1983 Add missing ConstraintExpression.Contain overload + * 1990 Add namespace filter + * 1997 Remove unused --verbose and --full command line options + * 1999 Author Tests assume ICustomAttributeProvider.GetCustomAttributes return order is defined + * 2003 Better user info about ParallelizableAttribute and ParallelScope + * 2005 Exclude empty failure messages from results xml + * 2007 3.6 Multiple assertion backwards compatibility + * 2010 Add DelayedConstraint in NetStandard 1.6 build + * 2020 Better message when timeout fails + * 2023 Ability to abort threads running a message pump + * 2025 NullReferenceException using Is.EqualTo on two unequal strings + * 2030 Add method to mark tests as invalid with a reason + * 2031 Limit Language level to C#6 + * 2034 Remove silverlight project - no longer used + * 2035 NullReferenceException inside failing Assert.That call + * 2040 Cannot catch AssertionException + * 2045 NUnitlite-runner crashes if no file is provided + * 2050 Creation of TestExecutionContext should be explicit + * 2052 NullReferenceException with TestCaseSource if a property has no setter + * 2061 TestContext.WorkDirectory not initialized during build process + * 2079 Make TestMethod.Arguments public or otherwise accessible (e.g. TestContext) + * 2080 Allow comments in @FILE files + * 2087 Enhance error message: Test is not runnable in single-threaded context. Timeout + * 2092 Convert Portable library to .NET Standard 1.3 + * 2095 Extend use of tolerance to ComparisonConstraints + * 2099 Include type in start-suite/start-test report elements + * 2110 NullReferenceException when getting TestDirectory from TestContext + * 2115 Mark AssertionHelper as Obsolete + * 2121 Chained PropertyConstraint constraints report incorrect ActualValue + * 2131 Remove "Version 3" suffix from NUnitLite NuGet Package + * 2132 TestFixtureTests.CapturesArgumentsForConstructorWithMultipleArgsSupplied assumes order of custom attributes + * 2143 Non-parallel fixture with parallel children runs in parallel with other fixtures + * 2147 Test Assembly using NUnitLite & Nunit 3.6.1 hangs under .NET Core when `--timeout` is supplied on command line + * 2150 Add portable-slow-tests to Cake file + * 2152 Allow attaching files to TestResults + * 2154 Fix execution of non-parallel test fixtures + * 2157 Getting WorkerId inside Assert.Throws / DoesNotThrow returns null instead of previous non-null value + * 2158 Update SetupFixtureAttribute XML Docs + * 2159 Prevent crash in .NET standard with log file path + * 2165 Trying to install NUnit 3.6.1 on .NET Framework asks for download of 20 more packages + * 2169 Incorrect xmldocs for SetUpAttribute + * 2170 Cake build fails if only Visual Studio 2017 installed + * 2173 Remove PreTestAttribute and PostTestAttribute + * 2186 Replace special characters as part of converting branch names to package versions + * 2191 System.Reflection.TargetInvocationException with nunit3-console --debug on Mono + +### NUnit 3.6.1 - February 26, 2017 + +This is a hotfix release of the framework that addresses critical issues found in +the 3.6 release. + +#### Issues Resolved + + * 1962 A Theory with no data passes + * 1986 NUnitLite ignores --workers option + * 1994 NUnitLite runner crashing when --trace is specified + * 2017 Two NUnit project's tests fail on systems with comma decimal mark settings + * 2043 Regression in 3.6.0 when catching AssertionException + +### NUnit 3.6 - January 9, 2017 + +This release of the framework no longer includes builds for Compact Framework or +for SilverLight, but adds a .NET Standard 1.6 build. If anyone still using +Compact Framework or SilverLight and would like to continue development on those +versions of the framework, please contact the NUnit team. + +#### Framework + + * .NET Standard 1.6 is now supported + * Adds support for Multiple Assert blocks + * Added the --params option to NUnitLite + * Theories now support Nullable enums + * Improved assert error messages to help differentiate differences in values + * Added warnings with Warn.If(), Warn.Unless() and Assert.Warn() + * Enabled Path, File and Directory Asserts/Contraints for .NET Core testing + * Added NonTestAssemblyAttribute for use by third-party developers to indicate + that their assemblies reference the NUnit framework, but do not contain tests + +#### Issues Resolved + + * 406 Warning-level Assertions + * 890 Allow file references anywhere in the command line. + * 1380 Appveyor Failures when branch name is too long + * 1589 Split the nunit repository into multiple repositories + * 1599 Move Compact Framework to separate project + * 1601 Move Silverlight to a separate project + * 1609 Upgrade Cake build to latest version + * 1661 Create .NET Standard Framework Build + * 1668 Need implementation-independent way to test number of items in a collection + * 1743 Provide multiple results for a test case in the XML output + * 1758 No direct inverse for Contains.Key + * 1765 TestCaseSourceAttribute constructor for method with parameters + * 1802 Design Multiple Assert syntax as seen by users + * 1808 Disambiguate error messages from EqualConstraint + * 1811 Build.ps1 fails if spaces in path + * 1823 Remove engine nuspecs and old global.json + * 1827 Remove unused repository paths from repositories.config + * 1828 Add Retry for failed tests only + * 1829 NUnitLite accepts --params option but does not make any use of it. + * 1836 Support nullable enums in Theories + * 1837 [Request] AfterContraint to support more readable usage + * 1840 Remove SL and CF #Defined source + * 1866 [Request] More readable way to set polling interval in After constraint + * 1870 EqualConstraint result failure message for DateTime doesn't show sufficient resolution + * 1872 Parameterized method being called with no parameter + * 1876 What should we do about Env.cs + * 1880 AttributeUsage for various Attributes + * 1889 Modify nunitlite to display multiple assert information + * 1891 TestContext.Progress and TestContext.Error silently drop text that is not properly XML encoded + * 1901 Make nunitlite-runner Prefer32Bit option consistent across Debug/Release + * 1904 Add .NET Standard 1.6 Dependencies to the Nuspec Files + * 1907 Handle early termination of multiple assert block + * 1911 Changing misleading comment that implies that every `ICollection` is a list + * 1912 Add new warning status and result state + * 1913 Report Warnings in NUnitLite + * 1914 Extra AssertionResult entries in TestResults + * 1915 Enable Path, File and Directory Assert/Constraints in the .NET Standard Build + * 1917 Use of IsolatedContext breaks tests in user-created AppDomain + * 1924 Run tests using the NUnit Console Runner + * 1929 Rename zip and remove source zip + * 1933 Tests should pass if test case source provides 0 test cases + * 1941 Use dictionary-based property for test run parameters + * 1945 Use high-quality icon for nuspecs + * 1947 Add NonTestAssemblyAttribute + * 1954 Change Error Message for Assert.Equals + * 1960 Typo fixes + * 1966 Xamarin Runner cannot reference NUnit NuGet Package + +### NUnit 3.5 - October 3, 2016 + +This is the first version of NUnit where the framework will be released separately from the +console runner, engine and other extensions. From this point forward, the NUnit Framework will be +released on its own schedule that is not bound to that of any other NUnit project and version numbers +may diverge over time. + +This is also the first release where the NUnit Framework will not be included in the installer. Only +the console runner, engine and extensions will be available as an MSI installer. We recommend that you +use the NUnit NuGet packages for the framework, but a ZIP file with the binaries will also be available. + +#### Framework + + * Added Assert.Zero and Assert.NotZero methods + * You can now pass a `Func` to Asserts to lazily evaluate exception messages + * Added the ability to Assert on the order of multiple properties in a collection + * Tests with a Timeout will no longer timeout while you are debugging + +#### Issues Resolved + + * 144 Pass a `Func` to lazily evaluate an exception message + * 995 Enable Warning as Error + * 1106 Move various Assembly Info files under Properties for CF + * 1334 Add Assert.Zero and Assert.NotZero + * 1479 Don't enforce [Timeout] when debugger is attached + * 1540 Remove old .NET Core Projects + * 1553 Allow ordering tests to be done in multiple properties + * 1575 Escaping control chars in custom message + * 1596 Eliminate code sharing across projects to be split + * 1598 Split framework and console/engine into separate projects + * 1610 Refactor dependencies in build.cake + * 1615 Appveyor error in TestCF + * 1621 Remove console and command-line option files from common + * 1640 When submitting only part of optional parameters, all are overriden by defaults + * 1641 Create OSX CI Build on Travis + * 1663 Find way to hide NUnit.Compatability.Path from intellisense + * 1681 NUnitLite under .net core doesn't support TeamCity output + * 1683 Existence of SerializableAttribute in .NET Core + * 1693 2 unit tests fail due to localization + * 1716 Move installer to new repository + * 1717 Change suffix for master builds + * 1723 Remove Cake target TestAll + * 1739 Create separate copies of MockAssembly for framework, engine and extensions + * 1751 Serializable attribute exists in both System.Runtime.Serialization.Formatters and nunit.framework + * 1775 Support NUnit assertions in partial trust code. + * 1800 Remove Console/Engine projects from nunit.linux.sln + * 1805 Error message "arguments provided for method not taking any" seems incomplete / doesn't make much sense + * 1815 Prevent NullReferenceException in SubPathConstraint + +### NUnit 3.4.1 - June 30, 2016 + +#### Console Runner + + * A new option, --list-extensions, will display all the engine extensions that + have been installed by the engine. + +#### Issues Resolved + + * 1623 NUnit 3.4 is not integrated with TeamCity + * 1626 NUnit.ConsoleRunner is not picking up NUnit.Extension.NUnitV2ResultWriter + * 1628 Agent's process stays in memory when it was failed to unload AppDomain + * 1635 Console option to list loaded extensions + +### NUnit 3.4 - June 25, 2016 + +#### Framework + + * Improvements in comparing equality using `IEquatable` + * Test case names will only be truncated if the runner requests it or it is overridden on the command line + with the --test-name-format option + * The .NET 2.0 version of the framework now includes LINQ. If your tests target .NET 2.0, you can now use + LINQ queries in your tests + +#### Engine + + * The TeamCity event listener has been separated out into an engine extension + * Fixed numerous issues around thread safety of parallel test runs + * Additional fixes to reduce memory usage + * Fixes for Mono 4.4 + +#### Console Runner + + * There is a new --params command line option that allows you to pass parameters to your tests + which can be retrieved using TestContext.Parameters + * Another new command line option --loaduserprofile causes the User Profile to be loaded into the + NUnit Agent process. + +#### Issues Resolved + + * 329 (CLI) Runner does not report AppDomain unloading timeout + * 720 Need a way to get test-specific command-line arguments at runtime + * 1010 Need to control engine use of extensions + * 1139 Nunit3 console doesn't show test output continously + * 1225 The --teamcity option should really be an extension + * 1241 Make TestDirectory accessible when TestCaseSource attributes are evaluated + * 1366 Classname for inherited test is not correct + * 1371 Support `dotnet test` in .NET CLI and .NET Core + * 1379 Console returns 0 for invalid fixtures + * 1422 Include TestListWithEmptyLine.tst in ZIP Package + * 1423 SingleThreaded attribute should raise an error if a thread is required + * 1425 Lazy initialization of OutWriter in TestResult is not thread safe + * 1427 Engine extensions load old packages + * 1430 TestObjects are retained for lifetime of test run, causing high memory usage + * 1432 NUnit hangs when reporting to TeamCity + * 1434 TestResult class needs to be thread-safe + * 1435 Parallel queue creation needs to be thread-safe + * 1436 CurrentFramework and Current Platform need to be more thread-safe + * 1439 EqualConstraint does Not use Equals Override on the Expected Object + * 1441 Add Linq for use internally in .NET 2.0 code + * 1446 TestOrderAttributeTests is not public + * 1450 Silverlight detection doesn't work when building on 32-bit OS + * 1457 Set the 2.0 build to ignore missing xml dcoumentation + * 1463 Should TestResult.AssertCount have a public setter? + * 1464 TNode.EscapeInvalidXmlCharacters recreates Regex continually + * 1470 Make EventQueue and associated classes lock-less and thread safe + * 1476 Examine need for "synchronous" events in event queue + * 1481 TestCase with generic return type causes NullReferenceException + * 1483 Remoting exceptions during test execution + * 1484 Comparing Equality using `IEquatable` Should Use Most Specific Method + * 1493 NUnit 2 test results report ParameterizedMethod but should be ParameterizedTest + * 1507 NullReferenceException when null arguments are used in TestFixtureAttribute + * 1513 Add new teamcity extension to packages + * 1518 NUnit does not send the "testStarted" TeamCity service message when exception was thrown from SetUp/OneTimeSetUp + * 1520 Detect Portable, Silverlight and Compact and give error message + * 1528 Use of Sleep(0) in NUnit + * 1543 Blank name attribute in nunit2-formatted XML result file test-run element + * 1547 Create separate assembly for System.Linq compatibility classes + * 1548 Invalid Exception when engine is in a 32-bit process + * 1549 Changing default behavior for generating test case names + * 1551 Path in default .addins file for ConsoleRunner package may not exist + * 1555 EndsWith calls in Constraint constructor can cause major perf issues + * 1560 Engine writes setting file unnecessarily + * 1573 Move Nunit.Portable.Agent to new Repo + * 1579 NUnit v3 dangerously overrides COMPLUS_Version environment variable + * 1582 Mono 4.4.0 Causes Test Failures + * 1593 Nunit Console Runner 3.2.1 and Mono 4.4 throws RemotingException + * 1597 Move Portable agent to its own repository + * 1605 TeamCity package has no pre-release suffix + * 1607 nunit.nuget.addins discovery pattern is wrong then restored through project.json + * 1617 Load user profile on test runners + +### NUnit 3.2.1 - April 19, 2016 + +#### Framework + + * The output and error files are now thread safe when running tests in parallel + * Added a .NET 3.5 build of the framework preventing conflicts with the compatiblity classes in the 2.0 framework + * Added a SingleThreadedAttribute to be added to a TestFixture to indicate all child tests should run on the same thread + +#### Engine + + * Unless required, run all tests within a fixture on the same thread + * Added an EventListener extension point + * Reduced memory usage + +#### Console Runner + + * No longer probes for newer versions of the engine, instead uses the engine that is included with the console + +#### Issues Resolved + + * 332 Add CF to the Appveyor CI build + * 640 Keep CF Build (and other future builds) in Sync + * 773 Upgrade Travis CI from Legacy Infrastructure + * 1141 Explicit Tests get run when using --where with some filters + * 1161 NUnit3-Console should disallow the combination of --inprocess and --x86, giving an error message + * 1208 Apartment on assembly level broken + * 1231 Build may silently fail some tests + * 1247 Potential memory issue + * 1266 SetCultureAttribute does not work if set on assembly level + * 1302 Create EventListener ExtensionPoint for the Engine + * 1317 Getting CF framework unit tests running on CI build + * 1318 NUnit console runner fails with error code -100 + * 1327 TestCaseSource in NUnit 3 converts an argument declared as String[] to String + * 1329 Unable to build without Compact Framework + * 1333 Single Thread per Worker + * 1338 BUILDING.txt is outdated + * 1349 Collision on System.Func from nunit.framework with System.Core in .Net 3.5 (CS0433) + * 1352 Tests losing data setup on thread + * 1359 Compilation error in NUnitPortableDriverTests.cs + * 1383 Skip Silverlight build if SDK not installed + * 1386 Bug when using Assert.Equals() with types that explicitly implement `IEquatable` + * 1390 --testlist with file with blank first line causes IndexOutOfRangeException + * 1399 Fixed NullReference issue introduced by the fix for #681 + * 1405 ITestRunner.StopRun throws exception of type 'System.MissingMethodException' + * 1406 TextCapture is not threadsafe but is used to intercept calls that are expected to be threadsafe + * 1410 Make OutFile and ErrFile streamwriters synchronized + * 1413 Switch console to use a local engine + +### NUnit 3.2 - March 5, 2016 + +#### Framework + + * Added an Order attribute that defines the order in which tests are run + * Added Assert.ThrowsAsync for testing if async methods throw an exception + * You can now compare unlike collections using Is.EquivalentTo().Using(...) + * Added the ability to add custom message formatters to MsgUtils + * TestCaseSourceAttribute now optionally takes an array of parameters that can be passed to the source method + * Added Is.Zero and Is.Not.Zero to the fluent syntax as a shorter option for Is.EqualTo(0) and Is.Not.EqualTo(0) + +#### Engine + + * Engine extensions can be installed via NuGet packages + +#### Issues Resolved + + * 170 Test Order Attribute + * 300 Create an NUnit Visual Studio Template + * 464 Async delegate assertions + * 532 Batch runner for Silverlight tests + * 533 Separate NUnitLite runner and autorunner + * 681 NUnit agent cannot resolve test dependency assemblies when mixed mode initialization runs in the default AppDomain + * 793 Replace CoreEngine by use of Extensions + * 907 Console report tests are too fragile + * 922 Wrap Console in NUnitLite + * 930 Switch from MSBuild based build system to Cake + * 981 Define NUnit Versioning for post-3.0 Development + * 1004 Poor formatting of results for Assert.AreEqual(DateTimeOffset, DateTimeOffset) + * 1018 ArgumentException when 2.x version of NUnit Framework is in the bin directory + * 1022 Support Comparing Unlike Collections using Is.EquivalentTo().Using(...) + * 1044 Re-order Test Summary Errors/Failures + * 1066 ApartmentAttribute and TestCaseAttribute(s) do not work together + * 1103 Can't use TestCaseData from base class + * 1109 NullReferenceException when using inherited property for ValueSource + * 1113 Console runner and xml output consistency + * 1117 Fix misbehaviour of Throws.Exception with non-void returning functions + * 1120 NUnitProject should parse .nunit project files containing Xml Declarations + * 1121 Usage of field set to null as value source leads to somewhat cryptic error + * 1122 Region may be disposed before test delegate is executed + * 1133 Provide a way to install extensions as nuget packages + * 1136 Don't allow V2 framework to update in V2 driver tests + * 1171 A bug when using Assert.That() with Is.Not.Empty + * 1185 Engine finds .NET 4.0 Client Profile twice + * 1187 ITestAssemblyRunner.StopRun as implemented by NUnitTestAssemblyRunner + * 1195 name attribute in test-suite and test-results element of output xml is different to nunit 2.6.4 using nunit2-format + * 1196 Custom value formatter for v3 via MsgUtils + * 1210 Available runtimes issues + * 1230 Add ability for testcasedatasource to have parameters passed to methods + * 1233 Add TestAssemblyRunner tests to both portable and silverlight builds + * 1234 Have default NUnitLite Runner Program.cs return exit code + * 1236 Make Appveyor NuGet feed more useable + * 1246 Introduce Is.Zero syntax to test for zero + * 1252 Exception thrown when any assembly is not found + * 1261 TypeHelper.GetDisplayName generates the wrong name for generic types with nested classes + * 1278 Fix optional parameters in TestCaseAttribute + * 1282 TestCase using Params Behaves Oddly + * 1283 Engine should expose available frameworks. + * 1286 value of the time attribute in nunit2 outputs depends on the machine culture + * 1297 NUnit.Engine nuget package improvements + * 1301 Assert.AreNotSame evaluates ToString unnecessarily + +### NUnit 3.0.1 - December 1, 2015 + +#### Console Runner + + * The Nunit.Runners NuGet package was updated to become a meta-package that pulls in the NUnit.Console package + * Reinstated the --pause command line option that will display a message box allowing you to attach a debugger if the --debug option does not work + +#### Issues Resolved + + * 994 Add max number of Agents to the NUnit project file + * 1014 Ensure NUnit API assembly updates with MSI installs + * 1024 Added --pause flag to console runner + * 1030 Update Nunit.Runners package to 3.0 + * 1033 "No arguments were provided" with Theory and Values combination + * 1035 Check null arguments + * 1037 Async tests not working on Windows 10 Universal + * 1041 NUnit2XmlResult Writer is reporting Sucess when test fails + * 1042 NUnit2 reports on 3.0 is different than 2.6.4 + * 1046 FloatingPointNumerics.AreAlmostEqualUlps throws OverflowException + * 1049 Cannot select Generic tests from command line + * 1050 Do not expose System.Runtime.CompilerServices.ExtensionAttribute to public + * 1054 Create nuget feeds for CI builds on Appveyor + * 1055 nunit3 console runner --where option does not return error on invalid selection string + * 1060 Remove "Version 3" from NUnit Nuget Package + * 1061 Nunit30Settings.xml becomes corrupted + * 1062 Console.WriteLine statements in "OneTimeSetUp" and "OneTimeTearDown" annotated methods are not directed to the console when using nunit3-console.exe runner + * 1063 Error in Random Test + +### NUnit 3.0.0 Final Release - November 15, 2015 + +#### Issues Resolved + + * 635 Mono 4.0 Support + +### NUnit 3.0.0 Release Candidate 3 - November 13, 2015 + +#### Engine + + * The engine now only sets the config file for project.nunit to project.config if project.config exists. Otherwise, each assembly uses its own config, provided it is run in a separate AppDomain by itself. + + NOTE: It is not possible for multiple assemblies in the same AppDomain to use different configs. This is not an NUnit limitation, it's just how configs work! + +#### Issues Resolved + + * 856 Extensions support for third party runners in NUnit 3.0 + * 1003 Delete TeamCityEventHandler as it is not used + * 1015 Specifying .nunit project and --framework on command line causes crash + * 1017 Remove Assert.Multiple from framework + +### NUnit 3.0.0 Release Candidate 2 - November 8, 2015 + +#### Engine + + * The IDriverFactory extensibility interface has been modified. + +#### Issues Resolved + + * 970 Define PARALLEL in CF build of nunitlite + * 978 It should be possible to determine version of NUnit using nunit console tool + * 983 Inconsistent return codes depending on ProcessModel + * 986 Update docs for parallel execution + * 988 Don't run portable tests from NUnit Console + * 990 V2 driver is passing invalid filter elements to NUnit + * 991 Mono.Options should not be exposed to public directly + * 993 Give error message when a regex filter is used with NUnit V2 + * 997 Add missing XML Documentation + * 1008 NUnitLite namespace not updated in the NuGet Packages + +### NUnit 3.0.0 Release Candidate - November 1, 2015 + +#### Framework + + * The portable build now supports ASP.NET 5 and the new Core CLR. + + NOTE: The `nunit3-console` runner cannot run tests that reference the portable build. + You may run such tests using NUnitLite or a platform-specific runner. + + * `TestCaseAttribute` and `TestCaseData` now allow modifying the test name without replacing it entirely. + * The Silverlight packages are now separate downloads. + +#### NUnitLite + + * The NUnitLite runner now produces the same output display and XML results as the console runner. + +#### Engine + + * The format of the XML result file has been finalized and documented. + +#### Console Runner + + * The console runner program is now called `nunit3-console`. + * Console runner output has been modified so that the summary comes at the end, to reduce the need for scrolling. + +#### Issues Resolved + + * 59 Length of generated test names should be limited + * 68 Customization of test case name generation + * 404 Split tests between nunitlite.runner and nunit.framework + * 575 Add support for ASP.NET 5 and the new Core CLR + * 783 Package separately for Silverlight + * 833 Intermittent failure of WorkItemQueueTests.StopQueue_WithWorkers + * 859 NUnit-Console output - move Test Run Summary to end + * 867 Remove Warnings from Ignored tests + * 868 Review skipped tests + * 887 Move environment and settings elements to the assembly suite in the result file + * 899 Colors for ColorConsole on grey background are too light + * 904 InternalPreserveStackTrace is not supported on all Portable platforms + * 914 Unclear error message from console runner when assembly has no tests + * 916 Console runner dies when test agent dies + * 918 Console runner --where parameter is case sensitive + * 920 Remove addins\nunit.engine.api.dll from NuGet package + * 929 Rename nunit-console.exe + * 931 Remove beta warnings from NuGet packages + * 936 Explicit skipped tests not displayed + * 939 Installer complains about .NET even if already installed + * 940 Confirm or modify list of packages for release + * 947 Breaking API change in ValueSourceAttribute + * 949 Update copyright in NUnit Console + * 954 NUnitLite XML output is not consistent with the engine's + * 955 NUnitLite does not display the where clause + * 959 Restore filter options for NUnitLite portable build + * 960 Intermittent failure of CategoryFilterTests + * 967 Run Settings Report is not being displayed. + +### NUnit 3.0.0 Beta 5 - October 16, 2015 + +#### Framework + + * Parameterized test cases now support nullable arguments. + * The NUnit framework may now be built for the .NET Core framework. Note that this is only available through building the source code. A binary will be available in the next release. + +#### Engine + + * The engine now runs multiple test assemblies in parallel by default + * The output XML now includes more information about the test run, including the text of the command used, any engine settings and the filter used to select tests. + * Extensions may now specify data in an identifying attribute, for use by the engine in deciding whether to load that extension. + + +#### Console Runner + + * The console now displays all settings used by the engine to run tests as well as the filter used to select tests. + * The console runner accepts a new option --maxagents. If multiple assemblies are run in separate processes, this value may be used to limit the number that are executed simultaneously in parallel. + * The console runner no longer accepts the --include and --exclude options. Instead, the new --where option provides a more general way to express which tests will be executed, such as --where "cat==Fast && Priority==High". See the docs for details of the syntax. + * The new --debug option causes NUnit to break in the debugger immediately before tests are run. This simplifies debugging, especially when the test is run in a separate process. + +##### Issues Resolved + + * 41 Check for zeroes in Assert messages + * 254 Finalize XML format for test results + * 275 NUnitEqualityComparer fails to compare `IEquatable` where second object is derived from T + * 304 Run test Assemblies in parallel + * 374 New syntax for selecting tests to be run + * 515 OSPlatform.IsMacOSX doesn't work + * 573 nunit-console hangs on Mac OS X after all tests have run + * 669 TeamCity service message should have assembly name as a part of test name. + * 689 The TeamCity service message "testFinished" should have an integer value in the "duration" attribute + * 713 Include command information in XML + * 719 We have no way to configure tests for several assemblies using NUnit project file and the common installation from msi file + * 735 Workers number in xml report file cannot be found + * 784 Build Portable Framework on Linux + * 790 Allow Extensions to provide data through an attribute + * 794 Make it easier to debug tests as well as NUnit itself + * 801 NUnit calls Dispose multiple times + * 814 Support nullable types with TestCase + * 818 Possible error in Merge Pull Request #797 + * 821 Wrapped method results in loss of result information + * 822 Test for Debugger in NUnitTestAssemblyRunner probably should not be in CF build + * 824 Remove unused System.Reflection using statements + * 826 Randomizer uniqueness tests fail randomly! + * 828 Merge pull request #827 (issue 826) + * 830 Add ability to report test results synchronously to test runners + * 837 Enumerators not disposed when comparing IEnumerables + * 840 Add missing copyright notices + * 844 Pull Request #835 (Issue #814) does not build in CF + * 847 Add new --process:inprocess and --inprocess options + * 850 Test runner fails if test name contains invalid xml characters + * 851 'Exclude' console option is not working in NUnit Lite + * 853 Cannot run NUnit Console from another directory + * 860 Use CDATA section for message, stack-trace and output elements of XML + * 863 Eliminate core engine + * 865 Intermittent failures of StopWatchTests + * 869 Tests that use directory separator char to determine platform misreport Linux on MaxOSX + * 870 NUnit Console Runtime Environment misreports on MacOSX + * 874 Add .NET Core Framework + * 878 Cannot exclude MacOSX or XBox platforms when running on CF + * 892 Fixed test runner returning early when executing more than one test run. + * 894 Give nunit.engine and nunit.engine.api assemblies strong names + * 896 NUnit 3.0 console runner not placing test result xml in --work directory + +### NUnit 3.0.0 Beta 4 - August 25, 2015 + +#### Framework + + * A new RetryAttribute allows retrying of failing tests. + * New SupersetConstraint and Is.SupersetOf syntax complement SubsetConstraint. + * Tests skipped due to ExplicitAttribute are now reported as skipped. + +#### Engine + + * We now use Cecil to examine assemblies prior to loading them. + * Extensions are no longer based on Mono.Addins but use our own extension framework. + +#### Issues Resolved + + * 125 3rd-party dependencies should be downloaded on demand + * 283 What should we do when a user extension does something bad? + * 585 RetryAttribute + * 642 Restructure MSBuild script + * 649 Change how we zip packages + * 654 ReflectionOnlyLoad and ReflectionOnlyLoadFrom + * 664 Invalid "id" attribute in the report for case "test started" + * 685 In the some cases when tests cannot be started NUnit returns exit code "0" + * 728 Missing Assert.That overload + * 741 Explicit Tests get run when using --exclude + * 746 Framework should send events for all tests + * 747 NUnit should apply attributes even if test is non-runnable + * 749 Review Use of Mono.Addins for Engine Extensibility + * 750 Include Explicit Tests in Test Results + * 753 Feature request: Is.SupersetOf() assertion constraint + * 755 TimeOut attribute doesn't work with TestCaseSource Attribute + * 757 Implement some way to wait for execution to complete in ITestEngineRunner + * 760 Packaging targets do not run on Linux + * 766 Added overloads for True()/False() accepting booleans + * 778 Build and build.cmd scripts invoke nuget.exe improperly + * 780 Teamcity fix + * 782 No sources for 2.6.4 + +### NUnit 3.0.0 Beta 3 - July 15, 2015 + +#### Framework + + * The RangeAttribute has been extended to support more data types including + uint, long and ulong + * Added platform support for Windows 10 and fixed issues with Windows 8 and + 8.1 support + * Added async support to the portable version of NUnit Framework + * The named members of the TestCaseSource and ValueSource attributes must now be + static. + * RandomAttribute has been extended to add support for new data types including + uint, long, ulong, short, ushort, float, byte and sbyte + * TestContext.Random has also been extended to add support for new data types including + uint, long, ulong, short, ushort, float, byte, sbyte and decimal + * Removed the dependency on Microsoft.Bcl.Async from the NUnit Framework assembly + targeting .NET 4.0. If you want to write async tests in .NET 4.0, you will need + to reference the NuGet package yourself. + * Added a new TestFixtureSource attribute which is the equivalent to TestCaseSource + but provides for instantiation of fixtures. + * Significant improvements have been made in how NUnit deduces the type arguments of + generic methods based on the arguments provided. + +#### Engine + + * If the target framework is not specified, test assemblies that are compiled + to target .NET 4.5 will no longer run in .NET 4.0 compatibility mode + +#### Console + + * If the console is run without arguments, it will now display help + +#### Issues Resolved + + * 47 Extensions to RangeAttribute + * 237 System.Uri .ctor works not properly under Nunit + * 244 NUnit should properly distinguish between .NET 4.0 and 4.5 + * 310 Target framework not specified on the AppDomain when running against .Net 4.5 + * 321 Rationalize how we count tests + * 472 Overflow exception and DivideByZero exception from the RangeAttribute + * 524 int and char do not compare correctly? + * 539 Truncation of string arguments + * 544 AsyncTestMethodTests for 4.5 Framework fails frequently on Travis CI + * 656 Unused parameter in Console.WriteLine found + * 670 Failing Tests in TeamCity Build + * 673 Ensure proper disposal of engine objects + * 674 Engine does not release test assemblies + * 679 Windows 10 Support + * 682 Add Async Support to Portable Framework + * 683 Make FrameworkController available in portable build + * 687 TestAgency does not launch agent process correctly if runtime type is not specified (i.e. v4.0) + * 692 PlatformAttribute_OperatingSystemBitNess fails when running in 32-bit process + * 693 Generic `Test` Method cannot determine type arguments for fixture when passed as `IEnumerable` + * 698 Require TestCaseSource and ValueSource named members to be static + * 703 TeamCity non-equal flowid for 'testStarted' and 'testFinished' messages + * 712 Extensions to RandomAttribute + * 715 Provide a data source attribute at TestFixture Level + * 718 RangeConstraint gives error with from and two args of differing types + * 723 Does nunit.nuspec require dependency on Microsoft.Bcl.Async? + * 724 Adds support for `Nullable` to Assert.IsTrue and Assert.IsFalse + * 734 Console without parameters doesn't show help + +### NUnit 3.0.0 Beta 2 - May 12, 2015 + +####Framework + + * The Compact Framework version of the framework is now packaged separately + and will be distributed as a ZIP file and as a NuGet package. + * The NUnit 2.x RepeatAttribute was added back into the framework. + * Added Throws.ArgumentNullException + * Added GetString methods to NUnit.Framework.Internal.RandomGenerator to + create repeatable random strings for testing + * When checking the equality of DateTimeOffset, you can now use the + WithSameOffset modifier + * Some classes intended for internal usage that were public for testing + have now been made internal. Additional classes will be made internal + for the final 3.0 release. + +#### Engine + + * Added a core engine which is a non-extensible, minimal engine for use by + devices and similar situations where reduced functionality is compensated + for by reduced size and simplicity of usage. See + https://github.com/nunit/dev/wiki/Core-Engine for more information. + +#### Issues Resolved + + * 22 Add OSArchitecture Attribute to Environment node in result xml + * 24 Assert on Dictionary Content + * 48 Explicit seems to conflict with Ignore + * 168 Create NUnit 3.0 documentation + * 196 Compare DateTimeOffsets including the offset in the comparison + * 217 New icon for the 3.0 release + * 316 NUnitLite TextUI Runner + * 320 No Tests found: Using parametrized Fixture and TestCaseSource + * 360 Better exception message when using non-BCL class in property + * 454 Rare registry configurations may cause NUnit to fail + * 478 RepeatAttribute + * 481 Testing multiple assemblies in nunitlite + * 538 Potential bug using TestContext in constructors + * 546 Enable Parallel in NUnitLite/CF (or more) builds + * 551 TextRunner not passing the NumWorkers option to the ITestAssemblyRunner + * 556 Executed tests should always return a non-zero duration + * 559 Fix text of NuGet packages + * 560 Fix PackageVersion property on wix install projects + * 562 Program.cs in NUnitLite NuGet package is incorrect + * 564 NUnitLite Nuget package is Beta 1a, Framework is Beta 1 + * 565 NUnitLite Nuget package adds Program.cs to a VB Project + * 568 Isolate packaging from building + * 570 ThrowsConstraint failure message should include stack trace of actual exception + * 576 Throws.ArgumentNullException would be nice + * 577 Documentation on some members of Throws falsely claims that they return `TargetInvocationException` constraints + * 579 No documentation for recommended usage of TestCaseSourceAttribute + * 580 TeamCity Service Message Uses Incorrect Test Name with NUnit2Driver + * 582 Test Ids Are Not Unique + * 583 TeamCity service messages to support parallel test execution + * 584 Non-runnable assembly has incorrect ResultState + * 609 Add support for integration with TeamCity + * 611 Remove unused --teamcity option from CF build of NUnitLite + * 612 MaxTime doesn't work when used for TestCase + * 621 Core Engine + * 622 nunit-console fails when use --output + * 628 Modify IService interface and simplify ServiceContext + * 631 Separate packaging for the compact framework + * 646 ConfigurationManager.AppSettings Params Return Null under Beta 1 + * 648 Passing 2 or more test assemblies targeting > .NET 2.0 to nunit-console fails + +### NUnit 3.0.0 Beta 1 - March 25, 2015 + +#### General + + * There is now a master windows installer for the framework, engine and console runner. + +#### Framework + + * We no longer create a separate framework build for .NET 3.5. The 2.0 and + 3.5 builds were essentially the same, so the former should now be used + under both runtimes. + * A new Constraint, DictionaryContainsKeyConstraint, may be used to test + that a specified key is present in a dictionary. + * LevelOfParallelizationAttribute has been renamed to LevelOfParallelismAttribute. + * The Silverlight runner now displays output in color and includes any + text output created by the tests. + * The class and method names of each test are included in the output xml + where applicable. + * String arguments used in test case names are now truncated to 40 rather + than 20 characters. + +#### Engine + + * The engine API has now been finalized. It permits specifying a minimum + version of the engine that a runner is able to use. The best installed + version of the engine will be loaded. Third-party runners may override + the selection process by including a copy of the engine in their + installation directory and specifying that it must be used. + * The V2 framework driver now uses the event listener and test listener + passed to it by the runner. This corrects several outstanding issues + caused by events not being received and allows selecting V2 tests to + be run from the command-line, in the same way that V3 tests are selected. + +#### Console + + * The console now defaults to not using shadowcopy. There is a new option --shadowcopy to turn it on if needed. + +#### Issues Resolved + + * 224 Silverlight Support + * 318 TestActionAttribute: Retrieving the TestFixture + * 428 Add ExpectedExceptionAttribute to C# samples + * 440 Automatic selection of Test Engine to use + * 450 Create master install that includes the framework, engine and console installs + * 477 Assert does not work with ArraySegment + * 482 nunit-console has multiple errors related to -framework option + * 483 Adds constraint for asserting that a dictionary contains a particular key + * 484 Missing file in NUnit.Console nuget package + * 485 Can't run v2 tests with nunit-console 3.0 + * 487 NUnitLite can't load assemblies by their file name + * 488 Async setup and teardown still don't work + * 497 Framework installer shold register the portable framework + * 504 Option --workers:0 is ignored + * 508 Travis builds with failure in engine tests show as successful + * 509 Under linux, not all mono profiles are listed as available + * 512 Drop the .NET 3.5 build + * 517 V2 FrameworkDriver does not make use of passed in TestEventListener + * 523 Provide an option to disable shadowcopy in NUnit v3 + * 528 V2 FrameworkDriver does not make use of passed in TestFilter + * 530 Color display for Silverlight runner + * 531 Display text output from tests in Silverlight runner + * 534 Add classname and methodname to test result xml + * 541 Console help doesn't indicate defaults + +### NUnit 3.0.0 Alpha 5 - January 30, 2015 + +#### General + + * A Windows installer is now included in the release packages. + +#### Framework + + * TestCaseAttribute now allows arguments with default values to be omitted. Additionaly, it accepts a Platform property to specify the platforms on which the test case should be run. + * TestFixture and TestCase attributes now enforce the requirement that a reason needs to be provided when ignoring a test. + * SetUp, TearDown, OneTimeSetUp and OneTimeTearDown methods may now be async. + * String arguments over 20 characters in length are truncated when used as part of a test name. + +#### Engine + + * The engine is now extensible using Mono.Addins. In this release, extension points are provided for FrameworkDrivers, ProjectLoaders and OutputWriters. The following addins are bundled as a part of NUnit: + * A FrameworkDriver that allows running NUnit V2 tests under NUnit 3.0. + * ProjectLoaders for NUnit and Visual Studio projects. + * An OutputWriter that creates XML output in NUnit V2 format. + * DomainUsage now defaults to Multiple if not specified by the runner + +#### Console + + * New options supported: + * testlist provides a list of tests to run in a file + * stoponerror indicates that the run should terminate when any test fails. + +#### Issues Resolved + + * 20 TestCaseAttribute needs Platform property. + * 60 NUnit should support async setup, teardown, fixture setup and fixture teardown. + * 257 TestCaseAttribute should not require parameters with default values to be specified. + * 266 Pluggable framework drivers. + * 368 Create addin model. + * 369 Project loader addins + * 370 OutputWriter addins + * 403 Move ConsoleOptions.cs and Options.cs to Common and share... + * 419 Create Windows Installer for NUnit. + * 427 [TestFixture(Ignore=true)] should not be allowed. + * 437 Errors in tests under Linux due to hard-coded paths. + * 441 NUnit-Console should support --testlist option + * 442 Add --stoponerror option back to nunit-console. + * 456 Fix memory leak in RuntimeFramework. + * 459 Remove the Mixed Platforms build configuration. + * 468 Change default domain usage to multiple. + * 469 Truncate string arguments in test names in order to limit the length. + +### NUnit 3.0.0 Alpha 4 - December 30, 2014 + +#### Framework + + * ApartmentAttribute has been added, replacing STAAttribute and MTAAttribute. + * Unnecessary overloads of Assert.That and Assume.That have been removed. + * Multiple SetUpFixtures may be specified in a single namespace. + * Improvements to the Pairwise strategy test case generation algorithm. + * The new NUnitLite runner --testlist option, allows a list of tests to be kept in a file. + +#### Engine + + * A driver is now included, which allows running NUnit 2.x tests under NUnit 3.0. + * The engine can now load and run tests specified in a number of project formats: + * NUnit (.nunit) + * Visual Studio C# projects (.csproj) + * Visual Studio F# projects (.vjsproj) + * Visual Studio Visual Basic projects (.vbproj) + * Visual Studio solutions (.sln) + * Legacy C++ and Visual JScript projects (.csproj and .vjsproj) are also supported + * Support for the current C++ format (.csxproj) is not yet available + * Creation of output files like TestResult.xml in various formats is now a + service of the engine, available to any runner. + +#### Console + + * The command-line may now include any number of assemblies and/or supported projects. + +#### Issues Resolved + + * 37 Multiple SetUpFixtures should be permitted on same namespace + * 210 TestContext.WriteLine in an AppDomain causes an error + * 227 Add support for VS projects and solutions + * 231 Update C# samples to use NUnit 3.0 + * 233 Update F# samples to use NUnit 3.0 + * 234 Update C++ samples to use NUnit 3.0 + * 265 Reorganize console reports for nunit-console and nunitlite + * 299 No full path to assembly in XML file under Compact Framework + * 301 Command-line length + * 363 Make Xml result output an engine service + * 377 CombiningStrategyAttributes don't work correctly on generic methods + * 388 Improvements to NUnitLite runner output + * 390 Specify exactly what happens when a test times out + * 396 ApartmentAttribute + * 397 CF nunitlite runner assembly has the wrong name + * 407 Assert.Pass() with ]]> in message crashes console runner + * 414 Simplify Assert overloads + * 416 NUnit 2.x Framework Driver + * 417 Complete work on NUnit projects + * 420 Create Settings file in proper location + +### NUnit 3.0.0 Alpha 3 - November 29, 2014 + +#### Breaking Changes + + * NUnitLite tests must reference both the nunit.framework and nunitlite assemblies. + +#### Framework + + * The NUnit and NUnitLite frameworks have now been merged. There is no longer any distinction + between them in terms of features, although some features are not available on all platforms. + * The release includes two new framework builds: compact framework 3.5 and portable. The portable + library is compatible with .NET 4.5, Silverlight 5.0, Windows 8, Windows Phone 8.1, + Windows Phone Silverlight 8, Mono for Android and MonoTouch. + * A number of previously unsupported features are available for the Compact Framework: + - Generic methods as tests + - RegexConstraint + - TimeoutAttribute + - FileAssert, DirectoryAssert and file-related constraints + +#### Engine + + * The logic of runtime selection has now changed so that each assembly runs by default + in a separate process using the runtime for which it was built. + * On 64-bit systems, each test process is automatically created as 32-bit or 64-bit, + depending on the platform specified for the test assembly. + +#### Console + + * The console runner now runs tests in a separate process per assembly by default. They may + still be run in process or in a single separate process by use of command-line options. + * The console runner now starts in the highest version of the .NET runtime available, making + it simpler to debug tests by specifying that they should run in-process on the command-line. + * The -x86 command-line option is provided to force execution in a 32-bit process on a 64-bit system. + * A writeability check is performed for each output result file before trying to run the tests. + * The -teamcity option is now supported. + +#### Issues Resolved + + * 12 Compact framework should support generic methods + * 145 NUnit-console fails if test result message contains invalid xml characters + * 155 Create utility classes for platform-specific code + * 223 Common code for NUnitLite console runner and NUnit-Console + * 225 Compact Framework Support + * 238 Improvements to running 32 bit tests on a 64 bit system + * 261 Add portable nunitlite build + * 284 NUnitLite Unification + * 293 CF does not have a CurrentDirectory + * 306 Assure NUnit can write resultfile + * 308 Early disposal of runners + * 309 NUnit-Console should support incremental output under TeamCity + * 325 Add RegexConstraint to compact framework build + * 326 Add TimeoutAttribute to compact framework build + * 327 Allow generic test methods in the compact framework + * 328 Use .NET Stopwatch class for compact framework builds + * 331 Alpha 2 CF does not build + * 333 Add parallel execution to desktop builds of NUnitLite + * 334 Include File-related constraints and syntax in NUnitLite builds + * 335 Re-introduce 'Classic' NUnit syntax in NUnitLite + * 336 Document use of separate obj directories per build in our projects + * 337 Update Standard Defines page for .NET 3.0 + * 341 Move the NUnitLite runners to separate assemblies + * 367 Refactor XML Escaping Tests + * 372 CF Build TestAssemblyRunnerTests + * 373 Minor CF Test Fixes + * 378 Correct documentation for PairwiseAttribute + * 386 Console Output Improvements + +### NUnit 3.0.0 Alpha 2 - November 2, 2014 + +#### Breaking Changes + + * The console runner no longer displays test results in the debugger. + * The NUnitLite compact framework 2.0 build has been removed. + * All addin support has been removed from the framework. Documentation of NUnit 3.0 extensibility features will be published in time for the beta release. In the interim, please ask for support on the nunit-discuss list. + +#### General + + * A separate solution has been created for Linux + * We now have continuous integration builds under both Travis and Appveyor + * The compact framework 3.5 build is now working and will be supported in future releases. + +#### New Features + + * The console runner now automatically detects 32- versus 64-bit test assemblies. + * The NUnitLite report output has been standardized to match that of nunit-console. + * The NUnitLite command-line has been standardized to match that of nunit-console where they share the same options. + * Both nunit-console and NUnitLite now display output in color. + * ActionAttributes now allow specification of multiple targets on the attribute as designed. This didn't work in the first alpha. + * OneTimeSetUp and OneTimeTearDown failures are now shown on the test report. Individual test failures after OneTimeSetUp failure are no longer shown. + * The console runner refuses to run tests build with older versions of NUnit. A plugin will be available to run older tests in the future. + +#### Issues Resolved + + * 222 Color console for NUnitLite + * 229 Timing failures in tests + * 241 Remove reference to Microslft BCL packages + * 243 Create solution for Linux + * 245 Multiple targets on action attributes not implemented + * 246 C++ tests do not compile in VS2013 + * 247 Eliminate trace display when running tests in debug + * 255 Add new result states for more precision in where failures occur + * 256 ContainsConstraint break when used with AndConstraint + * 264 Stacktrace displays too many entries + * 269 Add manifest to nunit-console and nunit-agent + * 270 OneTimeSetUp failure results in too much output + * 271 Invalid tests should be treated as errors + * 274 Command line options should be case insensitive + * 276 NUnit-console should not reference nunit.framework + * 278 New result states (ChildFailure and SetupFailure) break NUnit2XmlOutputWriter + * 282 Get tests for NUnit2XmlOutputWriter working + * 288 Set up Appveyor CI build + * 290 Stack trace still displays too many items + * 315 NUnit 3.0 alpha: Cannot run in console on my assembly + * 319 CI builds are not treating test failures as failures of the build + * 322 Remove Stopwatch tests where they test the real .NET Stopwatch + +### NUnit 3.0.0 Alpha 1 - September 22, 2014 + +#### Breaking Changes + + * Legacy suites are no longer supported + * Assert.NullOrEmpty is no longer supported (Use Is.Null.Or.Empty) + +#### General + + * MsBuild is now used for the build rather than NAnt + * The framework test harness has been removed now that nunit-console is at a point where it can run the tests. + +#### New Features + + * Action Attributes have been added with the same features as in NUnit 2.6.3. + * TestContext now has a method that allows writing to the XML output. + * TestContext.CurrentContext.Result now provides the error message and stack trace during teardown. + * Does prefix operator supplies several added constraints. + +#### Issues Resolved + + * 6 Log4net not working with NUnit + * 13 Standardize commandline options for nunitlite runner + * 17 No allowance is currently made for nullable arguents in TestCase parameter conversions + * 33 TestCaseSource cannot refer to a parameterized test fixture + * 54 Store message and stack trace in TestContext for use in TearDown + * 111 Implement Changes to File, Directory and Path Assertions + * 112 Implement Action Attributes + * 156 Accessing multiple AppDomains within unit tests result in SerializationException + * 163 Add --trace option to NUnitLite + * 167 Create interim documentation for the alpha release + * 169 Design and implement distribution of NUnit packages + * 171 Assert.That should work with any lambda returning bool + * 175 Test Harness should return an error if any tests fail + * 180 Errors in Linux CI build + * 181 Replace NAnt with MsBuild / XBuild + * 183 Standardize commandline options for test harness + * 188 No output from NUnitLite when selected test is not found + * 189 Add string operators to Does prefix + * 193 TestWorkerTests.BusyExecutedIdleEventsCalledInSequence fails occasionally + * 197 Deprecate or remove Assert.NullOrEmpty + * 202 Eliminate legacy suites + * 203 Combine framework, engine and console runner in a single solution and repository + * 209 Make Ignore attribute's reason mandatory + * 215 Running 32-bit tests on a 64-bit OS + * 219 Teardown failures are not reported + +#### Console Issues Resolved (Old nunit-console project, now combined with nunit) + + * 2 Failure in TestFixtureSetUp is not reported correctly + * 5 CI Server for nunit-console + * 6 System.NullReferenceException on start nunit-console-x86 + * 21 NUnitFrameworkDriverTests fail if not run from same directory + * 24 'Debug' value for /trace option is deprecated in 2.6.3 + * 38 Confusing Excluded categories output + +### NUnit 2.9.7 - August 8, 2014 + +#### Breaking Changes + + * NUnit no longer supports void async test methods. You should use a Task return Type instead. + * The ExpectedExceptionAttribute is no longer supported. Use Assert.Throws() or Assert.That(..., Throws) instead for a more precise specification of where the exception is expected to be thrown. + +#### New Features + + * Parallel test execution is supported down to the Fixture level. Use ParallelizableAttribute to indicate types that may be run in parallel. + * Async tests are supported for .NET 4.0 if the user has installed support for them. + * A new FileExistsConstraint has been added along with FileAssert.Exists and FileAssert.DoesNotExist + * ExpectedResult is now supported on simple (non-TestCase) tests. + * The Ignore attribute now takes a named parameter Until, which allows specifying a date after which the test is no longer ignored. + * The following new values are now recognized by PlatformAttribute: Win7, Win8, Win8.1, Win2012Server, Win2012ServerR2, NT6.1, NT6.2, 32-bit, 64-bit + * TimeoutAttribute is now supported under Silverlight + * ValuesAttribute may be used without any values on an enum or boolean argument. All possible values are used. + * You may now specify a tolerance using Within when testing equality of DateTimeOffset values. + * The XML output now includes a start and end time for each test. + +#### Issues Resolved + + * 8 [SetUpFixture] is not working as expected + * 14 CI Server for NUnit Framework + * 21 Is.InRange Constraint Ambiguity + * 27 Values attribute support for enum types + * 29 Specifying a tolerance with "Within" doesn't work for DateTimeOffset data types + * 31 Report start and end time of test execution + * 36 Make RequiresThread, RequiresSTA, RequiresMTA inheritable + * 45 Need of Enddate together with Ignore + * 55 Incorrect XML comments for CollectionAssert.IsSubsetOf + * 62 Matches(Constraint) does not work as expected + * 63 Async support should handle Task return type without state machine + * 64 AsyncStateMachineAttribute should only be checked by name + * 65 Update NUnit Wiki to show the new location of samples + * 66 Parallel Test Execution within test assemblies + * 67 Allow Expected Result on simple tests + * 70 EquivalentTo isn't compatible with IgnoreCase for dictioneries + * 75 Async tests should be supported for projects that target .NET 4.0 + * 82 nunit-framework tests are timing out on Linux + * 83 Path-related tests fail on Linux + * 85 Culture-dependent NUnit tests fail on non-English machine + * 88 TestCaseSourceAttribute documentation + * 90 EquivalentTo isn't compatible with IgnoreCase for char + * 100 Changes to Tolerance definitions + * 110 Add new platforms to PlatformAttribute + * 113 Remove ExpectedException + * 118 Workarounds for missing InternalPreserveStackTrace in mono + * 121 Test harness does not honor the --worker option when set to zero + * 129 Standardize Timeout in the Silverlight build + * 130 Add FileAssert.Exists and FileAssert.DoesNotExist + * 132 Drop support for void async methods + * 153 Surprising behavior of DelayedConstraint pollingInterval + * 161 Update API to support stopping an ongoing test run + +NOTE: Bug Fixes below this point refer to the number of the bug in Launchpad. + +### NUnit 2.9.6 - October 4, 2013 + +#### Main Features + + * Separate projects for nunit-console and nunit.engine + * New builds for .NET 4.5 and Silverlight + * TestContext is now supported + * External API is now stable; internal interfaces are separate from API + * Tests may be run in parallel on separate threads + * Solutions and projects now use VS2012 (except for Compact framework) + +#### Bug Fixes + + * 463470 We should encapsulate references to pre-2.0 collections + * 498690 Assert.That() doesn't like properties with scoped setters + * 501784 Theory tests do not work correctly when using null parameters + * 531873 Feature: Extraction of unit tests from NUnit test assembly and calling appropriate one + * 611325 Allow Teardown to detect if last test failed + * 611938 Generic Test Instances disappear + * 655882 Make CategoryAttribute inherited + * 664081 Add Server2008 R2 and Windows 7 to PlatformAttribute + * 671432 Upgrade NAnt to Latest Release + * 676560 Assert.AreEqual does not support `IEquatable` + * 691129 Add Category parameter to TestFixture + * 697069 Feature request: dynamic location for TestResult.xml + * 708173 NUnit's logic for comparing arrays - use `Comparer` if it is provided + * 709062 "System.ArgumentException : Cannot compare" when the element is a list + * 712156 Tests cannot use AppDomain.SetPrincipalPolicy + * 719184 Platformdependency in src/ClientUtilities/util/Services/DomainManager.cs:40 + * 719187 Using Path.GetTempPath() causes conflicts in shared temporary folders + * 735851 Add detection of 3.0, 3.5 and 4.0 frameworks to PlatformAttribute + * 736062 Deadlock when EventListener performs a Trace call + EventPump synchronisation + * 756843 Failing assertion does not show non-linear tolerance mode + * 766749 net-2.0\nunit-console-x86.exe.config should have a `` element and also enable loadFromRemoteSources + * 770471 Assert.IsEmpty does not support IEnumerable + * 785460 Add Category parameter to TestCaseSourceAttribute + * 787106 EqualConstraint provides inadequate failure information for IEnumerables + * 792466 TestContext MethodName + * 794115 HashSet incorrectly reported + * 800089 Assert.Throws() hides details of inner AssertionException + * 848713 Feature request: Add switch for console to break on any test case error + * 878376 Add 'Exactly(n)' to the NUnit constraint syntax + * 882137 When no tests are run, higher level suites display as Inconclusive + * 882517 NUnit 2.5.10 doesn't recognize TestFixture if there are only TestCaseSource inside + * 885173 Tests are still executed after cancellation by user + * 885277 Exception when project calls for a runtime using only 2 digits + * 885604 Feature request: Explicit named parameter to TestCaseAttribute + * 890129 DelayedConstraint doesn't appear to poll properties of objects + * 892844 Not using Mono 4.0 profile under Windows + * 893919 DelayedConstraint fails polling properties on references which are initially null + * 896973 Console output lines are run together under Linux + * 897289 Is.Empty constraint has unclear failure message + * 898192 Feature Request: Is.Negative, Is.Positive + * 898256 `IEnumerable` for Datapoints doesn't work + * 899178 Wrong failure message for parameterized tests that expect exceptions + * 904841 After exiting for timeout the teardown method is not executed + * 908829 TestCase attribute does not play well with variadic test functions + * 910218 NUnit should add a trailing separator to the ApplicationBase + * 920472 CollectionAssert.IsNotEmpty must dispose Enumerator + * 922455 Add Support for Windows 8 and Windows 2012 Server to PlatformAttribute + * 928246 Use assembly.Location instead of assembly.CodeBase + * 958766 For development work under TeamCity, we need to support nunit2 formatted output under direct-runner + * 1000181 Parameterized TestFixture with System.Type as constructor arguments fails + * 1000213 Inconclusive message Not in report output + * 1023084 Add Enum support to RandomAttribute + * 1028188 Add Support for Silverlight + * 1029785 Test loaded from remote folder failed to run with exception System.IODirectory + * 1037144 Add MonoTouch support to PlatformAttribute + * 1041365 Add MaxOsX and Xbox support to platform attribute + * 1057981 C#5 async tests are not supported + * 1060631 Add .NET 4.5 build + * 1064014 Simple async tests should not return `Task` + * 1071164 Support async methods in usage scenarios of Throws constraints + * 1071343 Runner.Load fails on CF if the test assembly contains a generic method + * 1071861 Error in Path Constraints + * 1072379 Report test execution time at a higher resolution + * 1074568 Assert/Assume should support an async method for the ActualValueDelegate + * 1082330 Better Exception if SetCulture attribute is applied multiple times + * 1111834 Expose Random Object as part of the test context + * 1111838 Include Random Seed in Test Report + * 1172979 Add Category Support to nunitlite Runner + * 1203361 Randomizer uniqueness tests sometimes fail + * 1221712 When non-existing test method is specified in -test, result is still "Tests run: 1, Passed: 1" + * 1223294 System.NullReferenceException thrown when ExpectedExceptionAttribute is used in a static class + * 1225542 Standardize commandline options for test harness + +#### Bug Fixes in 2.9.6 But Not Listed Here in the Release + + * 541699 Silverlight Support + * 1222148 /framework switch does not recognize net-4.5 + * 1228979 Theories with all test cases inconclusive are not reported as failures + + +### NUnit 2.9.5 - July 30, 2010 + +#### Bug Fixes + + * 483836 Allow non-public test fixtures consistently + * 487878 Tests in generic class without proper TestFixture attribute should be invalid + * 498656 TestCase should show array values in GUI + * 513989 Is.Empty should work for directories + * 519912 Thread.CurrentPrincipal Set In TestFixtureSetUp Not Maintained Between Tests + * 532488 constraints from ConstraintExpression/ConstraintBuilder are not reusable + * 590717 categorie contains dash or trail spaces is not selectable + * 590970 static TestFixtureSetUp/TestFixtureTearDown methods in base classes are not run + * 595683 NUnit console runner fails to load assemblies + * 600627 Assertion message formatted poorly by PropertyConstraint + * 601108 Duplicate test using abstract test fixtures + * 601645 Parametered test should try to convert data type from source to parameter + * 605432 ToString not working properly for some properties + * 606548 Deprecate Directory Assert in 2.5 and remove it in 3.0 + * 608875 NUnit Equality Comparer incorrectly defines equality for Dictionary objects + +### NUnit 2.9.4 - May 4, 2010 + +#### Bug Fixes + + * 419411 Fixture With No Tests Shows as Non-Runnable + * 459219 Changes to thread princpal cause failures under .NET 4.0 + * 459224 Culture test failure under .NET 4.0 + * 462019 Line endings needs to be better controlled in source + * 462418 Assume.That() fails if I specify a message + * 483845 TestCase expected return value cannot be null + * 488002 Should not report tests in abstract class as invalid + * 490679 Category in TestCaseData clashes with Category on ParameterizedMethodSuite + * 501352 VS2010 projects have not been updated for new directory structure + * 504018 Automatic Values For Theory Test Parameters Not Provided For bool And enum + * 505899 'Description' parameter in both TestAttribute and TestCaseAttribute is not allowed + * 523335 TestFixtureTearDown in static class not executed + * 556971 Datapoint(s)Attribute should work on `IEnumerable` as well as on Arrays + * 561436 SetCulture broken with 2.5.4 + * 563532 DatapointsAttribute should be allowed on properties and methods + +###NUnit 2.9.3 - October 26, 2009 + +#### Main Features + + * Created new API for controlling framework + * New builds for .Net 3.5 and 4.0, compact framework 3.5 + * Support for old style tests has been removed + * New adhoc runner for testing the framework + +#### Bug Fixes + + * 432805 Some Framework Tests don't run on Linux + * 440109 Full Framework does not support "Contains" + +###NUnit 2.9.2 - September 19, 2009 + +####Main Features + + * NUnitLite code is now merged with NUnit + * Added NUnitLite runner to the framework code + * Added Compact framework builds + +####Bug Fixes + + * 430100 `Assert.Catch` should return T + * 432566 NUnitLite shows empty string as argument + * 432573 Mono test should be at runtime + +###NUnit 2.9.1 - August 27, 2009 + +####General + + * Created a separate project for the framework and framework tests + * Changed license to MIT / X11 + * Created Windows installer for the framework + +####Bug Fixes + + * 400502 NUnitEqualityComparer.StreamsE­qual fails for same stream + * 400508 TestCaseSource attirbute is not working when Type is given + * 400510 TestCaseData variable length ctor drops values + * 417557 Add SetUICultureAttribute from NUnit 2.5.2 + * 417559 Add Ignore to TestFixture, TestCase and TestCaseData + * 417560 Merge Assert.Throws and Assert.Catch changes from NUnit 2.5.2 + * 417564 TimeoutAttribute on Assembly diff --git a/csharp/packages/NUnit.3.7.1/LICENSE.txt b/csharp/packages/NUnit.3.7.1/LICENSE.txt new file mode 100644 index 00000000..fc6cd32f --- /dev/null +++ b/csharp/packages/NUnit.3.7.1/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright (c) 2017 Charlie Poole + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/csharp/packages/NUnit.3.7.1/NOTICES.txt b/csharp/packages/NUnit.3.7.1/NOTICES.txt new file mode 100644 index 00000000..02f3f84d --- /dev/null +++ b/csharp/packages/NUnit.3.7.1/NOTICES.txt @@ -0,0 +1,5 @@ +NUnit 3.0 is based on earlier versions of NUnit, with Portions + +Copyright (c) 2002-2014 Charlie Poole or +Copyright (c) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or +Copyright (c) 2000-2002 Philip A. Craig diff --git a/csharp/packages/NUnit.3.7.1/NUnit.3.7.1.nupkg b/csharp/packages/NUnit.3.7.1/NUnit.3.7.1.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..fc4e76e63c2ccfc73c62edbde8c217d52649f075 GIT binary patch literal 1439169 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

1_qmiuA(WJph^hLP1^srp)S$R%k|Q)5Na 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

Ld_U_L2; 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%0A2Ekh3022e1C1W>MJj^C?@#H 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 GLK`8OU^S&VRN^8qUmJKK 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

=@xmId0mGBWXNMVB37thdI0`hsxkf7t^XJnI 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

*l_!CMB{li+$+JJY)goo*{rQ#>zac@nxI() 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�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

H%mx-e=iDI-z(&J~Ya92|PkCP@;5XX+s>&jJ{ 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%0A>3Oi&?0zbZCF$ml-XC5Mql$nhdV4 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

I&Ccc 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%0D59s=MLnnwGu+%U^;@)8J4juQxCY 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%0Dc$y#_Dk!&Ji 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

Nm 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 literal 0 HcmV?d00001 diff --git a/csharp/packages/NUnit.3.7.1/lib/net20/NUnit.System.Linq.dll b/csharp/packages/NUnit.3.7.1/lib/net20/NUnit.System.Linq.dll new file mode 100644 index 0000000000000000000000000000000000000000..57e58f69e1046b069e30beef5acc99f6fe97fe04 GIT binary patch literal 95232 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 k-H(zSMa{fYxbHk50M0YQIOP z9CFI)Qp=g1d$M=z=`F_}d&U{=+Lq%^Z1H-|Xjy$m%kBq$qUCh=gcI9qYLe46>x1?% zjQy%C!;Q~f>8JLhF|{RCHPbNSQT$ifGui;R0A2#uFvbdOD!GZE{PH(|aNsxoG>UvJ z`5a04uk32CqBbUi?}3EDcXq%;2huqvYE;8{b$Zm87(#y}*b;~?q;dH73PoyPd*Wx- z!hfEv^ToVE?(km=Qg8Q4-tj<+Y|Oh2PZDnEZwaJt_f9;`1tDdn%))Ez2)d=AXaXKY zz2c9unMTyO{~uMx)}m!31Y7<&0r?*&dp{7GYBo5tAz`k~v>Kc_gw~k#+wCgD$d~59 zYZa|bzDfrzGObA1zr2!E#ecwbx+G%C1D7*P^Wj-Z70 zn!UTgEyT>;Mf97!i?x^Tded1#tkE>nG|mM}{7aj?j9DGugN=bIS%v@i;(ym-1e?7~ zENK@T6{}*(YoaK-3OnJx-Z1M$B-@3OlPNRS$F!Z@@MC8CD9`g_z^cYf^ihiKV5OKA z5;{sgKCWu}_!h%xGJBbwx=1?W?9TWqJ2fghb{r+>0adWOkLH@S1Qj>efA$Z&h61!{Dc0nB+rNFD5r zx|x=72$R5{Y4+Bl*T}Buqtjo5pTc;BYfc_nU>(gmXcVkGqyVxQtH8882sX~%Ajux* z>_f`BnN>z3c|-f-jP2vmotXL9IKxSy*_!UYpeg({x5yk*t23Qg!BpmU;^7Nie((GG}n55~_X;F?hPh_Ey6ayp^7pMbv{7fl9niF2Xi z05yx)gG5X4s>y8)4_0n&LZW-tNb=^xoDKh zWWLsRCj&qea}I}VyOZ!+d}AnS7i`-_FP(fYSA{;`G@6XYIYtsJC66VzG4K{ClD5@% z1W4;s_0^f0{1UU5LZo87N5ZLAzF6nZ@nVC5HxO^vJ1E?I{r0Mwe66{GG2$^nwIvF7 zD}=2P=7ysY>>PuiHui=hYu2xapMxx@z-dc0`1)ifl|Ni*LnmGn7g3UNh3(uWp6Hxt z7sl#T5-Qnzo92+oS#~cobWRI9kPXzU9T%eb_Nr8@FlcXJuYv(k|lFXnvTh8f(8%t*} zNi<*TEr%|MF5C1iW{-=Wv9*}-##`u99r%*omjLR-A}(^1Tw6doxnwy-I0I7i zEp&kVe@W<|IJD5ii+^}=4=>(Pi!Uhi|DQB5st|#sA2Vm8G6`z;|58pyO(f9q2S_?< zq@Z1n8cC|;06P(Os9k7OxyMW=Vj8y9AcLNF54s!gHT*a$t1#DdY=n6hh8Alh`n)Rl ztr%u{b4_mwQ4VIdcJ4Uk^JWkgaV`K?6>zRu>IHe4^IUFn8ZZEZgj* zh*ksy8{l^@M2KBy4;^gwQrx)vM`FJSY+WorEgf?=5{#GQ#n+;DHOrAfG6^Kbr-rK2 zu|f>qiSRyW=hB=e8&&Wb#w26PB4am_$QATSSQ^6n0;Q(uC#Pn z5~TxyBDuMi*-OAZ87y*Bt*qNi026FoYd zPQs6NPo!={tB9P;on)4_AeBBekf5G(l5Ar!H%bU3w#|ql7&R&hP-MN>ABb=+)h7TD zSY|7P06=v62mw|#Z!a}NtC)LUhUrGD)pt1@6f4`*YtT}fZR*RcE6~<)NF^1Ue;e>I zHv?pK7g~f7cUu70BzoR~Ubt{CPD%941rN5PVs&;?9m=;glNhAGbS@hhGJO=774}eW zcGGo2(p>nK`xWr2vomNmEonO)+fo-t!%N0dO)rLW({U-ubS%4~4vi#jqv1YdgW{`* z7MCWp;Ith(b_~_Wd(h0Q>JsS$T2n%`rlD*dmQ0s|)J`W$sFSwD8-ntX54JI`o4$FQ zQ4cTvY~z7PjBJ*CFi*Q4m~m`l4%T9JvD$L}4Gul*T5^^`Hg9mh2JT6SmF+y+&TL7= zdZ6g4>Ug0k?tUFXMcX+Zv2*cy_Z#r8mDsVKg&?X)6s9J!?iQfkZ-z({_4V#$A=*yL z12q>WBi~`dbOe;&3MlK5DfSJhh6aitT^fM6T#~Y9v&$WuH^^GcZY{eBvsJS-V-M!` zF};$F)+19&)j6XN7nJg`jzkRfHdI!+K3Td4^(bYz=b+aZs!0wdV+Gsq#LP(4iC`XS z=TtuyH{xRri+VM&5=_;pb?O4s>c1S)*E?9)*w`#6-Gko7LR|45p#5Q*qg)J~k-;gXhsDtdvw2&Ts9pDqKjW`4Jw8K+huiyi?Yw~R<=CpG7K4qLwwg`1F zYZ*55Wi!*hAK~I(ZaGN=o9-^inom@L^eGv$VHhX+{qP{tqR}`J=~GJm+XHokf2Ok) znJC6h2Xn(@VZ3F^m?ADIOPEy$Kg8+ zX7AB*L!?i+&J+!n3)p3-pTOv$eq72uWtiOb`{5PhF~Da#BEXLk$h~Ydxry{CM@q&} zKY`Ih{kRy4cDJdN5)790>@<}1c=QP>$T^6!I5&x4^t}&)xEN>k z+mEx0oN0lTGzNfvrBv7y8M5CUm0$IT@Ke>@pC?RETCX9yV17X)QVx(;vwzT(Sc@yl z013(fc}<8CGfqVrAVC=*uMJURZl)*$Bq#%Csl`d7X^}{9s??&U3=}3>)RX~I6s9Qyg#}3P z43MHQO&KUGK!P$rio!Hyps)Z5$^a<})0Bb20wgE{q-ar7R%($*PzGAmM1dA{xcJK* zI_7QR4&C?Gf*Hn!VP3!YXDE^ihr%nN2dLrE?FbDnVI1geon*C2BkT=@j#HtMafnMV zLc?CjhY?1k*P+^5x=D#_e1D#>95m1J`mmE^U8N-{i*N^)I6 zC0QRvCHb$Q5+w|y5=}r$W5T6LkDq@(%r8wH=9i|#^Gj2Q`K2jgerf73zceMxFHIfh zm!^dIrK!XG(v&d2G8Yh1xC6O0XUO=8T&u$r<(Q70?tM|^m0r*n?H=B>Fm!4jJZoVrg%Og z<^ha=?KN@#8*+a#UY7e=U+$&h)W!4P;P`lm39kY-yH#|b!k&$LItsy5dj#n+ex=}_Q)N`Fx7|Zo zVAG_)?9y`ZSf9gm7PZPWrW^4Bx1|gN2g~(p8KL&|PzMck$7w54n#P?D({>+5H)V?{ zgetJ>%T=KmGfPi1(+b5DCz#HGNXsn(&K*_8H-zzP`oD)QwEl(oajOF=0m(D`q0BNzj_sk?Tau)Rq(Id|K0O}>w*gsSSx--mT);k82mbaGln6f0T z5~d@`^*92xoI^pY_6?kCfh_pMUoR7%BE%hLF&?o>*99KvMTNAR#h9hq5I58dmX*iW z4`v5d4tM8rdz${9oi(U1hnfv~7tb1O%|;fsE9@ewR=w?JAO0&cFKpDhUDv+$gLF5Cj6QV}jur zfz3uN)WS;DsR%h-he&0r z2suiJNcE}+IaY`CYZZM{r+*Ips4=BA1lql}YQMR*d!G;B&{h%lys=eOu~+2$7R9VK zj7HfjdXjYj^xU2QkUqX7gIIZigN-AZ(sBa}wO+hzFw@I5yH$xIyyt>9X6xw+S;G5F zO_8XKEGcYkb7YCh$f8osom3uLILmmS8JAfGIv{-{=6)BglID;R>}y4heUKjibg=1c zLa?0L35{6wMLe$toAVbTq|gGxJx0zbM^5sZ6Y3~WamD$La98{OyDIjEK5*mliRnBK zRmu^H0vk7Be5h*Ob}^2991Ltp_XhlAI&k21J`?7F7usX#0-O$%2JxegT-TYUuc3RV znJ12NZbTHCJpz1(C54IAsG*kgHwNQOkSA`1R?~R}{^BHSg8L&Nw46L^HJ$e;C(k6* zo+1V=`7@orBcPBMb5Nv5pZiUS0$VljFOXQF#5TzJCjv7$(}7)YC<=WNrGO|iYZ-;8 zaFi^{$2L|3`eV6`t+JX6?oFbdCes>zWaYfZL|}L*RiYqT20a<1 zVH)UU4a~XI7LDNQ?AVrSGw!@fRv^KIDHY=h*Y7hN2>u8(MlSD6$gB_2QP=fp>k`(g zA+6bV8w_&;!<`?3a{f7G|84L)KjP2r_$lmaHHviJ=UECW3Q1Dq zs=V8Qa()bt*-M$kM!-L>W(`r5L+9tN4~egGs8g!QKlu*N|L)8d@-HqAQhmf83?M=P zQ0(a=1PJy?^}+QrhVqDa*>@VQGqFkD94k0inz z1U4V!gzODViETMzAT?#HFg!Ta1Hx{h-0`J-y9K|uL#3d|=rJTAlm@-1jyRLFj2^nE zkID$Z{VyopMID9p?EbcUC+n9AiMfAc5GH8J>U_OE#a1;WmJnsB1LfkY!D%v2U1K

Z8=@$L{*6kYMpMoMc`=a=DOTWi*_mJ0QWr3JGDIG@N8{K(aze z21kqs?Fd%tENUj*kh=z?;Ps{k2vy%zennN~JmHQvc^S;Btkc*ueMC-f6AwY8&}S&@h}V{9}t zBN4H-n=m=fM|c&&dk&+EckCF9M=Q~EBi733;jrN~ZCU&FxyVc=WmV@fEh8)@&vEH1 z2jkHd)iJx{by=Neod%|?#>^9tHukrIw6R}uDpCk1vpotCyzdZOGd7g?5g(m6n~hF< z-s@cAGxw3~n!GuFjnnAopK~f~-~=+P5e2~XZOzBgz#6LHsSniwo2C+DjotB@*feC< zI1~N!*C73taQgo(B}n=ghSFcdLcom$T?lJdq%MqaWYhOG@v7GS7Nk3+obEJu&_ zzabjoSU& zfO&jPTA4WvrX$f6b&*88;}tFEg^+4$Sx$h4Au`rS1^y`cej@ULbp7s1HX*)&w*T4Vi&vLuQ~OLo=b!xn_3bO-NF#|8kqdz7W5# zS?MB}9X^UlCuXQL<>MUdJC$>+<)&AM)}!Xj7LMMj&$eQ^FO0A^gv zeS`o&e8NWvfIM>EdMRA~>4`U&F3JoP>lrM6>|ja45QUN{xu%~&qf0Rx1${@Do*@bq zrl)279{FfRxz*za z*L?CGC)UEavEj^v*L?|-Ub!-c-qse&UQU68>96kwIZ=AuqcU|%wPKZ1>Xg6tveyMZljI{^FISH|5*^FBN-Qb^Yb5tClT-bgzds0+fE>=7^uU5H!9Q6 zbWF`g&qB-vTN%^NI`@%ZJRL7b%DDFf7x>fh!TdTkveqRsby&is6X|LdoUYz7n68G6 zaCN#mJ|mj0PISDSh_3`938UhqVxG#>)#N9paX*b>#nUw_AX&ObQc2fVIu7@Jqe7hVKudB30zRkIG4Gs!8f-Oa0=p9cbOUR^gP|H)W-%og{j z>~pKrwdpba4vktHjH89;hxrWVT50Y(phc*V#JfCbBapC9<9EDg_X10-rKL`*?j2gyBl^GAJxj zcv`VB=Qvc1p?K+eWHhM^r+38y&;Ki+F7baH2%N>iZaQk5kD9X+3N@4L>H&yLaVcDg z6Va+;^N#{59#c0Kqype%)rj?Av#bh7xOV+u*FqpNHSy4j;edE(k+5sLyhv!D9pBdN z=eB*P__l?Cr!l^5m%syV^L$Tdb*zU=QJh)UQ?*5YMMP)z=tLBqe}$)l z!$%NAd`6Pes4|cPyUL^eo>2fGj`0x!0CB935CDkde1rhZ|EVhfx2pW#rt<$|=AZrH zJ*aOE>T3!8mfU+NA#L1yxEOf<-ox>L{d*6Ec%tWTsMq;1>e#e2gtoyxksaiMSJ4vm zbqG6c7f(#|U=C4LI8wQFG1XMjJ;ZVEXBqDOoQPDjox1>f3{X1W*`Yzz$>3^40$m+C zBV2z-xQ~NoFpW!0yy>6`J6=lLg;k0%I=tlO)x0NBm&$e?oJPe`eRg#^Rj4bs{B*Ut zYC0pG%FY~{u1=% zj%nA~C=_VF3IEygu>9%)`+qiot-xJ_|LCi9e`OgC{5zxkP3Lsvq_tSxX1TYb&vt)- zAI$wu1-4j&`|$6hoYnOYOaY12*FSLaY;|_YD_|MRY^jdR4G^^b&V;%Fl9CG-&RRsk zyka#RT;9G4y}Uvt!Z$3JCu$ulW#Isf z(ceTsaTE@d5%w#DZCu>2j-(pM+0~GCJsZmbE$UNvFVXTvu^>B zj8ApZxZ3@QVuL|#q`x>cJ{?iFw$QDhjq3+3ypyw-0Xe@$RQe}9R6G~9+XHWG5C-{=6ts1BxBYQT3In#E&B^8Ke z@;=hRdYN;+7Xhl+nE1tHF<{9gNKN`eQ-2&X`ZK>;9Rt%pbYe!P+6qno8m-Xuuf{4* z|3Xu_>ij`gc`DcWp|iK@{B$ckd$Y>3tj_Z64R`qJwNx>6AgX3%YI-I6d7D=+9*4_^ ziV7=5eYoRXLA?ZLJP+JjHthPhf6EQv!smCYh8i^Zqu7#`m-gCjXK)x8c+R?(z%$B4r0~cC( zV@w9FLQO0@G)Zh*#wVy|N<1_;6>8%ZcNR4%hailDO$ix)3bnl0_$_t_QxT98qI%em zoQmdN+8tx-`gU)xhO#Y5c7hL=ZNI+D94t4*^2l=aO(+cJArmi5Z{->@jgws3T=@p- zm1LOy%I)QPkiq&%0?X;#!cc5kM6`+M4Eew$_p9IvD=Ue!N+TogR$zH=Z5XQ` z3M)|Ugs6V3a!R)kO9|6bJ9kp}?p{T5XM{sOFwHxaxcUO%{vmP83E!;~cH*PTb&s&X zfDG4i4<41pPc;qi8CvcEqte{xCxe$oM#=uqD_9&jDvMwEEOrjD2n_ZfWGK$jY25GI z>Qxr?L!?0K%u!5TK0)+Hv;Y$5{suNqBg^P9(!dn27fH}PNi3mEWr4*}`Yf7iH1tKY!y5f6&HI7+_9oWKG+Xk`8~?z>c-OWaZM4WX>i!0e2F4I{ zV2cF#NHbI)x^Y{64GK*Q9fpY)W>OQ>8MKL)pe9c9&!hch-e59vr#DE)c}CI^=YK7o zKQo=+?xMbnIxNe787a%iJd@~unCG`grZY0n{|o87!*qN*)b*$=sC8IjhB~Rgk3x~D zp!f$Vd^=R~@auLZqxU|DtdiTmNT%&jr?VDoxHSZ~5$+IsLUdMPk0Vsxlc>GQs^k9BCYYu+!8ElArl~A0LyWWurn;*g zPC?mZg3||>V45Fff@x|KOjDa+nk6y81Se$!X_k}?Bsv?hfix{;1BppvC;ApsN#u*;yACV z36o(>Fq?aB7vbcxJoR@3 zGs5Oxu%p`COGq2W9XW!M7xyj(Qor=kH<9e}z5&2z%ZQd)^Cs{z*@e#edOP z&f>r64Q28D3gZ9J*CDprraQo5l)Wd^4*4^^SJD5eOE%7S(270uco^dR19UjWAB&7MktWGW~TW3!&JK zkHFb(NAX*F4V{PcdDg+lykCKXV-tH4>h-`n)I)Em68CA~N?!%}z-M$V?S<>c5Q$Y* zJUG9D&XmV;6ZCPWdNC6@4!~vr+}rUfl8RnYv=+@a8MoMuG2u}5n<|W3LJ@2hU}~z4 zO8VC$aakMtubzkm=v-3dDf(Wb)NRP=hFcB%+P%=Jw7N9_WsT+50t)-_f^da@Ec`rR zPs8nF7WMOF?ao)I2?~*0Dzlf;ei)sd7U&d}`)dev3xt<$!}zK8H=N6Bl!jpI1?D(bQtPOY9edsp&LBKi0&C zhEfZF(iHq8?W{W$u4(su0VF(T<$|EEOpmpJgrK{o>rMkT65%`T(~w3d)958R>e=py zs>m#N2=EZ<+#YbB%jvm&jZxdg=blyk$)m=%98MuZQG>XNOgZj{rcG^y7^rncIqjcW zxZ)$Z;bVD{tLfB%0$T~zOQzAiv@yHOHFYXP4INO=-1nSK9jJv=r0*hXI@*Ui9Wik* zlH=Go4rJh7N z*QZSs>WT3G6>`hR_%>l8ZKg8S`LVIMX~(ye{ti(FzIm-SABqRZaJ3DEOAsjpuHagnC~By*ym=p(8$AAHf)3A+mbr}9}?#&!d$ zw&SQfU&8XuT?lU*(0Df?S$uJ*7Vm3k(7QGH7i`!w>odQ+G5tV3lg&OYYU~}s=P8hW zX%S+=)~%}!2(!62=Hirw$=JE^p~Pf7jVd(U=XucW&9-IcGNjN7tO!IcE}p)1LZFXZP`@gc8|( zH;f0m-c^X{M{Mluz7z-@wfj8=KC1#7E`Cq37&!E+o!t*ADk8fvP#9gXO<}almMxy$ z{bQ9nCF#Boa2M_?FmUN>7tEWp1i&GWFP}Z95x{%9?lrsp(;CzL7HMIZK-wvnt((_< zl}d&2y3uxxt^-uy|w z@P58uSNpOqTziAPpLY*B6Pdg$IF1qDB5}m~MSvA{zg5`B1MH!sy-#6(6JQS__6CK0 zA;9iKEbfGp@9zWb?!=y>ux|xe)D7fcVc!j~sF+6AClz)_fW>&LzIOt?u_=Bouo^MC z(3LW^F#+~n>J_s)VzUAEC1TON65AYLA13zq3cFK){UNbWDC~>?`)y+HRM>d|76Yfz zb+y7S_OZovUFcP@3-WEh26s_byY$V#Pf_gB6@mXv@n0SIpBMkNf&WqQUm5uCrax1< zEm_4bK>d9zf;+Wm1{XasFZ$KeZZvXW4aF=CymvpzZ;7iI}iSe{Ff6 zWC@_c((En4?hw85*Ga*VPk>-;FcI1?oj8cp8TW3;n6{r#Ll*jPh6Y2Tc(9U{;jJ7G zm0Jc$3C4>o!-Dr5fq9TDut;D83nt4LEX&-MjUeA^1ZHnyE)B;b2D6$FA4xXDAxn5y zbI)zA^5EGC`Y@=71TNaF9;E#o|5A@w3=a=V<#80lSs-(mLI%?yoqr)d*0@oQMF!SW zT0+YmKms!GpRNb~@fi4pBS(J@YBax*@-PfRR3vv_WC5Q= zxB(%h{Qx^1STQ=7mFIb_$(al}VBlF+08PVu-N-8e&_@3^P*3{4g&))THMat;AAz#) zDyr;$@FALHL1vH7kQB9y5v7(1@NA^ekx!Z4(WsB^>&UIunq4`zDl_BH(LzlWuOI0- z=2#Pxi}%1n);2uCcJS&tYj20rUCg)#`R+!(EoJe?F*h*ZYgZ34C-sx!qlIBw1tTBW z4Xmt-(C}?#T{J%p4RH(1ySM0kq@&g8NKHP2?gLcmD2ZSm-hlx&GvmpqcOr7(or)hj z0ZxgPd^9xaxom6b`H~0MM#>}@y*FPv*MMQCnOyM2+Rh7yqon;z(hk%ALwb zd%NYl3Bri{%79g9!k4NpXW3X0a|3!}{BFgsTte9(~h18g;F{T}L-Ur@t-o@|Os)%yIJ_DP8{}5-H{aX-8iVp=si3G0Yr@g$A zU$Um`#p<-9nU0tVvw4bvF2{WVkx=bIvBgXw>ios$hLuM+8TTOuUN8D?<;}&En;$8!PwmoBd-v*KL zZp6rJ%Ko&X6$)A;|L(L(0-@^&@HO^``e7q|#iJBC%F9!0x|v zFe;SnD&%f#K45??(fbjI23P>z6NH$yQWTb8$pIE8^%618hE^6z-+~z@j@`K$@&1G; zUU4ca=t?yhbg_QmCJ-E#iwI|dLd=JQ1xO3`4HpunNMvPV1|f?Of*Tt!uiOO?u8ye> z#|#FSHC|^Ia0O-JKqCMUgFZq4Ag=Tg0swK9j}QR)v5Ze3KfAEK)5?>{ZC;K2?QZ17 z`@Wwce7$B0jPzmrlTl_`D0ZQ>x5S+#h@-5Ybo7p=Os5-2rLTVQUnKp>a_E8Yutl6* z8LG^_T#i76qb)IWN5}FBddHf0EIs1>6be?f5jAFVC@XZD5zAQ$4uzc~5{m}5kh-&x zD>|;{V(~2^Re43H+vsG-!ZvEThaj1x5))-WY3(f$rxpX%pwL>z_d&Z@XfZoXa<#Y& zd}|URNjef@vCkEPjN0l~bs*^6T#nA_SK;u8hlm7uJAR4ge2)6h93tDBfGQ$(7?4U`NsZh=&Uja=!&O=3Y#22x5^ED)`ueU zy#)F0XAIL_h2TQ9_8bmR&e;!4lL}+In8V|PX4nin5`eQ01z6fob|OIO03vVzPLWtw z**@6SWX3xOGYF8SAg0Z68)cNnO;TDO0f|5X$rBiwGi#>6ZjXOw zJF7?s1GqJ~`$bT6G#_%dC^;j%mi>Wpt{J~ZN!o+BAxZH`C>i+%+Pa`-D|r}=E>_#j-MApB%#z&#q;ng%ZTdvWo0z9pl5 zSm>vH`0d5&LUdKen~y^B&hbl1#kUZzO@piC%r_5qyMAE#Ml8R4RU~^A%5hp~kWDzH2nsjhNdLQ;R@S%+B8g=7{YKprS3 z+K2qApcBb9|qU*%|geouE(~^pkbWjOpDg&Ej5afEwc)biD*r`>^EO;rk(PBGt$pN570H*>L9{OXHfvtxf-y$9&jqZ zFHRYH0pVK21~}^E!S*`Zuzj)+h&DU!_Ay{HXAue$ri=^Y;J~6Eq{Z*40}J$zl?N7( zMYY=oW5t<9ExhPYs-%LBrHt;`h@Bitw0T`fUM?%Dy+_;>O&AIG!+gi=1f3^!l)^2W ztB{|HTsfoXYE39tDi-KOE-F-M=VJR2$EdBz)|3vUCM1-6MwM<~YRpgTad zq0jq5pfNS}yO8@pW~r`q-wjl|ZBLl=lRg(>4K1vCJ& z5g7RC#7dj+TNfGX#)Ec2e57CHT@0^UC00+I5YW|yyZ<2zt;EcwBl6uW6V@hMZ&rO9 zGGN?wm->d*q5c5Xw~g&2()R?M+)@tEx3I!Q`>@#{uNpF(tyl=)3Vw^(OMF8+KD|yL z+dfVK1svZIF+pC@TBkhyPXW`8=>|jke~ljrMYlo(Cj%P9C%1i&w+uCwycX!lPpinj z_czL``dRG58V9qjOzdP|)W|RDws4i?Y=%BDU$>omkhfymb}j}eHlJVo5AxcD%+h}F`5w9;UpRfo0A`#a+Of7Q9K)hK_`yL<5`-Dj1ITY-r1-zmAy9B2Z??TLiV! zTg}-jZN}LtJVPR!5A+eh*!qgb|CV@8)dd*Tv!v%pq$bABO`z<1RuJ8=XzlwQW1KsZ z&{9MZMSw44Znxh+)Y7GppPOvj#u4M+D03z}Y~lQoBFVg}OmjGHvS40yB%D;4hW-Ca z@L7&N#41ci)|paqyy;zop2AYoDdr)Q9GZ(SDPnh>1O*WM3Ive~g7HJ?6pjoz&h_ay z=#(Id8t35{yYFtKArsy^v5hNZ2KQLg<@bUcMtLvzb>>A)-C(wf6Kz;6h}A(&qUDUo zCVX+}&Q+KWv|P7f$6;cAkZAe$A&F&k7A0DyEsQnJX-c$=yZVu_-JV4%qPj8bH@d2k zc%o(VO9wCQz6*X8s~abkM%Q0$`ZwIY*S?JX#F)4D>h3aqRQCdsJSHSR?(aCDdq|Rh zYtD{Cx)%x+CF#bCP)65vLe(+!;u#dD>gC;!C&Tw18+T0i3nC6t-Po)#y849l)x)!E zx(9_JV|A}%&~Xy9qT#_l#y<0woj%ijha^N)_Zwi;wOB~L@Zw(Qb;I-o!kdGeKHq(? zq(L2Zw@{o3LN(!D`!21h&wh5dD=69Bk5zq*yqoTrd};R;k~~q}XOZ_SQ8KJ+?c37* zv?R+|-MG1EbUi3RJ1)8Nhm3vU{Jv|u@mK?>iRxa=G_Mwt-(K|AZQb7&#^aCu`H#EN z`anfVx^D)y>ujO=RQ=75&e=QBvTyq4hskjJOJBRc8_gA@M0IZ==^;Wo_oyo$>Bc)} z2pSr9^CR7P;Y|kJDN?m7$!?zUI2lDUH$T=rB#d?d)qMv^QbKaX#xtMj#sm$FE^x2> zP4_PaTzbTpf7ksg<$n$8jC=3$ zdEnUrddhdw>+41wkGVAivD$ zSwS8XATJ`)6r>j**Aw|BexRiQiKlIhE*4bWyCgs!MI`R&0=YFn;_Wh{>qbG|8X%Vv z`3*td8z8%hJWr4>2FTe&;$;}{d?P?M6S+!|{|Jx`MD8I-JVBw&iPA)3ormbP0WwKs zlOQJs$p2y^um!mwK>mryzv3tE?G+%OCh|G_n7tgl+#jJwPIWz5M*LV1KPw~d5Cj{% zj)KO4C|k>jp9%s~QlH{yg239#N8Bd}Y+w3_`vq}C8S!&L>{~`~=9lVPP)7Vh5F8-1 z91jYjp^W&YAYx?%r&y`3f1tC_Q63k>Yh?slKPcFRX$nrSQeF3z5i)nG(V?6`VK+I| zHCQGfF4gs=GU91L43rVSAtLW-9?yvH1nv8+_zu;+XT`Ud_T4T%EES}r?iOD``+g$6 z$nhqb5kXNJdMqv)N4vbUUj{c$|TX%7c<&MBe>>?({yFmBf; z%dhDbmHh(`92+_lc+O{RRV=#&^9?m%dmH`QRGb_4z7lvk&~gG#Yux)@;F%KlZVNn< z^3%;M&dDJlY><6mf)6xmzEhC+UB9y&5C#neNe^rBWT{X`z=JrWQqG>(?(6VkWf#?WM*O~Tt6j) zO>`xjdpViZ@m|!F3rab7#12V0NL~X26!IExtn(g zg5A9ljMc~A5H3&1r}C>~@`OA;)9`md zo^VJUAQI}`oBM|96Y8!mpJ#&AjIw^!H+e6r_>#8FIVYlt;^y$KuD|EmVDxNK`vSNR zh2ALH$GocPxtcGduJC&n=@O_~%#dCBAyyvll|b6=RrsY$EZZVn%(>I1um@w|%Cog`uxGF`iX&#ufluf7BlLKg?BzQC+)O!9hAJj-n}N24r~|ry)m4dU=8?h7M`hlsx8*MwWmUHbF)C_HaJ~=cc>HEOutIG}mq01H#Sgf&1_qMe$|ll+;odD!=R z;LXytP-5Sk0$xY(F9Lpt;9CUsIfrAR&oJfH3MWd?>}CAY^&oV<%b&^YRM2<64YVu` z1>hd%RHS+&^W961&P?pHnZ0iSOb+2VOK|8y?B^tpRHczJ67@zkh2U!|3;VE5dhg| z2}{q!P}ULH1cbUscPfjV`H31|H4Wn^${?kLcI~j2w7qszYrOu=k}Cp({nYK5f1`-Y z9i9%IfzXhZV+K8AIVuCCyVS(9;4e(Ky}imLL{*P7w`cxY!QJ+j3r!Ld)Qq#rpO6uD zws(qzR)0X~dI^mqv@S9(;%$W2xsjFqCj4lDSSx$Jj6~;uA7yKMmotvr0Ica|@Vmlv zCn%?pPF-|d)WJefMYp}{1M=Y^w@V0F3=ergLb9WTJR>1YXn34=B!rR-4>5}@qWTdb z;bMzTm|Gib>?~sDgu=Gl^3zObEC5(YimOhRFGi1+nZ@bV3=-ke8yvB@Z2Qcx^!;^xb|~UJmwaxiEY45f&|4^ zhVW8l`KdToQGNDuk~!r9Q~H$~O^0IizkqGC)?&7;e@OPvZs-2l55c%~fFaHtZb1D^ z)4o_q`(x7nNN5@2pnK1|-(`;kBNcpFY$xz17||fwi79sjAr7X~((lb;UudZwHR7ZZ z19qHsaDtw(lRcwcIDbJOkMgR`)-)pIr&7UNbAM}k7!l3@gAe?6GBn1!8` z_!HEjjC`rmlG7&nKxOHANbLR?*|2(`C=*7pe2kRrWOFNTo6Z~vlpG!ruiCF=1a|}G zd)SAQ>{>k>msjEc}hJ~zNDrp(? zm2#xe8ew=5NDUFF3+%(mpVCEG2a+k+W0!@ExSi-MMps8gHYTZTDEbkZQQ~W6k};Jp z#RAgMCh01;#{^|mmP<7*(NcR%^nl4ab%vRxjB_TtxVYUQvL?MH)TAUL+JLzY^-~z9 zTsf4CiCJ{YTLDr*XmPGao2bTpWJNEo1jmKG8vCPhB{KEMwS4(9NNONv%NOI zpV^OBK;5b!y9o%D7~@X|rH;fZ=Ct95Q+y6J zci^tjc`c+W<&+Mf*Z?vM#~e$T*g|_cr=;(5~nW=a_WE z-PSmJI1^Z{iPBn?JB;`;rYHn1Q*6WC2Ftru#E@=J#E^O4*C5AnBFE1{a!4MGVK#-ZMTyO+toFnCw7f9DKHCFdB!3&A3bD7RDt+YUNXc#9eBcArw*hRES^BINp?M|H@lPt-~sR%fg| zAUt03`)5BpNi~;peYIdRE8t%x&)D7zOoT_pNH`7KGbO39nu+T1eNlsj3EBK zh+q7XI=RNg)<0}VYY)!Z_dn4;XIJ0#IRP?>EfwY^9ZdIKj#p?(K~Yp=jxR-lYxb9d z0*jK?)JC-7s)VRpURaW7`YT{h3?<_QSP5YD#czKtgX8zr%|_>PrO$rvd*C(j3Tn0Y z4xv{GEt~=9HBPF26-=^sL7jxbGqQ#c4&nHr3x0h5A>u3mz_Z)E;X1qHhxugxg1MV< zBJyS8zB8<(5n?-w@oUM6WoFSM2sfRDz~EEMb7QdyOYQ(hg;wJU`#mD?vb0_O|6I6T z7|21xQ%=0%Xveedh5RSbUdd)cdu=w;auzCuoMPkQ=WNT%m=%jp1juQ^&KfhDDPgB9 zDH53@2`y(nIAWJ0)3Vb8l`I-FE$+GslqO!~oe#yC&Yn=UcNajl1@bSPT=6_rNgYbn z5}ACF@UcTuWrxWII{{2eBkp|&<6QTB77J&>0s!$JA0Yq`7<(0k0DGFw668d7Tb%nf zlN~;Z0MID=*Fm@#rSS%;5U23M({-p`t(j)Mt5gm1hKA10ZRfMxpaFblVN2HeIe1=8 zR5G50^||*5GOn)C9F&l)o>YFBnUM>1&I6!rUWZfWth&&~ouE|SF`d02Vqrp=GtTqM zd{NC5BReLWMKZ2h28MI~$Gmc>A;^z7G48>8?_$+g5I*ULd2s9~H6})uw803t} zh^1@AC^5ZX3DMQkcDPRMLz?_kTnY`AOK!LhAY7G?Xa7njPE}XTdv>oh9OCAz) z4rXLaz9H`%rr=d@oWlj~Wj<79EcXcFk5n{g5S9#C?wNo~j|bVZTn~so$(QA>B`g`U z+>;oIA|k9Pa>BIP3l0HWGQ2mnNkh@;TU5wPU&e-e{l$>b4U<3|txh*}>Z z01#t*gaELvsRE)1YX(*Y`Su?H_b4#zV~`@C)q(a39X5gJTJF(0VU~vEMF6BT)<*~c zMA}CP0K_;SApj6{K0<&?&E5zQ*h@6!p*QydBqi5U_`(+C;xF@TX}6v(M*sm3Fy2Q9 z07S+|2ml0Y0$ai3G1uHcg*eBcr)tX`m#+@{_2tr;f1=2y!`kh> zj#evGT=f^+kv5Fg96w6?BOIH<2f-<%Vc1N-eVjjRkLV`knZDJ8aW?TR`ojS>0L=J% zu*qohCM|N^=;vAhR3!Hch=Fq)Sb-D3?O6AV0MNHVDis*QU2eHmTv$y)7y(64qkY0c zdPP~Q?+@A6Kz7TGfRsatg50N3CdvFH+x-myu>xVz32d1&=|Uu1J%p<#vKR5Yu<2eV z7pGp-d^=<8yjaZ-xlfKU#yC~R*=NAB5c9^(G|uFcaeE?6CsC?I)>bwt;tLiO6Gw%tUYJ5r0j+x@zb z%zSr`?{+^RAVa&q1hDHAq5kwKFa4suDc-Vm{bLVxKPn{er5F9S8ylnQq&TM3#cV7P zBt}&u=3VILZNYCy$&=!kcS(Rmn^PynG4JaEav_m_#ZS!J8X&uf#CjOWYXam9A~7cb zk_SDa#05nnZxLjXcPT}rJdrpA1Le&@^qq;e#y|d|;?*maAduQ1Ap|5$aiKX$U?ZaI5X^6++D&iCQ=kHGd=u zCPKq`eWC&-^_>MI^($TlR~%@^SoN94YgN0yr?n|0ZIlyyfsr)UQGDqZ7DAfWpL=lc^4dZY0dA0sMIbBOW|=CABiV3DiuC)GP|DUm3o^F6}Ockx@q^9E;uK7=Yi*ES2!wF#B~ zT$`dY<)vPEl4~1=TeV=$I{(B0s`D>$4im7o%8FVOysrrU3CF2In+Nf~eYpI#i*)0M zVT&6xjB61L8*rVY$dr3N%UFr<=XV~exX2S!s<@;uB}TYlN9C;K#9CCzDf>t) z6!^ zC;xp6R3!SH9rtk%;Da{uZQY#hK27>w6dUK47*~}X0st|Eh(%c43LmRa{J^*QgaY7n zdK3GL&1935kKKx2Q7e!QTm-CoQVRJZ_$Q1B4~ z0D(z{q7VRxb{`?Yzsz3DO(Mk^T1%KHixx3!&A1qY@^~|$+?brFpx{16P|;XNEIGUS z6#MgSSeNOho z_hF^RpDx%bq4F%>+77>~rzGYf2rGo;&PP6+1^CHjHWe|J>VEgT;OS9rnZ23LcR(zI zn4I8RGE-CSO(U*AH)J|Dkc>7urh7BM0^hj2aT^e_v=j6=l39y zzFlq!>##ENd~SmORbsdtG}JI)xz7O)R~h%y zP^)^cQSuWp?uN@hrYU1qsD+fju&qZE=>x+AsLd6_4Le3OKGxL#0|OQ~KM2nLK=zOi zvy*kMfe*vA0wTCb8jpL99)G!tFy-t&A)KmE!PmBGZoGHs}-QY}i)`V&HW=Zn9MI5XE<*FO2JgL7Tr-{Zp@YA=&3Oo z#3CiOz-r8Y?}ckh)VTX6#J~oT_+sJ%n?D0tyctVEY=NH`EG^Mta6WC~M$94C`e$@i zyq9U9Z^QWhF8CIgDPHcI;DL>8p!CK|quO{`%U(tVl8+9$?|?$@x(tPPUG!U_%|_cE zYQF`a{s>8KiLC55r~>w7)NeOjbO<=72_>D%kB`Zok0gyJOWiw=<_iD&DzA)su3BqM znW54}608(VY7Sj)FA4y}Tpu9-5c7P50BB2-*p?P)o%{tl$!uq{XlApZ%$D&P$c+CO zr-)Qd3^Q>yE%(P%pA2R}n_Daa%t1w)ixlRBvRs|7ijJBu zxFLwt9OIzqM15OEB)iryfVVCi)HHKUAH3V`0{al3qE*k7i!W` zuW1fiz(R=Bmc<9?6V1m2>Gq}*I$?YUIhxk@`VoceY!!tccUMBFhez>I`09Lnx;it9 ztoh|pO&5g?Fcvs%K|mt zPOXlGGGXyKGkmUElE*I7G(@P2B-Dq^@fGXqQ9}y&&M-t`(T(q{#ap&T5IOh4%U91d zZOrQg798f41G~US@|>g!&@bSK zUQOdVXo`Pk|1M}aowhhRtHNjEr79EWxp*ZB&-DOu#-I|+|0JSX3fu>vxefbyYSK<} zE9|v$<~HhArt~T_6rudECW zc^Nub85;63^oq*Rke8ubD?>wGgj(v$GlIdxoBS+Qgr*AkmlN*kSg$0LOE}E456GAIcbL+>@TrJXY`}J;v2Y0 zRu1|6?fVFf_52)JpZ`~aa;=~mPc6z<+1Ufe6W#YC1g#W!5sgjE&00boLbP_&UK zSFiS(M5uDjjPD#>WWRV9u`coF4n^$D5hdPTj64Z0vEXOVdfQyQ2lXqSD(^0yE#t~V$S@{h`=T$$vQ{pVVPz|m zg_^|X)o99{8~i6T>mnIEGYQX6QUYiAt#lTHS zM7{f%Mh}Y-gD)s`+$99XXg%~%iwA09yv;}m`4)0vqw71k{FdY5lhBKc-3aH87osc% zM1FJ!$A{{f`>Gw6r& zC-iKe1B9UM2r52@*|xPkb5bzdjw}8sT$yw4Z#X?_&b@Tojs8B)0DC!ED^_u4wNJ?Q zTb|j-R-h)(`lb@qFcO7t29s*f5HC(jusN35^bb^h9?&{W&MfVK;Cp{6+u6_)GqW@pt_n#$WpJ;$wk8J-S$2$x|j+Noc*Aau*BL61L|= z;Q$;om3HWD7{7*Fp8NGCi)-V)?YU)aBqRKV?U?y`L><L@G_dtmq>Q z6idN!Cku)&P%K!>ohT^6KvCD0J4sN4fui~>w^>kxfucq%w?$BdWe@SEkm($>J4>#c z;1fH_!tn&4(cQ}Dnf8E-))qm{6QTu}OkkXU4lJ~3b2$ue=#@PUovZNy-dB+mWvLtr zYHU9Mchwi)3skm!SLebK41dNiJGAno%9Q%f2}lAexuODd1LFY>b~O|Zqn@w9_ogr zPLvB?tdV&_E}a`CJd{ZylqWnn7>39e$5;!uCe`hSfAN?A9Tvz5ii9BNX}$3H zcL>RIebhg-2a0Z%_l4c}K~Shxt{lnXNj{$okN06PE+@36vj-%RIs*P%8G?e`(=SK? zfLP`u1i;a;)DM^uG8?y;&N8@#to8q~b|!Fg71jQ~b8k=gOwUY`$s|3K1V~sWT&8;x zlCUIf3H!cpN!V8f(F@%PBF)STE}-n2iYSOtTyVjCd2YC)K7CQ1J`orN5!|2qPW*p= zr|RCmJ((cy@0-tOy6T>)I(6#Qe(KaIiNl4@OixC7thJ2z&cQgsq9Kk@KiWHt;-2H$ z#Ze@1QB3u^?6J*oS|O$ok_zO)I97&|EAAqXlb0+97gH7c5H&|@Q)TI&s7*yCMH($s zdNQ?`r}F|DE`NI2L2t0#h-+7BNBd5NbI{>j_Zn)+>-XdlKQS3GINZF~8|>)iFwYbB ztLc7iL_Z(gb4|fSdhns{*5>*_o$9*u|Fj#pa?J~dSGhhgw=VqG1ZuK7-57I0tSwoiOw|$EBilh z4|Mjevm_!S`vn?hP@{E$H? znaMb)^;%>K4z_WRU#P}$6UTL3>Y|0X8^?g7SaT3197drxRYpSY~IwXi@1M@z$lpH}kg!s#6@hqx!pA&bJ4-WH{I z%P2oolrN{{9cp7#jz^ft^E`5o?&k9C+Y;$dCgnSA%P3DyiZXr6D9=oaGGogqPbf+q z9>kbb@%+t7KcT?eLN3;i&m@#h4bhYiuf*T}*2?qjQ~&F&Fj3w3`2*s9SAOhIZ$+xM_=O&(Y9K z?lcyq)tsMIR?pcMEJ2Pte^ZKo-pwpoTQ@^+(AF}o@wQX^dqvr5Pn<+L$JA~3tfjZ( zLqO3M#adi@ls`|3Vokd}%3mf$v8LS~<#&^!Si5bH!lnJGnr3^XUnx?qXAa{*;!a$^|Ed|of#-Zhym=d?kpMVh;Jl?q!met z@qcI;4|bSm5dv)IO}Ypmjh5*3t5L*Aeyio`tWxqml2%AL2gXQRTJ3W%Kyv|k10~l^ zl)G!iZg=wynet4Zu&c32rx@tfVsA5Ddo2sbyp2-sX^kPuVgI(dcsm(2wjp9;TYkol z(wt*tYIN3DCE1Pu=TEQ;#RFDRjfG1Ol*&AV5V;RqbL#l^ZZ^!b;QH$Ma8X17@1mKK|&-c$~^OIEIc+X7Xd~ zM154^d#R?du|QRXTndvR+sk_jUK@L(U>C~#YU4X+K=8e%6vaCbXWdKTDOUyr_a;k%`ZWp$?qI&rI_v;w%sK?&nyPoOY3j^Sn{i%!`?of?8EpTaxqO@-fk^! zOddrg(`6kcJ5j7Kelro&epjmfe%qmV{nRLaAzU8CM*LAS3<|BSi*{GwI?Ck`JPd+# zf#qpP9#PhVuI8GmQ%)}9cYvmi6)Y8v6(YwUoc}VC?^&YQeySy3UxI0x& ztG1F8Me}>nfdG5$Wwj&i6IbAhml~E*v^lOa;ESsqOSf3|i%Bf=cq_rsB8T^Y`n)}m zJDFOrnyRky9FH5HP2*pvcGRJF?c8|jLfG1sM{8kILqRrpD$OWcytk6~D9z`cxcNcT z^^v*3&{8*M(gROdcG@qdeI;y+K>wKFezZBW`4-k2;m+~3Lf5n?fr)6jvLXKyJ#lfaCv5jJg;!$CY|DAwY@yGaG zj*u~*u3U7t-GQcm-^atUfmou$B!kH?S#ZZnxm77mWj|_+2p_ZzKVrY4YV;hJD9OZ& zJtf26O?3T-{$Kv;ZrETZkr`7^R+egxnS7`(rv5yx8RYFYZ6CLc{=u(ZsvBCgK8!!X zSM|ld)Y9`XeQcBT)YxKL5hh?l{b(>I3yDx&8IC_Pi7nNt6G7%#RfT;|Wbsf@Bq!q` zC!J6`a#t8kcs0TB z=Hqp+%&GNpG~8G#=8uxQq-R#9OUWJti-4szy;iR0geR0e;Sa%xv9;oizCNt4)A*vD zN)P9wP<)fMQx&9ftcq4h7OQO4X+@N(==0^q5dxP6*9`Ym7XQqbS;~R6Bco&q5qQN6 zTCn?CMvJp?u441OjPKEBIO4(5(R#9T>#tn$-P|}@DO|u{vJZ{T9gcBi&Y_pR z)7m&oQQFS6o|HV#_34$twx_4MSyAvo%7nfZeXms}=U@LMjk*?Z+J%I6+MFjwk7c`) zS|~bR*-cfr^Axbv!fnaAgB5=g>n1gPvb#*NTID$`*fz5V5t$BsqVhDY8eN@VLW+gH z{;#4cCU!0ty=|SMv#rBn-768i(Nymw3&<4JO85-&|<3!2M&=rPJZb&S&211%D{jFd&Yq%N6d4mnlVokYv z0@{aSO;0Hin+u&b9EDBICk~Vhi)dH#5}A2uKl4Uu{kzqur-h|;^6+e`23{~4TkdoE zj4ifgeWo`!>qV}7S9-)_DnL_%g9lg}Lloi$xl9c{`3*$cVMu$}ojjhB3$yWsu_a)C zNZVCS_^CQt|1l^<6Y|BSwifUw6>=-3J{{s}^L@Fq32W{$nv+`0pk2uJ)%pd)quQQS z!$n`i>A2AsyzClRuiBT)f!5naYvWri2I)68xT?7ot+}bRcJ9q72QLiz54OlUw6OXO zr8gYhVdd3gAzhl}`@!P0A9N+ck3LghcQhIeRy&5Q3|+~eRi0%fY(;1Tm^Sc-CT34+ z;Avsp-M%@&J}0N`wJ$j3ytG^eyVq=I%x;T#t}3|FSWbf*J5PRhM@W}x#?IlpICeI_ z+MlGZpcK&V;ZnZWTKR+~EnnDFl)*JUCBsnCrdX(x6=bq-%QaYEu>B%OpZdfqaJs#4 z9w)nCA&u6=htn$!uY*)}-3oR$7xV?ye1pp>52V&UFga^TcKS(bePSQO6h6& zZ?ILCOn31wBfi}W`4ht?xyWBomuJ z3aekD&pkK*kSCeJaFz>9(m;6;g?7Y_2C7(lO!cEp;tB zE8>D>^K!mw*#Bkd?dP(~yj{ET_28?1(<9!WJQkK*@@3s55dytM)5^BG(S0rWJ?xAR zqW>?f-W*<~47sL+U;-4SMKhOQ!Sb#xS67ai*q0$j?Wt}=fmey5w5if(TDf4xsc|6j z#>B65EKqQ`fU<5F6J6e`oV`GazQR7n^%3(N;k#7hQED@OoFA#)Jcb)JzQu3yy*ALp zTY|omfey%RtgcWlZoD}FdTi|z#!nG9H!;Npm@|Ra@cI|f_G+E+K@`Y`OMF#KVtywu zv8(kz&DHKegD#jeC)i%?Rc&;yy;|eYO99-e{^jO7ZPW%AVUf_5__l3Zbreyy*txA> z`GTT~sBXNNyl6-A+f4>6StXneR|krffl_s5f3d%G7pGpd<#In2I#5Ct7>%%{Py1}N zlNjhy+(lBjm6C9`?F?$uy~l46y3rJFtWj2x zKu@v1r*Xc@0K|3+KW4d7Zr?4~B&;1yaxfK)cH6eTlKrmd5J7v3{k@(WOhdzL9~M6X z=l2um(Mc5N`=;Q0pEysvm5Mh_@hbh(#P#XL{^@?pk=D{Q;hx^2bzPD1X=5^Aoqae_+CX4{Nm` z*qA>?lgh~}KY%(M@=8IGSFWM}TgWRXr!#rw^G-KDWqyJ_cYdvO`TVv>_dYLPc{vE( zFcQ_D)ii-nl$jy^xq3S{?r=0ovwe00k9h!WNCDkdauO)VN<1V3k;i0K!dBtI{{g2mr}uka=!))3GzO}4{tq20M?OoJ|DiCgrOTLD=oslD+R`Nj80&VU zIR2o+_-zLrk_#S6o?641T+mn^HdVFh3ei}}GeyQAop6Xz`4bL(=N5`?EjJj%E8X~f zK>ZDr!>u7yQ4HtSKQuS%&$p(V2ujy^@!u#NO=z>6$jtZHoPpf(F9PNJDVG3U_ti78 zbGHbw9=t%qT2b|x506?YhuTwGh^5?575jV;It@?*&@N6kr|z z*QWsU0JtFqm` zRM+B#FDFU4nUB$M;>BT8J{CN;;Ph}%sm}?F^qM3E)4E5%z|lio5oYh*Dnc>Y1^)W6 zOs7xCCJRu&=u8T4lKFTN!~>MUa{@ZtxG)-Qe~cR!G)I0MII^eyaL9FRlU4bd`ULox z^cXWGT8WPYd(y{u%u+60E}q2qnoGuy26D-108L(&bZ4oClUe4sx&K9YS0}Su0Lf!q z8r!3UO|^dv%9)!xrtuvzInCm$24~rQR@-B&qYQ7N3{ic(3av@7P`^3#HjaU`w5@4n zmM-HYv*c+QG}%g=OZ4-_oyC)IY9(Z3$C9elQq@P`GPBgu=1=}2F~(P%J%bAQ-z^?S z@l294Y|1GY8zrN^PYY z@~UklS}XeVxxQe>UESHwcU{wXfReTjC&hm|UeF0;da@`WYF_FXHhxC3O=^GIgbxy$ zo5|D+UE4&18|s|jw~0C^%+OsMbe*98r6O3Hw*9&Hx-Gbk*)LD?wC?TuwHa*m0Ha-2 z;(TVVby$DZ_SQjNGdwYiWsNa8Ir|P{6M9~h0TPqVaebdw6DHGCCkNF3N6o`d%`}KO zUB(#toGeBCHJyFqF4B#uk7iS>9~@GdN#9)8pSBC5vnrUclU(LOwxDlTo2Yl}L(d&- zEGFNv*NL_DZ3U?~$mbecD2+FYxZ5qs8?)~_ z?E6F6_iHWHJSa$((3Gs*p}*nHIK&?~hFcy6dV;GC5`oO*($CS}Uy^HSq+-rj!Kkm<43r=LL z8^tlvM)sS(x$y{V*5PpMj~Fqv?z;;WenkQi}`DL65Rgs=5M+c@KaR4CS1JI9XjlAqW-bhk*9CETzz@K&O84ModXbFRAur}{zhnXtI1}L7)SS<{a8kSPYNCJ6to@qPiR{+C2e~LgWfiI7%T{m zx+JA7)caqK|5mih5-MUBvZ!{uW>o87d#wg%0`;L~KW(cgR4r6b$-7$B)TU5EqjUAN zTQGQJT2CDTl7ir^lk0qr!$loP^`M50g}3A8ENlKCuL5C~HPbdQyu{(weqapT`U`FK zpJ<-9I~}&@Pi!TrD;~D)cipEJ4*Bmv>rVFWy^DT6sTW8l>-yPF4ylQJYIDMToY2Qn z;tJEs!BnD~R@BengJ^r1BMp0Sr=`JTZy`8roWS%tw$Z#N%KKJ%{qe%vWJ7P2T-kAc-1K?dLz&rr%PXXou z@a_~~9suu20p>xDprRxvQ4(91odNONTKiW4kRQuwmme!Zl$>m<3}Nl<>Itus2T89X zJB6V5RDPWJRubdK!lroR&PUw%=FY7V6Sd^b@m`d?r!=$-sdCs9+mPalfWEHoMNw(= zpgBD^mQ*ERe90RZP7dF*0>My0Cqyuyqo1U3u7-}EM8nEO98R1pp zeoj=~#vI|k*r85wzX9BHz2^GXaSsoL@gA_yU4&?;!buJ@=ANWKbgDo`-X8E+2%V?EbX=tj$jxKjVD;+sgJ`6)nA;?xl=9NXBWb@t0y zM@HH+I2nGES=y41uF8^sXbX(7$Tf36m`b*fC|S#BW}77%fROk+!d&iVnt5Vr`+0z) z!XE|jpn|M>TSY5dhvYF&DdRnR6i%>$1s9}eSO*9DTpeg@MEj2HO}e*>*FX2Xe%A5& zNXP5VTk`sD%9-c2614OB7a6ZV3`NfVl=SxAVPlS9Vt0;T0!>l+;j)##I5I)yiy+6j ztk%2t&r_lu(=kMHwd`_sWju$xFIC>I7BmNOw0J!GC8CcWj_vHMcJvgL&t@IR=3(*y zRnlX`^IP03<`ng)aXh|=xFg$T{1=bcirM`6ChSY`BmnUtp%k716ttWPLtBTtwm8m% zgYJc_f52$On<;aLHz>q4XID=2k%D)sE`ROovV#a@dKe_pZ+LqcE?d7rd%^PlQX2=0 zO(oEJX!`@;>}C8|e+ub8ze%$lQ&Sb>w;4q3E_W3DF-0hheO%D-u&K}FY+*XdzX zQ1^xPB$P1KmsUXcyHr1eW1mo3mqa`9a&>yqcH%sCRf zjb%#E-oO5saXzh!KV=ZB3(lfBBbHjgzf*86Gd?L-qDu3efNt{X&>l7w9wo^6i>koW zfXVKhgCgK}W!RZAyhmmDvoAxJD}!}OTEbtl+^yH0fEZV;%(?ZG1Y3G|0pI8-Mp{cnn@`deU&9$4RVfs&mt;svVX3kJ=ci44%z0 zFhW&7!vBEqZ}#|mS~N|XWG+0gyG>hIHcI=OX#+YNhZgW!=p53vTJ@u3j>8?<}?T3p*k^ky8> zA+XnxRY%m{LgxenxJ9q2`T__xK^2xg#=lRMhH(otQuJ!REzn@mtF8*f;{r-9ZL*>? zjx6J?=w7wLCh1;ftvY@Y$keJoowjQ8aJ?;Ua-R`>kqzEspH(Ev@7`ZEIZ_lSU_dCQ zc*&2TN}^5scuFM3>H)mp?TMTkO- zGE=1TAP3IKlTq?bp#=4}akZsGeUOD^RXeUI`IZ6&+{AXxowO(41IF5^Gmv`shtwxt zASz+S6@Iw|YM9CUNiV0%{_Eu(eC$vQl$fXL*y94Rvr=PT4e&UW)7iPScel9Z8 z!i->uUS0~$fzF9~F}a9z{u!;A)p=p_bH=(mT=)sd^Dia>Q4h@}+k2oG&1(FR%Io)< zr`WJD)zbki9DGfkkMqqkutTBGY+NO>i3ggXzmo~c>91`cY_qT13)7&2*S#s&TXTox zEW5#j534UW?jafK$tti}flz^E+VFS4z0_lp6$n>H(}KBiy3g(mz68FHfUk1nKbYIg z%iqj5Yw82+4E?4R9Ek;}WDG9DG+CvGM+Ic3XP#F@4*O~Gu%jk*oSrs)#*5a0^{v|iA7_!REPgul>u5@rvFO+`;mrDBt>s8))d@fe5~cGkK&6WLVd zI4nxczV#-;c>rGiu05T#b32R4?Ih_;ZsxbP!h7l?2O~~;5iM>MoC>NA zI=2z>L99D);sQU3tbkWh+ACj~}2GWpOEnu-^MrCnjGz6grqaXt{cSir~eqwQEfX>!1)3BZmdty~tKP~Mm6rq3z1YdPL@Q-7z_ zN@zH}vt&Cfs$rpRY^iF3w_#K;nV^o0p=gSBVnj-hTxcFLlSQ72Pl2~(gfda{kadk} zWEOF2JBIb~j6Sr+99U%kBm-leZprj6!OlJ;En|OSbVdmid}00bIap~iMlSyhpk(`M zXXMg&(qHIWLfGYpVgPe;n5XoUBJHy7+DrVm8c1Ug3fdj7>%V<;C2;|8o%n7+S9kW&aV3CFD0J^WAYLFJ_oCa?iyX9)Lo2cNHB+$O@>{f zRJickxP%5a_C>KgT?u}P56zk8y0b6N9D+}%{U)Gh$`eA2q z1ay4T+U0wpzg!$jZA_ka_weBS`0j*7BYNbRtSoYm76q_!x#$fv0^QX=x6#!K1hM+} zJHY!X(NpV-oQZ!RvXSYS5H`i2C`r^AvEsnO*8wgSH<-S7!`^yRav6Z0((GjmqsA{q zp+kV__Tre>Sw$&VF1AAnt;Uh3Qf76;frw$%o&rR~)%cYa(PH}iib);(jC$G&y$PB> z4b8klNkngOmx}ps1|?T9QOOcdRWSv}=~+H;1GJRSh}yT1NPW&w^mdKTW%DDFZJe-y zhAwJlnbl=E7m{_PUP!l6az|+=Pp$#XY=g|Nw(4FJ%x9px@eNfE#@lY(k(sV%b}whC zU6{B`kT{e#%5WT#$FeMBB8(gEm6f+2C^k#Y4hDK)gx|`w>PU;^vh5=OeUv}dxgKV9VC=Q4c2<9v<%`uk%Ym&jqa!+@ zmesl)h-VFDpr_j3-(yX{)F6#G0M>S%ejL$B(BHG3Q-62uy#DUN z1Z|hH-;?Jv;^C!P2|cVlbxzZY{nOfWnrKd)O}Tb1hHKrXKc4}5tCbsRxE;yeTg^pk zn3HmuJ#{XeY?*mi3^UHcFk>;foL0Ek>nVIGMz6O#Fr$A)E$W|Ich3PdZ3|18&dOO48xE-S1h|aw%?^=HiY7@ zcWie{>i=HHc7II$mxtTk5n7yqT|4Yv@8_u1$eNEPHtwxK8#Y7Kj8O9^m69tRK+TB- zeaRWB9+~ClkuW%f{I&rHI|}v0^tqAGLz&QlzC2QNsv{2xHm_*LlIuqt#{6qjLwC_^ z9#`%H=`k#ykswuh-?WmTAyj3h$s9W?z6IR2(YsL|@>Ku*DJ~iHHy8-%zm)`Kp=yKG zYPn~yx0GBZHW#>2Scu2)uAc>G*dO)sJDYD=v51V+!}X1=34Cz}czxQT=}Bhe2?yNm=&9cane=tHxm0ezg2&ee*iO zZBP3h#=b9;wot!Ntx1xZLeedjc=z_x3Jx@wZhL_6!tm%=wsCUzLDw&!P4i^9c1(FY zr%!gPl{v3u!Hx+_aYS#5W(v02nCa?=hNSBu^KU90cf*w0j( z+PYr)On<2i0W(}_iYR{c>wLF6!puCSVOv(TeQ!^(c0}=}+99Q=n0$wT;ej4oC-nCW z&_2EaWT0H?FW08^ms`&#jTZX5vD8|&WmA85YXeeptn6if)TQmcb^wK>Ebkvcm9T6? z;k|lle{b?hdHY--&gNfPw)7-qE zv9Z)Y!_N!7F8p5lKri542liBw-2!6j$wDE5kJdP3bVc< zs+c?q33~tQ8rrTSmtJx^z%ga#du*9hLAB5BRiY3pkSQorV7)V-S&+Bn>U+uPU~ zu~An%mtU*DzUrCXR(tDMXNH>Cn%g5v@@qeBDNEJu*ix3*F5Tq=`%8BuFJ}bWnB50S z6D|D?7Y=MWXak*=gWfRCT@$mqT@%2(J9V8t4xipd*g3fPR%fqI#fYD${E4vvugVNXaz>CD-y(uI_-q z^3}p%A*Dpvta?qPXZ@HMuK_yx9VgPfE}KLhvg-)*dzKl&;+1YrTGY56@CH%L*+e0@ zn*6^hp0@8_VCwYT{>2z%wNmL*i_xw{va}+vJxLa#L8vwpQCQJF7x1}pu&)aDS!QQL zwh(OUt_@)Kz*=x8muC{S;Oe`ITyaaaNZtdh(IR=DoX+_DVm$lzuZd!vu3fgldt26c>o~kascxHVEgO<=Ald)vvodr z4rQw^%TNwB_GVx$7wbnFNEy0UTjHnj@@{f{jRok-8DzB=GNs&SM#d^}O#?H_q=NUR zAq5w5S601?h!_@XQ2~p7XcLsp zM-8LnItO#cn3qvA7G`#lt+L!5Z>@dKg%>nI>iN%B&!(hh2zi{w*=fGvZ-i{F=r_5M z2BM}Qd_}{Tpov?qEePW!fO=^XH$1GQaRxt2>9m zMRju-^n43?Tx4kQ8LN3VUPe|NUn!Atw8Xa%fE6@eZ?pz8l-ZfO*aSDve#pWyAMi^`P@UBClDMZj2~MXJLc&tHJHQALV<I*hb#vLgpxf)Gp4qsaG%SYhz)4=qPkfvTsJ@_0 zsm6tcL|rj?9g(s%*Ss`NAwGf7#$HpzR6Azb=y17setc<1NzXliH|@HjLoxGQG7ffTALMgz83tK$`HnSx;%M3;Vzq` z3l1iC@?GXVgCKqbzMhCH#iF5P4>Bir0VC**IQE_auZP``&8lIn$D?_|Jzgc3yx}CRhzJc1;rc#l)#-RwZ zOYYCszCY1lvh@T@@YI}Qn7mc7-ezca@o4_d=6cpq_W>SU#@<-X0;!+cjq%@O{Ld*c zy7iQmYrA0Nu%O?S>w;kSyPRKZ(O&~ZD8qf3kJ0(h%?D#h6v*TE6LR?oP32zqRQ^QN&Fn^R9ZF_qhOjgzJC7?53)uqv}d!)PM z8mz1D+k;&)+ce|Bso!z+{du1EnKd#_8z_Y1BRYXbLu-5&Je!M)A)@gP@*m!ykmQ|s z-S{1u-IG3eS-%y&gf!;*-FV`65ycL7T)a-x|M+j>@y?tzUS4c^D-nyy{lwIRSPM9{ z=qj!mT5Sgp$-4n}4XtL-u{V&GZlWtLnMNFAsRfT9p;t82j^7O`vje|D1z_}y-=hHP zS!2U=+!<=e5q<5w1n9_NmSXi&6TCGS#b2duG1PV__1t>rQCO{BTc3v$HU*1++0EGf zAkD!Z^Z2%6TR`$tylFl=lh60ar|~}W-~|5xoXy4e^V|3UKRT#6oE=2Gi8KpC6K#D; z$>-L0cNre94CBuN%VnrCgn@8B0`6%2E9f7H+-B6TCwBeTh>}}7WhL-Ia*01@6ltx^ zcE$c!Bz4ALpah&;VVeyZ%~+^Mq$=7K@Wnwj4EOzCF%Up{kU*|gg66+<36*g7K+H@GxbkIcGvU+H$29n2(K+$&v^nIT;P)I&RMR(fovVFp)DhFHS9|qVwoeo-##=F~S zRP-C(4nMf%Qgj}pk;0U>8qwj;#}*B&ps{GBzEr^ed3-6{bp#|IA(Lr^{WcJxjU>(^ zDH3rnBW|&I76jIIEH=-UI}b5u^9+2&=9&CXLlQqcqu|<=k1{u^KT1PSo~90>&Y~4? zPVz%BC93}+3ju?Q?n6|cC7ZvF6u;s>T0Oevwo76CFsvBezF41rG%uN3qf40ool?0w zl75iSa;K&1@y&FXPM@x1>0D!-DqRl?rFW3NHWW=OjQ7Cc^g51i;uzt;dvlDJHC4>( zSQzXR?Z`NT$3(kjT6TH&*qtYqNEd*gQ%zEl1ZKt>CMyNakU*+rebZ#m1JT@(^>a-&`p1kx|-<@{1LBmM>UGiy|sPA?RK6Tsr{qm__*8eJ>8c=wH`uaiG$GoGf{0+?jBYXJAg5$qyT-*T# z)iHVI){hg0g{THk2V-cy8Rk17pMp73;XEYJlv^vhbYW9*`Ff$S)UVU8+HqvE%ZZGh z(Rnsu)jvgqFut0cZBlJ8HnGrhB;To;?_y4->Z>Cjc(j$nav7}@v2p3(#pL5O7gsVL z6JbLK=9NUXCB{{eQpvpnqLPGe~{5^6B*a$*qWAWGwP?1HkY8-_yiRA z3>nWHi79>gT#Jo=Cnm}d#wubOiD}HP9DTlUF0metRUxtT>B`w+{d*vVsm-(g%lfMS zOuwvbwozqEPkvi@xSCXhA&o|vkL%Jc>R3OpaA<6%oamDHlVlU$tmeShaR8ugKh5(J z?f@$GCGn@yNErIEgy@;3VV};z2Db>ykf#~43pSL}EmK?R4E9&&;IF>J3Dl1T+6)<9 zrHnRL5WIQ0*&ub{A`GT#DV_D@q>4WS30wbVu z_;X9H@u)U8q*Mkzg^0wL6Q8O?6?)4_B;!0P447YnAGX>`jmeK4L9vGB+|`^-O^ozR z>|B2}v8N+hQJ1tQ_*yUg=9*GiYAj`??d0d647%n7kvj0X4YU@tpnMQ#bMbThHa19U zTo22gE%NH~PNeK-iMqM<#rW;+%&Va7i56{IJh5!tli*yguG_Q@>dRGBG8WJuu}^zC z2ule?tR@f9j7DepmO0e;JfFQ2yLjc8Z%&}SDJ_Bg-p(N&w5TIpRI!&0EDH8G-|fXX zuZ6&{Ih1}o>7&NBgTV15<#Catq!+^2tQ%+yW8j6*tv_TuR$J)yfbiKtk;o zW{Y5J4`EaOgw=I*pCI zsQzBEbr%AnF}2x3{bL!VFs24a7yJSsr*DMRMf$IPJ|69Hj9sDmuJL&~GUriYa}KGB zu4a-i04!E6t|VW?v(SenU*d!77CjTuLf+|a8%s)VS|A^-Zx~^MMTZB`HGIyk|6FvO z8#ca7@-gL-pUZi%a#F=maT?PO1tnr|l`g`#ue<=z!bM)@Pqg zG1u02#@S-~%v3g4l_E*1c~nMcv;7(6Z;Q%umG>)D9!^y~hHrryO@4~!2f2wU206Qq z?Z>rJuy8ajUu64rlLdSQ)-!ZJgtNK$ReqaEHqSMolU#tEY-4!;s1DfnBXKW-w@NaBK+@5dO1hLq3|-ZMqinnD=*> ze>n*=rtTmkStazAm79TVI!O+&OnqB7`mUbkS@L!;XIw@b3J_fOH4n1l=eomAbtb<@l7Ik4&b= zWQrhO2}{r%?M{A0O`u%Lz0H|`9jB_5fu6_jg%rR`GVr2V0>8#lDCX^Tg3J@1ApN%% z|9rg*Kj#64ofTWwkA{|&`+F;kQCI1i*gp?nB={18@6wHR{M9{OrVp^!8_?aHnAPQU zQrgs2Q55cBZrh&)T?kd$^M8c@S@3!quKon?;U8PV0mq(BK)|=wZ#UrnLhbE0Fv%Z^ zS`{VVqHvWZXXh)7i7{6*-(9RU`pTs#*59!- zjp~n2uS6MSFJg^}VJ?5qq;Er0UZy>t2np!+xAjq%F-7?B=s} z33+*Q{(f!_Wyh+7rljN6lUt72%C9wMySmyN`ud=+Qm*bysf44Lyd0K9@iP=oCM+E6 zVPI&V4|2qi%WCP@D_XZXdu93c0av12c}nq5z{7i~t(C!3X@PRvA1!=bnM%Qeon4vc zHV&l5*jzUb^6r1BuK50rT-sV|4;Z+^yx#T;6f+~j+X|ILL0YK3SXmW(^6 z0P_HdQ-FE)3OPJEQBxaxoT@g5myK#-Sfa0`QSu0QjjwjTjJA?He@eQcg#)k;-$Acm1)5-MGvZ#X}T?cE2w{@f`V^LKY=QgNweSbR(acGEq}GMal84h*6kCjxV9v z?f9+AZ1|F+h-I0uELR2wh?0Gbq6}a$ic5C#agHGoo43itm5jKNr>mUkSyIIdjhtj< z3*nJKd0?rPU9um6(bBJ3+s($YcpfB=ZeM>Kj;9O!e}c94xX}sEfI6qQ_y$@IyVKqG0Tyik4t!U7VA8LI8Z1w zF3wQ@?qep#;E(l<|5qDN`3Jf?Jfk&?JiuXE${4DaWTPRI#08H3Vz4f z?^d2pX=E3N!Zb!2;t3Oh66tc;4fa_aQ-)Q&vZu@%sulyeym)&}3o({$tmNIo&O88? zqyY1bP~J*>nQG~;)SIO9y#6qwekkRr-^!0yttm8a6bo+C&x?s2cIE(ylCSm2k@33- zv4QLLPlzQZIk(e|Fup|9cP%rr&G*PvgWpqrv*OF@#)6ZZl+nwG$RW&2aFW{r)Gi~~ zzOvxn>WN*&CEJv`mPTFG4z7J)N#wqnQH*%Ld{K-7kWfxazySDK6Qz)V(z7&dN7XK=AP# z1?-FBlc|1|S31AyYMozUgrUn75%VF(nkYRj;LZEK^q!@9Zgw~Z7Ya~wo z-Uzn8!=2ly{FFWT2@m#=KYEeK9;6K$ zqaYpIQ{Hqp8u`OTng$0WRW>BMTX1|U{Lx&Xgv@45rAmfG9l+%RYUgjBG;~{qvSL=$ z^dw^;wq=DXYz53y$t2bn>SU|(4Wqb~YQCkC%*~R$na?p7C4-rmV-oD%DdN3l3fRUe zU~ioQ_O>Zt_qAYbB#cqp0GfPolM6UTgG+XBlM84+xXA^yAKc^u5G|&tzNQX-s@0+! zXN;DxsTy^SF1*T^r_-9o#p;f}ue}wQ3n%O)71vfFsl-+ZYV=l1Xq9zFv3~pZnPAn2 zyaSY$&I?&w{I>%gT!e;`1hihp;u9#yF3!A&<&tg6(v(&>wKN?=G+H^iotw#Bq)+)* z_086xx`Lg55aqN*P(DIDgQ5dnLl^!Ku6z~mCe{vq5IM70zmxuDV*eZ_C*~hrmEN|m z#9ts?4+5M8Bpt?lii8Xsllu@U^`futD?d6Wy9vKWSJ7i-1^%n!^jB{db&oK)2!go zxx%*ATg%rWd|3aW3M+x1t)V!M3I3)!cTJ`iBgs}I^Zz^X^cEkNdqOTd zIhW_Rk3@NNW=CXhv3WFK^XH%6TS|R>Ff7>M0@ie$#o7SXO!wJ!;aO*oDS<_CDb{qK zHPAV;0}CsLpgWC%>E-Q;&7+7M{}|E=yG|?RzLvm57wVvET%^sR4rIw+W%xAiv%U;J z@?|iWG92T}Ah*~&j^Ft!RR-_t+n%)gqZ|U|%Arpyhdfy{moirtg<4rGzLn)zK=IRQ zSz2GNEcz}r^}EJJ%9SMy&}|Af=j+4QgX4j_7pXY^$d}ibvuIdbaVFytkBd#!YAeoU zJff@E6t@t}MDee!X?=#K%n5*^O z0i5IM&ji{V4j{Pxahqk7k5YEW3Y07zEEE=xdLC9JgKOb z)cZ~M=5AF=htB9KJ$BB~>$Hmcs;km_^mcfEakO+X2Xw>b!jf>}z%J(BQhgDu=fSGo zaQxv0>ixeIZFaiq4F-ICD+U7~R8>AwEG+5msvpidheuN1tA)_d&X8zllKsI^XSm~F z*<#R{aR;=A$v0_*DZbE@@XN&;-$rQ9Ad2|h@0y7XnEnE0n@sncI9f^-!$u>Zf3~Zg!FcFq_jia>z2oX)p*!vxR~NLs$hOY51$^?S5Y;t&p%*iVwj|RfH<(ISl^Q>j34A{q*y;p@yriS?R#3d ze+DYy{yDDU{)NYVT!#CXK+N1-hI?5K_bD0fIuxCmrTP`A>U(DqkC+~eYt(S${*N*d zNW+H%{aPT=_AzJ-)sFmKh|zu<`8?jyUt*i- zP&}@cl;)q7ApAus4--f`$|z%ZX@1RtO0rDxQF2dy!_UHgZ}ZAsz*zclY5o~5UbVMW zzmVej?nHC#tL*v;ED`TU0*C6X(#!nC1W`u z_B6g*Oj}C+9)H2=wvcPjwJz7RP^TSsqhfD$Ho`bH!9FZ~T-1HWJyG|?r_JbamIZhH zQK=GLbdT97(K>gGTIvK}RCe8f#yqEJBX)cXd|Fd3<%aLj*jQLoT*5G*Q9X?lqWp1d ztAFH@RJQ@+3|_Hv_epK?sCJb?U)*dC5G}_;3qxRkc%0=EImcdQ;nj>?J4On*Ou7BF zrnjqeNpGdIG<4b;i`5&3#}&HbzcEc6A4Qqht?8X@oT7N=(A#f(IAoVQN29Q+BX4?A z4T5VIQVFs%=HB_vqa&$^EW> z7d2j+=|1k$M|>|NjPBrr@6QM8Bi5i=EmX3LDXrTGpCYUDHo|{cwl?pp?>+$^J;ohC z@-N*-z!<$l^?!69p;dr8cTEeR`ri?{XRH2ma&9hFCAtLbt{*TPyKUyAeX2Am+zx_e zyh$?LZ+0Dvg;h73icz$V%ed^JFAQt5LRT5=vcvVpcYNq2Nr&JfXwhF-J3n0i7S)Nx zx;OK!%zWy?E)?xX?_*f?J|<=F+nD*@n)%-8edOxqQua>v=Sag=pCfS~jDJfri0roz z_o@tzW<@dDiSj#(qTfQ?rznNv5=l+wEbFO%m-gY$($|Z2rL!{33gh2fI{g-oi>Eo< zqFZr{e&YPW;^>z+(_I{uQgN)b#QCGe(JygkxH#g8;uvp;^Cyd=U*hyzocPZM(=V`@ zf?5AzuNjooU#*8=o87sp2wS~yPsa5fjE>z)AF6dv52E-lpc$dyl04NG*it!t4gEs5 zY-X-Eu~bwj9`8BCg8>C{3;CCJ;xPYb^Iv5Z;xQukjz3K%BrwU9s$+Ac4Q8lzYk$jH z1Q0zuZHojx=9*Qf`J_>bPE3nGre%EnkTVe%znUL+DCXM5pUA-RLc@W0VXpB)t1a=u zt-gGSk@8nU{#9NqBVq7;S>UF(Qo%BNRK0toBK)hYr|+ z32FiHN2g>$x|ZY2m<5&^b-8G72X>O37Ci^@zx*})h|0fNxm`u6S@)F2Io2)57xSa5 zit$DI`a2<|_*uox5``|}3l-5=XsFT@n~8f#7@Om3x78XZSMC-SsWLDK1e`;+mmzI- z=nnBMG;T7Y%0-RzHVs4<(g?2fQz${2 zN^7&-lq4ar%}OzE|L8_}+vGwd>wk!R%@gy~jv}?qE<{or$H-P>o|t!Z6sc``A(9#v zhwhPiVjj*>q_+8`;^r3}DMvQb#5`(4ESq7F6n94Ei+OT}gUd#Raxn2qFY{NFe;VbF zMoWcSIGbevZ)Z#TZZq`Uf^%m^_vyP}zl#Xx0L?KBYYLumg?K<{qxGwZ$?4iUxrK!H zP^eW0oK`SkWWWnBrFkR##r}nyo??9yEYFS(HYU?Zi3;~%SCk$c6gHYY=KHkr7%8>I z$AEy3Kh%}kLx^(mFBqvml~w6nJKsZ?*E~vs0-ev92f)!Oz&rqs5dimC?;f8B&1aWAGXsF>5=OoXd4l5k87xly%JJ9R>UCjE7y_yh3%eO~H)3unvsY2~e=# z&Um4VbAyj#E^+RYr(nOG@y?3VwP`*eJ6~S4fdGedl_v#Dl<*i*6-6waTr{LV)&f{t;I^8mBJ!eiGwW|NRPhVI_@9FQ2 zXVAn3rp=rd_v7jBi+RnbjOY$o8i51$fi+)@dTmFpwb?U!VjlV_&+IiPp6w%ybRM@t zHP@D1y)C=x(fY$h1fAF19isc>7VI~!2vJ7HbR&a$FtSNuE-B;|>^B~qDur*YOE77& zJ@lF-^m0__pAqjUrWH$zq%NbN;ei=7UO`Ah-0`5AGE1rsYs&Hz*6Fu19#Lw#$c;2V zyGQ>*3Oj>7sMJ!xRG71t}Q@4M4vFxd3>-74ZE=6 z&91#X`uY4@#zdV*8hYYV}7xc$)3*oGL`J3E=hmbB}Skam4{Yc#0s z-t7)x|BJF%FH8QSb=h{vcD_cAmAks@7pl{6nXBB`7G%kG{A6nQ?`JV>qfTCV!Ht{< zA3N-h+y2lpQ)8BmZ^?X7RINb$0(?CsSobbQ7hV$Tose-kEc}*7pWuob7UYI0wqEc`*4>`vHfnBOm#x&B6+(mJ9xV;AtthSpgaZV zxKV@)H!UkK-<{gZ%OF->Tv-nY7G3IO_A2Wh(D+lzY9n7+ss%fOemYN~KA(yW5nq?sk#a_&BryH-VGbi(*P*R%%;-J`ucw9_>>(E0eANyRf2%Vr~) zSU@Xu-1OW#xp6ZmI(mho>*6sPO6o6mkI58McdZX==ayhhhL{+|3u9-?Q&5OQGA83p zZicOJ954)fctT`iSGDNn7jrJ)tUu@h9;`E$?0%#(_GbqanQdsVBL^dbx8HB9F&;_w ztG_T=2Yw8xP16^zc5R?*(Aoe7?1^)ONOWxgxHSQeno@Ya1$6lq z&^@tFYA@W#Sb9r;(L5KgR!fVF1uIY0xlw<_&T$GvN??R)*!%jAGzy~MzaE0XxLQj#si#`+ufBB4~Y`p=4iYp zgS+{I*(P8FU@TNH?Nm-r6r#4g2Us17_xUW2Aq!T4F2Bq4fecVrYuFXYnO|Pb@wyAP zxCHO#g5@X}CA(FEtPSHsak1T`@`v*sH?$@`(fC2B%>&@16kr|z#xY#+Ph(s=e+}(q zW?@ao-PCH2>*``oJ7ZNB$BD*ckPR3=l0*1(tRUM{m96k>QBMka{`I8TjSDl()RQ2- zp3ckQaLSrN%Bl0M-S9Z|6xH7wHQtg{Fi+1~mEW47!m@Ur>2n>Xa@20i=1InkDQww9 zHYb_Rk{Q0q=}zk!(vZ>Kn+{`0*pZo-_}E{?l)B3GkV4JAKztfsMxU8~`sR)?X;z|T zUolTO^7;BNL_zE3pwp>z8kk(}>pk0!(|5vgrjv9B6}kfMVe}i;@!deZXl7)tL6Y5p z%;>P!D9Vw0;&7>+CA8BB^?c6j^t*W3!lI=ZD9tRz{fvt7gG@}kl)~XMm)02)5aX1W zejyrP3)zFo9w26ptMu7BZk^SW7_K_)9XEUEB4&499^IC+YR;?eh^IEApHpiQZ$ZWC z46MKp4fb(QWybQLkOBI*UwF&$X^e=3jb(teHDCgx5h{6XXCeibrNOJpKCtr z7ce7^?o{7M@Fw})>Q%_B+&PV7-{4%HF78XQTl0Y@Do} z8`YmuZJmPkDt~_~K7)459hvw{wP!nFiO&`2nrOXlQqf4mbF7ih#37ONmYf>+%UcGO z&LrEgz8f(jD~LONqTCu=Zo}oGkUw{Fcb`Q;izl)@Gp)_4j&6ku>HOUiOm4E`#zxX% zBEX<_qFcYJnywwflEdXT&0}YY8Y@cJl;5r(aQVPajJj-T;y8F_eLTaNS8zXfGT-3v z*&rG@#L5^p^9A=&Ml`-!XQM=xXYhQKqf9xgdw!mz!&&7GG~YJCYBn zzs*QC3KCeOzS0@6^|U{KS^a$FG==@7u&EGsFS7T*qgM5Ag3OEYqOo(8sxWpQ4z{Jj zbH#3hH3iDqmU4FM-T0{poCI1F^#1y0qZE>xN?(KAIn+kXQ*^Eg^=kwFi+WOlKh329hirb>veA0U7YX``ezg@rM#L$ zY%mR*7g1B5p;Df+uH~n)R9D@aLAi+Pbt>LXZ&9%UE3k5ZM)^&k+-wNs93)>Mhy6F zmbAf{t?Z(o*2fn^KHbHJYMWR_e&$CRF@@8D&9Pree7zok11B6oRvWhv*{&b& zt+{zEppkpp5WUDDGN-BEOanldmRqUzaJP>ujl0#1{nw!TS{O!yvB6n;y3Rj#sqhxY z5*!T)_p8On@8EaHrD=oBajd?xLD^`rKdD0oIj=!D!WeIJD1sHWExIdd!L+aw64iQ9A<8IX+ zt>WFpkoz9FzjY}F7tM8^TB-gfnk2fX<@1@c_NTY8Jrk=~&F)hBq3Y|RY{EEQLq>j|?=OqW8b@6V^!k#%om`W1cMU2ASo zV0YJQbK6q49e(ZU^Zq@lc{bV(z}$M=&Yy2kWUbEQ7qD`*uQpsPwObk(i#@JC2p1QH z%tdU_PgxXEzSZVy!_jtxmf}za4{(fUE=&A=N~DPLtu|j9jn=YV+lBn9@yc&&atc4jpa|z*ciHB-P)$#`O5)TkWg^Sd*!LJgadVV^5|zacQ5n zmNkpqfn_VQJD1eWT#KhBuy#k%@`nb76v(Xli=})sn50=W8ohEha1J&wbT7Tv=X)kJmAH`Ykrwi&*&ToLEJ`{sfFpAlv3n z6b(Ezzt&|orM!&)flMOI#uFK&e?c1|Q)la)lZ6L5`FDs!=;U*qd>9$ZL#*b|kJ~4s znR)Y{+U#uONaFxV9J@k1Y3et%<#{0Bye&@)OAZ3ca=K@txNz&{JoQ!wWepBFCy3Z~ zGLqmwKZwr4Kev9SXq|i)|7GNi{grgK_7+RI^FU;`<0`nt;*}ya8ngJ4kA9wZS<}jlfu7+cz&RsdTPE~R$8fDgsJnAlwb@5!xU#2X za=6k3XxLOSQuRAXf^T84JQzII+1v_w;cDcKsa?)6;84-a@s+N&vr9j?Xs~`SY;s>M zrQK?8{fmGZ^rh06asY)&c88+a?Nl$HBvo?qH#poR%E(q_iwbRgf?ngKVJubz@q(s* z&){0G$ijx(XPpoI?7Gsr8l=Q+Ypkascgr=_)_SmCfo<83@6nX_WuE-fjr6E9{u1Pb zjh-H6yRXR0-6EXE5BQ0{$`7}f&|#AmgaqxUGG|1eQ?zJoOe}zA=`x&#tG`KTr*+1M zkS6{cB9wLO+48$AcrilYv^l#Rx#O!?mn)X#J3Lxk=-x#&0xr%7m{tJq7utx>K6R9y zgcT6(3dUa--Rs{?&qA4Vc=U*cg%}E}<1gf}!(P960iMmpcfpFrVNf!>K_TN8wFlp? z;KMCgA>5S0Wa@t^-}syS)<-U6pgxlD6}o=7>0%ZCat6VCFqhTJb|O9)e~BsgK1IUv zgQY(%O^>DN9K@0wOYN89hax!d!>&kUkCtNYB$lhFrx+Rw$nuGgAuQqkTe-J>2T8iD z$zvi<0@W~kKzn1Yfi4@}C$!5TnWM{^5_fp_@b8r@C4^hf= z(WV@t_y!tmQUt?bE|t;5+AcVUKISmYYP_D9K7J{S?<|kNB;(5E+$oT5-EAU4@;J;M`PJ4)CYDkbrli@W6)z8MqdPLXeVXSK%}~Jq$grUq@z3S7$5{@c#m?Gu8J~Acw})vu3dE>38*gUO+{-_ulN` zE5xYB(GH9ClL&~9SG(lwvz(kDA0={+h!yKsDEP!lz*_`7X%g`58SrF6>}K}4nyYfi zKCURID4kv?E7l*>_o=P#@9TSY>-#BvuW5b%UEl8$aXF;DF9i4v(Vhb?5b!ZovE?*! zLVPDNwp&!JuOeimewco#H_gKh+#STD;{Z;gR&b#-P#JMf-?eprT6iw(E zdA99?0Mv<@3=mp{x;NTJE)FY=<*aPSUPZso_N%Yd5U@06;3^N<)d-C(uSv%R^KeG< zQ)ohm$lN622~b|^VuX7FuneVL=wnRxG5*ZM+PdainKER^LdfR2G#m2(xIP7#2fz&} zz&!Av5Uhd+J8Hft#6KbXLjA6km$ljcL(DgoxA<`8CRW8NBqGjdi9cM9pTu$Z)c*xs zf6wE(#<7A??ft44hAXzB4#uX1m?PiLVl2BTjS-C_11~J&7*Txm>|D><5&^`cn!L}H z3fpf93uni_!(n9okzyJju7D5v8-E3btA7Bj$@iEVvV6Xg;pghBiu0gWDq?4C5aIt?lR# zM0yFSV<^9W;r-*=>WbKSEoE^4EYOJmHO$#qJ$#Lju&Fj-)gLykO<1kF#=Js}8NIB6L6OUZxZ=|y{K8c-gB3A+l`E3^H~Cp zDGis_QnV$ancc1eig~G(;?e2@We)Z9!Qh(`PrB}3d$({D8FTTPa&SBb;msLoCuzsp>+y8 zQ=piIBujT2(&U&`|t_}K+R*aVsqgu9A`3Ctr>rZ9)PWK-c zn{~y!zU~!2hL-ckXO>uwkz#!t*(2W+w~!eV*Uz_s^5pD`)3@&$+$K%$+-T zyqyCP1K#G1#Iy22bm%o1Be4nVY;kkqgCE?I_&Ap!i!k8Tj@LhZ2_CU}3m*{GHmdi^ z4;`r|JQ>5i(Ah{CJ+bGnTg4XQ`*8DVac#}e@YHqArKs{C3*J4)gLtgr(jLS&q_Aj0 zo%e#T-!RYzd&47GpRlg=Y6p6U2Kw-0alAb4P4A-f>y<%%oN8JEtEClB<7s7BpoJd9 z2m9jNP3{!N1nR)aYlXDmX(`N?VvIpu13)q4~`@ie-AdC$Co5X7M@P>!7X+a3kmAqqVRml(3IczI1X7K-|8X`#iY2 zZ%r-EVer7+L~FUBeir9&IQd6+@OF;CL4gGg4U=0%)Fn_aJ!oWzG_WTSE3&bIVkC^Q z=D~RsZL*8st&kuyM~C?=zNWl}gxo@_;F{ig%ct~Hx>~BvAyw{vWp<7-QdKidyTj9x zho;W+B=r7N{PQA&@-Iaz(Px)7{?PvCXaxexS24~x5sHr~#;UFDjK$aTh`N5fuQ1Wzpx&)IyUn|N#MH%j zGhN++)W*oAYkns0QJtKSf$^XS6Qb z-j4wHeb|E6hw@{aT53N{x1Ub-ZE-Rndji@eF@oj(d`Lf-_315tJHqB zZa;_YyX*D@uRrKJpt@HyX{{nwO^#$ zFDComdifB*ez4mfmo4t{T&mkIBl{tG_yn*Y=C)s6YQI9aUrF}8bbA8W_i@{=Dz#s& z+pi(}zPddD?E4d9*w9|OiUu=gURzqDJrc5_5D z_q_t~V5r8qf^0BizltCITrq*q735w}L_>AaOE{E8uRvmr4S}t%#Le9#DE+XF2L|4l z1nswC-I#*A$eq8p#rYL}W2;yzI1j_Xs+~Zan&?|g-$LX3fr7TWc2U@2E{cuMIds5h z7gEr9P4c$`>lX~uZGA)k`RoBsNELwRzMKptMEV@f-Y_s}tAhsU0wG>DX* zD)z$Nv&^u9AL)4dTtPO^oGV5ll>a;LTgG$x$sdN*1NiZ?;Nb|~m&ZS@i|CzO zfzw79elQAi8bV!%VJEG!=pcS=`6zNHUPAM69VKU+EXXRlvn(QZ&Vy#`RQSdNH1daY z25s!4hf&mv&mI(zEP4&n+ex+O+D8sy98#Fir>l?PF5wp8C!Z=je=J>M(RC6|W6vgpuJw$Rl-E;otDIg4 z+8JvEm906dG0sGEzM{WIC@A{p6Ec|2U0iBh8g%aBQgNTVD4%@p>Hu3TB}Ka@YppF& z4L{SCI4EvQ!x1-~yQt1wByfC)j;Snhe1wjvM7b^H!`h=Qy$*NJwsah<&7sjb6!TC> z2ic(iy@4OS|KTzTxnaMSqQP8oZ$fL)&iYteLsdp z0?y-DJ&%+I7YXF+1RYbfoUe(LFPt6q%c+xar&AvNI$uQhHeffwG)+^82_hLQgQIlA z1JF4Sp|TC@mp#4i@dUcuHq7=Cl*WEakDY$`l8_7;0(4&t9yeCxfgo*@{ z3pQZT#udOu`cYk*@blQb8IpJTi(0Q1M&Ob#7Tu0is#G4dJZ@$3Rz<8zb zJ?Zg@Ff9(VScQ&*{(^f9yw|c1V})%i(uRlGv@MN~wv$WpawJ6Zem}kz+eR4S1BR*- z`lKH4Zn15H7dTa5Crog|X}jjslARLCsXE^A!QT&4u%XKYb`JM+egfxJ>}-XzS>M1d zgg&$v>)tyJPk@Zg+6vesG8F3!n}( zg$zSsJYk1^96;030CG8imGGGSDpDo+W8EC0r7T!yD zY>WuWXbiCOpg}w8?heunTTu~1(F~`c)6Lo?sD0{N(P~& zisU~KSpG=XJ)n{;-0V)l6d~pjxC5BOMsJZ(geZRUq*R%VzAf^1upX6*K(xvHAB%5j{fRQz{N#VKZ-&;nkY&l}{F};IGuxo*&7s4Q1g*iZVuq zPnkzYT71@g2dhJ5c(I2wKFLYW^h7+ob^~+%1Q2GfSJ3bXr)qGT;^D;CgZq&j`jgmB zu(@nr28XrrKjeS>$HKh<{%N`%os^duB;&U^{t-mo%F%r#?d{50!HyhfKj{wU=(ls7sVU?Np3X!dI} zwCt@2gi%%1&YHOMT}e5`xs85tqx%+}+i)Yyzepfm|JK1TK0M^!t52I%(Ygg*7R6A5 zkD;ixB?v&98lQ(>?{5qhf@5DmnAVO|SUEi`HKe-b>|8F5ii z9{D&=`QY?x=eMR9Rg8UDe+Rbw z3cNP)SGV9eh449r!1HHliy{?i$e)Sc9cp_Sx%A23fMZ_hg(v&;bl*4D+d_|XO%T=>xqzqKA8XvyyiXI}MWdj%aXd_mXpcfpV5bB%M=XZ)*!d z7s=$JLEVB=R3Ue%LgIN>X8p=FUd^|~p-fuhIRwqjy+B@n*F!hCzNC=7Twl=-KB)ON z0x8&oTn2}P6ugRG*L~6ykyJyRd*M97UPF`KMrUg@ z_W$(vFXw0c`If^quOB6Qm@J@Vy1u7GV%p_=A5^iD37o13aF!iCYx1A;u4r|YjXl?b$%i1k^>HG@bQ+Vp0 z_%|vtKF?8Kb#VER4VudD`0+IxyB^Ye;VJm35Ofp7a@9 zJ>~}ffV=11z(cSWA1>1Lav&R&!(aG8Ie5Vx7vKDTyt^Fo!CV#`oW&MFdHR!r4s($c zmxZp2G<4D*Q`V-OyEhTF2!?k(HJcJ`#v>q6oEeqFg;wPMjJpr#pH%QT|*c zxSYPEa#}2l{)U6IJL1NEEDW;f5rsAkPR?EsSfy0-4_sssZlHAcp5$J);CqBo`~hq6eL!(;QWFx3V~S){;8A0-c>m*JYiBye5C zf0~CPa@WU63ZUo^IHsnSIIXw)j-{pP6jbTuCHMZQ1+s_|#4(4t$fqo#WXU2*kxfO~ zsKm_dWFaRmNf+LJ{xA2*9c=yZUTQaMnYYl3p%kAtbs4k$9?ds~>cpn}Bv zOHOYtP!r^29>E%0oK`?}&Tq!TjBb9I+Vn=~BNA&_w9Iux=B)g}i>A@CI15#zWf95o z;pB9rYNmRPKxj?5UMX7i6<^kOg8mj=%eX64ThCz;WkRqz0riQHFpMK(9Fjrg56#Df z>HT7V==r)Y4RPRJ3T=nu&`0GPDBuQl@Jc`8jm2gsx4@-iag^?`A34&}UOEDnMZlgt zKae6q9F(6p{A%<6WQ95AM_t1b>4{_&Oi4VdOOJBptw3?B3^oZyB5z{DL;B%$S@g|x z%obP>1jdOV5n|Jh>D==X-0$Q@pxW|^`kWL%t^Broj_ik18}$N3V|6- z36mn)DJK!z214U6y=74l$oU=0j9>n6g|hJ@&DbW3h@BCrJ)Vqq1&}(7wRm3HMuuya zx*g9nzoTUfGtC^97Tq937du1Csg{DrA;l;zZF1N``RBGtb!X3D^D57|_BfM{SIw`g>-K<8tIN&Wz;Ixq!;s zMFPjcbWCN(<6Rk8a67{VH(%cv7eHY!!9_)R?WcnFQ;~im1g@XwZ$m?NVP@$mt_;Q( z?=c@q8ne1y|E@g|Zil|YJr^!I${|v|sS5Xr{|Qf4t3ZqQ9E<2T7VGOtkF^05*n**9 zU0EMp1}RZmT~!*1ZF8jCYKK-9{rIMFN-MEv>~~R4!pad0aAAG6$(>y2R)^u zwBH3ohxNR+>_6PB>n-6y{Vd`B1G->642qF*6lhx3*Vozw5m8bDO_ufU&l$KAAHPwW zU0jkDtt723irV8kvnmkRnc?KxOE3Je`KNL7Rx?!H?1~`wQM!A1!@XvhN!QhqMP##J zC|-l+BXxD@JNdlfy(^N!pnFK%WODyT4dHzwa>jztFcfwXrDCZYC@r*M6xSX0{enUK zl`y>xW+IF%D&vS9tsjVj04QD6-~mmgI{nxx!=>N=u2NCaRdMWVi778Fws0I`=LuUa z{NjP!K^R2e;-}B#+ZhPwumK#0m+0$mi?WEqTrhP08|Xc*8aPJM(_|4Hp$t;}s0|C!zzwLs$!BRcd&lfd#4(GqzoI7G=dW0_76JQoB* zI1j@KVK=m>bz`svUlq63V%3a7+(tYFu0>^88h^thW;Fbh#(X?2)i}H4)zJ5?E)ik zYY>6tVYF0jkvO2qR!e;^Z|n-{%gL=0&x048SBJrG8>&~m$P3ED1LeGunOh3hZd8Jc zJA*yfKb^sk5npx960ZRmZOVO2O=>+yskf(VR3H>@SHzo*c*C%G!d4A2AmwN-)p3MR zjWn`&FU9zcO}kW1MWAV^ttM1KUgQ?&WvfA8#tn5BA1veYsxQO%vn1ZMpzpLbcE3^X z-4IU>;wg9?C5j%aH!NBzO=T5iaVM3!LfBf*wBAKR0xaH(VlCKL@fcMI4JPg&;_sQA z$KlBNF=5rF_KgPAFZR}?B2yO(?dhwUm-?w@)v|QGYO!jgBHZIYMZfgoz4Y-76TR$B zOAFqhG@|V5X}QM0g2f&d&N)8m5Fd=sI(S&_lestN`u*X z0wz73Cn4A4O;jp-l_w_KA>L4w2Q?+rYOmE)7-2{ww?JnF_>JLLAh|#++(P4Tqg2U1 z^_yJwADxZVCb?Uv#od;}y81^~RPkL1YR+0<77#aT=)6PgeXb{)d-Q6Q$m>rx?VTQv z-fAL=C@*c@R37403*W*xi7j(5Sji$%n^|Id2=fiZ&UrX}a~Wfh5Fg??$~eE(f?CC= zN6-S$=R?ys!9dObjV_rM!U@|%Jj8MS;Z}HWVF(?xGR1!r*uMF}59FpA*d;o_Ow*w!*A=T}` z2l3JtjD`EQW)vW%%YUG9Rb6&6LPF>l3u`V=p_OXiCe->_37QuDc`P2o%3w@(W2(?c z+s>8dJMrD}t|(cR=ay|J;8HLMV&XI2v~94T@-_k9wD+GpykW8#Nl>>%;Phx>>3rwu zBwo~#$bI?$uQXB`o=W2-N)&cqyo_I0I*L}SS}a*AB67Y9ciL71J)HRp*`xgtsLuC@ z+^VYtgJi+`_;qC%L80mz11LmtbY6p+LL8*A>ihr>So%ap&JyYwIlAR_C~5|4Zu{^| zoj$;gg`(&Is*^r$Zp(*&JGp3|UsqjCD5~|ch<-K6YUc|G*vX%0XH`KLYFy*+h7x&p zE`nAI;lH${-+%Ye&ecL!OTP&3q))$Vt_9sF`2W*1H>ETqJo^22c;u>uH|>9yfvcGw z2K~w+l3YYuzO{t?FB8hVp7#G`LM7m7f`0cZm%Xbw#oIy_(XZYssd7sVT95&{E&ama zL)0nu7Am@dU#**{+b+?~8V`b{-bl~=Sqk^O$uk}E+5Q|8@r=QhpEA#>;!A5$JtsV3Vew8mky_p~5K+i$uB9?P;t2Tu!fwEd!6?9weddRma9?PuNMMcty4rv*9Me$p*= z>K2_#Ehe`p&C7EAGsehmmr@ILY&Ccb9Tx6m`(6)+);>^~boI0%N868Nv07_1&Qo+g zfmt_Cvzlb~1DVw=n2zzFxI45_@snGXrlViMC@8Shh|2u2*$L2=8ucp}ttqIeADhQ` zDDpK0mGEP8frnzOrl5j-Y%cUrjMEfUo{!DXc__wf3M$6O<_R8(iJF2+@3FbaLorEH zP@z3GyF3(=H3gN^WAhXbMX{!!l6h>NYA9ZzW_%KbW5TOH`o)V31&}P(&-l~m`_u9-nTtn*V~pN8lQqUF&~R>E3E?53ii9@@8|hk!-{!d z%m)kHq5GB>D$NtpGmJ8oO5erHfVKmLSNMx|-HRi8qbxmVSnp67Bkv}$8hP(X^;bkT7+)vhM_+f@iyx$r zJC-?rjvwb~Ol{g)<7v9<3m~S+?&2pp8?Vre$3d*s;=D%=2{^D6O@wsbhu}(d zeTgH?cv6u3AcoUbM1f!)28(m)NHSZBp2KncHh!c+-t_Za7Sh|vNUt{ENV$1tzL5jw z`NkqBX}*#2#qT!Y*hR;bA)asi3I`r#H3lW>SylzyPG~L~GqU z9diivL680P{Q`n8e_T4>j5%A;nbS>vG2J%~KUnijlhgE%dn*2(58f*iL-GF-{{O*0 z)23Sw=`btnVcu%wP7|j8wJPH(qz3~jG59R1v{93TlAN{4{{z$p zX@aRS#%-GWr@x+PK=jWKLcnx=M{Sws`t^pzt>ZtY`l*(wO_Lw$dtHn+to1$W9nbVV zDn;$R1A148`X04)eq#v7g>*a?g8SZ4Sa|e3bk?W(9y%(I(JJ1m#~Ya(H`!p2D8>)Q zDQ|OF>NMzhsABI$lcC`rqTP=kLviJAz}05{FAz2aLKFFHR63kZg&z!ZrC#aH7L0Gx z;2v#IPuv~Pt+lIRxr^TYqR__}d*6XF`hHzF4= zF#__;%ZjKz8SlNkqKLKIv6n~tvH3$s4K5&yiyfq}qUl%f*j`-23NbuN64f(1wrqyq zyWnH}z)eOt@xy;;UP|XDhts|3A<|z;1KRk8V!w@l2_*_aoJK+p;(sUH(B{Q*{L-Rl zvUC5Nag6d1P;>h|iQmiczXlFnbT_O~V;!8?ANiS!fAlcX1OK!x0AEYSbR7Nph_&e@ z?Pk%)F&NsKP0kjYMdB=S&*?U5idj5KA2r2CB$>!1r8mj=WU~1Rv71Ht zPUP})JjsqYE+d+>BKPB_CuIN{p&d-?QKYgr;&WUp9?laP@8@&L#OFq>q?ydAEa)IAtZ9 z1I#b!kJs9tV(|*pp9_{hX8cfc$#apc zy@cxGCDi+Ako<=q&1*?!#!`C-X-)D<50Y&-oF)BTUCW3{+*Ui)A@`4_k^HV9$(^If?`bZdcH5|J z^v|I&VOAlze{HIR{?c*-wE+=AAlZ5y$wl#x^UUHF_lr+EQA+l4Jr3u(d%K8SKAu7`em8|`KYAOv3>$K` zu%fuPDSC26ae6Mvuws%AJ4H`M2wXC)&@#)25s7W5&={KNOOnqg5y9e5#F4ELhS=V9 zCT0%BwS}*+V!=V(ITJHS;us!4pP?mXGVt4LqRF5yWRLw_Mf;@*63!2MyX;dV$W-GDfv3a z%+wia`BT`%0H%M|T*}S{4H8NO%DUI3?48JKo>GkXy450`1NUDPimA+{?AwY%bXTax zer10S(T{1vM9p%vG8LgL?0G4>C;UxNHle1Qbi0&|^?bsmP|3fWbSXO!p%inNr-y0& zW-vXD)978MJzTmD@d?w{NOe1rCO%_Yi@e_j-Bu{KJGiVf#C_KNg4%o_GQ^imxu9#H zub3urNo0txk(K}v&NZDOzG2;qy1#Fk3J}8s)bsZo!!q{QO#ICL`fScMi`q=nnQ}xOrXAd}+KOnVH#oO#MGR9H zU009E%&BfG;+Vc>%Z|dq)RxPoml(iwjdg=XA=6rfGFFTdi$6LJmzOsFbzfw=f!BTp6QD<)I##bPNtEQHF{4{+ik^dH(y+5%IQfhIbVFt zv|p!NOtW>%&n30wcl0ptbC^2{wJ;wsZPm#~r5and9XV3+MMI{I>om&*rf;|<=Zi*6 z*E!4rk<3&RJ;x*qL_4O58_8dR=*486Ml?~(W6CKZnj}^*b?l?j7M0TZ{;(rCq&uWi zuj(@7NRGg+KF3-2S1r;_7H3s7G*Os)Bxfkbfp<8RxDiKk9LgM>`omwgcwW5EI{Y8Wvb>DC#CkAK9HeNJh{=g+sL7Bn2Uxt!pC1o+w!BHBmU@DV( zB&Ut6qO527ErqD6vXSY0B2l=q*^A07WgYnoSGKTj+!oTsDIYOe8xhr4ZZkDP>#>9G zFbzQrcG*Dr&WrN5a~p+{q)0QRdLoxZisHvKZ|;$tV40?bFm2bVikV`cJ+k_=8nT&! zodc1-kWtmAO_I%(c&2vHO_D8?M5YX#l9?iOvNL(bTtr4bJqP0 zT_2gHWHbH6{<4(zOn2EbOX#dY{HhKly_P8>*9mGkI7NWdrY4*IhFUBl3;mE zj#fTk`m-s8GDi83>GDvb=aidFhd3?cmCu<3>n14oI6h|wvYf8`Vy1Kd50i-&DdjCx z?{9E!7bz7iq#HDhbZeEm7RtjE&cj-z9$Vhx*f)a6(lUiCUsjs2BE*4Ifmm(U#53BEytC9OmlTzf2K_w!*OK*(`TS8^|&&S!<>mQv&C^`DC?}OdqWw? zWQIxe?>D#oNj* z%SQB^wTThqg}9^~uuwmW>E}sJ`fGHObx(BNS*G4Py~V9({mh8*LlMfS9K*i(6vO*E zjaX0gfpVMu9o9TzGoVksnHKit=4MvJ5!%B z8ddf)I%JC_(D^qYI zid~W2m`-f)qz^dnitNt1Xf8oT_F%f9htiAbw_%#UK1}hoH0sM#v#*;do!_pwI%9@O zk$pL3>y}=fF$pi!4PqMf{M8u`K*Oxm{}wI3I%A`$tSn?*XZULf8qZV$BHcueq3x2Z zGw8A2G?WthZI`PvcA5g^T(@qAh+c2C8iOahful4 zO5@=3D=9}|av$qHN0=K;736-_WpnHmu*Jd9M2H&vGB zSvM4+j5k%0?=xLtf8p{r(~d1vE)nt``%4-{R84-vG>PM@CV%8sH^X#wMxatt{>i#a zh%Z~zl#e)+7X}m6ks;nxx7$$i*|?Xe%+!qY7b}M_%|u#;c*V&POv4e%Boo$3F=ZjX z@t`S82cg>tn#Q!2sezoy^bjSu(knsE*8Cy2M9(vw18p=V$obw>o|8C7$#N&_;^6Oq zSF+s8Gy$~Hlq?T0?J1;GC(A=j;YiC$=#DcLQw*Rty{R|;J@e{}p|Cv3y3J^<*&;Va#H)=|@PI5p*imLgCZ_AqZ8Wu!W*@q? zIaWxaw859*$#U{=je?mD>J-NGVgY)bSDviL^e(6!sJ;)C?y9j@XV|^k%LYsVpe#@l zQ!7xmXfKo5-)Po#mW`R>Kn=Y*%cg8O31kN~XI*trJ5Uzu?jSz9R~Olub*ZfDBHJ+i z0bLe!IZS6!x}!~9WIOhkOr;B5d)A%wqP%yPU0K(S+fonNL-WU_)Jyhf+Rm-Dj~v9b zZ3+47Cx43zmy2Vt2l2FmA{9w03nO@r{Z7L{%S($dFku$;_v z6*{7+O#gs}fMzgt=Tr}tvpAiPmr^K$b3 zw2Y9eeWI-6tl%b8HD%QaPL%yXpzJ>;L&!|a9+s9OhO3LVT7BF*@8;G^wjEj4I$#x zm9h%!0(?lfN{0JRhia0#3t+H63Cfhx?ms5v|7g zQR%woQ0c~~@$7HX^Fll@#Sy{sCp@Lj#(2|^bq!fpUrl5k-q41wftm!uOdX!v4aLl1 z3R{jHK)NKI>Z851vDnq7tjhx}HQCi>Ox?YR9BK=u$LNhqO=)VDAB}ZmF?wc;bhQ=J zG^Px-Ez|9GLcD5fqPAx`&D2!w!Ze<#ncB^W?~19p+KZ_bV!vW)q4wbtT#7tgF=eX# z{H7zmkx0uGQ?I$60q^VHF-yUZh4do`a4E3#qPK^@B!!L7WbI*w@~Qzvyi(@mz%>O`jc+ylC( zlbG%-fI;2VVvknPU7g0I^zBO0^-vdbj@EMB_Elfta;aQMx_;_nt(1^k zqGf(t(7*6z3jX@5E7@NrTlQC1bC}Jd$#Q_Yj&)fa<{)*w-!zo&J-mh%BL=G*+42eK zre(0YiK#4J9V6PzR9~kpOx1MS%5+}$w~gsTowj@AZ?L)p^&rF{l+s8sOx?{Tk;&!a zrT}icW7Peu)2K*2=BJ1@%~#-};+?HCA%hF&LpJNZ2J)*qFF?K-v{W&hzw_TGI~C8W z|ANw~`0y5zA9r~{$t`|iz&@E7Uq(Cu$5%f^(5m)kUZ*3GHEKwzXM6WGMeOTGe~x0zt(AVoC?2z z;`qdX1a~^$nNuyHQ*p{Vk|R>9B`D&_;98KrTcRO<9vBC?zIH-FEzx|)KBVd{Ql*GP z^;0}TNP*uTnIvbyy;E_$9Fj{rksMV-GKpQBc_|5z2tOSzyOCx^Yz!rNFRU42Sx}AA zc5!6O1e3U2kKAvK&4GKn#P*O?kqfsRm(&F=1Mp7Lky-yXAiz`s7E<{jG{mSXAUw#Z+HieIabX1)P zNq*fniJ4^oT1E2v5lb!15Vn6dr@6%y%WgL17Vku^bBl*;CmGgivq>wT{~hCJRi_{p zEv~%v`=m(>D?{n=41ZJ3OqBEJ4Rhh1zHTAp<>!|sgo^8WdzJTVNkHZD&G#krqoX5olL|Vs`G{gh0`3#39H}LQ32AJ9GA;23uv4ygr&_To%cT z{Yjp0NwQ(mUc`H0#45<5?DesYZGtoZMmy(wtlTrQc>#sCWbI z6YXu&w~(PMwQxM!hSplN7IF-=@9t|AvwlR#6@p3DX1T8u^~yJpwob)AaWB49i;jbk zQ`m4X9*{!EGr8AK?@h;FbR@YCrPrx=XMK`Ut4W>#{M?u1dyt+j zKT^~$4u!83YbqsbJv6sCV=~3n0y0tLL86}yi$IvyilZTeil!tq5UD872BHSbvXJeI zKlY152+yr=0GZr14*Q7~@MzN{B?&I(XbR_hlux9XFx`O|PfgE+&B*LrXs1MWg6tR8 z9kM0M)0I~lC4YTOpTthZ#j{Ah;z#mcf0Aul^+6sxBG>hWnlli7U15D7<0`3;c`VC> zQM^~UH+?hnN90`$8wKrJPTR_Y1bi^HEss$*5@@8V`FsJik!{B#%sbrL_eQ$lqNVL& z)u3{UptLEXYy^!Sey&v_gyjs+!s)taH=JJ?! zjHTA^v^K1@+j?A{O8NN+p%KO?MeGitG~BAP4dE|iITUG7#2Zs~!)0u>y~yvB8RHUE zQFHPkxb&a-I_gLpEfXt~GCTY-WEu1YMc6BltXhrY`n@uhObL%a!|Rf}qr(ljYzp`k z@_rjCdD6PeZNeII`G{j&JNt8_Tq~dP6_(=c@Iuuu;o=Pc34Zskq43A0{*B{9b7@=M zZ>xJj9)gS%p_P1a+_rBpHuo%bai@PKxqFiB`v2W)Vm_I)IR2NJI!sQB&9T#p_^NAEF=%6v}$A$pRb(=Szl^HmL<-4ey>=1CYi^UIOE zz_QOAI{tMU$+#?%trAFHA5F3s+k72O$5HIwh~;_K9)+ZIzJ+w!IF{DsFB-igW!*)j zt?~epj=m(9E+F|)wNjg}qsQQ^`haDhIdq&~j^qW%()_*!U-{)ozQ-~yi;g?v*xkZw z@)+X9Biq=j@4-E?>UH$T_I$4I8uSTVIyR&Jy8&0liuk)Z)#)pfNczpZ4a@gbI;*Bx zNZ#S&96sL5$5r|G6d%{au_9icKz^;bR*4j?n^O<{vd%Y%<*$lApcXRXX(a4f^B1_# zu}S32{u6CX%=r`A-OhjDelmovU@2{p;^J_L%{A@C7RVt30wFc`o$ErA+}f@|lzzIZ z$Gyz(s<2s7uR5ew*V>3(rE(PP2N&0a{C-A5Xls|7kM=2skh>Pb=w-=ppV^4g?_Dts z$6r+-IfmV^Rh?=4kXzL=Ysk|%qICguKntZEpzB2iR75nc_9Mkt4XMl@Z=iTHH&U*DtWD=oVWYgzwJWZ0 z1}0R_Ep|X+)GF?QGMSpxyE5z}Db2Y!V``STVnJ(hA1}svEmG9(*a!A?UoA(mbPpYf5C%uiH|{;t zXAeXf`V1uLH;-h$;(tiy@`sbQrU?V zE~-2h@(lM2I?F5KY}E-#?(zT0V6s`CLg$)q*3ngstB~Z$0n^~VjIScd9^-#SI{(sn z!R$mn^kY-#*x%1L~ zmQONfFmg%uf-J3zu6o^3U6l23r>h!wn<<-Y79+a_L-uu5@HnoTOew6M9Ew%P6C2?j z6x?x>jSV(`;i}2Z*DX~3vFvLJZ2G$5aojDs5hTs_m_<@wJC65sAW6p*W@A0f(sa^j z<4#Wtq%&Yd?Qp!u14%8UHC&{%BjnUFr%`$vSSFxGa9_NgWYhNDpj8HvyfJ|4t3~I1 zvXDfg0@Arl znT(XT>hp1^yR@q}{RZdFN;OGVgG7FFU11mj=1xawzd=52A75@Z>Sb*v$z6~bY5A^d zR3$oou`->5uJbkR#o_al={(gnG7>RPgk0QaFG-usl3iI&j5Lc&C9fh?zdlbj^7-?p(HgJD#GwXvwxp3~M$7%sYQ5?IMp9WF zLI{0&P-vML^YMNU%lI-l(}^aKNHa<%Qq(|Mk$fFBl38=Uf?ft0i4lH2?&1jhP^Am*DOQrGiftf~z9aajnvYFb||Cis} zuqjk&oV*La?ILKNx1{{ZvGkrqSA$}Fapz}H2zH{JY|y=ARV*;5yW%Cb7}OVK^npg! zD$NGto3@Xbrixn4iB41#_$#r71Z9EFGo2I1vd$`2@j%mw=-RlB5^buJ<#N$2??-%G zKHs2+$=+gyL8cU6ah$0{T$qJB5^+u=>(Odipig!3S`{Sy#XY7)<=+~+U-1{eYC7b- zOp3oS)zDJ*z!j^O5pfzpS3aeT$S`!al(J%kp~Jnum}gKmwXFC`BN5VUk_-@oYf_kZ zlnQ|j@y^ItrV`=Ptc@rqthG2kF*~~r-ZbgLG+memVn$jNGu=`C$WJloz7kU~4>X%~ zQ$-D?mAd7lz8TQ*MhSR>pi;ju87d~#rWo!k$(v)<@?s9t9q;+US@=fkJdG4*bQ{nz zU6;M4y{I78YW}>b%qobjOeNOb?OD)if9Je9AxEY35<;nH=qNtyIKqGDyeKV|#2yZ1 zx%jB4VM-Nolj)oYtleHjh|jbbxD7^#FLle6Z8B0KaK%Q!EEjKpBE>_Uwu7qS4R1|% z2~=Hp>$I%jqTm|BPpA6nnJG0zmQH`PY?o3?%+RTP#~vv*5mSdk(b`0mh{KaOcYlZy zNe0ymh!P_V3c!0W6AkiKW5g1s8OXz+l)B=8K_?^Q#CfLs%GVu6r^Ji%bt#7X%JsEV zQyPk3?8)GcFF{m!ifS6P#gZV>nC>elH_T4KT&V{&ddgqYGt|)t#Y-fK0lGhmJsI~4 z?%2KXRDY+g>p5UyO6pUg*q@<89{%j&j6t~P7nclLnc@(?GMy6?Uz+F{NAYQSNEc(6 z&MC!fH>6}3^f{=p-dfLj*P6aPrHLqDODbK=c!(k<8ndvzSS&MWcS=)n$RIrF5LYy^ zz8HH}X(4VfO|`xj8z5SUJG!oWe1A1le68z-#bYcNKkK?7ThA(4;xC;Fw+7%X7!@}q zl!vc7>`!SaaNB^t5@8vAGNqM>i6@#W{;|EA(pubQS|p~8zLC;KRB6DLNOdi|6BB1p z0G_2~FfA83CAU&?#0v&JNXZi$4EiIbgVPMfnj7#k+DjM`hNJZV%pvtMkMZQk2Z%j%ZA*LGCB-JSv z>Xgy8W$I|L)}Z#Og<_{c-BQPkV+IXPb%}QkDoiaFpBXecb%yvsr{H#lsU^aMH3*c4 z;C7Q!=ZXqCRgNo6ohRxTG&%JJk*re<=oX6{gC?gg7Xz4N;`O zpoOWM#0LhgNZlg7H)vz(c40}>(qig3BXx(UY|z5g-J-rhD^g#^oU+?;W9qA7q)t0p z%t+lUTm~&nJt*cIv?BGe*ly6q)T81}ole2u>*AV03sc_|UmLU{^`x*g(&9VSVq@wV zQB$YllI^KyMMHyLNj)!`8ni$4g6Lq-snmDGbc3#?zAF|ObSw2evC5!tQ$G+}4f-wh zL-D>&&2psu6T@G#93T6q;+C%aV0eiAj`+o(s`h)rnxv)rgW)yoUy3RQ#oE6W@dh=p ze3sI~nMQDRW8{h?T6P%ryG;#Gr&*q?~A292?+%EtyhXZKQm zFsRt>t(cPC=`6APD!~RVv6oe9=yYvbh&@nAHmIsSM9DFzhCNK_Z&0kgk}}?)2KFk- ze1q)vNM*A@P3+Z`!v?js*H$hXlxwe}+%c$^Jy!YMpdt2pif@XR>TA=+*c&Jj20dp_ zP!bF(wkIpC3@WjwD%}iPVoz6w>6G6##NJq$Vo+6kb7iSPHSC$niw4EoTPtrE)WDvt zyl;@*o~wLiP!oH5;nu`44y4|3v_Cn=jgKF5HQ+_Zg)?TET z>{{$o+cvPflnMsf?NgPy1~suySDG5s+CEF^Vo3yMO0XVg-K2H)y-Ib1wx=FY;tkqm zKddx1=#|vh41Y23cf{})le9hcnBgxbX_x&?!(U9&E2$@xc6unk=N+)0R0bGyR5@el z?m~Cg(A~{Ds+?EG>y{6pyP(W6=%{kh(7g@aB}4Z%{9RF&>y|P8$L#MZ+YCBmzor~8 z=z{$N<+MT9?KhOGI(6KB+y0Sq$Dl3#HtX>f*et@*q};|SUKOI2uEGH)*zdszI@T3dX9Mcnn7pm z3G%E#$LxvnnnB5qWO>J+G)Id3QK#L_FDMTAk3kRZY0|H;z~6GQySd_MEGrmfb~KST zgUUFX%LIdh94%xsgDN>%%3OmY9Ia#@gKUm$IntndjvP73pfmPdIme)5_B^@Lpkzl! zxy_(7M<=P><7syjUF88?x82pk(N&(%X`O3wYIk{2r?u1CIC@HJ6D@yhr)}}?EdveO zuk?{sb&Aews+7>iF-V>;Xp8?4 zdBLFl%20V-r`65dIEKn{O|_J*Zob8TxU6K*er1HT=`?b3d&dZwWKb{1Xqlx`hu9{m z`SJwQBGD{ikfT6eG-#BgQ2t`j7XR_GYBP#&k%-RP;y*zq>U6tSRj-LMSEpI4_bU@+ zPmOrSWuhF#q|G)>#9p=(3Q+?5&19llv3pID3z^PYKTjU-m@JnwEf?SCO$P1LDP{W% zN3r}&r}EKr9n<6ko$d$EbYVMA2g=4O)V9)`}^D^3?lacdeV}sT? z7Rc@zi9U0-Iu^-+2JHeB>r^RWmt(P9!?avbTUsJ_=tOO4ncS~aM%%rP74i*(-f*mu zmvjnlx7V>w-Z1D5$0qruP9tZYcWjY=8+6sNU3#~m94!|kXWq8&kW~!Y;=fBq>vVYC zdB<+q%%H1|S7e?+x9xl6aD%pB?ZyO+tpBY3$gy9})am7QpMmD-mLGJw2U=>-1IGcm zR;Ov3e{md?TXlNB*jWNr@?eWm?)rS;?SwX;)+o zrsdFmn|f8&Gw8R}YcfT*tUI7v+6~!6Bh*9xw2x#H z1~M%dZ*3V08mZ~TyzQgYK9+^LWkl=e(ms)sbn;q7G+n2jQABffD(pqHNF(ghfZRZCh0I-!$qiw&SlI_+q_4fL^2-}K)N`ckJF{(C{+ z>lC#8Fz7d(@|qt9J<_Rv%xRFC#r0rq8*>5VqmlTm@4KLKI;|_bp7yD%sFSVJr)jq& zCXTuOPV~K-_L)IV*4|CKEu(Z@qfXzZ-I4J+ebD#kw9gGXv+n1#FJy|YyV~Mm+FjYi zAenwow%6&c7T%!l29-;{FGuL)-LV2_tU=Y%zmzj|TF|!+Xud)5>0in9I(^wU8HCAN z&ck0Vnxua%U(qQfvvvA6@{mT>=gW0S|5hH?btMD4dC-j8+0nws=mrZ=i5;ZKlMXHw>`D2df%W|Qp>5o8FVc*NPTS3x2YkjUn?rJ z<)XOcx708-hiQ>e^Y$y1o=RsWbqMRUv9*#qiAlQ(s;pksbXFH;N-L{3nY20T%4(g~ zTq`&;V=aN2`V@6FC;+Q1Jq;%7YT30EuQ%?=tBe-0X_hO5N}ZA*_(J?Fh6 zpP`pEOOE|n-9bZ#ors?DS4}R!=O{qbP%CI;ZIO3Ysi{Wl)GjXo z@7XkC()`tWDu&vsPflqlwbcq5S%0o`RQiB4Z z+sUNmsIL0Eq4QSjsiAG%Ioh3GUrjY=Z+Zi@50lnj64bE<9k3**7c@)jyAuwlC#u(& z&hZnDM0IRCcbHz-S7^FH-o8odDua%vr>c7lI+LEJo;B#5^v3EZ23<{Wrv7BmN9mcW zCD$Fp?etb^6@$J^&sG~4^nH3ewWUG7rMFl6Fx^+$m3frjNgdsuLYXQ|YrQf$tKTqD z=_dPkRUaAT?b}@)-oYJT*^FN5c!NSR`lw$SR5_!+`pBSa83WbP9o_!wWDHR!8B{N0 znEIApfwX~wD@4IMqzEqIC+Jw+P~suxhGo@TnE zY{GMyaq9bq4l7#JdjfgnkmH;t9t;TdmA>G8MdPk9(#5(OcNs&61 zX{tC7-z;O&QxoSMqeedXcXO;PC zil(zB)e8{w)uy^`V{+Gw1!`-isn(a1dxJXYy7#9K%2=rO&~2kJWNjW4Jp zb=|EA!!uq`$LTuC`y!Rz=fjw6rMxdv7w9_5`(kyu?vL`mSlysoQmrge59vg;vP8Y0 z6V=L6^|nq_D@)a1bfQ{Wrv9xH)ygupVh=5Lzl5{Oa|Zxf-og+c{a-M=VjN z9&BbR z(5+E7>QoHf8udk;=xN|u^@L9JG;pnI>PhiU6(T7=W1TvnH_;-IFr_GCz506}BJH{F zMm4xEk#_dotkyMXX2uq^lR>*vwyVz>^r>a1y3(LpVwbv4BkOV3pp4z>QKqTZ%dQoU z-RfywM^8InQs2>a^tAIO^_s4ur=2gWH+3C7?R;6ir|T$xuc+VYMEQF~{hdk6!yYxb zALU`H_`|s{W3L)KK%;VX)@AHdvj!3^62A`Lp0QtbF==O~1L{13RyYo*A2Dfd{-AnC z({YYkI#Ihm zroN~Xwd>>RUY)32A6Jj+L~ZvC^*x=a?Y^Pj)rs2fo9Y9dsO`R~KGKQ$!wJy<{~z}5J36ZBT^#CGz3bk0-QQc*y7?n( zKJ)B$_9=7DKFz8mLrT6CK4`7L#OKN(Yjrn$oQZGe4_k+e7`=wnI#nn~ zJz~ukI#4Cox?gCK-!W^R&>X*$)`v{|*Y}jQZEt9&Ly9eO+UEyrm(M|bUHQ>EKxm!M zY3l?oc256{bs7^tr+>zpg)vylf3_~h7%b&KTURsj`p#N6^O$tH=9`x1tfUXrmnn4* z-sb;{H49a|(^kuQ>vAT(cYofx5e0kq7p=Qdo(;eEzhpfwblm^4^(yL2JRQ5Y-WMup ze%&hfh5E9jP9cw*-?WwxqGR{gswn@M^Zo_a210rMcdY?J5BwikTMNDNe`M{4DmV4K z|8whTp$Gmity57YW6%4)u`UqG^M7YuC-lJIVml)A%3ro!N7bTb>b8eM5ByD=+>cK~ zzp;9Nm#w5w@qpsCYN#Ju>j9;04TXval(E@S&qB}pm$$VMdf;Et))#e`#;V#z2|e(y zW}AZY3Ony#(>7n|fq!k=CX|)N>e}`RJ@Bt@b3LQd$o3<~l2$!#-o$np)oE2h^QN|k zLXVsK+TNk&6fbDr+~(PzPwkxIkDIr&l@qEE;BTuhR68Kp=6Y-xYAYNu+mm?9FVxl& zQ!b-pWMQ^2R7l7xKf5gk!j-bD&@y z>tdUR@{jQi=w@3aWDoevwq7VcAlYUcz~_;F%%=f;Z6$?z2lTh~6-x6PY#W6t8S5J` z#5P079x&XtR46`Rr0u29rvYPaWFW7hWNhz%6k8XeG`}?4093yTg9FlSsY0UzCfPED z@|sV!trS|}InA~ewPVrXfa$hVLZbsRZI^`dn$NU75nAE-wXJZRwolhz{pd492eFos zKJg$=)bI5{@1s&1fU0xR5y8}eEZfJZsjDUj%(1n^l$9eh1LoQyQSv-c8&s#-pzf%l zok0V*=!oDPs?kDA1Llb}Aid`;zj5~#YYme$ldNosQ5@?7OCcWl8TQcW|0!B z&QS4@#4HjYa)FAEBxaHB-dCvjNMaTpNxVTd4X5u~*E>{SqZSQ)7_h*$2vxK7i-3i; zm8kt)-vulZ3S9UuV6klj#+tO21DDvgp?>LV1}+skyvPh(X4{LgpF>LoF1H;KDj&GQ zb{=&!^aHA^Lf(Pdwm(r?QbVd2Ld^qL+Q?wOBv0=eMCBzE6}ZY)1$Db?0#z;4tI&>t zt8EQXrNVj!uCeiv#4I|J*gxw!$(0PT`goYi)&N{!_w8i*>fbG5?!k zMO&=5HN!HOMhpquU<*Lyg^mi`XbVS?#8(F9*vJ>WU*HVRHd{#)Y>9T*Dx><1?H#boR$nO1 zZ?CN->c`f-1HQK<3Z?lSvUNvYi|ie6#P)?yn%{BTc+_1QJ87FEl;(HZwhDEg#?IKb z3#Iw}VmpF5N@EvnmxR*%ezV;{Wj5&@aK-jcD9!J>&2tD&AC29xeJGUXciZ*}>UwzZ zfIGHOp)|h-wj|UC5xoQcw0$m==J&*{cc0ltuo%pTIeyP<(}Z%==e8w62dccVZ4+AL z_m}N7msBfdec&70uPCYB*1)&68>o~|w+6nmy+Do6-WvF~%@_((lrBwLwL4If%LyF} z^pNWdod~qa&hvOb2P(4jJl<9+=Xt!XfvOzB^U-O@@F8*{Qx-{FdNELwyP(c2vJp-0 z%Ttorg;!~8A?oa;n^dPz6}^sFG&v9T!Ag+#FxF~vmhQ7_azoT_iFau}f2J(ymd{3C zO^z0N7^utbg`Nc(axbC7%}sfT&~b~W><}vAS45sJRMW4hyg+ET#YGKD@?D|Vf$zzG33&vSm9;PVQg_QI%CDmQ9;#V`t(MC2 z2SOWtE6eqT9tKvC{e+$cR+S@!4mbZmZXafUk!Pz&~D3z@)V(F zel_K}LMuFL$t#5{ezoOqh06KWk-ryOq)pg|iLB8@6E_&W~nAKOd zjNr@C+=Rt)b6Mw-Mo(NU`^g^&)i2UQZX{GC$X`xoN|o9b)2xB=aHdR2|D<+MuzZ-O zWTRWb@&z7aXYqsO8%$Ybc*o3uVEHKu_5^}u`Ve^fmqlK5s!vNPhT7Q~R26lF#TueY zu~;zbN!TYeWh9pbzj(oNTcPrSA#!gN{Njbk!-Tv8LuI#pZ+RldU|Sw4&qBer+%7Lc z6-nLd8zFBNI_MiE-(-TT8~Xdj%El-@$BLw`@=cJ-3T^alE!Pq{=i5g9Sm>T_JK108 znQsSq2r4^ttM8|Bn$SVtuJT@?RlYstQ$ibkljYxp?)mnX3xuBe_K~ZMhL-VjJp*Ld z>n;Yk^~3vW)Y5uEL4)McD6?1-GFU#qlqr>px}$y} zpTk&Slk#MU{LvUzJ6k4(%J7+Ux%E?W753PsG#xkexbymG`ZqfXlItx zCAo7@x?EqVXV661pNSu3Wyqt1`Ug#tzh=rM+rqk&$#OOq-9pb*C(Ad5=#y{d%Hvp1 zNX;71=km#2m<~%ZO-o7B2a_nX;AwrGT!eGv$&f z=)u`?MWHL|*K#cs^xz!1q0kj|uG|6zJvd*s3tdqc$O%jiX=iv!&?33NP)5)aIRmwo z#+J*knD}-nTlR8D^bcA+GbmfGBSc3ocxm zC&t3MeG~MJ+#h3b_HnH|3UxN!F0GX_P^*i8zD8|zfR>}ast($OIzdmUua)G3b}mL7U{6Jf*g_m0j8*FG2OH{%g<{c{P)R46c5SYBR>-y5|RdEAPZu z_wM(p4q(i;QFrTB`A04bv}~(<4+SmDk*%qPbA>)rNj@A}C@(74t7x{%u2<3Ql<5O8 z=^wP(BJGwd3eoXT`6Di=f4wI`-^opdUIp!ucQR#4;}%(i_sNwrpcKA@d@p-5L76qA z@8wXYd~I)o?$-TsD<%iYZBRqnFSo_m*^d_n9grO;SPBlv(@}ACK?_jzR=gqy@^Vo2oCMR5uSL*HLk`N7 zP|L=HLbxpb=~?$5;M=1JKh zbVWTWujeUAoyZa%Kgc;Kzerj7LEg(H)ojop_(%CEs{Dv%!DnRK6ljY>Dpu1!_-FYv zQ?68g#DOa3<;y}5!58J`Qz2!p^uzFk;NRo}sO`ZyYMy)oHH_-Id=WJzwPWz_asiV= zD&3%2@GaRgjn`MYL5`X)n?gN<0fo*X4zd1nWvop%cM| z(hv1z_)o!}$_SxzRB1xL1{YC|p&A8U3-(gZ3*Df~6DkNUrrbl-4*Dawgz{YIF_kon zx2$&1i{O%qf%2gjf0b4$3VD|;t+Yn{=>0bMJ*A6~M@SiE4(fP12`Q^A6*8&T2^9+| zr|d+PZ2ewH1?8Gh#gK~1OVl%aHL9kwdCQ*JgGgm1ROpDMiqaO9+NyR)6=k+ieX4As zW+7FTwqHXj4(S@5@70vis9Fm_OHmHm*VUB6sFidcRZ|L3U(p(>DUGsNTj;u}S*t1S zg}kI1O0p1rZjCaUORCU+vHYP@at`FQtO~ns&F(xXcj^cV$P*;gy zF}@_%RpNybLh33Vgy#6wQ+f!s3#qS+V9M8E?Qftsm{QqU#0JV_kbBKoX;r9KzE%4=myKc$OMuaFkX9-(2@mP&&KEFXb0 zq5ev9CO$X)l{HLR(y^ueL;RKPsEM_Qgajzxqpnc}D#uW(YYYhqQu;20GP9&Ss$gXy zQ>HYr_Q;SBrTij@WlGtd93f#!BC6DiDIpPV(-*0@?n^}~uKQAvitD~ql;XNC)ygej ztXsZVw|sGK`4W`VtSwn&cG8@XB;_);%&+YtDrj?xlv(+wrK>_(E5{atVcE^C)JC}~ zv@xWe@+TK*k~FJAN96@-d>aSV->CKzzYFQ8s7qKW#GmdjbyVu2E-eE^q3oWZHmHg$ zWjEA37VC$ynvilh>LDv-BI+cHBv3^kM

$TZqa3V;W2hfkDOXTCSt*ZE?O00Na^995 zEam&C8IF+M-tTcB1Gr4`^FvqKY!@VB+goXSeNOXSeMj?Q5~kn&bDW z@+U8aE_FYIbWzyjq3PBJt|02Flw84E4Ob9#RjM)NYj6coH^m!ca0O8}r7;)VYIIjR z3!Mw;u8iZ7pex*7dwCutn*k zm`wE7iC%BoN7*U#IHa#~mx=d8f8`}pzNKBUV`_h;{st%|-!gaNF?FCa5H)(@bA7O~ z1T}5>FzXk}1}?2v`ujmcls%}q39mwiC=XD}5-g!Zl{c8Le1aDGrQ)@b*YJLVSLkr% z925UN8mSa8Wl3XOlnouJL~VkUSyHbS9eu_q6Ho&t)(jn|S$ zq2rY(rYvb&^?=Y+rL9nS=mh036QA}B!k8SS9leWU zk`jwCxZh&3G6Q3eo3#s_tjuG|)!@i&in0m?M{ZM;t(dP;yK7Y6F{Kmlb}Q5=%5NCU zs&6enRk?w&?D}0orz-a`)`G^SDNivLL1WXDw@j(hrfI!Grz^&{yww|1`-gs|ltFc( z*V=xiv}JOT-t=1Auaq84x!NRp+&DwY#@O5%UeXL@Gv-T}U&13(dB~JXy3d!TOtuxK zM>d{Y=~(Pcq26vPM)Nsix7=d&-88K=y}nMA(yR6G(3#3#tiE*eb>CDf%T|~o2U*d# zf6z=tXUf;QE~eMsDes|rq)rN*rBvdwz>+mfX~dLkfhB9UQm_q5Nhj4umGHKn!O9gkJ_`6YC%;*VNEW9yW2sM&NWSg$1Rfs}liU#|>df@S_{=z3*6 zlSBHYO+n~JW!YYqQrg+(&(KZEP9}$Bwk-(Vth`{#B7a0b58a|z_d&{ZaQG7W7Fxc@3%^MjIE$Ge5+K)*dH{uRrv^GZ)t3+@(IRzw6#k)iXGL8jymKh zv6!+my*4yQ>BvN%j?`2O+oqV`LtFSLz;-2tDP1Z%!7FULV(y0+9mB1AN8O=>qQ=yF zFKnlhhPo3T=DAyW#KlH*_bBBLNc4|ym-Z;@g))5hD3cFD49c&1b`wRfwqTxBw9UhhPzS(x&R6G#zDr;Ou*bhoQCI?wN zZWdKjjMe&NN!X8yKdSjB8$Ewi+MzZ!UJ`a%>54kkc%$cOWhClFtCe9tDdSOQ%sQ$p zlriAjurtbHCI_iLU?c?O_+Wv>{o^4LaPs3UQRg`c1an+ zlqD5QI2-nxQXq6G?6P7%0V(s@R{x496Sn$S@mPl6r;(?0U@7@DtNnQh#c}qEm zf->`!nx`O^DP>N77j|1|i*f{)Ck4tDF1GEtqa0*{8kPs$QGRF2B_|pkvD{T&h}gBD zyGorOpiCaSrzA4*eD@UcBgCL5=sV$+szRFeff6OOJm^nlsnE5chsskX2R(m8-;JY$ zo`zEB*+8#~@?)h3Q@%F5=n>0fr7u%D8CTRxdaMk^80-Z-QN~~_onC+aL`laO>=Qjz zremygUHT4sWiG}p(b%)XWl;Nymh!A{-g?4u|1;$+riAk=&lLG5Xc<4h@=Phhl&`@# zhUZFYrgV0W;ki-+V=%JtLaB=}xRc<8sG$t~m3gT&VX<5d`ue33jH*cYUtTIcV*{oqg#M-UVM-?>r!Vnwru<-nYJa5+VX<6o z$R`QXD`hk)<&zxsl`?@Ti}YJoQGTsVMU7mx!t=EI>gY_ZcKa)*VX<^um%L!b#=0kmt?9-gu?Bf>H#hS zXH<%+$C>DzE-Mo3Mb)2~_*&(q{>nw4-FG0!OC{%^Wl%$VdolHl(6yiv>LsD>_L8c{ zFOV{oz|ml7^?ei^H~e7>r${OJr3w9bJl#2gVoecDCnhX z>P}1v{aHoRng3peCaRdF{3|RChAbtC@;Eu{2VjVr*0G<5Z9`;G zK{Sh=eOzE~rmnwSsO5Ga)pnKZLBn*e8k>g1w+tLa>Jv zqyEJ5EXLc?QElv!vXfiNPHJvQ*7Lp8DtAD9Dd?rv61r*cr8Z*9m0;c` zs~ISmE4|g5D44gOtNwRcnQX4~ahuvcs-4An5B62}xTNf-9%6#p_3(b`&s^lwe#OH3 ztCyG@q<=r1>IM^U%K+7O59;G(4lG>%BxuVZwG75!c^T|BeM8))Z-^RdQHenny5Y(+Ms5r z@BdL)$_jOo+Fa;Ib+X!D=#V;1%@kUrPFHh;_NiZ~7ldSKhWbiqu9~U7_h(@Z^v+VX zxzN3$v(%14i_|Q2xX>yU>s7LUp9jFX|F? ztI!5@g?e7-n3}Cx9~G9eLS3cS5Zb4%R>Or3scY1}LTl7-)USkOX|4LLP$_AhdO_%3 z(e>&Jp+)K@wZ!AX`sS*e)%rra)Gca)kVX1d9mtd=9Z9GZ{w=PXx$=$$-r?JXnnier zZx`C!rIfTo?eYX_$hSbso$3-4q}-*hWuoJ5Md`Ia>Q0P7zTK+%6!P)){X4aiQ2(Is z)VfUkTDU!Gb1rr*+#Yqf5WU+`%|XE&+owKcf->nHjcWa8tOhb7qha`dH5rvbbwFK& zf+MMe>PplPA@o`tbpw-wTnZ^gwH;&4M*D;xQum=MIYOw8p$I^PpH7 z`y92pwIl4Xx)ilz0llM9t@Z*^I;1)d&}^o3XGu8f%$A+{94f&hvmrs_5{-kb3 zrL-O&epa>9r@+Isd(i1SPj55j^6GNLa$ZeEouH%V=hdaC@g+8SomZnQJmo6-QqGI& zAf`-d<@g=;iz>WR6Sl(8OTVhs==19Nk|j%*)XrQagYL2XrhbMBqI{ zZ|Y$onX0mtl_GsSiN1eRt;}`M?&oTWVb^f4631WET`VOm z^K`^TJ;szPLCWjuc@eu2_Pct^C3Zu7B4T&LZmJ$K??K3SOZ8&nSBB@SmAU8>=NE{Fv4?B{Xyj08Gc{QW8zElA8M2eZE;9-s~rsgL(S7z%SgMG$EeEaT-~Vt zRAW)UdLIjasAiykr+TEqyW08Eb2|L7dIw`)1YHP!syhupQ^7g2J`)y>OtRU zKx-#3-=C@Uh1yUGNuyho=V}=qlj7;TeXf?I?}w!^wiG;9Gf=SXK3DHE@%jEjl{^dE zawYtQx<|-6{4cda5nf6u`eck(YI82qy+p(C*Xj_|AgVX&H>f8~Z->8Cw=g-#+olhw zc4I7-j-|g-4`Qqx9ZP?wo@Cu#$YttN~$qA2#jW1 z$wy47M4kSon2j_>m78AA%SKvY%6c>=lTcJJjmadIDc4dih`tkseCWk{@N69~Du1S2 z3(Nd~!!m3m39%J}lxfm5AJ8#W@}gJagxKj@8sW%vWG&AKo%BUTG^`QfNe(lm zN#iEZ4=qaGFgc`7UiG|+k%4qO221O0T5oakj)~9r;>4>YkHI@Pijzbp`t0Gb<`Kn7 zMO z15>IrE(CM|1#ffqCeN9&=r7(pTBcNy<)eMJETS&yCA2Q0J{icAE0qiSHll%B>|>Jc z5^G5M(zn3yt?9CeMs6uTA?H|(m(qlks$7_IT|`q7%jA&SNEtrO$X*e1`1p`qCZ5li z{3K%QBASz?RSHY_F2axO5;_#olAPuu@4mE40puZ<^nQ;Fp8#U7%JNC?cg^q#Bx{%) z(!uH%B7(?P)QalYBSOe2o|5*HAmcQqYn3ihSqook&|IUSDVOJms_6k{=e<{$6A^ z(ugVFa(zIh$nInY>i&Q?EqjpFsQknlkv&Ns>Q3TEk)M&9HK7!Tlr-v-$X=vTEv^Tn z!XkSUQk!c^T3qDkq!ANr87xvC66U64F6mwMwvl~E+d7ahQyS2?S7d+U^AXpLI)fqy zl3*q%<%)eU>C8o9eMdxoL6W)X2-Y~NokCaaL&!s>OzF`lQzC~FdtKhLFUZOF?k+I?%}7}B&6S9Pkf zZl#PPlUXcX%1_)AIgTtw-AOzYnL^euz@A%0&fN5+ZX!&L9&3SWas!Y$r>i!XPKn04=*!q;`>oE$xYPau^&dw za_foNq@*vT;}Qj`LB9IX<9dyIr+xF1N!6Z&PfND1d?or3dYPQe{VPC*Yk z1$P`d1wH5#++*Yv++*Yv++!pp!#zf>DjMt*+*P!uu$?m8apV--NA!(|!F@z)h2TD- zbwY3-(Rv}ck7xtAz?P+SGC6`i1B_fl!Bep|lG|K#`>9zslD9%WQJYEG7O)2J<#Q|f zm?@nsq*tnKB|c0JvU0JPw3P&5EHr^$%|s$G7MDP;W+I6ggQwtaBONgYPr=(pl6g!j zPxEaTt%fbFQ}9H-9U=zr+1e!p+uiSkU^}r#2%h}7R|u~E+$RLrf9@B8>pu?)!S$bq z3grn`d>$5pD?X11!L^}Bh2W|Ir(mgb3eLDY1J(hX<`i6~>J)6} zoq{d9Q*eEjQ*e&YDLAX=6rAyM3eNF41?Tvjf_dZ=oa1u}uI6WCvdx>9!ys>NLp}vPb(N+DDxuYD@M@Nq-xAMqMC9nc%lE zfT|3}tZ_#y7fEG|dB%B37fCIQ?epmq^($$Bv7Jn*%nmED{^&1(& zluMt)FPFYden-LY<`rV|cW$$;kTfR#Yk!5b4JiCY_mZxVF+!U4D#;Mah{_{NxY%*( z4YHbvAE(|Rn=w{_o}If%cA`F{XXkE`1E|4W8aPX zn(79|I*nKub(`G7SlfsX6_ApFysxX$EoK2pW`gU;HqlrLk4ZjLw@2L} z*+P4x?vhie&c@!T`{XI=2Vc$l2O&YMOew9__Na%X9%|HxBTPfJs~eqL)u@CdP=-Pd2FtuJb6xnQFUtON4+3@nH$) zixhAXc;3Zd#2Ut0#*PtQ6|TiHyq(V}cxU2k5rcOTz7c{Wl(#~#_xnx=_Nf0Bf<0=B zMkkK`<;w8&S&QZQq>%8xq7*Ha zi%vt1s%ldU^U+d>Hmgvy6r!zX;-wHRPvq01HLZ~ydLmaE*R@2nsYNk4=$*P{qdhgR zaELkRy}8w*i)out`NKboE~zz&;IY4l`$m`1@=%|R4v#LcEsW%`n{(SlSJnnbfik6? z?USRcYqn?}+dMox`a^9X6JL+&Xg@H~o}jI+qn+cDo^~A=T}OM##OJ2BrnG`m3RRSe z=kwM|^B9>kVnnpJRvGn@$-R`?qLfmSx7O07l#jF?T&(twv@$Wg)r;%{qw8wBxk%;k zBbIuF^VSpQpNr@;I0e64PJQv&xM-)weKx@<8K$;=VVP7@qZ_zre)PxM6;?Z+_J-Om zp$X9qwLiGX{V`v*Xr#RsFm>eXgb#`=Ptscgzj9wf4i57|K zF$~lTb&x3)^`yI9`b3+-#P{Sr(XOC=T(+6!yTwzob*zc@z$MniE!I?f<`Qe_7Hg)x z6{UDd%`_zrrh(6CAFTotEZ4)VKAN9P%vTHMV)M^eTaPL0P23gT+-+I%(~hth^yiUi zKke7TQs~@lq2;-h(n3p%FI?(QMYq(ZGx4?rXq&lMeF2)3P?)lY6sQ$pf_BQKgS7fC zv0$x*ODsf77P0fuq1t7pTvn!C3rU1B4@*7U9kGOKU6`QNHKcHDKND|Dgm#gO<%`g& zCP6+JdpZ>zsdZ%HDWkO>Tr6d@c9V(M&`P_<#Fw*H*k}9D+9ittu3)p^dhmiI>tw ztJ=1(l$X(MwU3$j)V9+?gmTn&T05SS^lGBDYOf`Wd_}1oLSiO-epS|}5rzV2Ey zkCC}yi7mTpLr|-j7IM)VI<@Mq-52_-RS&Is`@(4-(yFI63H5r}_*S238@Wj5)`=~9 zX*-$t($h;z>;U5B<{95qNA!jwhkOv-LGSR2J9l^nR1DphD}t1q-ELI+w65nJI`jUuZI)%bWFUqZgr zX0w!_9Q8}>CKF!+hKn_zNte^DMraMY@V116|JG`Z7ASPH)mSY~=y9uYS{GD7Ybhp0 z+sH-8R5ixI$}D^zQK8^{M7^X`jPdsoIh9k#GiHKzk(C1Nq)(jJ-ZABBuy#z;jIPi! zDmot~Y9*KsYw%R-iCTH4d<}lbGPG(;4t6JbhV~K0;8$&u)))o9YLi5t!LQn6tp$ta zTHsf0iWV(2KYFUxf$6XXw$RhGWFBMhc%QD##uzMF(>1djv@=r*^ez=MU5jGMB9E$; zjrmIJi+b9lY)qy$6(ujI5i?6$$dpd*RPEkkwsr=!FA{Va^`Hl+WOqJ~%J!`nGg}K5 z`XuISZ6MQiOPSCXF>|!pOb+@0vm=%{+FhQK_O3;mqnSN;DHo~*)0Az6B4g%i8B7kz zdnvsRN&5rUKT4M7Yc+d9zI;m|QIL(C%Wkx-AA#hUaPYbSeW)Dj_hXVenS6JveoJEN9pWl`|Xs3qEm zD0pYo60H#zeL`%%m?c^~3f>vDRO^B%;hj;-w0ZrP~(?RiP@=*MV$?v8M8~vM8R9Bb_>BZn#41#g!+rq$*m8y3xrIiWS-V!uZxv?wP2t9?@Y5>xhSvLxoD zmd0aj5AdXRlPQfXiCr6gO1qER61y_yl=ci2OJhH1Z&5vH><3Nh!&*k`TOaeIR!k@- z<|i$d3GNEp8*^6c#l+ikUQ6R*wV&5|^o3I3cXMj=1+7QFLd}o9s15HA%9NHgJrVP( zmchjLR4-|JF;+90Ydj*_oxzq1(M^SGwnDHQ$1yQWD4pa#A-b4_c= z#M_yt`MAXLv_K}l6~3-TxTL(UC3CSUy6$$Q@w;~2CFSp0flJEY-BR9gtNn%+Kd`W6 z!>l*7Pnme_H?>|ubeu>V<&yH2_N|D~r($Ujx#$_#{$aPZm#EtzcImbz4}u!f$@I}6 zPbLRhJh~KBX^g!}yBSlUeSqrKWL=8_?PJu}JwWsY*sPS(?Lm=TQbFs}RD&^gY2vyT zcQgkoCT^hQi`9w!Q|$Nn z)4kD$T3xz7K$mOFi$;s8Jl2w!vgjUX!`P=?l$6EDl)a3A4u{Qk}YHj-5SXsZ1+Tgt?R?+!hGrvPr z)r)=!r9eCB2$o)#>97R*$wUuxiJAImE-_DiyofE2EvC;ES{qwJ|3+wAY-xQz7s(1v zklxpiF*(R8`aHS!^)nb7H(_6FS^Zbka-i^U#<-Me3kT2kuOKBr1!*> z&@Ywsu`aP{`XZNDb$u5TKPIVFSf(dDyU!_jc3&+$mzP4H-FHQ;U6@jaC;52`!IS*z zx#&QZ`YwtH{#Xc}-Pc$Mp55mo1kdjC6@q8?HD@Y3dTEJ*qnDIQ0YdxgoQw?=%Bgcc zHpDGosE8e^^IEkF?W=PoHe4vD&fVB3{S2GhEOMd$lh|neBI;59zo_z<_y}Yxz3xc9 zT*GshTj~BNIiyrfj6NJyt%DR7t2Y`2De0Y;%eA-!y~k*-0(*IqsHdS0czeYq>3OKV z>80XY>&?dSltWvUjccQ~Ms=@WC9bXB8&x8sW?VacG*gxo)2>uZd)#Q$C9kI8F>!R0m@L0pxkht!82C7NNn7Cg0 zLni)<*GGTJ#kK`hE~Bq~^@Qp7@%RA1=cX?%+OV>-qS(VI>HWlH`r zpT&Kt2d5WmVBAREKCw_E*A*B3#LE}#uB!~P1m!T@+~kzFdesb&`TC+hQ4@eVagqGGxU{A>2wUqPGcKT!Se-bxOU&!Q;68pS~Td2Q5kyu;&Vm){!V zVv5Hv(+g0WV=BjI>)x|?>|)IQkkxt*)Z3W4@!#lkQAcAM#jn#dX7k#Y#017~)C-s# z(yf@N_|5vK4CE zk9E;@eFPUd{$UA^9r{YtWhR;l^2t!<4*f8T@onoa{gj(-Fr|~LOA@4A`aRSiOLEj* z`css?G(p;}zd@Cw$Njr?c`j?22DN{ud!nHB@7NX$YKK;ThszSLeUDy-rR4pxNB8CV zBp7wyqX)ah_UgSb2Gg)tABci7zZW$?zWr{~cR)|$rLgmq2lT0;O!{^(eY;C32i@`= z(w~cz^v&41=R9Z6AJPMuc&iWVZ7>G4AJ$z*){p4zd5rB@9o0u;N*F^rs_$chp74^6 z=~tN2$-XAN1&wycJK%NCKubD{h$XgWTlYc*)3vz)T2;sW*>?EQBOk6Sa!s6TJMBfwaiO8t$)Tv zYZws!ll~PGui=cooN1QS|I=adXY|8N(3Y|BXY~S}lGXl;p1ufb=hJsyU(5t4y`=N{ z4klja1^pBk%XdLdTmTzDxQZE|%|--fRivgVEO+@xSSIp?UF_ z^)^DQ$-q7`>FhzW7Z|c>!*wo(C zUC%V#(xY8c=IcF}_!Q;4rM#_Aa!FaBFLg;-pyx3`UmuCSqdzT7Nyl67>TkGM?RWL1 z%UEBt9=xaLF!B2C>-U*>s~_NRG2a$E&}%P;e0+U)pa(I*@5;XTKlE58JYK=|9nQoI zv;L{i;VD^t5B2p-yuL^JD-k;q{aClIU@arZI~~=Z=mryS%M-l}7n_DBdV2t z+1zJ(R}mW+{Y;-EG&TCU+up?seGZGkZ|dRr7y3%n@9CheOwgY>>I;1@6C6#Ph<~Y{ zej62(0(y-~N(WWQ=2Mh09@G-0jRti^RTu_JMGa3VnkH;i~ex!der{&TXqa%;8t*M96g9+yJ<0ub< ze8YNz)nGNenE1T48fCcHytNv8nE1BGX1MMT+KfY@6j`zv7lp3H%LZBNY?*32PY3+d{8; ztZcNw*s%yNsj|@pV{rXv6(bpA@O+di#vrCtvU_yngsR2}j2#`_k}8eolRlbo#PWf0 z9o1yQV)+B3%qG@ODTb<=(G#_s-hoiv_yW~-LVA%JMmm#&mhvL(Lt{3o$%Kf6n#ND4 z7^>RF2b-ZxhvZWl=NUvZP&8+b4W%4BrCzGNp{h73GG; z45ln;_|)zR4UNj*@>t*SFA^FXU729nt&-5x7|oPLE+##(G&3eKOeO~z zMDLquX3WRf*-4`le2guqiS$`sKE@uDmmPE-way3hkjcS%*T;B?g5LEpEL+*sk`jrt zB76-ERWs2$+}9|Mg8ST>8)Z>&pIdXI8WVlvL$UD*e#Std83`?oJ*a7;mL>!kS5ZwS ztWF3tO5{L&`IdKGHYWrb-YB1f3oHSu$!$6nT-tOxrUqnTz&ts_b$_A^}X+URfOuo$#Omiim~ zxoOue&6`@J0mfk#yKWh`*iO}WAC!4rTQZ{;)z=?VNY^cECqha;j7^=HK;>G)03(9M zQl(lRWfKP&eVL%X?;-{oqnY^qIfIQ~MU1}x-FV5w+cLzc|2?anwPlDw_VZ~ES1i&H zqZ-q7?W4>Qkwe^C=8Qqhh8W&FrDevTDv3jk6x55sJ~WoWlul05tLcXrGnmrIW%~Y( zA!7c)b<{&~`uN_=Fk>E1$$D^@@x73Dr7w*qOu6)Jzi(QO#8M8+8H;;Kqg+(9>L^1$ z08<40;+;6gc%O;q8*9`TFakEKM+a3+-*0 zZVVAA=LSzQ974;eW{8xsG{u-FbhzbIBU_~W)AE(EMd(EESH^ykl0Hk;I4*Ru=8rESI?p=T|(8&5^bKZ17|mP3WT z^n%KZiTBHQMm;9JEbTEuU1EEU7@>xV`;7KX(ATv?4j8?Jno$iCDZh(2WMnY$_4bJI zlZeSuuG==`sPT}+_%`IIG3zk2^SbuSj24MU-PTlR4A#`6#zLOb^2wlJn(_?_*3_eh z?MUIeB2!gk;@gR1Mn@EEvyK^ub0MWeg6+gHBaeyKe$1_QXAEjTW)$$0toCDu{U~d- z1!_NL#4_>TJ?1vG$BluQ5^6tg9Oh!%rQ>e(Ib%@YapM%`gYD9Bqw+CleaDTOOi-W0 z=eW^?i<~fySWXzhC>Z5GVZ@=}zKIjYU=&>0f5I4tf;%iu7*kPjKf(!P9ty6MIbp2g zqV@TNoiMgx>|XuhekYBCD7fnXq;Z;wKV|x)aT#N9o&QPW4hpXGKWRKi!FB#84eN0> z{|H>?f70+m!FB#8-F`bx8WmV9Rchh!T6K?|GW;+$)0$H0l+lwZ*K%(0tDqmm_WIo7 zn8ee@Xcn6-^%>bV@r;p&`rF?-;I`Gj zX!JP^`En(w;i55E=vB}qVSVVmFLD zm)H%r*e#>}PtKOza*N$I{9IzU-C}o)2o~eZ^&O+5OUk>(UJ+~NdEYqe68pn#jy*K~ zVzE@IlSgvmL&H47dYA2oJaS9<2-locDMLyKd1RDvN%`0<}hX* z3BeseuMB)*Bzv;gYr~V}XW@fV(^!%non_EmV8~;)`?Yj~cGnOfrjm4^F4=#G2zC}_^ zzK_YDmZF+;!llCVYK4OHYHh+bjKNib`x6bJoH~_T6g7LCFRV|Nys%9E8&J$lV=?}l zQ_L)J0a9Mq>db5(QOtDRZ*|6CD_qPh&r@1v5B@2!nArmbTm52YUnahG6mzSuxH%P5 z!dAby>3fmamzH@UytrF^&KT5J+zjR^Eq4a}mPkuML4C#DdbhYao5fP4IFAe;_gD#Y zmrJaKd4`EEXC>WADQV_mN_d)qd#sdM?N?|uuc4GV9Q8uU@G0$9%6sNfjIFfhsPDPO z%9!_DN-1MnFYz*0S~Gm!cS~8;EQc|eqOxwWa;CRStejh{yt&pTR^BaE!QAN*tKb%^ zXg+m`RWv<*bGEFK>BYqRtg>6a%4T^?34K=C{EUe&1y#%pCce~FHS(opxP>X~m)Eo;|Gs&DrAou?c&wqer8<|)*a zvA#(SP3Z=YHEa`*)W{r;s<9{_sfoE0WiE(i1TMho^a289Iax7hw++zXe6pU5y$S)mW z&gW&)wj?J7nQNGGCAdN(#I4LwGZ*s>_OM8y<~fmXP*SM*w@bbVw|tRilYD4(ss!~# znxRZE?Osx}*@cVTr(^!D%w*JCdY5u5a}cUqhjB?U<_Ofl4il)xqkQ^IO^P)qqr&>k zq?(0VNB2MD%mt`D^ts@1W;PeC-6F-CTZHB%#hd$?a_PD2$SMiuX%Sm*B$;_GvDW6` z+lBLQSedqF8WYdg&MaL}7@H8?!K}qaO01%9bTXTvPWD)u)X@y(l9D5WV>+6NsG~I2 z$?VES+c_b+lR1iumD1UqBJv%H?rg3U`C7z$YVH#GRwaFE=3_o>^oFD^W|2FrWu(F| zkTs+3sfTH~TUZ0A8miVXP#702 za~@S|rd)c)eNmO3X0nLwPwHiU=@Lse3-?jr>afqvbeC9PbBV~;;QjvQW{g3~0j6{h z+L9)X^gd8!kU5Hr&G#?NR3=yk!`}bGoXN!7GQ`{}V(X1z=0TU(mu9|*4J$LkeC84x z>9)*|Hs8MwwWmr}HKo#Mx7Zld7h|7jDV4^!#m1VQF!q?n#=6DEnd2~aO;4#b&MlT= zF2k5bN~x6M7IT<~FxEy%spN2rjW=&$>_?JPX}nu3)l?twX;? zx7Y+T24jtBTPB#pnD|yI-7RIhIUZ9!p()eNuTU@P5!gg?4az}Y(SXf?%FB4IPBG0tc&n$-Ql^^KQ6JG#rkO2JL9~?VW*gMsR9~3`QLky4Gu+yl zX-;A>SYD1MWt!WV_%?DjrsUV`eQjQ3u~|~;g0o3qn>GK0wq#0OhW?tAWe#D2Qs$MP zW2Q3Y)BVo`X|DM-mo~F$Uea8)|4EPdJl!Pol#4_u`84Hvmr~}LyIo3|XC4$O4^)|F zUKDzew7|U2#HV42S@|KflaDekHES|KJO4^rYBm?Lv|et;xoD;NnTyt#qg=GkoFSyQ z-e|65;!D96x8B`iZeg)hX{4n@>n-N@C_ii2*58`PL@Bbg)ooum$1GqmzVDr5PJaZ` z!1r`=-1c;wG1$||G3WA>Y)>c0ypMuCogDKi6HL2IRq`<_lZ{btGhedkQhW z*R{>mo;hpZ=2p8i2DNW9OY)Sg_HAY|3ToeG4rJoBZ*!a4?dA+j3AJxGJ3V*Sx81Ei zXAJ7wZYJ}TtiJ8$9u(BKoi1nePMmD`|8ecY&mQ=>pqBF+{&{}~_y+!aNC}IbpX;&D z^r00r%Kx`vDGwyVHwO|u=>OAG_<#7O-Et_wYnkh3h`OfdpIuXi$3m{WkKq_@@+8PR zB>F%8U(g7?&s+ij8>c|7ilgAOM-TY?VG?})!Uz60t6%uvL#iJSpW#h>9@6KZ{p;t1 z8u0y>zVN;OBKZG&KKxH#>ii#>?2O)G(G%6+o9e9O9SxjOo{N{m{~!Gbq9f?kc}ULB z7AYzOzIXkaKnZJ~tU>AbT_Y8^?kNgcl??1JKuOkpGoNMsSe{CxMzm}J8XI!U+Z-3gy!BR1ND4Q_2U2Tdhs7`C*6Nf`Igi9|KFqk{te&LE8O4v*X{8CTzWF`Uw{4K8~W7g|Do>} zdjD(r@Qp?Kr|&!2|1~{)W07E=)_tn^UhaQ4J^w}ir(fIu{r-RZhwrifzts=p=$^KR zG>`tbNUon@3*dqK-td{8U;7{W#<{=k{wv`8o}Sxo3N@adQn(JfelFbCb+)RoZTjbs z>r8jZ#gDn*NXi3``&>V}ZbiRjM^gXUHx}%N{ozplKkdoDlM*dbr7q6@uKnry**T^E z+ynoWH2=dtN^&I=Fe-{*qsk*^=y&cpGwMd}#^a|gcR^Y@>AeQ51s z&)@a4d+)g(1@NBv&-eD1wSs!R=D~kHGT={-$Nzas|EV{4u7CgkPwD?>zvun`@Bjb3 z78nWfV51`LYr5N#`CsT~=UQ2~Cc3UWd~3${J^s6M1m^-9Z;4`KIDE@jP z!e_pg@hJby$4vM)Ivd?`9Yx`v$(N9qkJ5A>3!i!VqI6t{E{AOF<)1$DC{NEvdmgri zTm^JQ$SVE+18<{(D`8-?)ydwVUpo zUwnDsTX@&ce5?%qd*BlC@5=z6gRbAZj`ht=gIfM8+j-X#{!e`7Tga7kUGR{~jE7da zw$nLg$j1+@(ls{j=Q^SYX*^uMcOO@DZL@31yk7qQ|6=b=z^f?McI~R_?los3Ap-=G zKmd^-gh2?PB%3f#G7AKfkgx%nWspFSgoGh7D+EVh zRX@^I^}o8ds<}mtVKsXH*bdhoqe`jxRSuPJpX=ey@dV)s+ZKYOZqJtbV5=0Ck()iP=wTWw!^bk+W1bTB+Lp@28;>ge-xxYWv!9s{MbSM%DRxdYn>L9oL_wr(U?W4yyd>-ch}F zE&qCb^`DEipCfkLK1yltRZlaj{nw7Y|5wudr&rYf{%Vt280!|fQmsi9``1)!#hPiV zukY#!IcI8xtX5_A-nZLSPSwoz|4J|apR6;r_P=VMYCmVy_O&xZwg10!2TJSnsyiCB zT3)%0JX>*}E7(7h|H`)Cy-t6KQvUnbdR0R4V%od9%2(Tl{3HeQ{6Axr$7JemTKUy= z|NowvJTKdGU9Z4E!Bh+PpIY7K)t@q}UchI~^3H<%*V^ic>}Rq4%(C0pbN~CFyDz(* zz5m%g;Pu>ztIzK3{Js~pXB3_fa5lOf(SD6nZ5Gc zgAL?8i+wNU^18M(n@am^ZZ%c z2l;ejd2ecmS@PbE?0;3;#qtU}U5-Gq@mZ4W%_1-5-2vjSK;#@!(~~TpCaKYNhd4{Zyd$nz_3v&LvL%u0T z6zpr6UU_!Ou^P6xDsNT#Y7b{GpiTZ2DNU7MwZH29nzYy7ZcmXVY?32HT_x@1baPOx zBIPF_r^f$Po7l_zPuuGGp<1n}eW^bEGwzXZHhv@9ux8(>Txvd_BU5&sKu22BuRQAR zNk8doOexj1PqkhTxdKtPJ&p4GCt60m<)~Kp>YDqM?F>?Nt9jJz<%~gVGr{W08CX$y zVy9I1wJP&)D_Rw+vrMf?)LE9?ky6^vS#_i>ZS7#sOXn|_Z(s_h_M%#~X3N;i44*@} z=s7=T{=R{M23sP}AS;M!^;-bNUTagz6Jsc4RV;awt@0{c)FyvfPr91mkE^gYz>lh- zG}UfI!RTo%XTMuyf99-?wLitJPKmi)rdK7Xqf>93sxda>9x6e|`lrYz!1mTw>Fu<) zgZdO>h`iTRY3#9f|Ml2(>{a93-u^1@NO>;U%U89v*G<`~$CW*QGL`vfXXW*jX0Q1q zIf|CZwR%Azm8_`lAJy}GWiJ-ggLEHiUUTnB{;K-ek5Sow%=_ml?Rf`aCRA@eSA9Z6 zo`041uj*NKcU-gPf2`ZTD%oBiWnWLNsE_Epqw_+|3AYZWnn(2`Cfz`+=~3-pbB}*E zr-jM!>6NpnDwD1D9PZwmL(Vt*!;iRwdWlLFrXqmCJtB zsA}8lG&Ng{TE_m~LRD$1w)PSpm9vog45el{|6Px|I;g#TCuh->AZKbdMIM7GkDABS zd|Tb}c-wy^r5}LxRn=SfgnDz7S8eZpmLNtLFW zRd?>{Dp_4Z)gD#d)X}NED5~;DG^?(;@;r~0QO6<}oheoJ7 z`RaOBwT$}o{0FT3tL`h+-KAQ?R1<$aF^|$H&-z(pSFZ#N)<}N-uAUXxZ8ZW%%hiG^ zL9NdfZ<711!21A#-GDR(Q=S%Cf2_}nvE)&#UWeH0@UQHQMb-6G*JAq-h4@pf{eD5E zQ64p)sG2C=Cs)h%Pa(swPT-6vSXazloT-%6Yxt^Fz3K}))k;h~$)P<~JqfWtKT&m1 z_iO6uN~+xBpFL4o*Ne(g&oJqVDOeun6N7baL3Ok5UD>L(svp&{+im-iDtkNb;Hu8q zKic*?J7rg;w2yOT+vm@kYgBc2quMYGa{^jeUPsj3Q?=jF_fs{GOQlqIE~=f?HA~Gi zDt)zWu(f!q@UPm(Ub4EI_^WcNo)4>Bb>!+=Q9VoC+?4h*OkRtXf2BN+TF5zHrJ+`> zI?L4As#>gi+*XbAn*F8DW%bNTJ)!EAMy1(3^p_M>pI5=<7dylTJKmh%(pX6abGPj)`4lSuihLq*pIqC_mUmJ$)6;!NRqH9+-acxNluIyG0>!G)#hH;w zdH<|rdrEtmsx)dzLyksMKg+FIH}w~MfBpX9pFQQX_pIGkb+-45-B#lyRGy(f%%&q< zg?e&!QXZ*_?T%TOv*(%+)p%2}_B1s=HCB0Z+fy#p8rM(z=S_C|`b+rtQ*My+jGZ;h zw0|D0VpYrA=U6&Z1f#a)@~ly|!A{ydm*m(`EpP8TyZsn?1nVW7r+DYhLAIZ(x@}cT zb!I8sPJ7*yt!k*oTg`E3_o#BzIcPt>?6y69^%=yO-EW^mRGHP|&|s-KbSyPJ_Lj8U z>L{rEs+pfWRcF>;$I{5eJ88Io;jG#=SC*=~Gj%L~y~n?fRpryO z@v8OGfAyJBRlipq`@jF$kbTZkpC1v0eE-?F=KW`T%G2_>3h`g1RL7;BZT{J3QuO!K z>OLBuqBbTwqdQUAS#ovC~~&wKk&ofWHRl55Xj6|1gI_B3|C zS`XVxtC`+@)~lz@!E#Q%;-osLtDZ_@Z*w)44#-uCvek;+KE~AERbKn`MS1KqssZH$dplnqpjWNNf zO{(gt{C29<1yL}2ZIxg3l>PehiM(fAf-(*Edp4DaLYh(Q| zlL%dM&Ev9r)bnsf^~_4y>T?-l)n^BPZL7TYG}WJ@Rn=rW+F3o3Gjwa$ygRVh?FrmL zSLIdhquR<|XL@E>RYSY2o*JoIsppD{_NSM0msgcnl^-Cl@@l_!+ule2vpW1)`N~iI zWiYiz<=HT|x|i)X)y>e)h16AMVFyZCcPLRkn|c$Yy6RbzidC(uo+td--&v?w`&$i- zn zKU!A{c1GS|+2?I#+jH4VE0F2!vHy-u>!qqEFzWL`dPX6b-LGn{YW0Ks>?1;6?|zrp zyIJx{W-I9lmv<%V+j3MpsP?hb{@Gd8C!uuSsZTRi`4*n!RDH@>y`sRibuiV|z6!NJ zx39Jhxpp$xMyGPwM+dbEBtGzhnyG*wYqoWvy=lS?l7ww~nwZzT2qo6ge zo9Zg8o?=zq4Q&`res%Ao?wIK6Y_PBHp_TI`uqu}PRe9CZ75f#(ZmZP`tud;eu3V4D z{`^7NYHhY@CDoyWyr-^dtCH=bsHVprYqxu)QOS0X-L6^A^?1~I@$azu&I^Bu{Lj0v z>$6o4QlA=Zqpk0LznzX$t-I7JPH`aa1+cD=cLeslwBj<^D*3EZjg3hYD5YB4D4W(2 z#{UKntu(62X>lXfQ_+4#FYMrC4(4PYYz5fXFc)kWY!~bh_Jk3_TxJ+E&2VgWVAo}l z*h0)Ggk#ul)_`3#TEHKVtsS=Z*g7Ch2c)?L_N~}Dv*(N?_>$mDMz|aDcE{Eed3&?n z*jy$~XtNLY*M}X$R)&q4eG%>p?T2*z*lXCzi~;cBVXiq4`3Irg!Pq9TLOz)-Hzu>S z#uT<1+gf8fTaRt6F$ekPAYYc;TxKrH&xM_fede(PMjktDEMgyEJ8djwPx1oxwow54 z9(KZ5hHWKVYOG=<*iK{P9KQ=>Ji<1KJ#0JMi}?MpPqMwnd(3B^VviUf!v2T_nrC2t z47(h97WJsa_Bpl-DCb*j-=hvcV7mzWM{EurVmh(;^NZ#UygjyyW>aiEd2^l$O~W>m ze_-9kPgrxgKfY&gJGK>UJ`crKfUOp`?bueZyZLj*NJrJtKeG& z-zxZ4!M7UuSHrg&`B%fY8oq6OD0>9<<9q~rnvcO&fNeCk?bue}`)KdLR)FpA*w7B} zmGb)73b56|wjJ9F_B}u5yoim7`WWN|*y>>0j%@|w@NxJ!d>lRwpMX!mC*TwC3HaQM zzU4Itv{;0+V?Ym!2LoAxWRhf0$pMnXCDSD*NKTi`0&C;@{-{jU74{nG-wD=XN5E+2 z=JcD=J~lL{4GZFNGdi#sUUy6)xI3f={JWd=fjw#CAeMxbIQx13_PBb;Uz&+zyY3wa z`^XaV?80~V4UlOjNES&x2~J{1z!@x7rjKKBGnTV+GB!cbakY{DPSU?g+S{a^D`VXT z?e~E6mr4IIX`hhxMI6OQPE6-J&7Dmq^Q*8I@C_hmPnuNzMRs)CBBTkKwF3OI>1y!h z;I&|%uIs?$)Qw={uH)DhxyP&QV6$$nQZsAu%P9Fkk3+n` z7?XK~A2Ig~eG~Rg1xL6K--|hpRj`e-KjG)tgN0v#d9yF@)&-6Q|4p z%{C&T5ja?$#=IwtlykX#&VRu zfL}4+D}DlLXz%%&!-KL#HXk1Jxo>PR+4CXb1Lk= zbsr0xjwMN)mb}z9)#@omw4ZL3;V8028UHD{2P;!G5ygco5!-0!TJS)RE!HvFGACrq zaPA(8UtckI&HB>I_bF0;k3O1sBvBN}}93@bjH${tm3J>*>DX4{qTR-Ri>WGme ze}Gs&=u=0jd2wiM=W&*j9qF7Pk^_4>H(1Gm{hdBp4(IcC%!W-RWbvNG_d2u0XB}!Y z;(BRsmMoUEr2i3VKPI_Xa=&DtjD1Pk2PI#Vd{gqInk`PaONx<*47g_h` zRD!Ptp981F`y3mr$&1c8ccO*eMuZUsB`?BXi5Zf(BREVZI1 zZ8fuGJ*R{HTpPd?aB?qdw`aO%xU$5oUeuCw)gac!NV^r|xxhFXILB3BEXMC@aQ<n@wGO(*6>IB z;kUK*%tIbJvpCx+>lP{EX1wT%6*M#K6z|8r4V%7`Hd4mY`Sq16QjV@9YeK=dt{7`X z`%5m)-)%)>n|}F`^LdRAad=Qe&Z%yke~DUg-m4bzay%}ie9pp1cO1&38BDZo?!ID{ z74&tNnsaf!(+D36yL9Fhq&zc`ay`<9*e8WrV8EOL#}QedBVrkTt*ni?huBV*;I`d_3DcaZAOUtox__9rnVxbNuLfk>eL(G#(Z# z&dWVkf^pu9AjkZ(2Un;9<8r_Ce&lIj1UYW=-{KeK2;Nu>-tPa1UxCr-<~`uSwnSh5 zXZ)_px|s%@r=@1xj&sh_a;`g#_0NkgpY;0-I&-HR)_v-l74Bcj)T$t@aZCT>ygg=# zD`vvhe*Pf_wbeyAiZ04tC^a{xFZM68t~8Hy#mZG>tU)Em$&zCY>a{poeyriYiL+Q) z!f@-s;vQHHhQmYL>%?)jB-@$rnSX(?Vk2j{C~X18%+-vG{#UHOPy2z#IOu%je8>E$ zSm96$E^(0g9Ec=-h9dB@+j8IqbN1T?07VAzj3hH<0zlTOr~t@P14>Z z(_fS$c9Ztg7~UrPYqu<6w`{#k>Deni`;m76-z)t`VAo~|j`d4=uq1~SkF^|D%QJ&; z#c3XhzWZW(HtdT-ac3dRKOkE^!EprX4;ZxiJs@jRU<7Y^nqQP>+(mgF6&U$lX*|$+ ztib5s;i@dhQ>&-gg>~0CR+t%3>l{nn8eD6eEMc2GmNI$l$7DTENdIZc6SCh=$i1JC zH92CQEqs%okaajMJ*Ujun>|p#{^D^Z{gIejT zEcvQI^XFCBKBh_Mlxfnr<3lgwTfb|GOgY}$r&2rldUwsF|PHRkf!op@)YljYiI?3AG3WM zl-vNM@!v_7+)37_jjTf(S)a9XP3V*DoGka7Eccr%_n2(bOxp(~yjpv(EMc%LAz9WW zS=M|5qhF!fz;?{HLg|_k8hRS5qoclavQ5qz_YJr)^gCl&`}ojwjAYKz9qvJa?27Sr zgIkc2+T=Uqo#lZnMeZe2?&UjUeh;^iDfjiAF}+71`_AaPoFf;Ffh)$VTZp^o-5omJ zL3hwsjC#rB8I_eEnx#GYt?mh>mBwO!H|n_nSI@M@kB8D(xkawQ^P7)?QG)huxa)f8@62TWw|+Gz?C>&h0Y3)Dd5@WNtv_MXJvH6IJsEx){@21QSa;lCM_?p4!XiZNxn@L!D9Q3h zR3bJ$;yl(*z=uT%w1aVOW=T}=

)lCAcAH~{NfJo-3~?!z`Yw$ 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 + + + nunit.framework + + + +

+ The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + FrameworkController provides a facade for use in loading, browsing + and running tests without requiring a reference to the NUnit + framework. All calls are encapsulated in constructors for + this class and its nested classes, which only require the + types of the Common Type System as arguments. + + The controller supports four actions: Load, Explore, Count and Run. + They are intended to be called by a driver, which should allow for + proper sequencing of calls. Load must be called before any of the + other actions. The driver may support other actions, such as + reload on run, by combining these calls. + + + + + Construct a FrameworkController using the default builder and runner. + + The AssemblyName or path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController using the default builder and runner. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The full AssemblyName or the path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Gets the ITestAssemblyBuilder used by this controller instance. + + The builder. + + + + Gets the ITestAssemblyRunner used by this controller instance. + + The runner. + + + + Gets the AssemblyName or the path for which this FrameworkController was created + + + + + Gets the Assembly for which this + + + + + Gets a dictionary of settings for the FrameworkController + + + + + Loads the tests in the assembly + + + + + + Returns info about the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of exploring the tests + + + + Runs the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Stops the test run + + True to force the stop, false for a cooperative stop + + + + Counts the number of test cases in the loaded TestSuite + + A string containing the XML representation of the filter to use + The number of tests + + + + Inserts environment element + + Target node + The new node + + + + Inserts settings element + + Target node + Settings dictionary + The new node + + + + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. + + + + + LoadTestsAction loads a test into the FrameworkController + + + + + LoadTestsAction loads the tests in an assembly. + + The controller. + The callback handler. + + + + ExploreTestsAction returns info about the tests in an assembly + + + + + Initializes a new instance of the class. + + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. + + + + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. + + + + + Construct a CountsTestAction and perform the count of test cases. + + A FrameworkController holding the TestSuite whose cases are to be counted + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunTestsAction runs the loaded TestSuite held by the FrameworkController. + + + + + Construct a RunTestsAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunAsyncAction initiates an asynchronous test run, returning immediately + + + + + Construct a RunAsyncAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + StopRunAction stops an ongoing run. + + + + + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. + + The FrameworkController for which a run is to be stopped. + True the stop should be forced, false for a cooperative stop. + >A callback handler used to report results + A forced stop will cause threads and processes to be killed as needed. + + + + Implementation of ITestAssemblyRunner + + + + + Initializes a new instance of the class. + + The builder. + + + + Gets the default level of parallel execution (worker threads) + + + + + The tree of tests that was loaded by the builder + + + + + The test result, if a run has completed + + + + + Indicates whether a test is loaded + + + + + Indicates whether a test is running + + + + + Indicates whether a test run is complete + + + + + Our settings, specified when loading the assembly + + + + + The top level WorkItem created for the assembly as a whole + + + + + The TestExecutionContext for the top level WorkItem + + + + + Loads the tests found in an Assembly + + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Loads the tests found in an Assembly + + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + RunAsync is a template method, calling various abstract and + virtual methods to be overridden by derived classes. + + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any tests that are currently running + + + + Initiate the test run. + + + + + Create the initial TestExecutionContext used to run tests + + The ITestListener specified in the RunAsync call + + + + Handle the the Completed event for the top level work item + + + + + The ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + The ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. + + + + + Gets the tree of loaded tests, or null if + no tests have been loaded. + + + + + Gets the tree of test results, if the test + run is completed, otherwise null. + + + + + Indicates whether a test has been loaded + + + + + Indicates whether a test is currently running + + + + + Indicates whether a test run is complete + + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + File name of the assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive ITestListener notifications. + A test filter used to select tests to be run + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. + + + + + The default suite builder used by the test assembly builder. + + + + + Initializes a new instance of the class. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Marks a test that must run in a particular threading apartment state, causing it + to run in a separate thread if necessary. + + + + + Construct an ApartmentAttribute + + The apartment state that this test must be run under. You must pass in a valid apartment state. + + + + Provides the Author of a test or test fixture. + + + + + Initializes a new instance of the class. + + The name of the author. + + + + Initializes a new instance of the class. + + The name of the author. + The email address of the author. + + + + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. + + + + + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParameterDataProvider. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Modify the test by adding the name of the combining strategy + to the properties. + + The test to modify + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a NonParallelizableAttribute. + + + + + The NonTestAssemblyAttribute may be used by third-party frameworks + or other software that references the nunit framework but does not + contain tests. Applying the attribute indicates that the assembly + is not a test assembly and may prevent errors if certain runners + attempt to load the assembly. Note that recognition of the attribute + depends on each individual runner. + + + + + DefaultFloatingPointToleranceAttribute sets the tolerance used + by default when checking the equality of floating point values. + + + + + Construct specifying an amount + + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + SingleThreadedAttribute applies to a test fixture and indicates + that all the child tests must be run on the same thread as the + OneTimeSetUp and OneTimeTearDown. It sets a flag in the + TestExecutionContext and forces all tests to be run sequentially + on the current thread. Any ParallelScope setting is ignored. + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + TestAssemblyDirectoryResolveAttribute is used to mark a test assembly as needing a + special assembly resolution hook that will explicitly search the test assembly's + directory for dependent assemblies. This works around a conflict between mixed-mode + assembly initialization and tests running in their own AppDomain in some cases. + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RetryAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Attribute used to identify a method that is called once + to perform setup before any child tests are run. + + + + + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. + + + + + Construct a LevelOfParallelismAttribute. + + The number of worker threads to be created by the framework. + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a ParallelizableAttribute using default ParallelScope.Self. + + + + + Construct a ParallelizableAttribute with a specified scope. + + The ParallelScope associated with this attribute. + + + + Overridden to check for invalid combinations of settings + + + + + + Modify the context to be used for child tests + + The current TestExecutionContext + + + + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. + + + + + No ParallelScope was specified on the test + + + + + The test may be run in parallel with others at the same level. + Valid on classes and methods but not assemblies. + + + + + Test may not be run in parallel with any others. Valid on + classes and methods but not assemblies. + + + + + Mask used to extract the flags that apply to the item on which a + ParallelizableAttribute has been placed, as opposed to descendants. + + + + + Descendants of the test may be run in parallel with one another. + Valid on assemblies and classes but not on methods. + + + + + Descendants of the test down to the level of TestFixtures may be + run in parallel with one another. Valid on assemblies and classes + but not on methods. + + + + + Mask used to extract all the flags that impact descendants of a + test and place them in the TestExecutionContext. + + + + + The test and its descendants may be run in parallel with others at + the same level. Valid on classes and methods but not assemblies. + + + + + Provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + + + + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. + + + + + Error message string is public so the tests can use it + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type 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 + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestFixtures from a given Type, + using available parameter data. + + The TypeInfo for which fixtures are to be constructed. + One or more TestFixtures as TestSuite + + + + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. + + The type for which data is needed. + + + + + Indicates which class the test or test fixture is testing + + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another + + + + + Construct a CollectionSupersetConstraint + + The collection that the actual value is expected to be a superset of + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a superset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. + + + + + Construct a DictionaryContainsValueConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected value is contained in the dictionary + + + + + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. + + + + + Construct an EqualConstraintResult + + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + 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 + + + + Display the failure information for two IEnumerables that did not match. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + FileExistsConstraint is used to determine if a file exists + + + + + Initializes a new instance of the class. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + FileOrDirectoryExistsConstraint is used to determine if a file or directory exists + + + + + If true, the constraint will only check if files exist, not directories + + + + + If true, the constraint will only check if directories exist, not files + + + + + Initializes a new instance of the class that + will check files and directories. + + + + + Initializes a new instance of the class that + will only check files if ignoreDirectories is true. + + if set to true [ignore directories]. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Interface for all constraints + + + + + The display name of this Constraint for use by ToString(). + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + An extension of ResolvableConstraintExpression that adds a no-op Items property for readability. + + + + + Create a new instance of ItemsConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + + No-op property for readability. + + + + + Keeps track of an interval time which can be represented in + Minutes, Seconds or Milliseconds + + + + + Constructs a interval given an value in milliseconds + + + + + Gets Interval value represented as a TimeSpan object + + + + + Returns the interval with the current value as a number of minutes. + + + + + Returns the interval with the current value as a number of seconds. + + + + + Returns the interval with the current value as a number of milliseconds. + + + + + Is true for intervals created with a non zero value + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + + + + IntervalUnit provides the semantics to the value stored in Interval class. + + + + + Unit representing an Interval in minutes + + + + + Unit representing an Interval in seconds + + + + + Unit representing an Interval in milliseconds + + + + + 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 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 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. + + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Executes the code and returns success if an exception is thrown. + + A delegate representing the code to be tested + True if an exception is thrown, otherwise false + + + + Returns the ActualValueDelegate itself as the value to be tested. + + A delegate representing the code to be tested + The delegate itself + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 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 + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + 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. + + + + + Constructs an AttributeConstraint for a specified attribute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + 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 + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation + + + + + 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 + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Gets the expected object + + + + + Test whether the expected item is contained in the collection + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether two collections are equivalent + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + 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 ignore case and return 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. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + 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. + + + + + If used performs a default ascending comparison + + + + + If used performs a reverse comparison + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + Then signals a break between two ordering steps + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of the constraint. + + + + + + An OrderingStep represents one stage of the sort + + + + + 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 + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionTally counts (tallies) the number of + occurrences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + The number of objects remaining in the tally + + + + + 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 + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Construct a default ComparisonAdapter + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + ComparerAdapter extends and + allows use of an or + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a + + + + + 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 + + + + + Tolerance used in making the comparison + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + A ConstraintResult + + + + Protected function overridden by derived class to actually perform the comparison + + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use a and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Set the tolerance for use in this comparison + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual _values is allowed to deviate from + the expected value. + + Self + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + Retrieves the value to be tested from an ActualValueDelegate. + The default implementation simply evaluates the delegate but derived + classes may override it to provide for delayed processing. + + An ActualValueDelegate + Delegate evaluation result + + + + 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 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. + + + + + Returns a DelayedConstraint.WithRawDelayInterval with the specified delay time. + + The delay, which defaults to milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + Resolves any pending operators and returns the resolved 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 reorganized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + Pushes the specified operator onto the stack. + + The operator to put onto the stack. + + + + Pops the topmost operator from the stack. + + The topmost operator on the stack + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Pushes the specified constraint. As a side effect, + the constraint's Builder field is set to the + ConstraintBuilder owning this stack. + + The constraint to put onto the stack + + + + Pops this topmost constraint from the stack. + As a side effect, the constraint's Builder + field is set to null. + + The topmost contraint on the stack + + + + 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 expression 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. + + + + + 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 + reorganized. When a constraint is appended, it is returned as the + value of the operation so that modifiers may be applied. However, + any partially built expression is attached to the constraint for + later resolution. When an operator is appended, the partial + expression is returned. If it's a self-resolving operator, then + a ResolvableConstraintExpression is returned. + + + + + 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. Note that the constraint + is not reduced at this time. For example, if there + is a NotOperator on the stack we don't reduce and + return a NotConstraint. The original constraint must + be returned because it may support modifiers that + are yet to be applied. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + With is currently a NOP - reserved for future use. + + + + + 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests if item is equal to zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 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 ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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 constraint that succeeds if the value + is a file or directory and it exists. + + + + + 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. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Flag the constraint to ignore case and return self. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Allows only changing the time dimension of delay interval and setting a polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawDelayInterval + + Parent DelayedConstraint on which delay interval dimension is required to be set + + + + Changes delay interval dimension to minutes + + + + + Changes delay interval dimension to seconds + + + + + Changes delay interval dimension to milliseconds + + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only setting the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithDimensionedDelayInterval + + Parent DelayedConstraint on which polling interval is required to be set + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only changing the time dimension of the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawPollingInterval + + Parent DelayedConstraint on which polling dimension is required to be set + + + + Changes polling interval dimension to minutes + + + + + Changes polling interval dimension to seconds + + + + + Changes polling interval dimension to milliseconds + + + + + Delay value store as an Interval object + + + + + Polling value stored as an Interval object + + + + + Creates a new DelayedConstraint + + The inner constraint to 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 to decorate + The time interval after which the match is performed, in milliseconds + The time interval used for polling, in milliseconds + If the value of is less than 0 + + + + Gets text describing a constraint + + + + + 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 + A ConstraintResult + + + + 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 + + + + Returns the string representation of the constraint. + + + + + Adjusts a Timestamp by a given TimeSpan + + + + + + + + Returns the difference between two Timestamps as a TimeSpan + + + + + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected key is contained in the dictionary + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that the collection is empty + + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyStringConstraint tests whether a string is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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. + + + + + + + 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. + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Gets the tolerance for this comparison. + + + The tolerance. + + + + + Gets a value indicating whether to compare case insensitive. + + + true if comparing case insensitive; otherwise, false. + + + + + Gets a value indicating whether or not to clip strings. + + + true if set to clip strings otherwise, false. + + + + + Gets the failure points. + + + The failure points. + + + + + 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. + + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flags the constraint to include + property in comparison of two values. + + + Using this modifier does not allow to use the + constraint modifier. + + + + + 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 + + + + 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 + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + EqualityAdapter class handles all equality comparisons + that use an , + or a . + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps an . + + + + + Returns an EqualityAdapter that uses a predicate function for items comparison. + + + + + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps a . + + + + + 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. + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + 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. + + + + + 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 + + + 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 + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + ConstraintStatus represents the status of a ConstraintResult + returned by a Constraint being applied to an actual value. + + + + + The status has not yet been set + + + + + The constraint succeeded + + + + + The constraint failed + + + + + An error occured in applying the constraint (reserved for future use) + + + + + Contain the result of matching a against an actual value. + + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + The status of the new ConstraintResult. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + If true, applies a status of Success to the result, otherwise Failure. + + + + The actual value that was passed to the method. + + + + + Gets and sets the ResultStatus for this result. + + + + + True if actual value meets the Constraint criteria otherwise false. + + + + + Display friendly name of the constraint. + + + + + Description of the constraint may be affected by the state the constraint had + when was performed against the actual value. + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the result 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 + + + + 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 + + + + 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 + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + 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 + + + + + Abstract method to get the max line length + + + + + 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 given + 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 failing constraint result + + + + 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 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 + + + + Custom value formatter function + + The value + + + + + Custom value formatter factory function + + The next formatter function + ValueFormatter + If the given formatter is unable to handle a certain format, it must call the next formatter in the chain + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Formatting strings used for expected and actual _values + + + + + Current head of chain of value formatters. Public for testing. + + + + + Add a formatter to the chain of responsibility. + + + + + + Formats text to represent a generalized value. + + The value + The formatted text + + + + Formats 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 + + + + 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 + + + + Converts any null 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 + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test that the actual value is an NaN + + + + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + 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 + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + 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. + + + + + Returns the default NUnitComparer. + + + + + Compares two objects + + + + + + + + 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 + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occurred. + + + + + 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 the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depth. + + + + + Flags the comparer to include + property in comparison of two values. + + + Using this modifier does not allow to use the + modifier. + + + + + Compares two objects for equality within a tolerance. + + + + + 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 + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + 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. + + + + + 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. + + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + 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. + + + + + The syntax element preceding this operator + + + + + The syntax element following 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. + + + + + 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. + + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + 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. + + + + + + + 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. + + + + + Gets the name of the property to which the operator applies + + + + + 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. + + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + 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. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifies the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Modifies the current instance to be case-sensitive + and returns it. + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether one path in canonical form is a subpath of another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Gets text describing a constraint + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + Construct given a base constraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Formats a prefix constraint's description. + + + + + 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 + + + + Returns the string representation of the constraint. + + + + + + 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 value + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two _values are within a + specified range. + + + + + Initializes a new instance of the class. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + 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 + + + + 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. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Resolve the current expression to a Constraint + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Return the top-level constraint for this expression + + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + 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. + + + + + + + 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 + + + + + Description of this constraint + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + 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 a given string + + The string to be tested + True for success, false for failure + + + + 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 + + + + 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. + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + 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 actual value for a failing constraint test to a + MessageWriter. This override only handles the special message + used when an exception is expected but none is thrown. + + The writer on which the actual value is displayed + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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. + + + + + Returns a default Tolerance object, equivalent to an exact match. + + + + + Returns an empty Tolerance object, equivalent to an exact match. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + 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 as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of clock ticks. + + + + + Gets the for the current Tolerance + + + + + Gets the magnitude of the current Tolerance instance. + + + + + Returns true if the current tolerance has not been set or is using the . + + + + + Apply the tolerance to an expected value and return + a Tolerance.Range that represents the acceptable values. + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Tolerance.Range represents the range of values that match + a specific tolerance, when applied to a specific value. + + + + + The lower bound of the range + + + + + The Upper bound of the range + + + + + Construct a Range + + + + + 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. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + The type of the actual argument to which the constraint was applied + + + + + Construct a TypeConstraint for a given Type + + The expected type for the constraint + Prefix used in forming the constraint description + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that all items are unique. + + + + + + + XmlSerializableConstraint tests whether + an object is serializable in xml format. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of this constraint + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct a standalone ExactCountConstraint + + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + 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. + + + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + 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 + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + 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 TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + 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 TestDelegate + + + + 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 + + + + 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 + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it 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 of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + 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 TestDelegate + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + 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 + + + + 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 + + + + 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 + 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. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that the first int is greater than the second + int. 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 int is greater than the second + int. 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Verifies that the first value is greater than or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that an int is zero. + + The number to be examined + + + + Asserts that an int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is zero. + + The number to be examined + + + + Asserts that an unsigned int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is zero. + + The number to be examined + + + + Asserts that a Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is zero. + + The number to be examined + + + + Asserts that an unsigned Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is not zero. + + The number to be examined + + + + Asserts that an int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is not zero. + + The number to be examined + + + + Asserts that an unsigned int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is not zero. + + The number to be examined + + + + Asserts that a Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is positive. + + The number to be examined + + + + Asserts that an int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is positive. + + The number to be examined + + + + Asserts that an unsigned int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is positive. + + The number to be examined + + + + Asserts that a Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is positive. + + The number to be examined + + + + Asserts that an unsigned Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is positive. + + The number to be examined + + + + Asserts that a decimal is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is positive. + + The number to be examined + + + + Asserts that a double is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is positive. + + The number to be examined + + + + Asserts that a float is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is negative. + + The number to be examined + + + + Asserts that an int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is negative. + + The number to be examined + + + + Asserts that an unsigned int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is negative. + + The number to be examined + + + + Asserts that a Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is negative. + + The number to be examined + + + + Asserts that an unsigned Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is negative. + + The number to be examined + + + + Asserts that a decimal is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is negative. + + The number to be examined + + + + Asserts that a double is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is negative. + + The number to be examined + + + + Asserts that a float is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + 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. + + + + + DO NOT USE! Use Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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. + + + + + Issues a warning using the message and arguments provided. + + The message to display. + Arguments to be used in formatting the message + + + + Issues a warning using the message provided. + + The message to display. + + + + 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. + + + + + Asserts that an object is contained in a collection. + + The expected object + The collection 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 collection. + + The expected object + The collection to be examined + + + + Wraps code containing a series of assertions, which should all + be executed, even if they fail. Failed results are saved and + reported at the end of the code block. + + A TestDelegate to be executed in Multiple Assertion mode. + + + + Thrown when an assertion failed. + + + + + Default Constructor (normally used) + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Class used to guard against unexpected argument values + or operations by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Throws an ArgumentOutOfRangeException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an ArgumentException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an InvalidOperationException if the specified condition is not met. + + The condition that must be met + The exception message to be used + + + + The AssertionResult class represents the result of a single assertion. + + + + + Construct an AssertionResult + + + + The pass/fail status of the assertion + + + The message produced by the assertion, or null + + + The stacktrace associated with the assertion, or null + + + + ToString Override + + + + + Override GetHashCode + + + + + Override Equals + + + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The IParameterInfo interface is an abstraction of a .NET parameter. + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter + + + + + Gets the underlying .NET ParameterInfo + + + + + Gets the Type of the parameter + + + + + The IReflectionInfo interface is implemented by NUnit wrapper objects that perform reflection. + + + + + Returns an array of custom attributes of the specified type applied to this object + + + + + Returns a value indicating whether an attribute of the specified type is defined on this object. + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + Returns true if the Type wrapped is equal to the argument + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the Namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type is a static class. + + + + + Get the display name for this typeInfo. + + + + + Get the display name for an object of this type, constructed with specific arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a value indicating whether this type has a method with a specified public attribute + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + AssertionStatus enumeration represents the possible outcomes of an assertion. + The order of definition is significant, higher level values override lower + ones in determining the overall result of a test. + + + + + An assumption failed + + + + + The assertion succeeded + + + + + A warning message was issued + + + + + The assertion failed + + + + + An unexpected exception was thrown + + + + + The TestAttachment class represents a file attached to a TestResult, + with an optional description. + + + + + Absolute file path to attachment file + + + + + User specifed description of attachment. May be null. + + + + + Creates a TestAttachment class to represent a file attached to a test result. + + Absolute file path to attachment file + User specifed description of attachment. May be null. + + + + The TestOutput class holds a unit of output from + a test to a specific output stream + + + + + Construct with text, output destination type and + the name of the test that produced the output. + + Text to be output + Name of the stream or channel to which the text should be written + FullName of test that produced the output + + + + Return string representation of the object for debugging + + + + + + Get the text + + + + + Get the output type + + + + + Get the name of the test that created the output + + + + + Convert the TestOutput object to an XML string + + + + + CombiningStrategy is the abstract base for classes that + know how to combine values provided for individual test + parameters to create a set of test cases. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + The ISimpleTestBuilder interface is exposed by a class that knows how to + build a single TestMethod from a suitable MethodInfo Types. In general, + it is exposed by an attribute, but may be implemented in a helper class + used by the attribute in some cases. + + + + + Build a TestMethod from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ITestBuilder interface is exposed by a class that knows how to + build one or more TestMethods from a MethodInfo. In general, it is exposed + by an attribute, which has additional information available to provide + the necessary test parameters to distinguish the test cases built. + + + + + Build one or more TestMethods from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The IDataPointProvider interface is used by extensions + that provide data for a single test parameter. + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + The IParameterDataSource interface is implemented by types + that can provide data for a test method parameter. + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + An enumeration containing individual data items + + + + A PropertyBag represents a collection of name/value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + The entries in a PropertyBag are of two kinds: those that + take a single value and those that take multiple _values. + However, the PropertyBag has no knowledge of which entries + fall into each category and the distinction is entirely + up to the code using the PropertyBag. + + When working with multi-valued properties, client code + should use the Add method to add name/value pairs and + indexing to retrieve a list of all _values for a given + key. For example: + + bag.Add("Tag", "one"); + bag.Add("Tag", "two"); + Assert.That(bag["Tag"], + Is.EqualTo(new string[] { "one", "two" })); + + When working with single-valued properties, client code + should use the Set method to set the value and Get to + retrieve the value. The GetSetting methods may also be + used to retrieve the value in a type-safe manner while + also providing default. For example: + + bag.Set("Priority", "low"); + bag.Set("Priority", "high"); // replaces value + Assert.That(bag.Get("Priority"), + Is.EqualTo("high")); + Assert.That(bag.GetSetting("Priority", "low"), + Is.EqualTo("high")); + + + + + Adds a key/value pair to the property bag + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + True if their are _values present, otherwise false + + + + Gets or sets the list of _values for a particular key + + The key for which the _values are to be retrieved or set + + + + Gets a collection containing all the keys in the property set + + + + + Common interface supported by all representations + of a test. Only includes informational fields. + The Run method is specifically excluded to allow + for data-only representations of a test. + + + + + Gets the id of the test + + + + + Gets the name of the test + + + + + Gets the type of the test + + + + + Gets the fully qualified name of the test + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the Type of the test fixture, if applicable, or + null if no fixture type is associated with this test. + + + + + Gets an IMethod for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the RunState of the test, indicating whether it can be run. + + + + + Count of the test cases ( 1 if this is a test case ) + + + + + Gets the properties of the test + + + + + Gets the parent test, if any. + + The parent test or null if none exists. + + + + Returns true if this is a test suite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets a fixture object for running this test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + The ITestData interface is implemented by a class that + represents a single instance of a parameterized test. + + + + + Gets the name to be used for the test + + + + + Gets the RunState for this test case. + + + + + Gets the argument list to be provided to the test + + + + + Gets the property dictionary for the test case + + + + + The ITestCaseData interface is implemented by a class + that is able to return the data required to create an + instance of a parameterized test fixture. + + + + + Get the TypeArgs if separately set + + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + + + + Gets the expected result of the test case + + + + + Returns true if an expected result has been set + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Determine if a particular test passes the filter criteria. Pass + may examine the parents and/or descendants of a test, depending + on the semantics of the particular filter + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + The ITestListener interface is used internally to receive + notifications of significant events while a test is being + run. The events are propagated to clients by means of an + AsyncCallback. NUnit extensions may also monitor these events. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + The ITestResult interface represents the result of a test. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. Not available in + the Compact Framework 1.0. + + + + + Gets the number of asserts executed + when running the test and all its children. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Accessing HasChildren should not force creation of the + Children collection in classes implementing this interface. + + + + + Gets the collection of child results. + + + + + Gets the Test to which this result applies. + + + + + Gets any text output written to this result. + + + + + Gets a list of AssertionResults associated with the test + + + + + Gets the collection of files attached to the test + + + + + An object implementing IXmlNodeBuilder is able to build + an XML representation of itself and any children. + + + + + Returns a TNode representing the current object. + + If true, children are included where applicable + A TNode representing the result + + + + Returns a TNode representing the current object after + adding it as a child of the supplied parent node. + + The parent node. + If true, children are included, where applicable + + + + + The ResultState class represents the outcome of running a test. + It contains two pieces of information. The Status of the test + is an enum indicating whether the test passed, failed, was + skipped or was inconclusive. The Label provides a more + detailed breakdown for use by client runners. + + + + + Initializes a new instance of the class. + + The TestStatus. + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + + + + Initializes a new instance of the class. + + The TestStatus. + The stage at which the result was produced + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + The stage at which the result was produced + + + + The result is inconclusive + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test was skipped because it is explicit + + + + + The test succeeded + + + + + The test issued a warning + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The test was not runnable. + + + + + A suite failed because one or more child tests failed or had errors + + + + + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + Gets the TestStatus for the test. + + The status. + + + + Gets the label under which this test result is + categorized, if any. + + + + + Gets the stage of test execution in which + the failure or other result took place. + + + + + Get a new ResultState, which is the same as the current + one but with the FailureSite set to the specified value. + + The FailureSite to use + A new ResultState + + + + Test whether this ResultState has the same Status and Label + as another one. In other words, the whether two are equal + ignoring the Site. + + + + + + + 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. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The FailureSite enum indicates the stage of a test + in which an error or failure occurred. + + + + + Failure in the test itself + + + + + Failure in the SetUp method + + + + + Failure in the TearDown method + + + + + Failure of a parent test + + + + + Failure of a child test + + + + + The RunState enum indicates whether a test can be executed. + + + + + The test is not runnable. + + + + + The test is runnable. + + + + + The test can only be run explicitly + + + + + The test has been skipped. This value may + appear on a Test when certain attributes + are used to skip the test. + + + + + The test has been ignored. May appear on + a Test, when the IgnoreAttribute is used. + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + There was a warning + + + + + The test failed + + + + + TNode represents a single node in the XML representation + of a Test or TestResult. It replaces System.Xml.XmlNode and + System.Xml.Linq.XElement, providing a minimal set of methods + for operating on the XML in a platform-independent manner. + + + + + Constructs a new instance of TNode + + The name of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + Flag indicating whether to use CDATA when writing the text + + + + Gets the name of the node + + + + + Gets the value of the node + + + + + Gets a flag indicating whether the value should be output using CDATA. + + + + + Gets the dictionary of attributes + + + + + Gets a list of child nodes + + + + + Gets the first ChildNode + + + + + Gets the XML representation of this node. + + + + + Create a TNode from it's XML text representation + + The XML text to be parsed + A TNode + + + + Adds a new element as a child of the current node and returns it. + + The element name. + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + + The element name + The text content of the new element + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + The value will be output using a CDATA section. + + The element name + The text content of the new element + The newly created child element + + + + Adds an attribute with a specified name and value to the XmlNode. + + The name of the attribute. + The value of the attribute. + + + + Finds a single descendant of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + + + Finds all descendants of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + Writes the XML representation of the node to an XmlWriter + + + + + + Class used to represent a list of XmlResults + + + + + Class used to represent the attributes of a node + + + + + Gets or sets the value associated with the specified key. + Overridden to return null if attribute is not found. + + The key. + Value of the attribute or null + + + + The IFixtureBuilder interface is exposed by a class that knows how to + build a TestFixture from one or more Types. In general, it is exposed + by an attribute, but may be implemented in a helper class used by the + attribute in some cases. + + + + + Build one or more TestFixtures from type provided. At least one + non-null TestSuite must always be returned, since the method is + generally called because the user has marked the target class as + a fixture. If something prevents the fixture from being used, it + will be returned nonetheless, labelled as non-runnable. + + The type info of the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + IImplyFixture is an empty marker interface used by attributes like + TestAttribute that cause the class where they are used to be treated + as a TestFixture even without a TestFixtureAttribute. + + Marker interfaces are not usually considered a good practice, but + we use it here to avoid cluttering the attribute hierarchy with + classes that don't contain any extra implementation. + + + + + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. + + + + + Apply changes to the execution context + + The execution context + + + + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. + + + + + Examine the type and determine if it is suitable for + this builder to use in building a TestSuite. + + Note that returning false will cause the type to be ignored + in loading the tests. If it is desired to load the suite + but label it as non-runnable, ignored, etc., then this + method must return true. + + The type of the fixture to be used + True if the type can be used to build a TestSuite + + + + Build a TestSuite from type provided. + + The type of the fixture to be used + A TestSuite + + + + The ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. + + + This interface is not the same as the ITestCaseBuilder interface in NUnit 2.x. + We have reused the name because the two products don't interoperate at all. + + + + + Examine the method and determine if it is suitable for + this builder to use in building a TestCase to be + included in the suite being populated. + + Note that returning false will cause the method to be ignored + in loading the tests. If it is desired to load the method + but label it as non-runnable, ignored, etc., then this + method must return true. + + The test method to examine + The suite being populated + True is the builder can use this method + + + + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. + + The method to be used as a test case + The test suite being populated, or null + A TestCase or null + + + + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. + + + Attributes or other objects should implement one of the + derived interfaces, rather than this one, since they + indicate in which part of the command chain the wrapper + should be applied. + + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. + + + + + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. + + + + + AssemblyHelper provides static methods for working + with assemblies. + + + + + Gets the path from which an assembly was loaded. + For builds where this is not possible, returns + the name of the assembly. + + The assembly. + The path. + + + + Gets the path to the directory from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the AssemblyName of an assembly. + + The assembly + An AssemblyName + + + + Loads an assembly given a string, which may be the + path to the assembly or the AssemblyName + + + + + + + Gets the assembly path from code base. + + Public for testing purposes + The code base. + + + + + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. + + + + + Construct with a collection of individual providers + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + Built-in SuiteBuilder for all types of test classes. + + + + + Checks to see if the provided Type is a fixture. + To be considered a fixture, it must be a non-abstract + class with one or more attributes implementing the + IFixtureBuilder interface or one or more methods + marked as tests. + + The fixture type to check + True if the fixture can be built, false if not + + + + Build a TestSuite from TypeInfo provided. + + The fixture type to build + A TestSuite built from that type + + + + We look for attributes implementing IFixtureBuilder at one level + of inheritance at a time. Attributes on base classes are not used + unless there are no fixture builder attributes at all on the derived + class. This is by design. + + The type being examined for attributes + A list of the attributes found. + + + + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. + + + + + Constructs an + + + + + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. + + The MethodInfo from which to construct the TestMethod + The suite or fixture to which the new test will be added + The ParameterSet to be used, or null + + + + + Helper method that checks the signature of a TestMethod and + any supplied parameters to determine if the test is valid. + + Currently, NUnitTestMethods are required to be public, + non-abstract methods, either static or instance, + returning void. They may take arguments but the _values must + be provided or the TestMethod is not considered runnable. + + Methods not meeting these criteria will be marked as + non-runnable and the method will return false in that case. + + The TestMethod to be checked. If it + is found to be non-runnable, it will be modified. + Parameters to be used for this test, or null + True if the method signature is valid, false if not + + The return value is no longer used internally, but is retained + for testing purposes. + + + + + Class that can build a tree of automatic namespace + suites from a group of fixtures. + + + + + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. + + + + + The root of the test suite being created by this builder. + + + + + Initializes a new instance of the class. + + The root suite. + + + + Gets the root entry in the tree created by the NamespaceTreeBuilder. + + The root suite. + + + + Adds the specified fixtures to the tree. + + The fixtures to be added. + + + + Adds the specified fixture to the tree. + + The fixture to be added. + + + + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + Class to build ether a parameterized or a normal NUnitTestMethod. + There are four cases that the builder must deal with: + 1. The method needs no params and none are provided + 2. The method needs params and they are provided + 3. The method needs no params but they are provided in error + 4. The method needs params but they are not provided + This could have been done using two different builders, but it + turned out to be simpler to have just one. The BuildFrom method + takes a different branch depending on whether any parameters are + provided, but all four cases are dealt with in lower-level methods + + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + A Test representing one or more method invocations + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + The test suite being built, to which the new test would be added + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations + + + + Builds a ParameterizedMethodSuite containing individual test cases. + + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases + + + + Build a simple, non-parameterized TestMethod for this method. + + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. + + + + NUnitTestFixtureBuilder is able to build a fixture given + a class marked with a TestFixtureAttribute or an unmarked + class containing test methods. In the first case, it is + called by the attribute and in the second directly by + NUnitSuiteBuilder. + + + + + Build a TestFixture from type provided. A non-null TestSuite + must always be returned, since the method is generally called + because the user has marked the target class as a fixture. + If something prevents the fixture from being used, it should + be returned nonetheless, labelled as non-runnable. + + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. + + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + + + + + Method to add test cases to the newly constructed fixture. + + The fixture to which cases should be added + + + + Method to create a test case from a MethodInfo and add + it to the fixture being built. It first checks to see if + any global TestCaseBuilder addin wants to build the + test case. If not, it uses the internal builder + collection maintained by this fixture builder. + + The default implementation has no test case builders. + Derived classes should add builders to the collection + in their constructor. + + The method for which a test is to be created + The test suite being built. + A newly constructed Test + + + + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. + + + + The number of test cases that cover all possible pairs of test function + parameters values is significantly less than the number of test cases + that cover all possible combination of test function parameters values. + And because different studies show that most of software failures are + caused by combination of no more than two parameters, pairwise testing + can be an effective ways to test the system when it's impossible to test + all combinations of parameters. + + + The PairwiseStrategy code is based on "jenny" tool by Bob Jenkins: + http://burtleburtle.net/bob/math/jenny.html + + + + + + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea + + + + + Initializes a new instance of the FleaRand class. + + The seed. + + + + FeatureInfo represents coverage of a single value of test function + parameter, represented as a pair of indices, Dimension and Feature. In + terms of unit testing, Dimension is the index of the test parameter and + Feature is the index of the supplied value in that parameter's list of + sources. + + + + + Initializes a new instance of FeatureInfo class. + + Index of a dimension. + Index of a feature. + + + + A FeatureTuple represents a combination of features, one per test + parameter, which should be covered by a test case. In the + PairwiseStrategy, we are only trying to cover pairs of features, so the + tuples actually may contain only single feature or pair of features, but + the algorithm itself works with triplets, quadruples and so on. + + + + + Initializes a new instance of FeatureTuple class for a single feature. + + Single feature. + + + + Initializes a new instance of FeatureTuple class for a pair of features. + + First feature. + Second feature. + + + + TestCase represents a single test case covering a list of features. + + + + + Initializes a new instance of TestCaseInfo class. + + A number of features in the test case. + + + + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. + + + + The algorithm starts with creating a set of all feature tuples which we + will try to cover (see method). This set + includes every single feature and all possible pairs of features. We + store feature tuples in the 3-D collection (where axes are "dimension", + "feature", and "all combinations which includes this feature"), and for + every two feature (e.g. "A" and "B") we generate both ("A", "B") and + ("B", "A") pairs. This data structure extremely reduces the amount of + time needed to calculate coverage for a single test case (this + calculation is the most time-consuming part of the algorithm). + + + Then the algorithm picks one tuple from the uncovered tuple, creates a + test case that covers this tuple, and then removes this tuple and all + other tuples covered by this test case from the collection of uncovered + tuples. + + + Picking a tuple to cover + + + There are no any special rules defined for picking tuples to cover. We + just pick them one by one, in the order they were generated. + + + Test generation + + + Test generation starts from creating a completely random test case which + covers, nevertheless, previously selected tuple. Then the algorithm + tries to maximize number of tuples which this test covers. + + + Test generation and maximization process repeats seven times for every + selected tuple and then the algorithm picks the best test case ("seven" + is a magic number which provides good results in acceptable time). + + Maximizing test coverage + + To maximize tests coverage, the algorithm walks thru the list of mutable + dimensions (mutable dimension is a dimension that are not included in + the previously selected tuple). Then for every dimension, the algorithm + walks thru the list of features and checks if this feature provides + better coverage than randomly selected feature, and if yes keeps this + feature. + + + This process repeats while it shows progress. If the last iteration + doesn't improve coverage, the process ends. + + + In addition, for better results, before start every iteration, the + algorithm "scrambles" dimensions - so for every iteration dimension + probes in a different order. + + + + + + Creates a set of test cases for specified dimensions. + + + An array which contains information about dimensions. Each element of + this array represents a number of features in the specific dimension. + + + A set of test cases. + + + + + Gets the test cases generated by this strategy instance. + + A set of test cases. + + + + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + TestActionAfterCommand handles the AfterTest method of a single + TestActionItem, provided the items BeforeTest has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + AfterCommand is a DelegatingTestCommand that performs some + specific action after the inner command is run. + + + + + Construct an AfterCommand + + + + + Execute the command + + + + + Set this to perform action after the inner command. + + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Perform the before test action + + + + + Perform the after test action + + + + + TestActionBeforeCommand handles the BeforeTest method of a single + TestActionItem, relying on the item to remember it has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + BeforeTestCommand is a DelegatingTestCommand that performs some + specific action before the inner command is run. + + + + + Construct a BeforeCommand + + + + + Execute the command + + + + + Action to perform before the inner command. + + + + + ConstructFixtureCommand constructs the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + + + + EmptyTestCommand is a TestCommand that does nothing. It simply + returns the current result from the context when executed. We + use it to avoid testing for null when executing a chain of + DelegatingTestCommands. + + + + + Construct a NullCommand for a test + + + + + Execute the command + + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + + + + TimeoutCommand creates a timer in order to cancel + a test if it exceeds a specified time and adjusts + the test result if it did time out. + + + + + Initializes a new instance of the class. + + The inner command + Timeout value + + + + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. + + + + + Construct a SetUpTearDownNode + + A list of setup methods for this level + A list teardown methods for this level + + + + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. + + + + + Run SetUp on this level. + + The execution context to use for running. + + + + Run TearDown for this level. + + + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + The TestAction with which to wrap the inner command. + + + + TestActionItem wraps a single execution of an ITestAction. + It's primary purpose is to track whether the BeforeTest + method has been called and suppress calling the + AfterTest method if it has not. This is necessary when + ITestActions are used before and after a CompositeWorkItem, + since the OneTimeSetUpCommand and OneTimeTearDownCommand + are separate command chains. By sharing a TestActionItem + between the setup and teardown chains, the two calls can + be coordinated. + + + + + Construct a TestActionItem + + The ITestAction to be included + + + + Get flag indicating if the BeforeTest entry was already called. + + + + + Run the BeforeTest method of the action and remember that it has been run. + + The test to which the action applies + + + + Run the AfterTest action, but only if the BeforeTest + action was actually run. + + The test to which the action applies + + + + ContextSettingsCommand applies specified changes to the + TestExecutionContext prior to running a test. No special + action is needed after the test runs, since the prior + context will be restored automatically. + + + + + DelegatingTestCommand wraps an inner TestCommand. + Derived classes may do what they like before or + after running the inner command. + + + + TODO: Documentation needed for field + + + + TODO: Documentation needed for constructor + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The inner command. + The max time allowed in milliseconds + + + + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + A SetUpTearDownList for use by the command + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + A SetUpTearDownList for use by the command + + + + SetUpTearDownCommand runs SetUp methods for a suite, + runs the test and then runs TearDown methods. + + + + + Initializes a new instance of the class. + + The inner command. + List of setup/teardown items + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The test being skipped. + + + + Overridden to simply set the CurrentResult to the + appropriate Skipped state. + + The execution context for the test + A TestResult + + + + TestCommand is the abstract base class for all test commands + in the framework. A TestCommand represents a single stage in + the execution of a test, e.g.: SetUp/TearDown, checking for + Timeout, verifying the returned result from a method, etc. + + TestCommands may decorate other test commands so that the + execution of a lower-level command is nested within that + of a higher level command. All nested commands are executed + synchronously, as a single unit. Scheduling test execution + on separate threads is handled at a higher level, using the + task dispatcher. + + + + + Construct a TestCommand for a test. + + The test to be executed + + + + Gets the test associated with this command. + + + + + Runs the test in a specified context, returning a TestResult. + + The TestExecutionContext to be used for running the test. + A TestResult + + + + TestMethodCommand is the lowest level concrete command + used to run actual test cases. + + + + + Initializes a new instance of the class. + + The test. + + + + Runs the test, saving a TestResult in the execution context, as + well as returning it. If the test has an expected result, it + is asserts on that value. Since failed tests and errors throw + an exception, this command must be wrapped in an outer command, + will handle that exception and records the failure. This role + is usually played by the SetUpTearDown command. + + The execution context + + + + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. + + + + + Constructs a TheoryResultCommand + + The command to be wrapped by this one + + + + EventListenerTextWriter sends text output to the currently active + ITestEventListener in the form of a TestOutput object. If no event + listener is active in the context, or if there is no context, + the output is forwarded to the supplied default writer. + + + + + Construct an EventListenerTextWriter + + The name of the stream to use for events + The default writer to use if no listener is available + + + + Get the Encoding for this TextWriter + + + + + Write formatted string + + + + + Write formatted string + + + + + Write formatted string + + + + + Write an object + + + + + Write a string + + + + + Write a decimal + + + + + Write a double + + + + + Write formatted string + + + + + Write a ulong + + + + + Write a long + + + + + Write a uint + + + + + Write an int + + + + + Write a char + + + + + Write a boolean + + + + + Write chars + + + + + Write chars + + + + + Write a float + + + + + Write a string with newline + + + + + Write an object with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write a decimal with newline + + + + + Write a formatted string with newline + + + + + Write a double with newline + + + + + Write a uint with newline + + + + + Write a ulong with newline + + + + + Write a long with newline + + + + + Write an int with newline + + + + + Write a bool with newline + + + + + Write chars with newline + + + + + Write chars with newline + + + + + Write a char with newline + + + + + Write a float with newline + + + + + Write newline + + + + + WorkItemBuilder class knows how to build a tree of work items from a tree of tests + + + + + Creates a work item. + + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + True if child work items should be created and added. + + + + + Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. + + + A signed integer that indicates the relative values of and , as shown in the following table.Value Meaning Less than zero is less than .Zero equals .Greater than zero is greater than . + + The first object to compare.The second object to compare. + + + + An IWorkItemDispatcher handles execution of work items. + + + + + Start execution, performing any initialization. Sets + the top level work item and dispatches it. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + true if the IWorkItemDispatcher should abort all currently running WorkItems, false if it should allow all currently running WorkItems to complete + + + + SimpleWorkItemDispatcher handles execution of WorkItems by + directly executing them. It is provided so that a dispatcher + is always available in the context, thereby simplifying the + code needed to run child tests. + + + + + Start execution, creating the execution thread, + setting the top level work and dispatching it. + + + + + Dispatch a single work item for execution by + executing it directly. + The item to dispatch + + + + + Cancel (abort or stop) the ongoing run. + If no run is in process, the call has no effect. + + true if the run should be aborted, false if it should allow its currently running test to complete + + + + The TextCapture class intercepts console output and writes it + to the current execution context, if one is present on the thread. + If no execution context is found, the output is written to a + default destination, normally the original destination of the + intercepted output. + + + + + Construct a TextCapture object + + The default destination for non-intercepted output + + + + Gets the Encoding in use by this TextWriter + + + + + Writes a single character + + The char to write + + + + Writes a string + + The string to write + + + + Writes a string followed by a line terminator + + The string to write + + + + The dispatcher needs to do different things at different, + non-overlapped times. For example, non-parallel tests may + not be run at the same time as parallel tests. We model + this using the metaphor of a working shift. The WorkShift + class associates one or more WorkItemQueues with one or + more TestWorkers. + + Work in the queues is processed until all queues are empty + and all workers are idle. Both tests are needed because a + worker that is busy may end up adding more work to one of + the queues. At that point, the shift is over and another + shift may begin. This cycle continues until all the tests + have been run. + + + + + Construct a WorkShift + + + + + Event that fires when the shift has ended + + + + + The Name of this shift + + + + + Gets a flag indicating whether the shift is currently active + + + + + Gets a list of the queues associated with this shift. + + Used for testing + + + + Gets the list of workers associated with this shift. + + + + + Gets a bool indicating whether this shift has any work to do + + + + + Add a WorkItemQueue to the shift, starting it if the + shift is currently active. + + + + + Assign a worker to the shift. + + + + + + Start or restart processing for the shift + + + + + End the shift, pausing all queues and raising + the EndOfShift event. + + + + + Shut down the shift. + + + + + Cancel (abort or stop) the shift without completing all work + + true if the WorkShift should be aborted, false if it should allow its currently running tests to complete + + + + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. + + + + + List of Child WorkItems + + + + + Construct a CompositeWorkItem for executing a test suite + using a filter to select child tests. + + The TestSuite to be executed + A filter used to select child tests + + + + Method that actually performs the work. Overridden + in CompositeWorkItem to do one-time setup, run all child + items and then dispatch the one-time teardown work item. + + + + + + + + + + Cancel (abort or stop) a CompositeWorkItem and all of its children + + true if the CompositeWorkItem and all of its children should be aborted, false if it should allow all currently running tests to complete + + + + OneTimeTearDownWorkItem represents the cleanup + and one-time teardown phase of a CompositeWorkItem + + + + + Construct a OneTimeTearDownWOrkItem wrapping a CompositeWorkItem + + The CompositeWorkItem being wrapped + + + + The WorkItem name, overridden to indicate this is the teardown. + + + + + + + + + + PerformWork is not used in CompositeWorkItem + + + + + A simplified implementation of .NET 4 CountdownEvent + for use in earlier versions of .NET. Only the methods + used by NUnit are implemented. + + + + + Construct a CountdownEvent + + The initial count + + + + Gets the initial count established for the CountdownEvent + + + + + Gets the current count remaining for the CountdownEvent + + + + + Decrement the count by one + + + + + Decrement the count by the specified amount + + + + + Block the thread until the count reaches zero + + + + + The EventPumpState enum represents the state of an + EventPump. + + + + + The pump is stopped + + + + + The pump is pumping events with no stop requested + + + + + The pump is pumping events but a stop has been requested + + + + + EventPump pulls events out of an EventQueue and sends + them to a listener. It is used to send events back to + the client without using the CallContext of the test + runner thread. + + + + + The downstream listener to which we send events + + + + + The queue that holds our events + + + + + Thread to do the pumping + + + + + The current state of the eventpump + + + + + Constructor + + The EventListener to receive events + The event queue to pull events from + + + + Gets or sets the current state of the pump + + + + + Gets or sets the name of this EventPump + (used only internally and for testing). + + + + + Dispose stops the pump + Disposes the used WaitHandle, too. + + + + + Start the pump + + + + + Tell the pump to stop after emptying the queue. + + + + + Our thread proc for removing items from the event + queue and sending them on. Note that this would + need to do more locking if any other thread were + removing events from the queue. + + + + + NUnit.Core.Event is the abstract base for all stored events. + An Event is the stored representation of a call to the + ITestListener interface and is used to record such calls + or to queue them for forwarding on another thread or at + a later time. + + + + + The Send method is implemented by derived classes to send the event to the specified listener. + + The listener. + + + + TestStartedEvent holds information needed to call the TestStarted method. + + + + + Initializes a new instance of the class. + + The test. + + + + Calls TestStarted on the specified listener. + + The listener. + + + + TestFinishedEvent holds information needed to call the TestFinished method. + + + + + Initializes a new instance of the class. + + The result. + + + + Calls TestFinished on the specified listener. + + The listener. + + + + TestOutputEvent holds information needed to call the TestOutput method. + + + + + Initializes a new instance of the class. + + The output object. + + + + Calls TestOutput on the specified listener. + + The listener. + + + + Implements a queue of work items each of which + is queued as a WaitCallback. + + + + + Gets the count of items in the queue. + + + + + Enqueues the specified event + + The event to enqueue. + + + + Removes the first element from the queue and returns it (or null). + + + If true and the queue is empty, the calling thread is blocked until + either an element is enqueued, or is called. + + + + + If the queue not empty + the first element. + + + otherwise, if ==false + or has been called + null. + + + + + + + Stop processing of the queue + + + + + QueuingEventListener uses an EventQueue to store any + events received on its EventListener interface. + + + + + The EventQueue created and filled by this listener + + + + + Construct a QueuingEventListener + + + + + A test has started + + The test that is starting + + + + A test case finished + + Result of the test case + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + A SimpleWorkItem represents a single test case and is + marked as completed immediately upon execution. This + class is also used for skipped or ignored test suites. + + + + + Construct a simple work item for a test. + + The test to be executed + The filter used to select this test + + + + Method that performs actually performs the work. + + + + + Creates a test command for use in running this test. + + A TestCommand + + + + A TestWorker pulls work items from a queue + and executes them. + + + + + Event handler for TestWorker events + + The TestWorker sending the event + The WorkItem that caused the event + + + + Event signaled immediately before executing a WorkItem + + + + + Event signaled immediately after executing a WorkItem + + + + + Construct a new TestWorker. + + The queue from which to pull work items + The name of this worker + + + + The WorkItemQueue from which this worker pulls WorkItems + + + + + The name of this worker - also used for the thread + + + + + Indicates whether the worker thread is running + + + + + Our ThreadProc, which pulls and runs tests in a loop + + + + + Start processing work items. + + + + + Stop the thread, either immediately or after finishing the current WorkItem + + true if the thread should be aborted, false if it should allow the currently running test to complete + + + + A WorkItem may be an individual test case, a fixture or + a higher level grouping of tests. All WorkItems inherit + from the abstract WorkItem class, which uses the template + pattern to allow derived classes to perform work in + whatever way is needed. + + A WorkItem is created with a particular TestExecutionContext + and is responsible for re-establishing that context in the + current thread before it begins or resumes execution. + + + + + Construct a WorkItem for a particular test. + + The test that the WorkItem will run + Filter used to include or exclude child items + + + + Construct a work Item that wraps another work Item. + Wrapper items are used to represent independently + dispatched tasks, which form part of the execution + of a single test, such as OneTimeTearDown. + + The WorkItem being wrapped + + + + Initialize the TestExecutionContext. This must be done + before executing the WorkItem. + + + Originally, the context was provided in the constructor + but delaying initialization of the context until the item + is about to be dispatched allows changes in the parent + context during OneTimeSetUp to be reflected in the child. + + The TestExecutionContext to use + + + + Event triggered when the item is complete + + + + + Gets the current state of the WorkItem + + + + + The test being executed by the work item + + + + + The name of the work item - defaults to the Test name. + + + + + Filter used to include or exclude child tests + + + + + The execution context + + + + + The worker executing this item. + + + + + The test result + + + + + Gets the ParallelScope associated with the test, if any, + otherwise returning ParallelScope.Default; + + + + + Execute the current work item, including any + child work items. + + + + + Marks the WorkItem as NotRunnable. + + Reason for test being NotRunnable. + + + + Cancel (abort or stop) a WorkItem + + true if the WorkItem should be aborted, false if it should run to completion + + + + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. + + + + + Method called by the derived class when all work is complete + + + + + Builds the set up tear down list. + + Unsorted array of setup MethodInfos. + Unsorted array of teardown MethodInfos. + A list of SetUpTearDownItems + + + + Changes the result of the test, logging the old and new states + + The new ResultState + The new message + + + + ParallelWorkItemDispatcher handles execution of work items by + queuing them for worker threads to process. + + + + + Construct a ParallelWorkItemDispatcher + + Number of workers to use + + + + Enumerates all the shifts supported by the dispatcher + + + + + Enumerates all the Queues supported by the dispatcher + + + + + Start execution, setting the top level work, + enqueuing it and starting a shift to execute it. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + Save the state of the queues + + + + + Try to restore a saved queue state + True if the state was restored, otherwise false + + + + WorkItemQueueState indicates the current state of a WorkItemQueue + + + + + The queue is paused + + + + + The queue is running + + + + + The queue is stopped + + + + + A WorkItemQueue holds work items that are ready to + be run, either initially or after some dependency + has been satisfied. + + + + + Initializes a new instance of the class. + + The name of the queue. + Flag indicating whether this is a parallel queue + "ApartmentState to use for items on this queue + + + + Gets the name of the work item queue. + + + + + Gets a flag indicating whether this queue is used for parallel execution + + + + + Gets the target ApartmentState for work items on this queue + + + + + Gets the total number of items processed so far + + + + + Gets the maximum number of work items. + + + + + Gets the current state of the queue + + + + + Get a bool indicating whether the queue is empty. + + + + + Enqueue a WorkItem to be processed + + The WorkItem to process + + + + Dequeue a WorkItem for processing + + A WorkItem or null if the queue has stopped + + + + Start or restart processing of items from the queue + + + + + Signal the queue to stop + + + + + Pause the queue for restarting later + + + + + Save the current inner queue and create new ones for use by + a non-parallel fixture with parallel children. + + + + + Restore the inner queue that was previously saved + + + + + The current state of a work item + + + + + Ready to run or continue + + + + + Work Item is executing + + + + + Complete + + + + + A base class for multi-part filters + + + + + Constructs an empty CompositeFilter + + + + + Constructs a CompositeFilter from an array of filters + + + + + + Adds a filter to the list of filters + + The filter to be added + + + + Return a list of the composing filters. + + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is explicit matched by a test. + + The test to be matched + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + PropertyFilter is able to select or exclude tests + based on their properties. + + + + + + Construct a PropertyFilter using a property name and expected value + + A property name + The expected value of the property + + + + Check whether the filter matches a test + + The test to be matched + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + TestName filter selects tests based on their Name + + + + + Construct a TestNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a MethodNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a NamespaceFilter for a single namespace + + The namespace the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + IdFilter selects tests based on their id + + + + + Construct an IdFilter for a single value + + The id the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. + + + + + Returns the value matched by the filter - used for testing + + + + + Indicates whether the value is a regular expression + + + + + Construct a ValueMatchFilter for a single value. + + The value to be included. + + + + Match the input provided by the derived class + + The value to be matchedT + True for a match, false otherwise. + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + Combines multiple filters so that a test must pass all + of them in order to pass this filter. + + + + + Constructs an empty AndFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters pass, otherwise false + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters match, otherwise false + + + + Checks whether the AndFilter is explicit matched by a test. + + The test to be matched + True if all the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + CategoryFilter is able to select or exclude tests + based on their categories. + + + + + + Construct a CategoryFilter using a single category name + + A category name + + + + Check whether the filter matches a test + + The test to be matched + + + + + Gets the element name + + Element name + + + + NotFilter negates the operation of another filter + + + + + Construct a not filter on another filter + + The filter to be negated + + + + Gets the base filter + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Check whether the filter matches a test + + The test to be matched + True if it matches, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Combines multiple filters so that a test must pass one + of them in order to pass this filter. + + + + + Constructs an empty OrFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters pass, otherwise false + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters match, otherwise false + + + + Checks whether the OrFilter is explicit matched by a test + + The test to be matched + True if any of the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + Interface for logging within the engine + + + + + Logs the specified message at the error level. + + The message. + + + + Logs the specified message at the error level. + + The message. + The arguments. + + + + Logs the specified message at the warning level. + + The message. + + + + Logs the specified message at the warning level. + + The message. + The arguments. + + + + Logs the specified message at the info level. + + The message. + + + + Logs the specified message at the info level. + + The message. + The arguments. + + + + Logs the specified message at the debug level. + + The message. + + + + Logs the specified message at the debug level. + + The message. + The arguments. + + + + InternalTrace provides facilities for tracing the execution + of the NUnit framework. Tests and classes under test may make use + of Console writes, System.Diagnostics.Trace or various loggers and + NUnit itself traps and processes each of them. For that reason, a + separate internal trace is needed. + + Note: + InternalTrace uses a global lock to allow multiple threads to write + trace messages. This can easily make it a bottleneck so it must be + used sparingly. Keep the trace Level as low as possible and only + insert InternalTrace writes where they are needed. + TODO: add some buffering and a separate writer thread as an option. + TODO: figure out a way to turn on trace in specific classes only. + + + + + Gets a flag indicating whether the InternalTrace is initialized + + + + + Initialize the internal trace facility using the name of the log + to be written to and the trace level. + + The log name + The trace level + + + + Initialize the internal trace using a provided TextWriter and level + + A TextWriter + The InternalTraceLevel + + + + Get a named Logger + + + + + + Get a logger named for a particular Type. + + + + + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. + + + + + Use the default settings as specified by the user. + + + + + Do not display any trace messages + + + + + Display Error messages only + + + + + Display Warning level and higher messages + + + + + Display informational and higher messages + + + + + Display debug messages and higher - i.e. all messages + + + + + Display debug messages and higher - i.e. all messages + + + + + A trace listener that writes to a separate file per domain + and process using it. + + + + + Construct an InternalTraceWriter that writes to a file. + + Path to the file to use + + + + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + + + + + + Returns the character encoding in which the output is written. + + The character encoding in which the output is written. + + + + Writes a character to the text string or stream. + + The character to write to the text stream. + + + + Writes a string to the text string or stream. + + The string to write. + + + + Writes a string followed by a line terminator to the text string or stream. + + The string to write. If is null, only the line terminator is written. + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. + + + + + Provides internal logging to the NUnit framework + + + + + Initializes a new instance of the class. + + The name. + The log level. + The writer where logs are sent. + + + + Logs the message at error level. + + The message. + + + + Logs the message at error level. + + The message. + The message arguments. + + + + Logs the message at warm level. + + The message. + + + + Logs the message at warning level. + + The message. + The message arguments. + + + + Logs the message at info level. + + The message. + + + + Logs the message at info level. + + The message. + The message arguments. + + + + Logs the message at debug level. + + The message. + + + + Logs the message at debug level. + + The message. + The message arguments. + + + + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. + + + + + Construct a MethodWrapper for a Type and a MethodInfo. + + + + + Construct a MethodInfo for a given Type and method name. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the method. + + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. + + + + + Construct a ParameterWrapper for a given method and parameter + + + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter. + + + + + Gets the underlying ParameterInfo + + + + + Gets the Type of the parameter + + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the parameter. + + + + + TestCaseTimeoutException is thrown when a test running directly + on a TestWorker thread is cancelled due to timeout. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + TestNameGenerator is able to create test names according to + a coded pattern. + + + + + Default pattern used to generate names + + + + + Construct a TestNameGenerator + + + + + Construct a TestNameGenerator + + The pattern used by this generator. + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + The display name + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + Arguments to be used + The display name + + + + The TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. + + + + + Construct a TypeWrapper for a specified Type. + + + + + Gets the underlying Type on which this TypeWrapper is based. + + + + + Gets the base type of this type as an ITypeInfo + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Returns true if the Type wrapped is T + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type represents a static class. + + + + + Get the display name for this type + + + + + Get the display name for an object of this type, constructed with the specified args. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns an array of custom attributes of the specified type applied to this type + + + + + Returns a value indicating whether the type has an attribute of the specified type. + + + + + + + + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + 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. + + + + + + + Gets or sets the maximum line length for this writer + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a given + 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 result of the constraint that failed + + + + Gets the unique type name between expected and actual. + + The expected value + The actual value causing the failure + Output of the unique type name for expected + Output of the unique type name for actual + + + + 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 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 ConstraintResult for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. + + + + + Construct a GenericMethodHelper for a method + + MethodInfo for the method to examine + + + + Return the type arguments for the method, deducing them + from the arguments actually provided. + + The arguments to the method + An array of type arguments. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + Randomizer returns a set of random _values in a repeatable + way, to allow re-running of tests if necessary. It extends + the .NET Random class, providing random values for a much + wider range of types. + + The class is used internally by the framework to generate + test case data and is also exposed for use by users through + the TestContext.Random property. + + + For consistency with the underlying Random Type, methods + returning a single value use the prefix "Next..." Those + without an argument return a non-negative value up to + the full positive range of the Type. Overloads are provided + for specifying a maximum or a range. Methods that return + arrays or strings use the prefix "Get..." to avoid + confusion with the single-value methods. + + + + + Initial seed used to create randomizers for this run + + + + + 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. + + + + + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. + + + + + + Default constructor + + + + + Construct based on seed value + + + + + + Returns a random unsigned int. + + + + + Returns a random unsigned int less than the specified maximum. + + + + + Returns a random unsigned int within a specified range. + + + + + Returns a non-negative random short. + + + + + Returns a non-negative random short less than the specified maximum. + + + + + Returns a non-negative random short within a specified range. + + + + + Returns a random unsigned short. + + + + + Returns a random unsigned short less than the specified maximum. + + + + + Returns a random unsigned short within a specified range. + + + + + Returns a random long. + + + + + Returns a random long less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random ulong. + + + + + Returns a random ulong less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random Byte + + + + + Returns a random Byte less than the specified maximum. + + + + + Returns a random Byte within a specified range + + + + + Returns a random SByte + + + + + Returns a random sbyte less than the specified maximum. + + + + + Returns a random sbyte within a specified range + + + + + Returns a random bool + + + + + Returns a random bool based on the probability a true result + + + + + Returns a random double between 0.0 and the specified maximum. + + + + + Returns a random double within a specified range. + + + + + Returns a random float. + + + + + Returns a random float between 0.0 and the specified maximum. + + + + + Returns a random float within a specified range. + + + + + Returns a random enum value of the specified Type as an object. + + + + + Returns a random enum value of the specified Type. + + + + + Default characters for random functions. + + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + string representing the set of characters from which to construct the resulting string + A random string of arbitrary length + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + A random string of arbitrary length + Uses DefaultStringChars as the input character set + + + + Generate a random string based on the characters from the input string. + + A random string of the default length + Uses DefaultStringChars as the input character set + + + + Returns a random decimal. + + + + + Returns a random decimal between positive zero and the specified maximum. + + + + + Returns a random decimal within a specified range, which is not + permitted to exceed decimal.MaxVal in the current implementation. + + + A limitation of this implementation is that the range from min + to max must not exceed decimal.MaxVal. + + + + + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. + + + + + Single instance of our default filter + + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + Regex pattern used to delete lines from the bottom of the stack + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + + + + Construct a stack filter instance + + + + + Filters a raw stack trace and returns the result. + + The original stack trace + A filtered stack trace + + + + Provides methods to support legacy string comparison methods. + + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if + strB is sorted first + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + True if the strings are equivalent, false if not. + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + Type arguments used to create a generic fixture instance + + + + + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a ParameterSet from an object implementing ITestData + + + + + + The RunState for this set of parameters. + + + + + The arguments to be used in running the test, + which must match the method signature. + + + + + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. + + + + + Gets the property dictionary for this test + + + + + Applies ParameterSet _values to the test itself. + + A test. + + + + The original arguments provided by the user, + used for display purposes. + + + + + Enumeration indicating whether the tests are + running normally or being cancelled. + + + + + Running normally with no stop requested + + + + + A graceful stop has been requested + + + + + A forced stop has been requested + + + + + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. + + + + + The FriendlyName of the AppDomain in which the assembly is running + + + + + The selected strategy for joining parameter data into test cases + + + + + The process ID of the executing assembly + + + + + The stack trace from any data provider that threw + an exception. + + + + + The reason a test was not run + + + + + The author of the tests + + + + + The ApartmentState required for running the test + + + + + The categories applying to a test + + + + + The Description of a test + + + + + The number of threads to be used in running tests + + + + + The maximum time in ms, above which the test is considered to have failed + + + + + The ParallelScope associated with a test + + + + + The number of times the test should be repeated + + + + + Indicates that the test should be run on a separate thread + + + + + The culture to be set for a test + + + + + The UI culture to be set for a test + + + + + The type that is under test + + + + + The timeout value for the test + + + + + The test will be ignored until the given date + + + + + The optional Order the test will run in + + + + + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. + + + + + Default constructor uses the current culture. + + + + + Construct a CultureDetector for a particular culture for testing. + + The culture to be used + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + Tests to determine if the current culture is supported + based on a culture attribute. + + The attribute to examine + + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + ExceptionHelper provides static methods for working with exceptions + + + + + Rethrows an exception, preserving its stack trace + + The exception to rethrow + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. Excludes exception names, creating more readable message + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined stack trace. + + + + Gets the stack trace of the exception. + + The exception. + A string representation of the stack trace. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + OSPlatform represents a particular operating system platform + + + + + Platform ID for Unix as defined by Microsoft .NET 2.0 and greater + + + + + Platform ID for Unix as defined by Mono + + + + + Platform ID for XBox as defined by .NET and Mono + + + + + Platform ID for MacOSX as defined by .NET and Mono + + + + + Get the OSPlatform under which we are currently running + + + + + Gets the actual OS Version, not the incorrect value that might be + returned for Win 8.1 and Win 10 + + + If an application is not manifested as Windows 8.1 or Windows 10, + the version returned from Environment.OSVersion will not be 6.3 and 10.0 + respectively, but will be 6.2 and 6.3. The correct value can be found in + the registry. + + The original version + The correct OS version + + + + Product Type Enumeration used for Windows + + + + + Product type is unknown or unspecified + + + + + Product type is Workstation + + + + + Product type is Domain Controller + + + + + Product type is Server + + + + + Construct from a platform ID and version + + + + + Construct from a platform ID, version and product type + + + + + Get the platform ID of this instance + + + + + Get the Version of this instance + + + + + Get the Product Type of this instance + + + + + Return true if this is a windows platform + + + + + Return true if this is a Unix or Linux platform + + + + + Return true if the platform is Win32S + + + + + Return true if the platform is Win32Windows + + + + + Return true if the platform is Win32NT + + + + + Return true if the platform is Windows CE + + + + + Return true if the platform is Xbox + + + + + Return true if the platform is MacOSX + + + + + Return true if the platform is Windows 95 + + + + + Return true if the platform is Windows 98 + + + + + Return true if the platform is Windows ME + + + + + Return true if the platform is NT 3 + + + + + Return true if the platform is NT 4 + + + + + Return true if the platform is NT 5 + + + + + Return true if the platform is Windows 2000 + + + + + Return true if the platform is Windows XP + + + + + Return true if the platform is Windows 2003 Server + + + + + Return true if the platform is NT 6 + + + + + Return true if the platform is NT 6.0 + + + + + Return true if the platform is NT 6.1 + + + + + Return true if the platform is NT 6.2 + + + + + Return true if the platform is NT 6.3 + + + + + Return true if the platform is Vista + + + + + Return true if the platform is Windows 2008 Server (original or R2) + + + + + Return true if the platform is Windows 2008 Server (original) + + + + + Return true if the platform is Windows 2008 Server R2 + + + + + Return true if the platform is Windows 2012 Server (original or R2) + + + + + Return true if the platform is Windows 2012 Server (original) + + + + + Return true if the platform is Windows 2012 Server R2 + + + + + Return true if the platform is Windows 7 + + + + + Return true if the platform is Windows 8 + + + + + Return true if the platform is Windows 8.1 + + + + + Return true if the platform is Windows 10 + + + + + Return true if the platform is Windows Server. This is named Windows + Server 10 to distinguish it from previous versions of Windows Server. + + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + The expected result to be returned + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + The expected result of the test, which + must match the method return type. + + + + + Gets a value indicating whether an expected result was specified. + + + + + PlatformHelper class is used by the PlatformAttribute class to + determine whether a platform is supported. + + + + + Comma-delimited list of all supported OS platform constants + + + + + Comma-delimited list of all supported Runtime platform constants + + + + + Default constructor uses the operating system and + common language runtime of the system. + + + + + Construct a PlatformHelper for a particular operating + system and common language runtime. Used in testing. + + RuntimeFramework to be used + OperatingSystem to be used + + + + Test to determine if one of a collection of platforms + is being used currently. + + + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Test to determine if the a particular platform or comma- + delimited set of platforms is in use. + + Name of the platform or comma-separated list of platform ids + True if the platform is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + A PropertyBag represents a collection of name value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + + + + Adds a key/value pair to the property set + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + + True if their are _values present, otherwise false + + + + + Gets a collection containing all the keys in the property set + + + + + + Gets or sets the list of _values for a particular key + + + + + Returns an XmlNode representing the current PropertyBag. + + Not used + An XmlNode representing the PropertyBag + + + + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + + The parent node. + Not used + + + + + Helper methods for inspecting a type by reflection. + + Many of these methods take ICustomAttributeProvider as an + argument to avoid duplication, even though certain attributes can + only appear on specific types of members, like MethodInfo or Type. + + In the case where a type is being examined for the presence of + an attribute, interface or named member, the Reflect methods + operate with the full name of the member being sought. This + removes the necessity of the caller having a reference to the + assembly that defines the item being sought and allows the + NUnit core to inspect assemblies that reference an older + version of the NUnit framework. + + + + + Examine a fixture type and return an array of methods having a + particular attribute. The array is order with base methods first. + + The type to examine + The attribute Type to look for + Specifies whether to search the fixture type inheritance chain + The array of methods found + + + + Examine a fixture type and return true if it has a method with + a particular attribute. + + The type to examine + The attribute Type to look for + True if found, otherwise false + + + + Invoke the default constructor on a Type + + The Type to be constructed + An instance of the Type + + + + Invoke a constructor on a Type with arguments + + The Type to be constructed + Arguments to the constructor + An instance of the Type + + + + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() + + An array of objects + An array of Types + + + + Invoke a parameterless method returning void on an object. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + + + + Invoke a method, converting any TargetInvocationException to an NUnitException. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The TestResult class represents the result of a test. + + + + + Error message for when child tests have errors + + + + + Error message for when child tests have warnings + + + + + Error message for when child tests are ignored + + + + + The minimum duration for tests + + + + + Aggregate assertion count + + + + + ReaderWriterLock + + + + + Construct a test result given a Test + + The test to be used + + + + Gets the test with which this result is associated. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets or sets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Adds a test attachment to the test result + + The TestAttachment object to attach + + + + Gets the collection of files attached to the test + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets or sets the count of asserts executed + when running the test. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Gets a TextWriter, which will write output to be included in the result. + + + + + Gets any text output written to this result. + + + + + Gets a list of assertion results associated with the test. + + + + + Returns the Xml representation of the result. + + If true, descendant results are included + An XmlNode representing the result + + + + Adds the XML representation of the result as a child of the + supplied parent node.. + + The parent node. + If true, descendant results are included + + + + + Gets a count of pending failures (from Multiple Assert) + + + + + Gets the worst assertion status (highest enum) in all the assertion results + + + + + Set the result of the test + + The ResultState to use in the result + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + Stack trace giving the location of the command + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + The FailureSite to use in the result + + + + RecordTearDownException appends the message and stacktrace + from an exception arising during teardown of the test + to any previously recorded information, so that any + earlier failure information is not lost. Note that + calling Assert.Ignore, Assert.Inconclusive, etc. during + teardown is treated as an error. If the current result + represents a suite, it may show a teardown error even + though all contained tests passed. + + The Exception to be recorded + + + + Determine result after test has run to completion. + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Adds a reason element to a node and returns it. + + The target node. + The new reason element. + + + + Adds a failure element to a node and returns it. + + The target node. + The new failure element. + + + + Adds an attachments element to a node and returns it. + + The target node. + The new attachments element. + + + + Creates a failure message incorporating failures + from a Multiple Assert block for use by runners + that don't know about AssertionResults. + + Message as a string + + + + Enumeration identifying a common language + runtime implementation. + + + + Any supported runtime framework + + + Microsoft .NET Framework + + + Microsoft Shared Source CLI + + + Mono + + + MonoTouch + + + + RuntimeFramework represents a particular version + of a common language runtime implementation. + + + + + DefaultVersion is an empty Version, used to indicate that + NUnit should select the CLR version to use for the test. + + + + + Construct from a runtime type and version. If the version has + two parts, it is taken as a framework version. If it has three + or more, it is taken as a CLR version. In either case, the other + version is deduced based on the runtime type and provided version. + + The runtime type of the framework + The version of the framework + + + + Static method to return a RuntimeFramework object + for the framework that is currently in use. + + + + + The type of this runtime framework + + + + + The framework version for this runtime framework + + + + + The CLR version for this runtime framework + + + + + Return true if any CLR version may be used in + matching this RuntimeFramework object. + + + + + Returns the Display name for this framework + + + + + Parses a string representing a RuntimeFramework. + The string may be just a RuntimeType name or just + a Version or a hyphenated RuntimeType-Version or + a Version prefixed by 'versionString'. + + + + + + + Overridden to return the short name of the framework + + + + + + Returns true if the current framework matches the + one supplied as an argument. Two frameworks match + if their runtime types are the same or either one + is RuntimeType.Any and all specified version components + are equal. Negative (i.e. unspecified) version + components are ignored. + + The RuntimeFramework to be matched. + True on match, otherwise false + + + + Helper class used to save and restore certain static or + singleton settings in the environment that affect tests + or which might be changed by the user tests. + + + + + Link to a prior saved context + + + + + Indicates that a stop has been requested + + + + + The event listener currently receiving notifications + + + + + The number of assertions for the current test + + + + + The current culture + + + + + The current UI culture + + + + + The current test result + + + + + The current Principal. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + An existing instance of TestExecutionContext. + + + + Gets and sets the current context. + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current test event listener + + + + + The current WorkItemDispatcher. Made public for + use by nunitlite.tests + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + Default tolerance value used for floating point equality + when no other tolerance is specified. + + + + + The worker that spawned the context. + For builds without the parallel feature, it is null. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets the assert count. + + The assert count. + + + + The current nesting level of multiple assert blocks + + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + Gets or sets the current for the Thread. + + + + + The current head of the ValueFormatter chain, copied from MsgUtils.ValueFormatter + + + + + If true, all tests must run on the same thread. No new thread may be spawned. + + + + + Record any changes in the environment made by + the test code in the execution context so it + will be passed on to lower level tests. + + + + + Set up the execution environment to match a context. + Note that we may be running on the same thread where the + context was initially created or on a different thread. + + + + + Increments the assert count by one. + + + + + Increments the assert count by a specified amount. + + + + + Adds a new ValueFormatterFactory to the chain of formatters + + The new factory + + + + Obtain lifetime service object + + + + + + An IsolatedContext is used when running code + that may effect the current result in ways that + should not impact the final result of the test. + A new TestExecutionContext is created with an + initially clear result, which is discarded on + exiting the context. + + + using (new TestExecutionContext.IsolatedContext()) + { + // Code that should not impact the result + } + + + + + Save the original current TestExecutionContext and + make a new isolated context current. + + + + + Restore the original TestExecutionContext. + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Unique Empty filter. + + + + + Indicates whether this is the EmptyFilter + + + + + Indicates whether this is a top-level filter, + not contained in any other filter. + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Determine whether the test itself matches the filter criteria, without + examining either parents or descendants. This is overridden by each + different type of filter to perform the necessary tests. + + The test to which the filter is applied + True if the filter matches the any parent of the test + + + + Determine whether any ancestor of the test matches the filter criteria + + The test to which the filter is applied + True if the filter matches the an ancestor of the test + + + + Determine whether any descendant of the test matches the filter criteria. + + The test to be matched + True if at least one descendant matches the filter criteria + + + + Create a TestFilter instance from an xml representation. + + + + + Create a TestFilter from it's TNode representation + + + + + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. + + + + + Adds an XML node + + True if recursive + The added XML node + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test case has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Construct a new TestListener - private so it may not be used. + + + + + Get a listener that does nothing + + + + + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. + + + + + Initializes a new instance of the class. + + The callback handler to be used for reporting progress. + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished. Sends a result summary to the callback. + to + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Returns the parent test item for the targer test item if it exists + + + parent test item + + + + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. + + The string to be used + A new string with the _values replaced + + + + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. + + + + + Initializes a new instance of the class. + + The ITypeInfo for the type that represents the suite. + + + + Gets a string representing the type of test + + + + + + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. + + + + + Construct from a MethodInfo + + + + + + Gets a string representing the type of test + + + + + + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. + + + + + Initializes a new instance of the class. + + The type. + + + + The Test abstract class represents a test within the framework. + + + + + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. + + + + + Used to cache the declaring type for this MethodInfo + + + + + Method property backing field + + + + + Constructs a test given its name + + The name of the test + + + + Constructs a test given the path through the + test hierarchy to its parent and a name. + + The parent tests full name + The name of the test + + + + TODO: Documentation needed for constructor + + + + + + Construct a test from a MethodInfo + + + + + + Gets or sets the id of the test + + + + + + Gets or sets the name of the test + + + + + Gets or sets the fully qualified name of the test + + + + + + Gets the name of the class where this test was declared. + Returns null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + The arguments to use in creating the test or empty array if none required. + + + + + Gets the TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. + + + + + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Whether or not the test should be run + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Gets a string representing the type of test. Used as an attribute + value in the XML representation of a test and has no other + function in the framework. + + + + + Gets a count of test cases represented by + or contained under this test. + + + + + Gets the properties for this test + + + + + Returns true if this is a TestSuite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the parent as a Test object. + Used by the core to set the parent. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets or sets a fixture object for running this test. + + + + + Static prefix used for ids in this AppDomain. + Set by FrameworkController. + + + + + Gets or Sets the Int value representing the seed for the RandomGenerator + + + + + + The SetUp methods. + + + + + The teardown methods + + + + + Creates a TestResult for this test. + + A TestResult suitable for this type of test. + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object implementing ICustomAttributeProvider + + + + Mark the test as Invalid (not runnable) specifying a reason + + The reason the test is not runnable + + + + Get custom attributes applied to a test + + + + + Add standard attributes and members to a test node. + + + + + + + Returns the Xml representation of the test + + If true, include child tests recursively + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Compares this test to another test for sorting purposes + + The other test + Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test + + + + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. + + + + + Initializes a new instance of the class + specifying the Assembly and the path from which it was loaded. + + The assembly this test represents. + The path used to load the assembly. + + + + Initializes a new instance of the class + for a path which could not be loaded. + + The path used to load the assembly. + + + + Copy-constructor style to create a filtered copy of the test assemblies + test cases + + + + + + + Gets the Assembly represented by this instance. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Get custom attributes specified on the assembly + + + + + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. + + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used + + + + The TestMethod class represents a Test implemented as a method. + + + + + The ParameterSet used to create this test method + + + + + Initializes a new instance of the class. + + The method to be used as a test. + + + + Initializes a new instance of the class. + + The method to be used as a test. + The suite or fixture to which the new test will be added + + + + The arguments to use in executing the test method, or empty array if none are provided. + + + + + Overridden to return a TestCaseResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Returns a TNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Gets this test's child tests + + A list of child tests + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns the name of the method + + + + + TestSuite represents a composite test, which contains other tests. + + + + + Our collection of child tests + + + + + Initializes a new instance of the class. + + The name of the suite. + + + + Initializes a new instance of the class. + + Name of the parent suite. + The name of the suite. + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Copy constructor style to create a filtered copy of the given test suite + + Test Suite to copy + Filter to be applied + + + + Sorts tests under this suite. + + + + + Adds a test to the suite. + + The test. + + + + Gets this test's child tests + + The list of child tests + + + + Gets a count of test cases represented by + or contained under this test. + + + + + + The arguments to use in creating the fixture, or empty array if none are provided. + + + + + Set to true to suppress sorting this suite's contents + + + + + OneTimeSetUp methods for this suite + + + + + OneTimeTearDown methods for this suite + + + + + Overridden to return a TestSuiteResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. + + A list of methodinfos to check + + + + ThreadUtility provides a set of static methods convenient + for working with threads. + + + + + Pre-Task compatibility + + + + + Abort a thread, helping to dislodging it if it is blocked in native code + + The thread to abort + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Do our best to kill a thread + + The thread to kill + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Do our best to kill a thread, passing state info + + The thread to kill + Info for the ThreadAbortException handler + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Schedule a threadpool thread to check on the aborting thread in case it's in a message pump native blocking wait + + + + + Captures the current thread's native id. If provided to later, allows the thread to be killed if it's in a message pump native blocking wait. + + + + + Sends a message to the thread to dislodge it from native code and allow a return to managed code, where a ThreadAbortException can be generated. + The message is meaningless (WM_CLOSE without a window handle) but it will end any blocking message wait. + + + + + TypeHelper provides static methods that operate on Types. + + + + + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. + + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The display name for the Type + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The arglist provided. + The display name for the Type + + + + Returns the best fit for a common type to be used in + matching actual arguments to a methods Type parameters. + + The first type. + The second type. + Either type1 or type2, depending on which is more general. + + + + Determines whether the specified type is numeric. + + The type to be examined. + + true if the specified type is numeric; otherwise, false. + + + + + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. + + An array of args to be converted + A ParameterInfo[] whose types will be used as targets + + + + Determines whether this instance can deduce type args for a generic type from the supplied arguments. + + The type to be examined. + The arglist. + The type args to be used. + + true if this the provided args give sufficient information to determine the type args to be used; otherwise, false. + + + + + Return the interfaces implemented by a Type. + + The Type to be examined. + An array of Types for the interfaces. + + + + Represents the result of running a single test case. + + + + + Construct a TestCaseResult based on a TestMethod + + A TestMethod to which the result applies. + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Represents the result of running a test suite + + + + + Construct a TestSuiteResult base on a TestSuite + + The TestSuite to which the result applies + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. + + The result to be added + + + + The TestFixtureData class represents a set of arguments + and other parameter info to be used for a parameterized + fixture. It is derived from TestFixtureParameters and adds a + fluent syntax for use in initializing the fixture. + + + + + 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. + + + + Marks the test fixture as explicit. + + + + + Marks the test fixture as explicit, specifying the reason. + + + + + Ignores this TestFixture, specifying the reason. + + The reason. + + + + + Asserts on Directories + + + + + DO NOT USE! Use DirectoryAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + 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 the 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 point to the same directory. + If they are not 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 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 + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + 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 the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to 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 the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + 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 the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to 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 the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 regular expression supplied as an argument. + + + + + Abstract base for Exceptions that terminate a test and provide a ResultState. + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter names in making asserts. + + + + + 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 + + + + 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. + + 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 + + + + 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 + + + + 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 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 + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 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 regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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. + + + + + 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. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + 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 + + + + 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 + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + 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 + + + + + Modifies a test by adding a category to it. + + The test to modify + + + + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. + + + + + Default constructor + + + + + 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 + + + + Causes a test to be skipped if this CultureAttribute is not satisfied. + + The test to modify + + + + Tests to determine if the current culture is supported + based on the properties of this attribute. + + True, if the current culture is supported + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. + + + + + Default constructor + + + + + 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 a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointSourceAttribute. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointsAttribute. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct a description Attribute + + The text of the description + + + + 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 + + + + Modifies a test by marking it as explicit. + + The test to modify + + + + 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 giving a reason for ignoring the test + + The reason for ignoring the test + + + + The date in the future to stop ignoring the test as a string in UTC time. + For example for a date and time, "2014-12-25 08:10:00Z" or for just a date, + "2014-12-25". If just a date is given, the Ignore will expire at midnight UTC. + + + Once the ignore until date has passed, the test will be marked + as runnable. Tests with an ignore until date will have an IgnoreUntilDate + property set which will appear in the test results. + + The string does not contain a valid string representation of a date and time. + + + + Modifies a test by marking it as Ignored. + + The test to modify + + + + 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 items 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 + + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + The abstract base class for all custom attributes defined by NUnit. + + + + + Default constructor + + + + + Marks a test to use a pairwise join of any argument + data provided. Arguments will be combined in such a + way that all possible pairs of arguments are used. + + + + + Default constructor + + + + + 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-delimited list of platforms + + + + Causes a test to be skipped if this PlatformAttribute is not satisfied. + + The test to modify + + + + 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 + + + + + Modifies a test by adding properties to it. + + The test to modify + + + + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. + + + + + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + + + + + + Construct a set of ints within a specified range + + + + + Construct a set of unsigned ints within a specified range + + + + + Construct a set of longs within a specified range + + + + + Construct a set of unsigned longs within a specified range + + + + + Construct a set of shorts within a specified range + + + + + Construct a set of unsigned shorts within a specified range + + + + + Construct a set of doubles within a specified range + + + + + Construct a set of floats within a specified range + + + + + Construct a set of bytes within a specified range + + + + + Construct a set of sbytes within a specified range + + + + + 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 unsigned ints using default step of 1 + + + + + + + Construct a range of unsigned ints specifying the step size + + + + + + + + Construct a range of longs using a default step of 1 + + + + + + + Construct a range of longs + + + + + + + + Construct a range of unsigned longs using default step of 1 + + + + + + + Construct a range of unsigned longs specifying the step size + + + + + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RepeatAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + 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 in the STA, causing it + to run in a separate thread if necessary. + + + + + Construct a RequiresSTAAttribute + + + + + Marks a test that must run on a separate thread. + + + + + Construct a RequiresThreadAttribute + + + + + Construct a RequiresThreadAttribute, specifying the apartment + + + + + Marks a test to use a Sequential join of any argument + data provided. Arguments will be combined into test cases, + taking the next value of each argument until all are used. + + + + + Default constructor + + + + + 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 identify a method that is called + immediately before each test is run. + + + + + Attribute used to identify a class that contains + or + methods for all the test fixtures under a given namespace. + + + + + Build a SetUpFixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A SetUpFixture object as a TestSuite. + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + The author of this test + + + + + The type that this test is testing + + + + + Modifies a test by adding a description, if not already set. + + The test to modify + + + + Gets or sets the expected result. + + The result. + + + + Returns true if an expected result has been set + + + + + Construct a TestMethod from a given method. + + The method for which a test is to be constructed. + The suite to which the test will be added. + A TestMethod + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + 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 or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test case. + + + + + Gets the list of arguments to a test case + + + + + Gets the properties of the test case + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if the expected result has been set + + + + + Gets or sets the description. + + The description. + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the reason for ignoring the test + + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets or sets the reason for not running the test. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Comma-delimited list of platforms to run the test for + + + + + Comma-delimited list of platforms to not run the test for + + + + + Gets and sets the category for this test case. + May be a comma-separated list of categories. + + + + + Performs several special conversions allowed by NUnit in order to + permit arguments with types that cannot be used in the constructor + of an Attribute such as TestCaseAttribute or to simplify their use. + + The arguments to be converted + The ParameterInfo array for the method + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a name + + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type + + The type that will provide data + + + + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + + The method for which data is needed. + + + + + TestFixtureAttribute is used to mark a class that represents a TestFixture. + + + + + 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. + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test fixture. + + + + + The arguments originally provided to the attribute + + + + + Properties pertaining to this fixture + + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Descriptive text for this fixture + + + + + The author of this fixture + + + + + The type that this fixture is testing + + + + + Gets or sets the ignore reason. May set RunState as a side effect. + + The ignore reason. + + + + Gets or sets the reason for not running the fixture. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Build a fixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A an IEnumerable holding one TestFixture object. + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Construct the attribute, specifying a combining strategy and source of parameter data. + + + + + Used 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 class or assembly, sets the default timeout + for all contained test methods. + + + + + Construct a TimeoutAttribute given a time in milliseconds + + The timeout value in milliseconds + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + 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 + + + + + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. + + + + + 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 + + + + + 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 a static method, property or field 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 a static 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 + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + + An enumeration containing individual data items + + + + + A set of Assert methods operating on one or more collections + + + + + DO NOT USE! Use CollectionAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + 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 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 + 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 + 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 + 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 + 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 + 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 + 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 + Arguments to be used in formatting the message + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset does not contain the superset + + 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 the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset contains the superset. + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. + + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Asserts on Files + + + + + DO NOT USE! Use FileAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 regular expression 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 a subpath of the 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 + inclusively within a specified range. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + + 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 + + + + + Basic Asserts on strings. + + + + + DO NOT USE! Use StringAssert.AreEqualIgnoringCase(...) or Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 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 + + + + 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 TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the 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 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 + + + + + + + + Marks the test case as explicit. + + + + + Marks the test case as explicit, specifying the reason. + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Provide the context information of the current test. + This is an adapter for the internal ExecutionContext + class, hiding the internals from the user test. + + + + + Construct a TestContext for an ExecutionContext + + The ExecutionContext to adapt + + + + 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 TextWriter that will send output to the current test result. + + + + + Gets a TextWriter that will send output directly to Console.Error + + + + + Gets a TextWriter for use in displaying immediate progress messages + + + + + TestParameters object holds parameters for the test run, if any are specified + + + + + Static DefaultWorkDirectory is now used as the source + of the public instance property WorkDirectory. This is + a bit odd but necessary to avoid breaking user tests. + + + + + Get a representation of the current test. + + + + + Gets a Representation of the TestResult for the current test. + + + + + Gets the unique name of the Worker that is executing this test. + + + + + Gets the directory containing the current test assembly. + + + + + Gets the directory to be used for outputting files created + by this test run. + + + + + Gets the random generator. + + + The random generator. + + + + Write the string representation of a boolean value to the current result + + + Write a char to the current result + + + Write a char array to the current result + + + Write the string representation of a double to the current result + + + Write the string representation of an Int32 value to the current result + + + Write the string representation of an Int64 value to the current result + + + Write the string representation of a decimal value to the current result + + + Write the string representation of an object to the current result + + + Write the string representation of a Single value to the current result + + + Write a string to the current result + + + Write the string representation of a UInt32 value to the current result + + + Write the string representation of a UInt64 value to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a line terminator to the current result + + + Write the string representation of a boolean value to the current result followed by a line terminator + + + Write a char to the current result followed by a line terminator + + + Write a char array to the current result followed by a line terminator + + + Write the string representation of a double to the current result followed by a line terminator + + + Write the string representation of an Int32 value to the current result followed by a line terminator + + + Write the string representation of an Int64 value to the current result followed by a line terminator + + + Write the string representation of a decimal value to the current result followed by a line terminator + + + Write the string representation of an object to the current result followed by a line terminator + + + Write the string representation of a Single value to the current result followed by a line terminator + + + Write a string to the current result followed by a line terminator + + + Write the string representation of a UInt32 value to the current result followed by a line terminator + + + Write the string representation of a UInt64 value to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + + This method adds the a new ValueFormatterFactory to the + chain of responsibility used for formatting values in messages. + The scope of the change is the current TestContext. + + The factory delegate + + + + Attach a file to the current test result + + Relative or absolute file path to attachment + Optional description of attachment + + + + This method provides a simplified way to add a ValueFormatter + delegate to the chain of responsibility, creating the factory + delegate internally. It is useful when the Type of the object + is the only criterion for selection of the formatter, since + it can be used without getting involved with a compound function. + + The type supported by this formatter + The ValueFormatter delegate + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Construct a TestAdapter for a Test + + The Test to be adapted + + + + Gets the unique Id of a test + + + + + The name of the test, which may or may not be + the same as the method name. + + + + + The name of the method representing the test. + + + + + The FullName of the test + + + + + The ClassName of the test + + + + + The properties of the test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a TestResult + + The TestResult to be adapted + + + + Gets a ResultState representing the outcome of the test. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + TestParameters class holds any named parameters supplied to the test run + + + + + Gets the number of test parameters + + + + + Gets a collection of the test parameter names + + + + + Gets a flag indicating whether a parameter with the specified name exists. + + Name of the parameter + True if it exists, otherwise false + + + + Indexer provides access to the internal dictionary + + Name of the parameter + Value of the parameter or null if not present + + + + Get method is a simple alternative to the indexer + + Name of the parameter + Value of the parameter or null if not present + + + + Get the value of a parameter or a default string + + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Get the value of a parameter or return a default + + The return Type + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Adds a parameter to the list + + Name of the parameter + Value of the parameter + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + 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 ArgumentException + + + + + Creates a constraint specifying an expected ArgumentNullException + + + + + Creates a constraint specifying an expected InvalidOperationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + 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 + + + + + Provides static methods to express conditions + that must be met for the test to succeed. If + any test fails, a warning is issued. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + 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 + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + 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 + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + The evaluated condition + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + FrameworkPackageSettings is a static class containing constant values that + are used as keys in setting up a TestPackage. These values are used in + the framework, and set in the runner. Setting values may be a string, int or bool. + + + + + Flag (bool) indicating whether tests are being debugged. + + + + + Flag (bool) indicating whether to pause execution of tests to allow + the user to attach a debugger. + + + + + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. + + + + + Full path of the directory to be used for work and result files. + This path is provided to tests by the framework TestContext. + + + + + Integer value in milliseconds for the default timeout value + for test cases. If not specified, there is no timeout except + as specified by attributes on the tests themselves. + + + + + A TextWriter to which the internal trace will be sent. + + + + + A list of tests to be loaded. + + + + + The number of test threads to run for the assembly. If set to + 1, a single queue is used. If set to 0, tests are executed + directly, without queuing. + + + + + The random seed to be used for this assembly. If specified + as the value reported from a prior run, the framework should + generate identical random values for tests as were used for + that run, provided that no change has been made to the test + assembly. Default is a random value itself. + + + + + If true, execution stops after the first error or failure. + + + + + If true, use of the event queue is suppressed and test events are synchronous. + + + + + The default naming pattern used in generating test names + + + + + Parameters to be passed on to the tests, serialized to a single string which needs parsing. Obsoleted by ; kept for backward compatibility. + + + + + Parameters to be passed on to the tests, already parsed into an IDictionary<string, string>. Replaces . + + + + + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. + + + + + Gets the custom attributes from the given object. + + .NET Standard 1.3 libraries do not have an ICustomAttributeProvider, so we need to cast to each of + it's direct subtypes and try to get attributes off those instead. + The actual. + Type of the attribute. + if set to true [inherit]. + A list of the given attribute on the given object. + + + + A MarshalByRefObject that lives forever + + + + + Obtains a lifetime service object to control the lifetime policy for this instance. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Provides NUnit specific extensions to aid in Reflection + across multiple frameworks + + + This version of the class supplies GetTypeInfo() on platforms + that don't support it. + + + + + GetTypeInfo gives access to most of the Type information we take for granted + on .NET Core and Windows Runtime. Rather than #ifdef different code for different + platforms, it is easiest to just code all platforms as if they worked this way, + thus the simple passthrough. + + + + + + + Extensions for Assembly that are not available in pre-4.5 .NET releases + + + + + An easy way to get a single custom attribute from an assembly + + The attribute Type + The assembly + An attribute of Type T + + + + Type extensions that apply to all target frameworks + + + + + Determines if the given array is castable/matches the array. + + + + + + + + Determines if one type can be implicitly converted from another + + + + + + + + This class is used as a flag when we get a parameter list for a method/constructor, but + we do not know one of the types because null was passed in. + + + + + Represents a thread-safe first-in, first-out collection of objects. + + Specifies the type of elements in the queue. + + All public and protected members of are thread-safe and may be used + concurrently from multiple threads. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class that contains elements copied from the specified collection + + The collection whose elements are copied to the new . + The argument is + null. + + + + Adds an object to the end of the . + + The object to add to the end of the . The value can be a null reference + (Nothing in Visual Basic) for reference types. + + + + + Attempts to add an object to the . + + The object to add to the . The value can be a null + reference (Nothing in Visual Basic) for reference types. + + true if the object was added successfully; otherwise, false. + For , this operation will always add the object to the + end of the + and return true. + + + + Attempts to remove and return the object at the beginning of the . + + + When this method returns, if the operation was successful, contains the + object removed. If no object was available to be removed, the value is unspecified. + + true if an element was removed and returned from the beginning of the + successfully; otherwise, false. + + + + Attempts to return an object from the beginning of the + without removing it. + + When this method returns, contains an object from + the beginning of the or an + unspecified value if the operation failed. + true if and object was returned successfully; otherwise, false. + + + + Returns an enumerator that iterates through a collection. + + An that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through the . + + An enumerator for the contents of the . + + The enumeration represents a moment-in-time snapshot of the contents + of the queue. It does not reflect any updates to the collection after + was called. The enumerator is safe to use + concurrently with reads from and writes to the queue. + + + + + Copies the elements of the to an , starting at a particular + index. + + The one-dimensional Array that is the + destination of the elements copied from the + . The Array must have zero-based indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + + is multidimensional. -or- + does not have zero-based indexing. -or- + is equal to or greater than the length of the + -or- The number of elements in the source is + greater than the available space from to the end of the destination + . -or- The type of the source cannot be cast automatically to the type of the + destination . + + + + + Copies the elements to an existing one-dimensional Array, starting at the specified array index. + + The one-dimensional Array that is the + destination of the elements copied from the + . The Array must have zero-based + indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + is equal to or greater than the + length of the + -or- The number of elements in the source is greater than the + available space from to the end of the destination . + + + + + Copies the elements stored in the to a new array. + + A new array containing a snapshot of elements copied from the . + + + + Gets a value indicating whether access to the is + synchronized with the SyncRoot. + + true if access to the is synchronized + with the SyncRoot; otherwise, false. For , this property always + returns false. + + + + Attempts to remove and return an object from the . + + + When this method returns, if the operation was successful, contains the + object removed. If no object was available to be removed, the value is unspecified. + + true if an element was removed and returned successfully; otherwise, false. + For , this operation will attempt to remove the object + from the beginning of the . + + + + + Gets an object that can be used to synchronize access to the . This property is not supported. + + The SyncRoot property is not supported. + + + + Gets the number of elements contained in the . + + The number of elements contained in the . + + For determining whether the collection contains any items, use of the + property is recommended rather than retrieving the number of items from the + property and comparing it to 0. + + + + + Gets a value that indicates whether the is empty. + + true if the is empty; otherwise, false. + + For determining whether the collection contains any items, use of this property is recommended + rather than retrieving the number of items from the property and comparing it + to 0. However, as this collection is intended to be accessed concurrently, it may be the case + that another thread will modify the collection after returns, thus invalidating + the result. + + + + + Defines methods to manipulate thread-safe collections intended for producer/consumer usage. + + Specifies the type of elements in the collection. + + All implementations of this interface must enable all members of this interface + to be used concurrently from multiple threads. + + + + + Attempts to add an object to the . + + The object to add to the . + true if the object was added successfully; otherwise, false. + The was invalid for this collection. + + + + Attempts to remove and return an object from the . + + + When this method returns, if the object was removed and returned successfully, contains the removed object. If no object was available to be removed, the value is + unspecified. + + true if an object was removed and returned successfully; otherwise, false. + + + + Copies the elements contained in the to a new array. + + A new array containing the elements copied from the . + + + + Copies the elements of the to + an + , starting at a specified index. + + The one-dimensional that is the destination of + the elements copied from the . + The array must have zero-based indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + is equal to or greater than the + length of the + -or- The number of elements in the source is greater than the + available space from to the end of the destination . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/csharp/packages/NUnit.3.7.1/lib/net35/nunit.framework.dll b/csharp/packages/NUnit.3.7.1/lib/net35/nunit.framework.dll new file mode 100644 index 0000000000000000000000000000000000000000..e74b6ca0c7aea61d5a0628d78252e0b3d06a2582 GIT binary patch literal 333824 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
~hV9K4az`Z@TmU7buG^yjM2rp1hiV>{Qk z5PYBfZuTl-Rx~+{V_)IWkR>@6`!2;u_U79icF=y$5bs)^n+L#|DZo5irfTPg^~Y3N z>#$zs?{CF*>M?g@;)d$8ov_3&5a{}F({k$;>%qBJNoV5_NqS2$%i{9ri(3Yj&LY{M zzB?G9WyGC6k#F@aH{s4xzids&-F+4ZEt$yn%#1dxI=U4uqKkGLCMi_i{|mO#f@bpXv%L_5V(9`Cq`X1HE|L=t3Hv@%qzH`H&t#(_#6n0 z9%^|En)vtN< z#zCTDK*pVgBS>F={<8W7N@*JVNkLN~tX@J^FFa~h{|?0bHeNV>o?;cp&&R>GRB)ce zZLp?5uFy$Cd#sn^y8crLoCF#Q`-4`-%v_S!<$`#9KTQ^L(TREwH!43^zF{DX_FQ>U6r~>vDVjb zHbLvd^o4TuD%82Rm$Sm1e70hW(fRyvw7!0~kXygO;L3B=x~rujKSByW`Hi}T$t??m!=y(BPb7Y{Zm&H5i9pB_ecov$-+ z*?+nY+K-5~)fd~O_`f-eb_VaBm2EtCY@J`Dw`}9JYR+tUel`~;Gzw_1t#xt2L#(|l zC%+m)tTPRox`^QgD&;wAT7D=?b=9pJa4UVfilZX6yL_5%_`7_?!ahC?FVkDJWtMIDN0$@Y`g7%7+cB&y*!J$oJD6frtlgR*27EJf zw%b!Uqm^Cs)BJdY@_|O_JTiXad*AX(OsozWkK$n(VvG#Pgk1LH2!O^Jy8gySHK{yy2oVllK{NtC2 zZgD)pQJ3&pVg>Q1_#JX_+F?D{;OJ0jT+wr|j0pc&*~3Y(+kF!ukK7@tP?&rIVp z{}SU<&xG+Lf$;(Dd{Bm#cU*~Ll*NiY*rPii+>tKAq*QI zQRz`DJ|~&ueqQb$T#Ugb^PQ(ws=t{kiSB9n0*0&uX>BaeBx>79=0xhs3~p(Mg`aou zPNJnPG*g(6#=*Ogb8S~2S0~h7eS+7>*4b6JQnc1w&zL1*x)h3iPd@e^iQS8lES$dX zu5~vku)AxmxoxrA4!`#DY5$36JR5BXU~WEc=g&6?S+nz)E5~K~YNOS5Mz++``m<ly9y1+GyNGP^Q6=($GQb00K2v zo9^XxHwaO_wdTvyFr}N?UZHbS8amt@K&<9sNUFbgo$2w(x7Jw)uqspkcvj-p$DTrU zT9B1@dhV81j~22!m(*ont3Ij%>vtk9e`sJxfy|0OD&?!e6wRVp7p9s;ZjMXi&EJ6; zobC?HXQr7|USS=Gw_$2S!KbO&PG@P-cVV@eZF5B)lO2D7q6JNJTsNM4g*xs!@%i=n zaOcL^CVX*KK7B*YZ}lGGw|b*wHSM{tI*%*M2jb&(44!_A&GsS|zB(sY6R?JWu}Su} zxf4YNPtC7&B@e=>-{XIOwj<2KlRZfPf;O8>ovn9HMhGu;kwZ&wYqPjXX! zXxoVX=@_n+h;(=Esy6HBj8^t^OpaDM0S%hUMyh@XOQaMORu%@2b2hgERtlqUO6_t6 zg`>%8n+1{ccexvE%Gq~m}vasRSSr@=RtFE-H2FY>T9P4q|-FA-kbS>D= zz_xA2AJvffl^|YSl@n?SGNq)G!gbtf7D5F{uyG?xewPFHf)x^<3yJtKr5pd8-}>l9bks)^zUrf7{k}_-{W`57 zAI$B+vYm(z#$RE`y-P?~ez5q*r}42gor74EV=4Vo{BVfmeb|*L_E;(AVq3Y2dWw;; zfGnN(IKq_4r}Q&b}P$$#&Gbk?N2SiGP~OHkq#w2T$hW zuO$0w$My_$=nv%Jbm3nkm+7QUDTMLcsYuBJV)0yk7R$!*1L22aWX>qeIgR&#>G2n4 z_`U$S>*Uys{|N3#6#u~-#{+bUIJ!BTuuT=2K zQ-H4#@RTXQyEEXagxKwHYE(y_*vEx(n&Rn|w5a|$eXnhO|5)GaTHlZ9dwuKs@A{_q zYU8l?Vu0Tf?>V*?3;5qEWJ_uE#Q61KEL;-RR}(T?KU}|*o8|%yT(0l**N+D{jf}$N zbg^(R>Go9Tmh2U29)07;UY$$)CsOe2pF2eeG(6fGUY;I&9@sr@Xp;oadNp}{w zb76-=3T4=^wzCJW+G70`89$M2yoO$E`?3k^wz>=uSb@5C;zlHfpU@91SQzlIuJH_?N+aT$l+{V8FZ9N5pYzloQSx%vm8nmobq zl%@0SES;dK5>M7p_UxL(eIn@4F#NxTci7_&fvj+YIKZEjDL@a{8qEOG*o)XnkHBHv z3xLkl$c70D6y?zm1@Yfut+taR5b8Cij-g~D+3+M^pm8I)i{#u|Xm|Rb5tU<%rbT)D zdRPqNkfu2PQoIIiyj#q1*j~1WOD(j~6bxkzy3MVmSYNflH>KKO9%6Oi{q!Y7hof#i^!Y;9*9!xj z=O9V^4;2PphhO6%n=0;{zi}?PjYFeksa%nzyV%k8sTV%cLtIT_=GNT(-EU+hDK(!1#gF!|PsRLI~HkhYD^M}+Xp1jB2GM-*(PyyvJnxLy_ ztuk9vJ)G~Iv%Ytzu*?4=?mM8OI==ts&0BVtrXW(RfCX2I3Mf)`0eb@!RP4RiRj}hK zcCkeh#fk-M)EH|_jK-K)Vu{fdW17aqnDR}J=|=ybd*9o~n&kWc{m=jW&-rr>cjq(r z&Ye4V%9}TD-nME4rbW)6Mq{Qb|2sRgdhi2hpw%U$iz;@mP zxJBaxT?63>5tJrE=;n^zIp2%cj;P0LC8Eo-(4o41nqc{@J>qk(~YZgXg6ZZPz z2FV9MxGnN=ZbA_ufagU%aW_8NkA&DkhL4zPxBgxQA>(wzQ?Q&NbZl5gy9R9Uq0Pok z#y9Gg??K7yhlHn3-UMVwTOMbk5{8;frnQT1)YU|YTFo>g&+Rif5cmXdR>YCFodU%EIpK;FJu{4&J5Z;vg`F-XAOL~FSre)z^PqWojJ zc{|4;P*@WU4GU~V)Fn_a6KQ0KG++TBc71--YuHw8@@+w}OMroE_HGcux5x z47r6?!8N_(mQTg!d^M}i!zy>bGCQ4yRrN!)yG+eIG<9C9p?A0vmWp61zZ4zCz`fe| zLubvS6$l)ciE(ZMwD_1}t=j(5I4r;v7NdfFwQZ4pF~hXaEATzEzv}Ir2zhNIKDEF( z5RGZ+t?eP9eFtx4b%+ylNl&9S~gAypdE{p%DufU(2Pd%miC>2xTlPd z4A8L&7BoFx-LmL=Pb0;|C*6BbRsLot)*P_+u<%>z@LtXW*cOMwx~q;ytx~^_2{IS1 z##mL~%UMd-i!~thNtVyR!*_2$3+#}sxM$~Dc6y=0baq=}8zYy_vEYJYj?TY^kGN|q z4z}BicmjYuv>UnyZsIJ>;g}Wf2&uuvf$hCnM*zC|x2N z%o3z3=u2+F#ho6D(${Pz!?Ac+wvIeNcGKDe-80G}it>p`!SlkCn4hZ7IaCj0;d#|L z2Gm&%gg*_RSPPf;Kc{y-$)Yk~=Z7ejzqESW;8V;B;XT(D#LMu%SUx6Q z77=z%1!vM!=%MBKqUIRuH3jHOd!fR$ff9vsnoyrxaqjebY91GkX@!tgIfoD*DphkT z7595w<4myg&>^i{<8^~I1vDdKGpJWlbyIezFUjjD@kZIhA12n4MdZ*5|0eok=NtRn zCnhMQFp0)#%&N#oE+PnTrZBmKmbGjSNKhVI5y8t_94M8xmSAADYZ_bumDB0xS_G*@{7|pbGu%ankkso~DuNX1 z!UQQ)7Taf=P2zY+i51pj3Zfg#!LPF$S{EHLNC5YJeF)OZ@!SgedAj_3k{^nT0m&19 z{BVLKzo0^Xp)S9O8gR zqulZ zsrSDh3qPdWc&k3_z5S12?`g8XqFcK5aYnTMz83jlTOY<;lEH|55I_30Vme?zUEMXuP(%(>zd^67bY6EYU2%+q@rLv-cU-( z9WB#gt(4FPFiKrG5p%_ zP|ECFgt6Flf}(M;AgP!hvWT#AF*uWoks1&2C>^dDbhwbNqX^F{QH7*P7CjH@?WEds z9j1s-))eaV(Rvu-R;;V#tH>s4qvGKz!dbKaxS^Ul=bO;8A}+u12UIuhUI=k+LkLs2 zUHB=W3NM&MQ!JV%;WGAjLm*gTNtkZQttz?`v@6y;@~t_#1+GMNy`sP7a1{OX1sRyG zUFyTPlIHM_YOk@t$qz6tK32M$aPfX&Kl-GU$KUl;iGym?oh#oYqn_f-CMcxEAfI zkG(lmWyIzVLjmqE#4xVU@QtopDg%Z(H1Gs5o*>o}#Cd{7o}e*-S%q6MXk!Mjjeb;DIes3Rw}bLYgVCE+ z+S6Mj4&9Des&>|%EF$ru9ThRyQRid_T!I5k&Zo(tXah9=rTr?&R9_xn8KRXW+!OG7 zj}7^&LiO<=9%rq|f)SzUO)20-NpGHDYruG|@w)W*OqrI4S*%CLK^oj+;N2SB1pC-_ z!Ztimr=xLvw9{l#N@0lPGlzUF+KDN?1*#ML~v=z~2{Sdie`q*Eb`}{UM0WuDh^GW^~xEfGjaX9%n9M z=0mJPm@AI2^GW^&5!(3%v0Y^(3Qd2-y!DD-)rH!pIptXrjMO~-X!c_Q=U8AntIjYy zoBSlJ-VI}8Q{+zir5kiSKe)s4g858I}ZBbu-N;v+wdhKvNpX5@yx@vE&M-(hV z_LARRx9vwZjBVvG-zRxI%k3Z^Ib;O9J6pTe$BGTrXswCVa5|7s1lJ2ma=oO`qlJRz z%*VkN(i`>oMWN6BoyMom{jl?F=EE*=UO#EQpoUY ziCR)?fmZ=ZbVRyshC+KmB*!+Dlebcqu`+!2G77m9IhY+R!;3wl@mWxcrf1^e4HC@- z(}A#ZeSn5XMAbpmY>z0O4<3Oz^e1toVH?Ru8a4nN`CtCy5TA&DTCUH)KP@+46Paj( zf2e3wGiH#CpgCBh_A(R?UjG#^G7 z&4&<1^WlTheCVL$M#HbD;QSzd?+V-7E<~V!wN>q^i96qCsie5J(JyXvFVM9OH^Tf2 zn`r*q5WlGyyY=$|RgXa*Z`#r*W5ELXUMSGd0>qc^K0&mzB?#YFNd9K~V>(y>iwpXh zl{66ZnUz>-Sz^Tg@70qWePz#3I5+`IeO07&8U5P!gXww`I`A~=Jf_6>@~9zSGqJvo zu>R~5mJq5b)#7aDAYJ$jlIwYC(bl35psesUFnwYgX$fra0L50WsYw)GU|tnZWm+7a z)2_8AJIbND4_)CJ#CvsAk=XW{h}S%@dtfqLLr2|&!Vy==5x2+@(W>)h%wVeFNjls| zK@-y^(iE*m_jkVxa0jyd8osvh*QoGq((nms;Po@icLYA%6Rmmta=|!~!wkVER)rl_oCr|(DzYie!lbgkW`90{ zL0*>FCgy^3kdDAgqi`0Gb+|m@a_1Fjt*RZj&xca*h1S^%iH!I6r;E<7X^%6O=yP*E z&(8HJ{49%zI!hsM8wx^`WQx&1qr&&7Lhe$9B=E`5`ph*!Ex-vI6P*2VyGAQ>J1OZe zx^|Q6bJFbP`htG&QO`S2Qg{%htQs6#cnH6)d&DUsss=j`BPJ>u->W0+JOU((SVIvh za2`bj4R&7w(C=6Diw>>dWl%IaG{;iAr7^lS#u2_E`!L1143*IYwZ(-wxYy(-ps|tv zh_<3QAHZP@w{*T$Fb(!6vq#H9GSl@f8L8U5VFiY7Ox)<@z)w+~ z(iVs~ZTP1(V^!RM{po1)vWODlYZ54okF>ENSK;P@28sGYd2CZ@qrEQLf;TVn)X`(; zb|ntG35m^1;RV@AD0Uj6rL8KZDMT==5$=G=80S@bo~@8WfnO2txi;`Su$CVtX}TXs27dShKk$PW;wAn){eUg3nlD(L#nz0< z^c$%Tbx{=iLgytJys&@pnj5@o|KKGXyy}nh*iV#Mg`ZlmpD07kPgJVE`H8JzKmDfr ziOT09!hU*4etJ?C{fP+Y1mqnXq5)a-fV9mhPNtX9H9qH7H0n%M0tiW-gseubhoz1?>bZI35a71K-Z{n0CA5gEiehq@@GEF!aH z5m{slgKgw7Ge=n{ialA3H?aRLeh$TBtCba!@ETnXU@7^5+FWb+fj>}&ee!Ub@y#zR zTaY914wbVuJCq;U@d(xeLkXhla(OeK$n5QhrA=>WADa|q(F)fcg|lj(8DoxCM2rhQ zS`lH651TWZs+sCF0@~Vey;8R5E56Jh1O6?V%eX64t51ul6pY;os849}tI%X1N{8lC zgPIS9d2QZ@J9~k9DYPBVLm!o~v&WR!(Cmam%yBqy1siuw6=QL<9&rRE(rm970V_kX zXU`9$jF1PFrwM+w^?#DW8uNo*p-J>avKE#k9yFpyx$;(^xK&BoB4Ol*(iTBKyf2Hs z+m6)&3shj72ok|IElk&*_Yl_>ev(C`7Z-;r`0;pN`68tWcCl&JqL)z?=P=yux`H7_ zOTxs6amty5ZNtIwm)^1{2*@eXH24J+R|pF~(1dNWh_EvPwa1Imt^i_(G8fM)vt+m? zsmt+7^JT4ASZQWmT6QClUEF-Fq?!c}gXh3q+Tw6+DnGYPs$&z%aqXH`?&0nNv6_b= zl!p5|oK5oy8b{laPxSI>hWu@8pm_-yuBV|fpuOQoZH%M(``Z}De&jK(7R;k-0r}fS z1mUU_Cg1URS0565e}SDqJijp}K%o%9q#{iFsiyr@r=JLc`SbFfXvi+CEIo#60*Cm- zU_FvJW_2^Y!GlZ*;dbZ?+;d^l(GZ#PO;xy0!Vh?|S_@pfYgt6UaoFQeeC!P%Wh+L7 z_F{faCB%?`jy1LxwTAs;5?G}WSQ$Y(BjeE@*?3t*R@0&AE(&<}L<6Ma;7b^$m~OhI zjEdGn z>V}GQ0r=2;S0w46dq_G1jruog2=6>mG&Y1bg0qXriq&pFw$PzfTzA-10fB^Tp?Vu^ z2OS;B#}T_beJu(bfa$7(1ZXOC>Bp9cn8IV2rJ|ynA?$034U;%I5J8-NVRPUY59FSM zK+G+E`b?>vHbjRGy)|k|6OJQ0^hJ}vRtV7vWhy*QW}C51CmM+hV?dnGBMQ2k zTGU3dI0mqmn`^OZLa}ZkUIN!_vaC+H>5(%U{uyJvy)*K{$x>7Y>9hi2*t`KxGhd+0 z;sdQA&JzgX1RLjz`1RHf-g8Sr-6g#s+Jvb(a@5Mgl5%4KueC?A=H}jJtsSHa}j# z_mN*+O%ksG7;VZOrY5zSv(($u+vE_+w-@s5jC@0}dBT>09AG(`ODaP6+(~nb_iBva zI5SKE=zG-~cf{~}Z{*Vj`4pan zN6};ThJ~jQ3i&F?;x?7KLg*$>Tkpb<0E_pkI1A2pJVg~kgNa*3!e?gZONiw1n6PV8 z`%VPv7w3DD%hVO4`uVEn)qbj3wXEK(TCCcri1>t$&@a9CJpWw7_omf_r^!b6zOhzn z3@q5}Vd0YFvl0na@o5QfYXJJ|%MipogN*X157X*|^Lk3$evu7k=NX9fbG`z)8E?aq z?^Rxy%tO8*@CP*|(*~~%1ZiXWHB5GhgMFiXLCslHW&z?x4W4&M<4<(6xkqn+M_zoqY47oP^j04x!e836aO`yn zR41RuIEiC>=xC54Vw;&_c?jzbgq_QA`DPzukPz=;>@%)!QDCe1{K6WBmoCw z^TUMj%trszWC_K=RN6;L_CU3(0c?>LxR`gTR@1h=UVDOWES?76`6}G!vOy^NN7b2& zDUU278*CUzuu4XSCk=ciw6h1Z2|LGfkkYvq!rGudiyI<>*3ZsDt7fEaBqZVKqH~DC zg!?>xF#T3dIHE$e-J};!r)Xc23roZ!mH5eU(x)&Cdys5*h>JPw1*CDl1`>sDfn#fu z_O)g2N+u5AnGEZ}@=ZLlmz7Me1Ty26)a0ygP53%D;yIEYYZ6eMoCm&aTLEC}MGsqt zyQ|gK6(!WpAF}m8kY-THlo7qQ$N@y8xFa}#h*Wn32N03wj^IE7rX+ah!q$frV!7Oe zB14^>gkT8$Vq?uEa#{uVGC{4MEkx6zKab60m}+COy97SOf)_3`wBCttr}u(qRbE@> zlUKAuk^YuUJBs_UWYdvMd;iHJ8CI5Ig1R#Tmq!y*=at7zd|fk<`||%U8_9;pY{WKs zd@xHEzJXs?23)IEEw(Hb5prHbJRR+U9?tkW$)o)dP@QiQaPk zy^}sauf-NlB=!HNHn$?1p^tw5sgGhceRKc24_vKv9rP=Uh_Z{ca%+bDHxVklZu@@| zArE+ppx>Qi-@DpSzHMa@{p!7vDz`$QEeW98(k}#VqE2zXQPF$&)w+qg^L4se<3X?@ z8S%M4OVNsZ^Z(eNV$Y@iT}SFA81(l$M}Guk$pz4c^`#CxA=g{ zh)OllE8jk{i11^b^CJ?dkiSK6MTI=!$K+|i(Y>!{arIg@kqjy3HG1lXT!(&JtZcB`DJ7qf20gg(bRqN>HTD zs!QzECAxb`P^8VGOW-QaI`TawDAH!uC2*Z*i5?Xav)WdarBwfvGD_RCLP9$)J!Eva zk4@F}(B22~NiR<+inMu=#0IU=XkP||SZ`0U`Xpu|u||a(Fdh{50XI5fR>ulE1{W>> z16z&A=MT*b0ko|~g9{gF4082D^I{K1iN+ugKQu4#U@X-b8iV}#(7eKf z@r1@8H$F74^kA&g805W&<|jQEPiYKt+C$8-E6iP^G00C3&7~fUwHkvw^U%D`U>u-k zOds7f;ng2~@*+d|L%T5+8O8z3UIrluK3eX@e}G=6Opf#rF z=sD7M0?trP*!zhsAYW69&(q_)IL_q!=HDWJ__xS!|1I*ne~bK{A{!OHg1n1IlC??t zG4uTNG`fy{xV*=6m``E0=W6U-DhB*y5*y&B9#q#wB!jWog&%#7bbo#TMe*1Y{TY6o zH?eeV8;B?Gu6ux3Qu`b~G1++CW;z0KR*Ulsil}0-6wN@uQd9)${1SvK-1QYgSREym z{LqH&Dk3FVv%yAQ3gPJ~sHJEcXu?i@{6fj}Ya&Ks(bKS3TbrcP{B3QL74zEUOfYF_ zkjlmHK_EPf!c-t$oBR&~9=ysO*R4s0_eNu_x>t>6+M6`jP#^S& zP(NEB2y4w1YtvXx7QNVRN{gkzsrbSEXj;gof7~AO_lNNAr5J_({rLY2|JW}bhoo5L zWxM!AB$M+!)C0ZyLGR4$!l{8vU&J9R zoP7H~l3!m&aa!^)cXBMJRwVbYNWSeK$=~GdSX%OG?&Ln6$*;nddhT2Qk$l85iqn!; zcPGD0Dcr_CQIVXl&Ug~!ljzdRZu=UIg^#JzRMc>*SnQ!9rnBx`x-!SM)E!FzS4#Fu zh2nbB+xE@lI&11WZ#8$@ghvHhm2nl)Lxj{=e8yGUsL6pz(b|K8tJDT*F{%Z|czRAi zfBn#a=${{&0MlHM+A=>E&>I%Fj(>S9K($P5n$l3;>ut1Qt?yCq_*>uOhRS`9-YcTM zM{S+oE<$(;g(rh>-+LPp9(@m;^|8K(j>_Y?D$XEpyl8}RiexZI%)t-FDQ|OV+FbB> zsN&>Bv%%pWqTRc`0CyE^!OXPaClFg-TvSk*EL1U^%|#jvaurGGtt*Ug^AI0nhdc>* z@SVjp2x3g3Ee!o?IO+u5fdl22Q9?TAOg=oa|%!~c|oMok(uYtlTSImLL1v7l8CDWdKy zA&T)!+iL4}om4Pt{D?x5@arjsbqeCTcNJByN)ICBViEyp?slQ90! zyp$e~j%Rq+2KYlsq(gEj_dCP`6HX8x!H^&EkDegV=0z!fEoh`9=l(Y%41Wl)x&5BO zFR~LG5z$kRdrSXCG^e99m}-kd_#cFS+CzY?l2~%2KOb>2W7ssah-pFe`<6uS+jmS3 z5^;DKWfr?yj_hp~Yg!OJ!1TFv3V)qJ^bMvGj0E#1tbQ;YjJa-)Z% zEx2u3?wD*Ae=MZ<#NG+B%_2NAVYZJ*Hc?FY0HS#*Bx7|D{i{30m=lSn=5Og%Neu2t z@uy6WDw)Nz7NWm4C2mA3iVu!m3Z32)iO%Rvv`IN}`?35&FOsifCp%+fDSk%=rHXGw z;TPDd@6yTI>D$Tvo2>sPr^*^aF--;&t;yy3WiF+9-A;6V>V|fe#Hf_8+)ARZBP}z z<7z_TI%QP4%43LTb){5kgNep+xNIziZ*VPC9ZvGc8nZzB*cAo7q)AS{iyfTqB;(``%a;f zhKMUOujYk_oUugLG$h(I<7!?dv1n4z>`J0zM=JHB?c~+k&TBa7q%He1tUuLG6)(~} zmwg_?tzsH`RB1+Z(RfN*uC=J0)It(-XiOMBnaW}>r!szN z`n`);L~Ws#AcDzDIen=&ZD(sIZe;(&5lv_M*-i@IiXm^0$fep$SwVDRZ=#l=L~Uh6 zcP3oTGmBTbkGzsk_8jKg9K$vEbP>gDo=rI(noVt>=1z*~FmlJ_>f)7cKC`NeMN5c& zFq`PDe4klnv6lTa9qqG{Se6ttn?_Q+;*3AOszg*3zafuo4Pl@i&~QV$QJ7))3M;lK z{J3~SyKx930nlxM%i?f? z1@SVFJE2ZoqLcAdqDJ`cI$7AEY$C|~a=;yG~tLg`GE%CbLH9HPHMb##f-Im9qVvu0?Lg~}XgnbfZ= zyC2fcRJNgR8}u&A#(ro~tdQrwOD@ayhn9J)vwXCcZV{s@CnEZXkv@9>}#l#9~f<7Ph^T8VGBG6FWm?4 zC+1y*2Fm@4ma+#sY0(bQ(IdfXWy(1-cKknUNpLeimyu zTNy1v4rj##v76Bg8>xj9h(nCBW@+esNo}_=x7`A9n^9svYRLuSQ%37_^f{w(y5xT( zwd8HO&hJ>~!pWLWFO}+Oo{oYTE!>3?DFwp8$W^9ErZc+8ExABsGTP5N3q?yt_0e;L zEEK&M_1H@33dIOUSLP6!A=WUevXIbBv6WHkKn?9z${B8t7yEUO>RlfD2xLivzE$ZOL9__5*@Wfx@^pvzhK^7*11aj%;+Jbr-ZkO z{Q0ndNlrhpMpQA8Cv1h3ZjA_G^dn2I6Ezt%Mh*{5>qT=$@yy#MI)X!Upv?Pt^|tt6+ttfd@b6wIi$ za*WXzNyH0RjD4FhN& z*LIei4@A6Oj20(Rx*TO6qcMw#*I7BpXh+u#18&Nm%BzgNeUf+sm3Pe4LcU1ZFkqAz zs(iq_O+$${5{Nt)_7tJ<%3bDNLb~VWc;z0W=NUPbFBnyV}-+cHi0mCYU#xWeTIq zY|ANSDx)PjZyKX*oWm()I-}b_t<_V?4A!{-Iu~!f3BeLn@;M?KEU!)L@f_d>IX_q@kLOR2@Yy zs;8q!Mz4?4B&6kd4vk;Tp2z-RS_4pGqaVsia$}k9`j`3bWlDM%Pma zeW#;q?A@OUA>E{gl^!r!bbhf(kyF^R!quho zr_skg7}=MW&i?{vww3zdh|<#en@pAE66VDrT@#??jQRo*?+MPK{!^v%>CxX>cqu?E z=vg{{hbd5QVaZEfO6TK#QL%}=FXdH4MYpNHLG>onkZ}l7vn(8UUS??hK=rT!s*N)=J~xpmkKD zPCXqjZHCBI;_ zizUP5&y3b>C%;6J<#sdT=-QeXOelbzdPXSS#>1HGv> zog)Y}l+lcq!1LK6R>m``&gF}fE=GM|%TTW-at@;w&@#=GAXhS~jr=A7t!A{8J&_>S zGAdw{C^s;A10G!M)l8OY=}=liTN!Nv+GJ`b%h}F8T%r_tig{+FJLr`n&ok-_w8@kr zFEUy&nXFEcml^#`I>CFBQNE7eW>1`6P&$7UByTWp8d__%NY~LjDBnS^7V;Bs8eeuG z2RxIJpRuGb%D39oLf&Ik$U0ldFWAn+v8D6JDJ|qzoI_-7#EZ~5)GJGdFscHd5vs;$KX{u=S+a%?&FeN!CM{XA7W4Xz z(NIH1t92C1XmKHWoL8P~&FBD77EoIsY6a6KmCjH0>MGka`VPF-K-r8Mf|o72${bGD z8K|{a51G%XGEftso-Emiwe*m^nJ0m=!0X4nm!UJ+tEU{uyz0#BDF-pS!TI%+Ll|v@ zcgLD~%3++YGI56l4ImPMynf;Eo0@gKGbj9 zH>B1&QNE(3W63E%RDZrYI?KGzVN0=Tn!LbhGnajuyu|1)_RDm6m63fC)lrdrlhL=3 zyk?py-)0mwDl#ip%#=46RT~|dg;}Ni#fSRCff12ec(+Fe`4aL1k5I5L`TAAxvVrRO zVqr>TU
    JRzg;&Rc-^s3Dd&YhP%6-1MyG+&frc~c1=JE~G^3tCZGpx! z+6Z*tYqu<5G!3Yu*dr%#X{&Q-_sD5n+Tm6z-_vpiqhV%3hvZyF^VkzF%B7sHGfIn@ zqkM`{3r4TVjVx(}U$VukatEUbMrY+N_F0?d#5*tdur0Tj;hhKb1$mHBA$Ww2FcOSj zlgAi+%aX6jmXdRtmG(<Lj~O*jA@rsE1PE^o_>rCe zk)Qc`!Op33iT4c9Yort6t8&uvo&272 zSm{k#e$r8QuJ>Q%Z_FFUeFZNc`%ypA&|gyeRruwRG%-)>Rf=k1gtHZ(Q&sUHKqH-5 z_47bhwXz5DRs%f{KH%+veAQqN(h>cNC+ ztI>=m#u188V;JpcUZmQXQ3pI7!)!*4$J?+0B5Eh0`f3KF`(p`3sVzNnZ>YBB+^69F zCR@a)?fl5QElS9{v1$iSm$wvm?WQJ#;E5mbbQnH&Iuf4^t_GVr@&`OhC?Zc>#7a@n*kI_T)#+9aYb$}m@bvv?1 zONKg#(P2iJ>TpH}yI?Posiiua(Nm0CsZK`i8MRg?8u?u@wNWQCYKYvgnA)mSHD99) zS4{2H>3%eRj)N^%OzqW~EZG%kifFISW<+*Q5gpVyjPRy8P)Bv1Ul6?XS3dQ>PU-?i z-!RGnA`g;pvPG_rtnAM`brJJ$yaRY$)e=UlxJ`6ZmokdrR^DA*&S(aseDw)NA2RBp zu3{9=J)o!h6r+obdZ}v|Mfg$0 z!q=DZ;##a2sh;3;cY!{%j8tD_bYDj&8HM20Gvb|MWYN(}jGoaYPcu5HqnABOJ5oJ^ zS`p$o_-vdQqn=~Gv|}&1Q2@8(0`+y~X=tW;!%q=o+pNVDTk8TFdE?R=snsabw;Xc^IEX-POv^VWz|&)XsEK50zxrzQi)izX zqT;u@^x<2(D<`Pn4WR z4UTR{^wIK8t+!jNK2~DSNpRFIM`K=7peW=S_&VV)`|5aZBE< zaTVd$YP<#dTkuWLhc!Ne<|7K>rC{8PE`9& zriW)x-E~c%v^x`t{uWG{6T``enkRd~pMj!U;n$$w1|F7y!Z!B@*x$C8YQzOSxy2UP zoLl_4U%4qnl%ahp!m{ll=ucaTYI;1|hSplN7IG4`@9t}6$>Q`BGL#qlU>Qlu#B9thg6X9#HYq8dr@VtMz7q$II#aUkf6 zLx_IjOY}OZXUmTiKhJK6RO2=_LOk`;+~V+AlvjPwBoPm)h%ZMaLg%{TbkHAXJlQN! zq`{wwq8`)Apk0gK_iF_W-8Q!ct=+2?P9W{Tqs`#dPKc=po2rlgLYv0YR&zI=Pzt8gwIA(UN@wZ3K0WDzLrWSU>XI`B=M*Y@|MyfxTEClz5oTbot zhgQfbT&=Fd}JOx8FK%q?l*9P6saj8J27QnO1Ezt_~|}|A821xT(1!7HuT` zrD>HAp0Okd^gngOK%WDR6d^TgA>4FO1JFp$Ma#>{HaBLP$MLnFif!&58D><8Z=PS= zvpvyKpz&Ork>VA!v`DdHeiF1TV#|L`A)k-YfxBaA8uIP7IkS0g@geAs6m?s- zK}=v^EK*&sO!AfhqI0Vdy&X>4T1MqGcbEMs)?CiEwQNtN>%FrpWd4dJx+knBsOF94 z>_aM%JMFQcpW)ByVf`R8o7?%Vnu8JcszX;FtqmWFpdO*M?XM$7fa@Pg^wTWzxmO_7 z$OhP{m0GK*NSvWJ7NvNCX(y(y!jecai0LOx=do?R?9XYrho#$}m4YV1ld0{A&Zsg` z_l%?`kbB*kv!U&uUeZcxLcJ?Ov-TnTZ9TV*U8xnh^e*qmxe$FPwO@0SIK62( zXg{VEVO+0AtwoN{m66Ujrfx!bEYsZssdcsNy$dnBYOGdF;&*OK?R>;J)bE06m%#ls{2kDV z+|vU<-CjD;<{emmy$aDT?TPl_@UaQ+Am6>{O_4&I5q%d)I%n~$hOTZ&;zXNH7&!~7 z5WUE>UI~StpG&k$d!nP85j{46Xn&UZD~7@yIlc$e-OODNN_M^vJ8hgxr?A^b?+7is z4cnBVMC%M9I(h}s_v%#0{1r1FS8WkXv|b6(f+|EWf>xCGeWWU=Li9S*F6}AY17UXy zug_zM7msX{YTreCWbH4}ADi$MzgN(=h?(4)+U*w1iWO0#E!FArnMAM6{|S=URl2IC zTZrD_a1MtLakw^zU*T|Lgs~%iI;H&_G*XOdLp}8KhJPWKKdQ@Q^y>r~3H#MIC*#V9 zut`)|?3-*7XF)MWIRg-XCYWZhWLu=zHzpV{qPRL}_RxBuTKs~thLG2|y@JSon$;^} z@0fVV>~5R{s@1hNV%MtafP74GOVGpf+kxAl%5t>N+aoAm)6jNJ7UFj{C;Ppt=OX+? zHKOe}{;%m&mZo!QM0z|&vT#rBiuq*wLHWt~#m~XrF3i?XTha z$+^Ydadn6nt1$CNjdUPt>qE4lJ<;!n5*>|eLA*G-h^WNODqf5zq1kK|zHVyu^>c5s zx!IgP(0^_Iu;h5*!c0;TF_`T~iU&=}=O1jLeCutcQh(oouA#z4Wudt%W;ny_HFJw= zg2s#DVkdmEEqQoNls%Gc&czi|lT<{dHdH&>jCU8VYmvgQdm-dMA5sX(eei#zcorp% z6unU|CeU(|iQAP)JcXGX`dxpz$0V9tys!b~9x|Qi!77wXpO9%tJ0fzqaqp=vo(3O& zIh5!pONmAmPeYs0+7H=)*6ws6)o1IdL|4|3&G!(_Egr=)mPy;sqCeKEIT!J(YAymj z%l(3`@`^ZDds(u3{J%AVWL`?8Yt4l+n$`53Omx@KHHcrsvj~#M_+Oo_zjR%2r;Q!4 zAvsa`(7FY5t4~A~vlxc^YwTg)O!vR#7-`Y7o}`#e9D}HcF6szrhTq8k?K~R0W$0S` zG_D{dxdVAE#canc7V?~@ruk{aT;_YsxAW=#{p?nv+MS?1hDKc)QRzPM2qd+5zsL0F z==yOtff*F`Yx6v6ZQ9Btvv`tert5j6b=%{XCwopI-ZRxgmC99-7WZi8S3J^smgNfK zE6PGwe7Y{|Sh^7THgZ0&;EjjPM3cJc~RIb&SKV`B>a4@ zC%ebP_Je9*4s7d1G<6iwan2ghJh$zQLQ;V=pZ27m@+^(Z$*iO>n}AtsUO z{cH-)Yx*H*Qq>QWDVN(!?%O}zp^Ivzi8cbQ zsEe^4ZKIAyJk4s{ZKh5N-sk*DmA#0OhVUAed9Pf_cj+JzO4Y8KJCOF|X#@{&?$yA1lcd_t9tsF#!Nh+YCkj(k@&z6OP#u1VLR8$74oH)d-J zU8kIpk;ri+=qp(}5%Wscv!L45XX1(%5U!v!if)CTePdoid?VON;j58EolI9on#HPx zufnQJOQ}YlUwQ+r@m_2z)Zl9!Xyn<^;XJrnZ~DKXuS$x1Wp%Sii zq9tgg7y!>iiu+xbgc7}q8fjO5xe_HBfktA4r#7%U>n&~}AHeeym5)K2s{cXh++&Mp zJ86ox;n_~c@!0ZrNlzJSpT9s`f0ahjugx?*?6#85nr3QU|5MsOAv0N}(ef_Rc8S2! zuUHtibrQWT(aS&yc)~fvK*4xxZkB;Wsw!3(sE^_$wi{>=JoS!-td74@Sl?rS`hyZp~)7a9`HTF;c&2~?kS-chOrHpQDGlNc=& z(XF#Y6=99y{6tUeD-RMq8O;-)4ps0TNim~4%8i0l1Km@63zq>cX5Jj3GFqog-Wik$ z9$x#v-#uEYka+V+MM{)}^J21q*66&t8@q~XVw0B6n|xMH z>|nIe+HzNW@U*}4Uim0d1$r4;svA7Y4=0uIA3hcYTWW}BSxc#SzNm9*E%70v^CGZ8 zR}mp@YdLTmj1Zsek~0Qxt{Ne})=_RopVUZU!?R>+6QLc4rq&Tdb@W%a390pjUqj+) zbsHrD@RZHnt}$vF$Q}?SvJ4aehxIlP4h0m2jON3Z8L81?wSnG^j1_wr-BYf1o1fZ9 z>}fYU6S<7eEB!VdPPH58G>}7Yb?3dmn)^a(y6DQ1DF-qd-$cAQgM zi}!Ujd`AG@Wcrj5)#mxsHsXQC6Zf2Nr?wS-2~@s0;xF4LsqMsBMytf23I9oLFaBag zR!8AInSex+)XLC7L@+89RTln`ievH&^e8n)%r=luS{Lzzfx^n%PtP^+|l;tvD)r1cj*P05y0@n?syw80|GKy}lGiX;OyP8%WebhK`3 zr?in`kb%0VjS)^A1$6G4Hdf3u(D1a0VzGh7rA-o>3^X%sx_H(=i_>O`(*|0VRxIAo z(cR9A@ecf51FcG1D1O&blO~JP77K6eJ)kl)X|gJ9nW(0tWbjsqMh04y_M~XdXthvb z=W4M==iThKHf_DwX`u47GI7j6d(*avs|GrfRxUo*(U(ZKT|6*QdD?Cfn55bAWw*U) zPm9I|I+C_u;Fy25^FrITY0rp$1}aZGB*qzNZ`u*D&_GAho)cSi^a;`(7e@_Lp7x@+ zXrR4mr^M$5I+FIX@M^B**LvX#X=g-L1D#1bE9x5PeA+n?Z=h>w7epHa`KDeHy$tkW z+GR1;KwqW3E@m3&_p~>}egpa1-x9YC6mGvEzA{il`%Uq)fs*VWibn=&W4|r@a99r2 zX6uEW?RSLTKz;3>38#*#=8Um_Vd$)yQ)vH6%+Ps9$IP;SE1odWBKwbGhk=&c?~4}< zRBHcCTs6=p`yb*{1MRdw6u%j0pB?90q-d5M9dp!fQtBA!gx##rju*1}=$H$3A0^8` z*X@4FAOpQ`4^XBU=wo{oWvPL_w1+5L4fLHoOgU(v2lkrE%Q{*&cb2`j@{WNP+3P4@ z8ECn^p7O{*rFNTAHC3~0-P}#~Xr-ZncG?>$=?2l*pn2OfiBon zl_w2!-ELQQ8|Zy|rgG9iAKP0h*A4Wgy{&T3K;PNhE58`%fjvtxr)hS!>^#e!qtr0a zB72_F#6ZjK-IO*4Dz*1idK+kyy|>~t&`x`QWxj#-*#|1?4Rq8#R5@Uv6ZYZCs|LDY zAFbRp&~^J*!w9~#qxn!Vy_La(Q10A)mR_+_1UuX?Yoo$1AS-Tqs%qX1N(mENgZuy zV|E-+++)v%HZPDILga-1~MtwXv~ z%0XRcPO{nYl5*NW80(a)1`2YVRX#G%nY438x-6tSZ=}mgej)9mkuEDa$Z^F;mz8`b z?RDjAUCa5rT8^tU72#HJKJSEb-QXPs?@fbu6uftos=DMw@NOt|4Rk_z&){tU?|p-} z0qH(c5_HK}|N4$wN(%$UIqoQ343yybL>XY949926cpbIf)xmL3aT(~K|Cb7#?L%$1 z?XFzMSIR~M^>KWo?A1{Y(tWGEWT1ooKPYb+DA)0$a?e1096u|6=;+Rni^?yGB}2>M z&XB>5UzHF8jduK@)HRUP@u!ktps9|BN``@EIvy!G2Ac1XvX6mE9I6~`pj8gDoNAzT z4vSo9pg4z*e9A!e9lo;MK;@1~@>v7zc2t%x>F5^9P(@xd&|pW9ylbG*ju82aft-#| z>659I_STT8j_R_efo3{t$R-Aw@2D+X8mPn(F7pkv%27v-G|)OnT{+W0agHdt!a(&M z4P?22${o@2sDXAnV&rQ&YTWjs(n!8zpuvvD@~(kKI}+p%268$QC8o;wD;15~PIV+n ze*?{QG?z6EG~bab8ycv@ktUN3w91h#+Zbq_BSUsGP@JQs9Au#Sj#hGlfyy0irOQCO z9qr^Y9bIm7QRyhx8)&ejliXvV(T*H>%s@^@XL;5@QyqEox`Adoy2_6YG~bagzcEmW zqlbK8pjD3E(z~VRiOX%)Ir_*j1I0P|%lZbY?-(GP8mQbcShg_GZpRR*-9>8mE5l_M zowvaCtYf(BtD~8&RcRyTNF5EFd(43y?*=;PKUO|tpd-pSc|u2j<{op5leY|X(BCOP zH_#Dfg1oPz)Pctw6J%H`twgB<5Be9#2py$0JLV{qeGPQbf3h5Apd-o@S)ij6ZH_sn z$O8sC=s!&!H_#Dfx;(3+tXU@=)8*R+y5MlhyE+;f*F9~v?Aw}bStW)xd&5yIM;ho| z$6Wb@fe!jFkSBE1sr^C!h4M`ueH>NKYmxj$NBuS&Q5MPHHNe zl!kPXjHp&xdX>l+M(3?E^^RkyOkh+hUdsC%C`U&zyS{NO#|gNkvsA>!{N#8-F4ob# zsy{iNlxuW!y6PW}HF6sx%3Y+dmB$Qp!m>_YFwnb^>*YrVGN*5pziLR-EAdaq*#K?1 z3_w9ZHFcEMEGT`8Y|f}uP+Qt6Tj_|}Qn~D`qkzuU(|5?;25OMLM~>3bUGVnGNd{_= zen8ICQT&4V^n-G(fzr~C$ejl2;5aH@FwjB&>ISaGaEu zcA5uQmmTy!ErT^=eQQI@^p|C%j+T_Q2eRpsC-QTEni!~i`Wcz5qr&pO>95F49sSgL zNcyX?y^aF2MyH>ZU3Bzqr-|w3WKSJ+>^Lp`yd20#yYs#vM;R#1>or-(NNXXNB-t#) zd4FmlSKP>pRx2tHtyaA5=K0fV1)b$Zr+ZNjvlTZwue=+BCyqMryz*wu?DPusT1-j$ zo6@D(A_5kzOn*x*Gf=R&AvYRmUHZFnpMiF#zbB6y=!Nu;S3tqjYqkO(mcyI(lPBRiJq~s^?!FXo-$YyCQ&A z>8PMh6wo>yO^uBO+M=T&u?av}=)~VbaduEL&;cFIoSc#Im3&S|{`qY){v%(~(au5H z8DASHd{cJDH}bsBtC`;|<6C)EM<)jL$@tDd+sgW6d@pb4ydT>R&iFyzGSHZeALVyC z`n+uc(60t6%J@lIJ7{)(+ifmTfPt1~+?SC$Djf7AP(uT4%=lTR>gdX#a-fzvs@`s2 z#xJs?j+(VQn(?d5(~xy(l~WnN$zD2d*sxbUP}ZzhGk%wYbY9l1OBsL2Q9255e?8+* z19k0iJ>!9#sPm5GU(fhU&eKs~*3FEE271)#X2v4}xjNj;5b9E0(g%`?TBf6KJKfHZ z2Kog^HPF6xw=+!YPF?bI@VwOHI_lW*UWVB~!>8ZNuo%eH{$7SvJ*`W&f~2>4T}Ll> z{3gRkeNRWC-Te$-^^T4{AMqz%)%a3JO=D!Hzv{UTU0MB+dD^I7S$(J@8ubHJpN>?U zv{v#}T98`PK)z-Nv%RsJZ=k;RM0F;kRpPDO zBTCX^WlvH|nWv4{N$P$^+RUoCD)A-(dYp9?)_0q$evGu0_2z0XjfYWK!TTp;9z!Jt z!ucfX9*=Y>>P<#-#E*E=l&a!IJ<0)Sikhk(G*G3?G}UuO-u^fAktWHx|DE@l!NbW~ zkEL^{KY8$Qqmx6qYb8oou^3FYKqpRgQafnK8j^QT$y9T76p9CcTLiIV0uJmu4>99o#*+vOs=|v5!vY_ z^3)>+s_ffUy=b7Q%zX8>f#NcIsXrU2X=Y#5H_vTnTIK*X(m*XU2dm8u)FE@2nr)yi znIqL92I`SHMxAb;{+Z*|m5lBwT`CRBoTzT?Mmfw8?{6HRS)f+$?#{2R|0FfmK$U%` zs2dG5EpxiM$3U|(i`1}uce(|cv(#7vEzK-ew;Jfl%z5g51Fg$kpw{c*PPZj=Aq8Z&$hTuusQ>w#*w_45f;H`PAca*9lnWsJ7DOGncnj>CIcqVi0W0LFt zhI;pATdaxb59`&zI%PB_GjykoA!g;VO z8EI{PlbX;+%i(NES5c;>>ge5)6P7ZyqmI5RX)iXbd5q>*#gbs4zKp0u&t+~=pVB0` z|7}xu8AzmWQ*RpRgr!`Secj%DH*&k$#6afso$6pl_q;P2pHudzqcxs2t8swXqZaDC zms4KJd|EAHG{^dS%47-}Z)EOOm+8En^F;byb&bxW-ndUK(|M<+zYVlY=TX`B zs|Oe@v{Kpkt1sz1D*H3)c|9GK{TcNQU6N|$fO=0yR4WJ6-*rT_@~j%rPxCI-%Cl-+ z9Z{_uRAY2RwQ^AHsH50s=afTgo{pL~3lN9YJ~|45Er-?NI*KR>2AZrR8ZnQk%XCB| z<`H#^j@|S-N0x(A43>T5d61@AfanvRBn_ni8kj_4WY zarJv0(KF2BYSaEy+BqU3`Gd^o)zt$DtrEY_x|{ie8a0@Z_O$v%wKXH{nsZ9+Z=i28 zUs4wu=%v&%>TUylYI#+C%|KD&ocf7|teaeKWS&>QVl>D4j7$74uI@WNisEem_+IXI zceVhb3jBh!fK&+`(jfiPdjM&H&_Q}{awLQ*5K3sFgMuPRQw$xG2vS6(DZK?mkSfxI zcb=Iib9b+Q@X6O_+Ro1IZJ)p*>obhOJ=&kFZ!iY;Xn(TWGN3Kl1n$uuwVF&00{3W- zS}S4Qbw#l*+_uhxbbgE4=`+8kpr z=FeFDF$QD)H!FSYh5qLtFy?==#$xR5#CghDYbsMVc|NgH&{=CY6pZV0)=?-J*XOJ= zP%y5~TUVoCT%Wh@K*6}aV9iItxV~Wh9R=h1qV)y}#`Q((eH4t{->sH@(9UcEWA}G! z1r&_kKdfFT7`uO18=+u(xMXdOg6-jw)sBMociH+J1?%s!wN-zpf$xQ{Sn20Jp+2_H zx@t{zQ&%@l6OyH?*5yq6H{hCelZaX97XtSQ<*V1NXN4}*ykUJTqy*lwdJZV5T?#C= z)?nhlzIUxNm>g0<>6^aytn&w!r1X^jw5}F9;CtV?n~Ob(@W8sCi9d<(z*>Yc808PG zr!WSi{Gs&%6R+=Y>vbNJeyP{H{Ud9eK~P_glo|SA&|_;6>fbIqEl;dxnD`mP6YEtJ zoH0DJ-bdAJUN7h$>novVLH}Aye+p&hN^6rk2fVR*2_*)+wYEe}3hNy3-Wnp57$Dh_ zP@eJaf~>Y4LXknTZJ1D65V2(oWdxbFm8d7P+Xa=iZ4pWfDsS6|x=qXcz;;|HGN_8} zl2BTZm+c>+jG!8}vV-|Dyr*T>vDFYt3;M{`5*0IfL{LLpsL+I<#G%M z6M~xC#-b`lv|q;%DHqV|Zar;dP`$%40yAu%p*lyd4C>`pN^jeA z7URDiy=|`7V*A)!uf_JWxn7GM;FfQITfTvA`98JHXEpF^xI^6X4ROmi)Ggm|+Y*<2 zBi-_ibjvr&E#Da1DwllYY#W*QHa5<-9R=Ii1lxX;XZ(hsNw$+h+k+go%R+mDGHoq} z^0nz1e>7;iEmY`C&`evN5WNm<`xZ__fD+1d!5 z30h&BFZ3{AwQV)3>9k8hYi&D)?gVYH9TtiV*l0T^^lhn4wp*x0D=!6Yw!Ia)6ST#q z59hTnS{WJejjguOx23+dm0bHx=n)*a-PV-Hh+h&Y0QJHL6p32W6qJgk>{A~OI&Y?E;=o`F8sCr)C;2&&PFy@su zI5^*S2bJGrRPbJ*wJS#j@3TF`*wgTd!TW9h2u%w`q_^>Szb)v^Us!ph?5rx4=Y&}pdBTfbXXyaEW zbLrK|3&90q4_4j2GN`~-avxz*7T=-Nw>M+bkC2$2KQz3ovE*UhjfWx}`j2TP{+n zA*XCxxaf8E(jmXt+Kl8q2zP}}+d@&WCpu$GK*dZx6Li*=F7z3tJV`_SR>DUfMnudKmE57Jw?Ev3Ir(LJtExL6zD1M7s^-5%D)I*s98?FBcudYkl%Aj4?n9I@`0?4 zh9%0DDm3v5sVtXA_3rK!Qbqm7yPji4^50(#8uEoYz(r6kjQLz!|V+3&EQw>(LxQ%D_omQc5l zy7CgC#sMG68-$M0sTa2kjR~kP9}vn3XdoXK%C|I>FAA*-Xe8ee`nFVK`Ki!=fRAPP z8Yk>uWWTI{CbBuUM7vA*$W?`Ug*21v3k?iuDYq5c9ne;eK*cuQY4MYjg%11q$>~C! zLj2`Vg}Q|V$m4|?2L#H~g^pR;$%}->1hkje3grX@$y+Wv@=>90ONGkk zga!nJ$v1_v0>b4-Lc2>v$o~oT3W=1>al9vDn+^<#k-da=2PDW1P@4yj2uYILpr(EP zFd$j}Uc|6l498H^?1i zUyQY%zCrFNCkq9X?j-jTnibMnUdogybt?o0`Fo7PzPyM0BMSEA8S*cvGgI&T^_H&-z4GfT zSD46_R*JS?2pA~)Gv!KWrW*c(FBkvY6e8HlF4LVW#&GIOw9I0i@BlRnJ2F7}}u0_6EtAdMesXK-4MbayYF1n?DC;!XaLfTchSZ$B|j<ZrO-Jv+EkPZk;NQ(5l91T|a@DU^3I z623GofV; z>0;!cA!p@ULQg`@%l@d}XzX`+D-+*KU6Ko!pw(|eF3Hz~4)|V?r7S43Sc~f^hhCEj zlY?~bX;78LShb!*yspbtFxIGNxzOu!EsVik(i?IU)RJtwbVK$>eOVe5i5lYorJ?54 z0cD`Jbp{PZdA5*4Z^&6(mIIC|REJTgGv_Hc>zRTr`^q$?|g>FL)te zXM(oWm0rlNnToYvn`T)5l|5!dN(cF)Xo#?lzM{U&<{}FbZDE!KmIJgW^#& z)=Sz;xd&=OU5E`v!FYKoPeHY823o*nnb=~8^`*QLV=#JN$=gsT>3Df1A4Wx$1O0~T zJr(qd%QBVTO?o9Ob6^>Ysm6xBk}IH$W|Ko-%O9cs?3`hJBey`o8haxrqF{}^l?S7y z2M)3RCr?B@7&9aEoqPy&d1RsSUVei*IdVa$q^O_s+M7@R#jq$9nfMs=P--#pQQ)Dp z6uPB)DCs;UiHAO&P`|`8Qo2Dl3~%Z^o_*CCVNqhg7!S=1@(^oC~!V zNpHqps98#xFSIkXjPe+@W$eDta>}TAJmvY&eDwomGAfs&zoNht*9VH&I--X&=RPn{K8|S_n1pWpAM@Wy&R|%09ESP*$U^mOVzbhfDfm$e*Dtl_x?^ zLt82DP>YAW32m*ESp;SBk=0uHKuDHaD>b;JEwe3QZIlK=GF1y9oql>?3`)!M4D(Z_ z300t)CsZZOUs;ZNzM^_qpt4D*Hq{QHdSUI9{iuDBk1RpTX`zq9f|Scb&BKC~nv2;o zNJ}EyhJ`APg#xJB2nC0QDHBmCA@;BcWtLD3)gqz9FuSrE6&2DUEK2!Gs58|rq4cn5 z1C{TDo?4a;w41C z3ZVFKNpC;hAa_%aGU2(Ca+WDqD&2BxSa;QbtG$?4wi`Iuh1bY0N}_tLWC>Pie`N$?kUcQvyXwi_~A~C?o~;S0)PW3mc%E z7CII-Q0cdV_nfTBdCFT*9ZyR~UnPw1br$Oqm4k(GFJjVho;j z7^3`$`QTZHA<7Ai!TsBz%2_6U|8}TyoyXYoM8lLtd8{YM2U)+gAFkvvIY?vLvf*w$ zI6~RTQ?ec$q5LT1DUDEWbJ3^KO1B@WR9MN%q&gioN*O9N+B#af!$shZ?HJ`T6JMKS zlrF0vU#_%q&4sWr$^g{#23NwyDkD(OsKzN1QD4@*5;k6`v6|<*PBlSEV9JrEH@Fox zQ8|s8+4X+dWQDAOlsS^J{&|?gZTY6U?RTfT?RTfT?RPWX_Pf*E@=bTkH{C7Y47Yr< zluXu^Tr!SM@ti+H7O zuC`G58r8SM5~`i352t&FFI4uTZ1i|(p>h-T{aTQ;j@3Zyr9cMi<}^?x)G`*UiL#my zYlJ$GMwq>!h4HYv4bOv>X<$H(

    Mx0R@4o=zB~_5 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 Bp_Kpt literal 0 HcmV?d00001 diff --git a/csharp/packages/NUnit.3.7.1/lib/net35/nunit.framework.xml b/csharp/packages/NUnit.3.7.1/lib/net35/nunit.framework.xml new file mode 100644 index 00000000..d0d12db3 --- /dev/null +++ b/csharp/packages/NUnit.3.7.1/lib/net35/nunit.framework.xml @@ -0,0 +1,19765 @@ + + + + nunit.framework + + + +

    + The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + FrameworkController provides a facade for use in loading, browsing + and running tests without requiring a reference to the NUnit + framework. All calls are encapsulated in constructors for + this class and its nested classes, which only require the + types of the Common Type System as arguments. + + The controller supports four actions: Load, Explore, Count and Run. + They are intended to be called by a driver, which should allow for + proper sequencing of calls. Load must be called before any of the + other actions. The driver may support other actions, such as + reload on run, by combining these calls. + + + + + Construct a FrameworkController using the default builder and runner. + + The AssemblyName or path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController using the default builder and runner. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The full AssemblyName or the path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Gets the ITestAssemblyBuilder used by this controller instance. + + The builder. + + + + Gets the ITestAssemblyRunner used by this controller instance. + + The runner. + + + + Gets the AssemblyName or the path for which this FrameworkController was created + + + + + Gets the Assembly for which this + + + + + Gets a dictionary of settings for the FrameworkController + + + + + Loads the tests in the assembly + + + + + + Returns info about the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of exploring the tests + + + + Runs the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Runs the tests in an assembly synchronously reporting back the test results through the callback + or through the return value + + The callback that receives the test results + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Runs the tests in an assembly asynchronously reporting back the test results through the callback + + The callback that receives the test results + A string containing the XML representation of the filter to use + + + + Stops the test run + + True to force the stop, false for a cooperative stop + + + + Counts the number of test cases in the loaded TestSuite + + A string containing the XML representation of the filter to use + The number of tests + + + + Inserts environment element + + Target node + The new node + + + + Inserts settings element + + Target node + Settings dictionary + The new node + + + + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. + + + + + LoadTestsAction loads a test into the FrameworkController + + + + + LoadTestsAction loads the tests in an assembly. + + The controller. + The callback handler. + + + + ExploreTestsAction returns info about the tests in an assembly + + + + + Initializes a new instance of the class. + + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. + + + + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. + + + + + Construct a CountsTestAction and perform the count of test cases. + + A FrameworkController holding the TestSuite whose cases are to be counted + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunTestsAction runs the loaded TestSuite held by the FrameworkController. + + + + + Construct a RunTestsAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunAsyncAction initiates an asynchronous test run, returning immediately + + + + + Construct a RunAsyncAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + StopRunAction stops an ongoing run. + + + + + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. + + The FrameworkController for which a run is to be stopped. + True the stop should be forced, false for a cooperative stop. + >A callback handler used to report results + A forced stop will cause threads and processes to be killed as needed. + + + + Implementation of ITestAssemblyRunner + + + + + Initializes a new instance of the class. + + The builder. + + + + Gets the default level of parallel execution (worker threads) + + + + + The tree of tests that was loaded by the builder + + + + + The test result, if a run has completed + + + + + Indicates whether a test is loaded + + + + + Indicates whether a test is running + + + + + Indicates whether a test run is complete + + + + + Our settings, specified when loading the assembly + + + + + The top level WorkItem created for the assembly as a whole + + + + + The TestExecutionContext for the top level WorkItem + + + + + Loads the tests found in an Assembly + + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Loads the tests found in an Assembly + + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + RunAsync is a template method, calling various abstract and + virtual methods to be overridden by derived classes. + + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any tests that are currently running + + + + Initiate the test run. + + + + + Create the initial TestExecutionContext used to run tests + + The ITestListener specified in the RunAsync call + + + + Handle the the Completed event for the top level work item + + + + + The ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + The ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. + + + + + Gets the tree of loaded tests, or null if + no tests have been loaded. + + + + + Gets the tree of test results, if the test + run is completed, otherwise null. + + + + + Indicates whether a test has been loaded + + + + + Indicates whether a test is currently running + + + + + Indicates whether a test run is complete + + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + File name of the assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive ITestListener notifications. + A test filter used to select tests to be run + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. + + + + + The default suite builder used by the test assembly builder. + + + + + Initializes a new instance of the class. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Marks a test that must run in a particular threading apartment state, causing it + to run in a separate thread if necessary. + + + + + Construct an ApartmentAttribute + + The apartment state that this test must be run under. You must pass in a valid apartment state. + + + + Provides the Author of a test or test fixture. + + + + + Initializes a new instance of the class. + + The name of the author. + + + + Initializes a new instance of the class. + + The name of the author. + The email address of the author. + + + + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. + + + + + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParameterDataProvider. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Modify the test by adding the name of the combining strategy + to the properties. + + The test to modify + + + + DefaultFloatingPointToleranceAttribute sets the tolerance used + by default when checking the equality of floating point values. + + + + + Construct specifying an amount + + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a NonParallelizableAttribute. + + + + + The NonTestAssemblyAttribute may be used by third-party frameworks + or other software that references the nunit framework but does not + contain tests. Applying the attribute indicates that the assembly + is not a test assembly and may prevent errors if certain runners + attempt to load the assembly. Note that recognition of the attribute + depends on each individual runner. + + + + + SingleThreadedAttribute applies to a test fixture and indicates + that all the child tests must be run on the same thread as the + OneTimeSetUp and OneTimeTearDown. It sets a flag in the + TestExecutionContext and forces all tests to be run sequentially + on the current thread. Any ParallelScope setting is ignored. + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + TestAssemblyDirectoryResolveAttribute is used to mark a test assembly as needing a + special assembly resolution hook that will explicitly search the test assembly's + directory for dependent assemblies. This works around a conflict between mixed-mode + assembly initialization and tests running in their own AppDomain in some cases. + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RetryAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Attribute used to identify a method that is called once + to perform setup before any child tests are run. + + + + + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. + + + + + Construct a LevelOfParallelismAttribute. + + The number of worker threads to be created by the framework. + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a ParallelizableAttribute using default ParallelScope.Self. + + + + + Construct a ParallelizableAttribute with a specified scope. + + The ParallelScope associated with this attribute. + + + + Overridden to check for invalid combinations of settings + + + + + + Modify the context to be used for child tests + + The current TestExecutionContext + + + + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. + + + + + No ParallelScope was specified on the test + + + + + The test may be run in parallel with others at the same level. + Valid on classes and methods but not assemblies. + + + + + Test may not be run in parallel with any others. Valid on + classes and methods but not assemblies. + + + + + Mask used to extract the flags that apply to the item on which a + ParallelizableAttribute has been placed, as opposed to descendants. + + + + + Descendants of the test may be run in parallel with one another. + Valid on assemblies and classes but not on methods. + + + + + Descendants of the test down to the level of TestFixtures may be + run in parallel with one another. Valid on assemblies and classes + but not on methods. + + + + + Mask used to extract all the flags that impact descendants of a + test and place them in the TestExecutionContext. + + + + + The test and its descendants may be run in parallel with others at + the same level. Valid on classes and methods but not assemblies. + + + + + Provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + + + + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. + + + + + Error message string is public so the tests can use it + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type 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 + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestFixtures from a given Type, + using available parameter data. + + The TypeInfo for which fixtures are to be constructed. + One or more TestFixtures as TestSuite + + + + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. + + The type for which data is needed. + + + + + Indicates which class the test or test fixture is testing + + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another + + + + + Construct a CollectionSupersetConstraint + + The collection that the actual value is expected to be a superset of + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a superset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. + + + + + Construct a DictionaryContainsValueConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected value is contained in the dictionary + + + + + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. + + + + + Construct an EqualConstraintResult + + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + 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 + + + + Display the failure information for two IEnumerables that did not match. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + FileExistsConstraint is used to determine if a file exists + + + + + Initializes a new instance of the class. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + FileOrDirectoryExistsConstraint is used to determine if a file or directory exists + + + + + If true, the constraint will only check if files exist, not directories + + + + + If true, the constraint will only check if directories exist, not files + + + + + Initializes a new instance of the class that + will check files and directories. + + + + + Initializes a new instance of the class that + will only check files if ignoreDirectories is true. + + if set to true [ignore directories]. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Interface for all constraints + + + + + The display name of this Constraint for use by ToString(). + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + An extension of ResolvableConstraintExpression that adds a no-op Items property for readability. + + + + + Create a new instance of ItemsConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + + No-op property for readability. + + + + + Keeps track of an interval time which can be represented in + Minutes, Seconds or Milliseconds + + + + + Constructs a interval given an value in milliseconds + + + + + Gets Interval value represented as a TimeSpan object + + + + + Returns the interval with the current value as a number of minutes. + + + + + Returns the interval with the current value as a number of seconds. + + + + + Returns the interval with the current value as a number of milliseconds. + + + + + Is true for intervals created with a non zero value + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + + + + IntervalUnit provides the semantics to the value stored in Interval class. + + + + + Unit representing an Interval in minutes + + + + + Unit representing an Interval in seconds + + + + + Unit representing an Interval in milliseconds + + + + + 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 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 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. + + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Executes the code and returns success if an exception is thrown. + + A delegate representing the code to be tested + True if an exception is thrown, otherwise false + + + + Returns the ActualValueDelegate itself as the value to be tested. + + A delegate representing the code to be tested + The delegate itself + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 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 + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + 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. + + + + + Constructs an AttributeConstraint for a specified attribute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + 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 + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation + + + + + 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 + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Gets the expected object + + + + + Test whether the expected item is contained in the collection + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether two collections are equivalent + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + 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 ignore case and return 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. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + 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. + + + + + If used performs a default ascending comparison + + + + + If used performs a reverse comparison + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + Then signals a break between two ordering steps + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of the constraint. + + + + + + An OrderingStep represents one stage of the sort + + + + + 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 + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionTally counts (tallies) the number of + occurrences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + The number of objects remaining in the tally + + + + + 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 + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Construct a default ComparisonAdapter + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + ComparerAdapter extends and + allows use of an or + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a + + + + + 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 + + + + + Tolerance used in making the comparison + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + A ConstraintResult + + + + Protected function overridden by derived class to actually perform the comparison + + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use a and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Set the tolerance for use in this comparison + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual _values is allowed to deviate from + the expected value. + + Self + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + Retrieves the value to be tested from an ActualValueDelegate. + The default implementation simply evaluates the delegate but derived + classes may override it to provide for delayed processing. + + An ActualValueDelegate + Delegate evaluation result + + + + 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 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. + + + + + Returns a DelayedConstraint.WithRawDelayInterval with the specified delay time. + + The delay, which defaults to milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + Resolves any pending operators and returns the resolved 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 reorganized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + Pushes the specified operator onto the stack. + + The operator to put onto the stack. + + + + Pops the topmost operator from the stack. + + The topmost operator on the stack + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Pushes the specified constraint. As a side effect, + the constraint's Builder field is set to the + ConstraintBuilder owning this stack. + + The constraint to put onto the stack + + + + Pops this topmost constraint from the stack. + As a side effect, the constraint's Builder + field is set to null. + + The topmost contraint on the stack + + + + 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 expression 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. + + + + + 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 + reorganized. When a constraint is appended, it is returned as the + value of the operation so that modifiers may be applied. However, + any partially built expression is attached to the constraint for + later resolution. When an operator is appended, the partial + expression is returned. If it's a self-resolving operator, then + a ResolvableConstraintExpression is returned. + + + + + 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. Note that the constraint + is not reduced at this time. For example, if there + is a NotOperator on the stack we don't reduce and + return a NotConstraint. The original constraint must + be returned because it may support modifiers that + are yet to be applied. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + With is currently a NOP - reserved for future use. + + + + + 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests if item is equal to zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 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 ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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 constraint that succeeds if the value + is a file or directory and it exists. + + + + + 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. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Flag the constraint to ignore case and return self. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Allows only changing the time dimension of delay interval and setting a polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawDelayInterval + + Parent DelayedConstraint on which delay interval dimension is required to be set + + + + Changes delay interval dimension to minutes + + + + + Changes delay interval dimension to seconds + + + + + Changes delay interval dimension to milliseconds + + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only setting the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithDimensionedDelayInterval + + Parent DelayedConstraint on which polling interval is required to be set + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only changing the time dimension of the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawPollingInterval + + Parent DelayedConstraint on which polling dimension is required to be set + + + + Changes polling interval dimension to minutes + + + + + Changes polling interval dimension to seconds + + + + + Changes polling interval dimension to milliseconds + + + + + Delay value store as an Interval object + + + + + Polling value stored as an Interval object + + + + + Creates a new DelayedConstraint + + The inner constraint to 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 to decorate + The time interval after which the match is performed, in milliseconds + The time interval used for polling, in milliseconds + If the value of is less than 0 + + + + Gets text describing a constraint + + + + + 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 + A ConstraintResult + + + + 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 + + + + Returns the string representation of the constraint. + + + + + Adjusts a Timestamp by a given TimeSpan + + + + + + + + Returns the difference between two Timestamps as a TimeSpan + + + + + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected key is contained in the dictionary + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that the collection is empty + + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyStringConstraint tests whether a string is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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. + + + + + + + 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. + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Gets the tolerance for this comparison. + + + The tolerance. + + + + + Gets a value indicating whether to compare case insensitive. + + + true if comparing case insensitive; otherwise, false. + + + + + Gets a value indicating whether or not to clip strings. + + + true if set to clip strings otherwise, false. + + + + + Gets the failure points. + + + The failure points. + + + + + 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. + + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flags the constraint to include + property in comparison of two values. + + + Using this modifier does not allow to use the + constraint modifier. + + + + + 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 + + + + 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 + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + EqualityAdapter class handles all equality comparisons + that use an , + or a . + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps an . + + + + + Returns an EqualityAdapter that uses a predicate function for items comparison. + + + + + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps a . + + + + + 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. + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + 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. + + + + + 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 + + + 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 + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + ConstraintStatus represents the status of a ConstraintResult + returned by a Constraint being applied to an actual value. + + + + + The status has not yet been set + + + + + The constraint succeeded + + + + + The constraint failed + + + + + An error occured in applying the constraint (reserved for future use) + + + + + Contain the result of matching a against an actual value. + + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + The status of the new ConstraintResult. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + If true, applies a status of Success to the result, otherwise Failure. + + + + The actual value that was passed to the method. + + + + + Gets and sets the ResultStatus for this result. + + + + + True if actual value meets the Constraint criteria otherwise false. + + + + + Display friendly name of the constraint. + + + + + Description of the constraint may be affected by the state the constraint had + when was performed against the actual value. + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the result 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 + + + + 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 + + + + 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 + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + 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 + + + + + Abstract method to get the max line length + + + + + 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 given + 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 failing constraint result + + + + 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 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 + + + + Custom value formatter function + + The value + + + + + Custom value formatter factory function + + The next formatter function + ValueFormatter + If the given formatter is unable to handle a certain format, it must call the next formatter in the chain + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Formatting strings used for expected and actual _values + + + + + Current head of chain of value formatters. Public for testing. + + + + + Add a formatter to the chain of responsibility. + + + + + + Formats text to represent a generalized value. + + The value + The formatted text + + + + Formats 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 + + + + 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 + + + + Converts any null 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 + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test that the actual value is an NaN + + + + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + 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 + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + 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. + + + + + Returns the default NUnitComparer. + + + + + Compares two objects + + + + + + + + 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 + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occurred. + + + + + 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 the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depth. + + + + + Flags the comparer to include + property in comparison of two values. + + + Using this modifier does not allow to use the + modifier. + + + + + Compares two objects for equality within a tolerance. + + + + + 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 + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + 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. + + + + + 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. + + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + 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. + + + + + The syntax element preceding this operator + + + + + The syntax element following 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. + + + + + 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. + + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + 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. + + + + + + + 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. + + + + + Gets the name of the property to which the operator applies + + + + + 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. + + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + 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. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifies the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Modifies the current instance to be case-sensitive + and returns it. + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether one path in canonical form is a subpath of another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Gets text describing a constraint + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + Construct given a base constraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Formats a prefix constraint's description. + + + + + 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 + + + + Returns the string representation of the constraint. + + + + + + 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 value + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two _values are within a + specified range. + + + + + Initializes a new instance of the class. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + 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 + + + + 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. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Resolve the current expression to a Constraint + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Return the top-level constraint for this expression + + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + 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. + + + + + + + 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 + + + + + Description of this constraint + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + 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 a given string + + The string to be tested + True for success, false for failure + + + + 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 + + + + 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. + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + 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 actual value for a failing constraint test to a + MessageWriter. This override only handles the special message + used when an exception is expected but none is thrown. + + The writer on which the actual value is displayed + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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. + + + + + Returns a default Tolerance object, equivalent to an exact match. + + + + + Returns an empty Tolerance object, equivalent to an exact match. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + 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 as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of clock ticks. + + + + + Gets the for the current Tolerance + + + + + Gets the magnitude of the current Tolerance instance. + + + + + Returns true if the current tolerance has not been set or is using the . + + + + + Apply the tolerance to an expected value and return + a Tolerance.Range that represents the acceptable values. + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Tolerance.Range represents the range of values that match + a specific tolerance, when applied to a specific value. + + + + + The lower bound of the range + + + + + The Upper bound of the range + + + + + Construct a Range + + + + + 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. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + The type of the actual argument to which the constraint was applied + + + + + Construct a TypeConstraint for a given Type + + The expected type for the constraint + Prefix used in forming the constraint description + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that all items are unique. + + + + + + + XmlSerializableConstraint tests whether + an object is serializable in xml format. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of this constraint + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct a standalone ExactCountConstraint + + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + 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. + + + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + 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 + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + 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 TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + 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 TestDelegate + + + + 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 + + + + 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 + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it 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 of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + 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 TestDelegate + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + 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 + + + + 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 + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + 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 function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that the first int is greater than the second + int. 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 int is greater than the second + int. 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Verifies that the first value is greater than or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that an int is zero. + + The number to be examined + + + + Asserts that an int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is zero. + + The number to be examined + + + + Asserts that an unsigned int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is zero. + + The number to be examined + + + + Asserts that a Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is zero. + + The number to be examined + + + + Asserts that an unsigned Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is not zero. + + The number to be examined + + + + Asserts that an int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is not zero. + + The number to be examined + + + + Asserts that an unsigned int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is not zero. + + The number to be examined + + + + Asserts that a Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is positive. + + The number to be examined + + + + Asserts that an int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is positive. + + The number to be examined + + + + Asserts that an unsigned int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is positive. + + The number to be examined + + + + Asserts that a Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is positive. + + The number to be examined + + + + Asserts that an unsigned Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is positive. + + The number to be examined + + + + Asserts that a decimal is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is positive. + + The number to be examined + + + + Asserts that a double is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is positive. + + The number to be examined + + + + Asserts that a float is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is negative. + + The number to be examined + + + + Asserts that an int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is negative. + + The number to be examined + + + + Asserts that an unsigned int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is negative. + + The number to be examined + + + + Asserts that a Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is negative. + + The number to be examined + + + + Asserts that an unsigned Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is negative. + + The number to be examined + + + + Asserts that a decimal is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is negative. + + The number to be examined + + + + Asserts that a double is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is negative. + + The number to be examined + + + + Asserts that a float is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + 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. + + + + + DO NOT USE! Use Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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. + + + + + Issues a warning using the message and arguments provided. + + The message to display. + Arguments to be used in formatting the message + + + + Issues a warning using the message provided. + + The message to display. + + + + 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. + + + + + Asserts that an object is contained in a collection. + + The expected object + The collection 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 collection. + + The expected object + The collection to be examined + + + + Wraps code containing a series of assertions, which should all + be executed, even if they fail. Failed results are saved and + reported at the end of the code block. + + A TestDelegate to be executed in Multiple Assertion mode. + + + + Thrown when an assertion failed. + + + + + Default Constructor (normally used) + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Class used to guard against unexpected argument values + or operations by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Throws an ArgumentOutOfRangeException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an ArgumentException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an InvalidOperationException if the specified condition is not met. + + The condition that must be met + The exception message to be used + + + + The AssertionResult class represents the result of a single assertion. + + + + + Construct an AssertionResult + + + + The pass/fail status of the assertion + + + The message produced by the assertion, or null + + + The stacktrace associated with the assertion, or null + + + + ToString Override + + + + + Override GetHashCode + + + + + Override Equals + + + + + + AssertionStatus enumeration represents the possible outcomes of an assertion. + The order of definition is significant, higher level values override lower + ones in determining the overall result of a test. + + + + + An assumption failed + + + + + The assertion succeeded + + + + + A warning message was issued + + + + + The assertion failed + + + + + An unexpected exception was thrown + + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The IParameterInfo interface is an abstraction of a .NET parameter. + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter + + + + + Gets the underlying .NET ParameterInfo + + + + + Gets the Type of the parameter + + + + + The IReflectionInfo interface is implemented by NUnit wrapper objects that perform reflection. + + + + + Returns an array of custom attributes of the specified type applied to this object + + + + + Returns a value indicating whether an attribute of the specified type is defined on this object. + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + Returns true if the Type wrapped is equal to the argument + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the Namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type is a static class. + + + + + Get the display name for this typeInfo. + + + + + Get the display name for an object of this type, constructed with specific arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a value indicating whether this type has a method with a specified public attribute + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + The TestAttachment class represents a file attached to a TestResult, + with an optional description. + + + + + Absolute file path to attachment file + + + + + User specifed description of attachment. May be null. + + + + + Creates a TestAttachment class to represent a file attached to a test result. + + Absolute file path to attachment file + User specifed description of attachment. May be null. + + + + The TestOutput class holds a unit of output from + a test to a specific output stream + + + + + Construct with text, output destination type and + the name of the test that produced the output. + + Text to be output + Name of the stream or channel to which the text should be written + FullName of test that produced the output + + + + Return string representation of the object for debugging + + + + + + Get the text + + + + + Get the output type + + + + + Get the name of the test that created the output + + + + + Convert the TestOutput object to an XML string + + + + + CombiningStrategy is the abstract base for classes that + know how to combine values provided for individual test + parameters to create a set of test cases. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + The ISimpleTestBuilder interface is exposed by a class that knows how to + build a single TestMethod from a suitable MethodInfo Types. In general, + it is exposed by an attribute, but may be implemented in a helper class + used by the attribute in some cases. + + + + + Build a TestMethod from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ITestBuilder interface is exposed by a class that knows how to + build one or more TestMethods from a MethodInfo. In general, it is exposed + by an attribute, which has additional information available to provide + the necessary test parameters to distinguish the test cases built. + + + + + Build one or more TestMethods from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The IDataPointProvider interface is used by extensions + that provide data for a single test parameter. + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + The IParameterDataSource interface is implemented by types + that can provide data for a test method parameter. + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + An enumeration containing individual data items + + + + A PropertyBag represents a collection of name/value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + The entries in a PropertyBag are of two kinds: those that + take a single value and those that take multiple _values. + However, the PropertyBag has no knowledge of which entries + fall into each category and the distinction is entirely + up to the code using the PropertyBag. + + When working with multi-valued properties, client code + should use the Add method to add name/value pairs and + indexing to retrieve a list of all _values for a given + key. For example: + + bag.Add("Tag", "one"); + bag.Add("Tag", "two"); + Assert.That(bag["Tag"], + Is.EqualTo(new string[] { "one", "two" })); + + When working with single-valued properties, client code + should use the Set method to set the value and Get to + retrieve the value. The GetSetting methods may also be + used to retrieve the value in a type-safe manner while + also providing default. For example: + + bag.Set("Priority", "low"); + bag.Set("Priority", "high"); // replaces value + Assert.That(bag.Get("Priority"), + Is.EqualTo("high")); + Assert.That(bag.GetSetting("Priority", "low"), + Is.EqualTo("high")); + + + + + Adds a key/value pair to the property bag + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + True if their are _values present, otherwise false + + + + Gets or sets the list of _values for a particular key + + The key for which the _values are to be retrieved or set + + + + Gets a collection containing all the keys in the property set + + + + + Common interface supported by all representations + of a test. Only includes informational fields. + The Run method is specifically excluded to allow + for data-only representations of a test. + + + + + Gets the id of the test + + + + + Gets the name of the test + + + + + Gets the type of the test + + + + + Gets the fully qualified name of the test + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the Type of the test fixture, if applicable, or + null if no fixture type is associated with this test. + + + + + Gets an IMethod for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the RunState of the test, indicating whether it can be run. + + + + + Count of the test cases ( 1 if this is a test case ) + + + + + Gets the properties of the test + + + + + Gets the parent test, if any. + + The parent test or null if none exists. + + + + Returns true if this is a test suite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets a fixture object for running this test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + The ITestData interface is implemented by a class that + represents a single instance of a parameterized test. + + + + + Gets the name to be used for the test + + + + + Gets the RunState for this test case. + + + + + Gets the argument list to be provided to the test + + + + + Gets the property dictionary for the test case + + + + + The ITestCaseData interface is implemented by a class + that is able to return the data required to create an + instance of a parameterized test fixture. + + + + + Get the TypeArgs if separately set + + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + + + + Gets the expected result of the test case + + + + + Returns true if an expected result has been set + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Determine if a particular test passes the filter criteria. Pass + may examine the parents and/or descendants of a test, depending + on the semantics of the particular filter + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + The ITestListener interface is used internally to receive + notifications of significant events while a test is being + run. The events are propagated to clients by means of an + AsyncCallback. NUnit extensions may also monitor these events. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + The ITestResult interface represents the result of a test. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. Not available in + the Compact Framework 1.0. + + + + + Gets the number of asserts executed + when running the test and all its children. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Accessing HasChildren should not force creation of the + Children collection in classes implementing this interface. + + + + + Gets the collection of child results. + + + + + Gets the Test to which this result applies. + + + + + Gets any text output written to this result. + + + + + Gets a list of AssertionResults associated with the test + + + + + Gets the collection of files attached to the test + + + + + An object implementing IXmlNodeBuilder is able to build + an XML representation of itself and any children. + + + + + Returns a TNode representing the current object. + + If true, children are included where applicable + A TNode representing the result + + + + Returns a TNode representing the current object after + adding it as a child of the supplied parent node. + + The parent node. + If true, children are included, where applicable + + + + + The ResultState class represents the outcome of running a test. + It contains two pieces of information. The Status of the test + is an enum indicating whether the test passed, failed, was + skipped or was inconclusive. The Label provides a more + detailed breakdown for use by client runners. + + + + + Initializes a new instance of the class. + + The TestStatus. + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + + + + Initializes a new instance of the class. + + The TestStatus. + The stage at which the result was produced + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + The stage at which the result was produced + + + + The result is inconclusive + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test was skipped because it is explicit + + + + + The test succeeded + + + + + The test issued a warning + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The test was not runnable. + + + + + A suite failed because one or more child tests failed or had errors + + + + + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + Gets the TestStatus for the test. + + The status. + + + + Gets the label under which this test result is + categorized, if any. + + + + + Gets the stage of test execution in which + the failure or other result took place. + + + + + Get a new ResultState, which is the same as the current + one but with the FailureSite set to the specified value. + + The FailureSite to use + A new ResultState + + + + Test whether this ResultState has the same Status and Label + as another one. In other words, the whether two are equal + ignoring the Site. + + + + + + + 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. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The FailureSite enum indicates the stage of a test + in which an error or failure occurred. + + + + + Failure in the test itself + + + + + Failure in the SetUp method + + + + + Failure in the TearDown method + + + + + Failure of a parent test + + + + + Failure of a child test + + + + + The RunState enum indicates whether a test can be executed. + + + + + The test is not runnable. + + + + + The test is runnable. + + + + + The test can only be run explicitly + + + + + The test has been skipped. This value may + appear on a Test when certain attributes + are used to skip the test. + + + + + The test has been ignored. May appear on + a Test, when the IgnoreAttribute is used. + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + There was a warning + + + + + The test failed + + + + + TNode represents a single node in the XML representation + of a Test or TestResult. It replaces System.Xml.XmlNode and + System.Xml.Linq.XElement, providing a minimal set of methods + for operating on the XML in a platform-independent manner. + + + + + Constructs a new instance of TNode + + The name of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + Flag indicating whether to use CDATA when writing the text + + + + Gets the name of the node + + + + + Gets the value of the node + + + + + Gets a flag indicating whether the value should be output using CDATA. + + + + + Gets the dictionary of attributes + + + + + Gets a list of child nodes + + + + + Gets the first ChildNode + + + + + Gets the XML representation of this node. + + + + + Create a TNode from it's XML text representation + + The XML text to be parsed + A TNode + + + + Adds a new element as a child of the current node and returns it. + + The element name. + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + + The element name + The text content of the new element + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + The value will be output using a CDATA section. + + The element name + The text content of the new element + The newly created child element + + + + Adds an attribute with a specified name and value to the XmlNode. + + The name of the attribute. + The value of the attribute. + + + + Finds a single descendant of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + + + Finds all descendants of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + Writes the XML representation of the node to an XmlWriter + + + + + + Class used to represent a list of XmlResults + + + + + Class used to represent the attributes of a node + + + + + Gets or sets the value associated with the specified key. + Overridden to return null if attribute is not found. + + The key. + Value of the attribute or null + + + + The IFixtureBuilder interface is exposed by a class that knows how to + build a TestFixture from one or more Types. In general, it is exposed + by an attribute, but may be implemented in a helper class used by the + attribute in some cases. + + + + + Build one or more TestFixtures from type provided. At least one + non-null TestSuite must always be returned, since the method is + generally called because the user has marked the target class as + a fixture. If something prevents the fixture from being used, it + will be returned nonetheless, labelled as non-runnable. + + The type info of the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + IImplyFixture is an empty marker interface used by attributes like + TestAttribute that cause the class where they are used to be treated + as a TestFixture even without a TestFixtureAttribute. + + Marker interfaces are not usually considered a good practice, but + we use it here to avoid cluttering the attribute hierarchy with + classes that don't contain any extra implementation. + + + + + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. + + + + + Apply changes to the execution context + + The execution context + + + + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. + + + + + Examine the type and determine if it is suitable for + this builder to use in building a TestSuite. + + Note that returning false will cause the type to be ignored + in loading the tests. If it is desired to load the suite + but label it as non-runnable, ignored, etc., then this + method must return true. + + The type of the fixture to be used + True if the type can be used to build a TestSuite + + + + Build a TestSuite from type provided. + + The type of the fixture to be used + A TestSuite + + + + The ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. + + + This interface is not the same as the ITestCaseBuilder interface in NUnit 2.x. + We have reused the name because the two products don't interoperate at all. + + + + + Examine the method and determine if it is suitable for + this builder to use in building a TestCase to be + included in the suite being populated. + + Note that returning false will cause the method to be ignored + in loading the tests. If it is desired to load the method + but label it as non-runnable, ignored, etc., then this + method must return true. + + The test method to examine + The suite being populated + True is the builder can use this method + + + + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. + + The method to be used as a test case + The test suite being populated, or null + A TestCase or null + + + + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. + + + Attributes or other objects should implement one of the + derived interfaces, rather than this one, since they + indicate in which part of the command chain the wrapper + should be applied. + + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. + + + + + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. + + + + + AssemblyHelper provides static methods for working + with assemblies. + + + + + Gets the path from which an assembly was loaded. + For builds where this is not possible, returns + the name of the assembly. + + The assembly. + The path. + + + + Gets the path to the directory from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the AssemblyName of an assembly. + + The assembly + An AssemblyName + + + + Loads an assembly given a string, which may be the + path to the assembly or the AssemblyName + + + + + + + Gets the assembly path from code base. + + Public for testing purposes + The code base. + + + + + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. + + + + + Construct with a collection of individual providers + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + Built-in SuiteBuilder for all types of test classes. + + + + + Checks to see if the provided Type is a fixture. + To be considered a fixture, it must be a non-abstract + class with one or more attributes implementing the + IFixtureBuilder interface or one or more methods + marked as tests. + + The fixture type to check + True if the fixture can be built, false if not + + + + Build a TestSuite from TypeInfo provided. + + The fixture type to build + A TestSuite built from that type + + + + We look for attributes implementing IFixtureBuilder at one level + of inheritance at a time. Attributes on base classes are not used + unless there are no fixture builder attributes at all on the derived + class. This is by design. + + The type being examined for attributes + A list of the attributes found. + + + + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. + + + + + Constructs an + + + + + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. + + The MethodInfo from which to construct the TestMethod + The suite or fixture to which the new test will be added + The ParameterSet to be used, or null + + + + + Helper method that checks the signature of a TestMethod and + any supplied parameters to determine if the test is valid. + + Currently, NUnitTestMethods are required to be public, + non-abstract methods, either static or instance, + returning void. They may take arguments but the _values must + be provided or the TestMethod is not considered runnable. + + Methods not meeting these criteria will be marked as + non-runnable and the method will return false in that case. + + The TestMethod to be checked. If it + is found to be non-runnable, it will be modified. + Parameters to be used for this test, or null + True if the method signature is valid, false if not + + The return value is no longer used internally, but is retained + for testing purposes. + + + + + Class that can build a tree of automatic namespace + suites from a group of fixtures. + + + + + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. + + + + + The root of the test suite being created by this builder. + + + + + Initializes a new instance of the class. + + The root suite. + + + + Gets the root entry in the tree created by the NamespaceTreeBuilder. + + The root suite. + + + + Adds the specified fixtures to the tree. + + The fixtures to be added. + + + + Adds the specified fixture to the tree. + + The fixture to be added. + + + + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + Class to build ether a parameterized or a normal NUnitTestMethod. + There are four cases that the builder must deal with: + 1. The method needs no params and none are provided + 2. The method needs params and they are provided + 3. The method needs no params but they are provided in error + 4. The method needs params but they are not provided + This could have been done using two different builders, but it + turned out to be simpler to have just one. The BuildFrom method + takes a different branch depending on whether any parameters are + provided, but all four cases are dealt with in lower-level methods + + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + A Test representing one or more method invocations + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + The test suite being built, to which the new test would be added + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations + + + + Builds a ParameterizedMethodSuite containing individual test cases. + + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases + + + + Build a simple, non-parameterized TestMethod for this method. + + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. + + + + NUnitTestFixtureBuilder is able to build a fixture given + a class marked with a TestFixtureAttribute or an unmarked + class containing test methods. In the first case, it is + called by the attribute and in the second directly by + NUnitSuiteBuilder. + + + + + Build a TestFixture from type provided. A non-null TestSuite + must always be returned, since the method is generally called + because the user has marked the target class as a fixture. + If something prevents the fixture from being used, it should + be returned nonetheless, labelled as non-runnable. + + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. + + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + + + + + Method to add test cases to the newly constructed fixture. + + The fixture to which cases should be added + + + + Method to create a test case from a MethodInfo and add + it to the fixture being built. It first checks to see if + any global TestCaseBuilder addin wants to build the + test case. If not, it uses the internal builder + collection maintained by this fixture builder. + + The default implementation has no test case builders. + Derived classes should add builders to the collection + in their constructor. + + The method for which a test is to be created + The test suite being built. + A newly constructed Test + + + + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. + + + + The number of test cases that cover all possible pairs of test function + parameters values is significantly less than the number of test cases + that cover all possible combination of test function parameters values. + And because different studies show that most of software failures are + caused by combination of no more than two parameters, pairwise testing + can be an effective ways to test the system when it's impossible to test + all combinations of parameters. + + + The PairwiseStrategy code is based on "jenny" tool by Bob Jenkins: + http://burtleburtle.net/bob/math/jenny.html + + + + + + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea + + + + + Initializes a new instance of the FleaRand class. + + The seed. + + + + FeatureInfo represents coverage of a single value of test function + parameter, represented as a pair of indices, Dimension and Feature. In + terms of unit testing, Dimension is the index of the test parameter and + Feature is the index of the supplied value in that parameter's list of + sources. + + + + + Initializes a new instance of FeatureInfo class. + + Index of a dimension. + Index of a feature. + + + + A FeatureTuple represents a combination of features, one per test + parameter, which should be covered by a test case. In the + PairwiseStrategy, we are only trying to cover pairs of features, so the + tuples actually may contain only single feature or pair of features, but + the algorithm itself works with triplets, quadruples and so on. + + + + + Initializes a new instance of FeatureTuple class for a single feature. + + Single feature. + + + + Initializes a new instance of FeatureTuple class for a pair of features. + + First feature. + Second feature. + + + + TestCase represents a single test case covering a list of features. + + + + + Initializes a new instance of TestCaseInfo class. + + A number of features in the test case. + + + + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. + + + + The algorithm starts with creating a set of all feature tuples which we + will try to cover (see method). This set + includes every single feature and all possible pairs of features. We + store feature tuples in the 3-D collection (where axes are "dimension", + "feature", and "all combinations which includes this feature"), and for + every two feature (e.g. "A" and "B") we generate both ("A", "B") and + ("B", "A") pairs. This data structure extremely reduces the amount of + time needed to calculate coverage for a single test case (this + calculation is the most time-consuming part of the algorithm). + + + Then the algorithm picks one tuple from the uncovered tuple, creates a + test case that covers this tuple, and then removes this tuple and all + other tuples covered by this test case from the collection of uncovered + tuples. + + + Picking a tuple to cover + + + There are no any special rules defined for picking tuples to cover. We + just pick them one by one, in the order they were generated. + + + Test generation + + + Test generation starts from creating a completely random test case which + covers, nevertheless, previously selected tuple. Then the algorithm + tries to maximize number of tuples which this test covers. + + + Test generation and maximization process repeats seven times for every + selected tuple and then the algorithm picks the best test case ("seven" + is a magic number which provides good results in acceptable time). + + Maximizing test coverage + + To maximize tests coverage, the algorithm walks thru the list of mutable + dimensions (mutable dimension is a dimension that are not included in + the previously selected tuple). Then for every dimension, the algorithm + walks thru the list of features and checks if this feature provides + better coverage than randomly selected feature, and if yes keeps this + feature. + + + This process repeats while it shows progress. If the last iteration + doesn't improve coverage, the process ends. + + + In addition, for better results, before start every iteration, the + algorithm "scrambles" dimensions - so for every iteration dimension + probes in a different order. + + + + + + Creates a set of test cases for specified dimensions. + + + An array which contains information about dimensions. Each element of + this array represents a number of features in the specific dimension. + + + A set of test cases. + + + + + Gets the test cases generated by this strategy instance. + + A set of test cases. + + + + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + TestActionAfterCommand handles the AfterTest method of a single + TestActionItem, provided the items BeforeTest has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + AfterCommand is a DelegatingTestCommand that performs some + specific action after the inner command is run. + + + + + Construct an AfterCommand + + + + + Execute the command + + + + + Set this to perform action after the inner command. + + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Perform the before test action + + + + + Perform the after test action + + + + + TestActionBeforeCommand handles the BeforeTest method of a single + TestActionItem, relying on the item to remember it has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + BeforeTestCommand is a DelegatingTestCommand that performs some + specific action before the inner command is run. + + + + + Construct a BeforeCommand + + + + + Execute the command + + + + + Action to perform before the inner command. + + + + + ConstructFixtureCommand constructs the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + + + + EmptyTestCommand is a TestCommand that does nothing. It simply + returns the current result from the context when executed. We + use it to avoid testing for null when executing a chain of + DelegatingTestCommands. + + + + + Construct a NullCommand for a test + + + + + Execute the command + + + + + TimeoutCommand creates a timer in order to cancel + a test if it exceeds a specified time and adjusts + the test result if it did time out. + + + + + Initializes a new instance of the class. + + The inner command + Timeout value + + + + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. + + + + + Construct a SetUpTearDownNode + + A list of setup methods for this level + A list teardown methods for this level + + + + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. + + + + + Run SetUp on this level. + + The execution context to use for running. + + + + Run TearDown for this level. + + + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + The TestAction with which to wrap the inner command. + + + + TestActionItem wraps a single execution of an ITestAction. + It's primary purpose is to track whether the BeforeTest + method has been called and suppress calling the + AfterTest method if it has not. This is necessary when + ITestActions are used before and after a CompositeWorkItem, + since the OneTimeSetUpCommand and OneTimeTearDownCommand + are separate command chains. By sharing a TestActionItem + between the setup and teardown chains, the two calls can + be coordinated. + + + + + Construct a TestActionItem + + The ITestAction to be included + + + + Get flag indicating if the BeforeTest entry was already called. + + + + + Run the BeforeTest method of the action and remember that it has been run. + + The test to which the action applies + + + + Run the AfterTest action, but only if the BeforeTest + action was actually run. + + The test to which the action applies + + + + ContextSettingsCommand applies specified changes to the + TestExecutionContext prior to running a test. No special + action is needed after the test runs, since the prior + context will be restored automatically. + + + + + DelegatingTestCommand wraps an inner TestCommand. + Derived classes may do what they like before or + after running the inner command. + + + + TODO: Documentation needed for field + + + + TODO: Documentation needed for constructor + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The inner command. + The max time allowed in milliseconds + + + + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + A SetUpTearDownList for use by the command + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + A SetUpTearDownList for use by the command + + + + SetUpTearDownCommand runs SetUp methods for a suite, + runs the test and then runs TearDown methods. + + + + + Initializes a new instance of the class. + + The inner command. + List of setup/teardown items + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The test being skipped. + + + + Overridden to simply set the CurrentResult to the + appropriate Skipped state. + + The execution context for the test + A TestResult + + + + TestCommand is the abstract base class for all test commands + in the framework. A TestCommand represents a single stage in + the execution of a test, e.g.: SetUp/TearDown, checking for + Timeout, verifying the returned result from a method, etc. + + TestCommands may decorate other test commands so that the + execution of a lower-level command is nested within that + of a higher level command. All nested commands are executed + synchronously, as a single unit. Scheduling test execution + on separate threads is handled at a higher level, using the + task dispatcher. + + + + + Construct a TestCommand for a test. + + The test to be executed + + + + Gets the test associated with this command. + + + + + Runs the test in a specified context, returning a TestResult. + + The TestExecutionContext to be used for running the test. + A TestResult + + + + TestMethodCommand is the lowest level concrete command + used to run actual test cases. + + + + + Initializes a new instance of the class. + + The test. + + + + Runs the test, saving a TestResult in the execution context, as + well as returning it. If the test has an expected result, it + is asserts on that value. Since failed tests and errors throw + an exception, this command must be wrapped in an outer command, + will handle that exception and records the failure. This role + is usually played by the SetUpTearDown command. + + The execution context + + + + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. + + + + + Constructs a TheoryResultCommand + + The command to be wrapped by this one + + + + EventListenerTextWriter sends text output to the currently active + ITestEventListener in the form of a TestOutput object. If no event + listener is active in the context, or if there is no context, + the output is forwarded to the supplied default writer. + + + + + Construct an EventListenerTextWriter + + The name of the stream to use for events + The default writer to use if no listener is available + + + + Get the Encoding for this TextWriter + + + + + Write formatted string + + + + + Write formatted string + + + + + Write formatted string + + + + + Write an object + + + + + Write a string + + + + + Write a decimal + + + + + Write a double + + + + + Write formatted string + + + + + Write a ulong + + + + + Write a long + + + + + Write a uint + + + + + Write an int + + + + + Write a char + + + + + Write a boolean + + + + + Write chars + + + + + Write chars + + + + + Write a float + + + + + Write a string with newline + + + + + Write an object with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write a decimal with newline + + + + + Write a formatted string with newline + + + + + Write a double with newline + + + + + Write a uint with newline + + + + + Write a ulong with newline + + + + + Write a long with newline + + + + + Write an int with newline + + + + + Write a bool with newline + + + + + Write chars with newline + + + + + Write chars with newline + + + + + Write a char with newline + + + + + Write a float with newline + + + + + Write newline + + + + + WorkItemBuilder class knows how to build a tree of work items from a tree of tests + + + + + Creates a work item. + + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + True if child work items should be created and added. + + + + + Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. + + + A signed integer that indicates the relative values of and , as shown in the following table.Value Meaning Less than zero is less than .Zero equals .Greater than zero is greater than . + + The first object to compare.The second object to compare. + + + + An IWorkItemDispatcher handles execution of work items. + + + + + Start execution, performing any initialization. Sets + the top level work item and dispatches it. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + true if the IWorkItemDispatcher should abort all currently running WorkItems, false if it should allow all currently running WorkItems to complete + + + + SimpleWorkItemDispatcher handles execution of WorkItems by + directly executing them. It is provided so that a dispatcher + is always available in the context, thereby simplifying the + code needed to run child tests. + + + + + Start execution, creating the execution thread, + setting the top level work and dispatching it. + + + + + Dispatch a single work item for execution by + executing it directly. + The item to dispatch + + + + + Cancel (abort or stop) the ongoing run. + If no run is in process, the call has no effect. + + true if the run should be aborted, false if it should allow its currently running test to complete + + + + The TextCapture class intercepts console output and writes it + to the current execution context, if one is present on the thread. + If no execution context is found, the output is written to a + default destination, normally the original destination of the + intercepted output. + + + + + Construct a TextCapture object + + The default destination for non-intercepted output + + + + Gets the Encoding in use by this TextWriter + + + + + Writes a single character + + The char to write + + + + Writes a string + + The string to write + + + + Writes a string followed by a line terminator + + The string to write + + + + The dispatcher needs to do different things at different, + non-overlapped times. For example, non-parallel tests may + not be run at the same time as parallel tests. We model + this using the metaphor of a working shift. The WorkShift + class associates one or more WorkItemQueues with one or + more TestWorkers. + + Work in the queues is processed until all queues are empty + and all workers are idle. Both tests are needed because a + worker that is busy may end up adding more work to one of + the queues. At that point, the shift is over and another + shift may begin. This cycle continues until all the tests + have been run. + + + + + Construct a WorkShift + + + + + Event that fires when the shift has ended + + + + + The Name of this shift + + + + + Gets a flag indicating whether the shift is currently active + + + + + Gets a list of the queues associated with this shift. + + Used for testing + + + + Gets the list of workers associated with this shift. + + + + + Gets a bool indicating whether this shift has any work to do + + + + + Add a WorkItemQueue to the shift, starting it if the + shift is currently active. + + + + + Assign a worker to the shift. + + + + + + Start or restart processing for the shift + + + + + End the shift, pausing all queues and raising + the EndOfShift event. + + + + + Shut down the shift. + + + + + Cancel (abort or stop) the shift without completing all work + + true if the WorkShift should be aborted, false if it should allow its currently running tests to complete + + + + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. + + + + + List of Child WorkItems + + + + + Construct a CompositeWorkItem for executing a test suite + using a filter to select child tests. + + The TestSuite to be executed + A filter used to select child tests + + + + Method that actually performs the work. Overridden + in CompositeWorkItem to do one-time setup, run all child + items and then dispatch the one-time teardown work item. + + + + + + + + + + Cancel (abort or stop) a CompositeWorkItem and all of its children + + true if the CompositeWorkItem and all of its children should be aborted, false if it should allow all currently running tests to complete + + + + OneTimeTearDownWorkItem represents the cleanup + and one-time teardown phase of a CompositeWorkItem + + + + + Construct a OneTimeTearDownWOrkItem wrapping a CompositeWorkItem + + The CompositeWorkItem being wrapped + + + + The WorkItem name, overridden to indicate this is the teardown. + + + + + + + + + + PerformWork is not used in CompositeWorkItem + + + + + A simplified implementation of .NET 4 CountdownEvent + for use in earlier versions of .NET. Only the methods + used by NUnit are implemented. + + + + + Construct a CountdownEvent + + The initial count + + + + Gets the initial count established for the CountdownEvent + + + + + Gets the current count remaining for the CountdownEvent + + + + + Decrement the count by one + + + + + Decrement the count by the specified amount + + + + + Block the thread until the count reaches zero + + + + + The EventPumpState enum represents the state of an + EventPump. + + + + + The pump is stopped + + + + + The pump is pumping events with no stop requested + + + + + The pump is pumping events but a stop has been requested + + + + + EventPump pulls events out of an EventQueue and sends + them to a listener. It is used to send events back to + the client without using the CallContext of the test + runner thread. + + + + + The downstream listener to which we send events + + + + + The queue that holds our events + + + + + Thread to do the pumping + + + + + The current state of the eventpump + + + + + Constructor + + The EventListener to receive events + The event queue to pull events from + + + + Gets or sets the current state of the pump + + + + + Gets or sets the name of this EventPump + (used only internally and for testing). + + + + + Dispose stops the pump + Disposes the used WaitHandle, too. + + + + + Start the pump + + + + + Tell the pump to stop after emptying the queue. + + + + + Our thread proc for removing items from the event + queue and sending them on. Note that this would + need to do more locking if any other thread were + removing events from the queue. + + + + + NUnit.Core.Event is the abstract base for all stored events. + An Event is the stored representation of a call to the + ITestListener interface and is used to record such calls + or to queue them for forwarding on another thread or at + a later time. + + + + + The Send method is implemented by derived classes to send the event to the specified listener. + + The listener. + + + + TestStartedEvent holds information needed to call the TestStarted method. + + + + + Initializes a new instance of the class. + + The test. + + + + Calls TestStarted on the specified listener. + + The listener. + + + + TestFinishedEvent holds information needed to call the TestFinished method. + + + + + Initializes a new instance of the class. + + The result. + + + + Calls TestFinished on the specified listener. + + The listener. + + + + TestOutputEvent holds information needed to call the TestOutput method. + + + + + Initializes a new instance of the class. + + The output object. + + + + Calls TestOutput on the specified listener. + + The listener. + + + + Implements a queue of work items each of which + is queued as a WaitCallback. + + + + + Gets the count of items in the queue. + + + + + Enqueues the specified event + + The event to enqueue. + + + + Removes the first element from the queue and returns it (or null). + + + If true and the queue is empty, the calling thread is blocked until + either an element is enqueued, or is called. + + + + + If the queue not empty + the first element. + + + otherwise, if ==false + or has been called + null. + + + + + + + Stop processing of the queue + + + + + QueuingEventListener uses an EventQueue to store any + events received on its EventListener interface. + + + + + The EventQueue created and filled by this listener + + + + + Construct a QueuingEventListener + + + + + A test has started + + The test that is starting + + + + A test case finished + + Result of the test case + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + A SimpleWorkItem represents a single test case and is + marked as completed immediately upon execution. This + class is also used for skipped or ignored test suites. + + + + + Construct a simple work item for a test. + + The test to be executed + The filter used to select this test + + + + Method that performs actually performs the work. + + + + + Creates a test command for use in running this test. + + A TestCommand + + + + A TestWorker pulls work items from a queue + and executes them. + + + + + Event handler for TestWorker events + + The TestWorker sending the event + The WorkItem that caused the event + + + + Event signaled immediately before executing a WorkItem + + + + + Event signaled immediately after executing a WorkItem + + + + + Construct a new TestWorker. + + The queue from which to pull work items + The name of this worker + + + + The WorkItemQueue from which this worker pulls WorkItems + + + + + The name of this worker - also used for the thread + + + + + Indicates whether the worker thread is running + + + + + Our ThreadProc, which pulls and runs tests in a loop + + + + + Start processing work items. + + + + + Stop the thread, either immediately or after finishing the current WorkItem + + true if the thread should be aborted, false if it should allow the currently running test to complete + + + + A WorkItem may be an individual test case, a fixture or + a higher level grouping of tests. All WorkItems inherit + from the abstract WorkItem class, which uses the template + pattern to allow derived classes to perform work in + whatever way is needed. + + A WorkItem is created with a particular TestExecutionContext + and is responsible for re-establishing that context in the + current thread before it begins or resumes execution. + + + + + Construct a WorkItem for a particular test. + + The test that the WorkItem will run + Filter used to include or exclude child items + + + + Construct a work Item that wraps another work Item. + Wrapper items are used to represent independently + dispatched tasks, which form part of the execution + of a single test, such as OneTimeTearDown. + + The WorkItem being wrapped + + + + Initialize the TestExecutionContext. This must be done + before executing the WorkItem. + + + Originally, the context was provided in the constructor + but delaying initialization of the context until the item + is about to be dispatched allows changes in the parent + context during OneTimeSetUp to be reflected in the child. + + The TestExecutionContext to use + + + + Event triggered when the item is complete + + + + + Gets the current state of the WorkItem + + + + + The test being executed by the work item + + + + + The name of the work item - defaults to the Test name. + + + + + Filter used to include or exclude child tests + + + + + The execution context + + + + + The worker executing this item. + + + + + The test result + + + + + Gets the ParallelScope associated with the test, if any, + otherwise returning ParallelScope.Default; + + + + + Execute the current work item, including any + child work items. + + + + + Marks the WorkItem as NotRunnable. + + Reason for test being NotRunnable. + + + + Cancel (abort or stop) a WorkItem + + true if the WorkItem should be aborted, false if it should run to completion + + + + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. + + + + + Method called by the derived class when all work is complete + + + + + Builds the set up tear down list. + + Unsorted array of setup MethodInfos. + Unsorted array of teardown MethodInfos. + A list of SetUpTearDownItems + + + + Changes the result of the test, logging the old and new states + + The new ResultState + The new message + + + + ParallelWorkItemDispatcher handles execution of work items by + queuing them for worker threads to process. + + + + + Construct a ParallelWorkItemDispatcher + + Number of workers to use + + + + Enumerates all the shifts supported by the dispatcher + + + + + Enumerates all the Queues supported by the dispatcher + + + + + Start execution, setting the top level work, + enqueuing it and starting a shift to execute it. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + Save the state of the queues + + + + + Try to restore a saved queue state + True if the state was restored, otherwise false + + + + WorkItemQueueState indicates the current state of a WorkItemQueue + + + + + The queue is paused + + + + + The queue is running + + + + + The queue is stopped + + + + + A WorkItemQueue holds work items that are ready to + be run, either initially or after some dependency + has been satisfied. + + + + + Initializes a new instance of the class. + + The name of the queue. + Flag indicating whether this is a parallel queue + "ApartmentState to use for items on this queue + + + + Gets the name of the work item queue. + + + + + Gets a flag indicating whether this queue is used for parallel execution + + + + + Gets the target ApartmentState for work items on this queue + + + + + Gets the total number of items processed so far + + + + + Gets the maximum number of work items. + + + + + Gets the current state of the queue + + + + + Get a bool indicating whether the queue is empty. + + + + + Enqueue a WorkItem to be processed + + The WorkItem to process + + + + Dequeue a WorkItem for processing + + A WorkItem or null if the queue has stopped + + + + Start or restart processing of items from the queue + + + + + Signal the queue to stop + + + + + Pause the queue for restarting later + + + + + Save the current inner queue and create new ones for use by + a non-parallel fixture with parallel children. + + + + + Restore the inner queue that was previously saved + + + + + The current state of a work item + + + + + Ready to run or continue + + + + + Work Item is executing + + + + + Complete + + + + + A base class for multi-part filters + + + + + Constructs an empty CompositeFilter + + + + + Constructs a CompositeFilter from an array of filters + + + + + + Adds a filter to the list of filters + + The filter to be added + + + + Return a list of the composing filters. + + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is explicit matched by a test. + + The test to be matched + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + PropertyFilter is able to select or exclude tests + based on their properties. + + + + + + Construct a PropertyFilter using a property name and expected value + + A property name + The expected value of the property + + + + Check whether the filter matches a test + + The test to be matched + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + TestName filter selects tests based on their Name + + + + + Construct a TestNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a MethodNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a NamespaceFilter for a single namespace + + The namespace the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + IdFilter selects tests based on their id + + + + + Construct an IdFilter for a single value + + The id the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. + + + + + Returns the value matched by the filter - used for testing + + + + + Indicates whether the value is a regular expression + + + + + Construct a ValueMatchFilter for a single value. + + The value to be included. + + + + Match the input provided by the derived class + + The value to be matchedT + True for a match, false otherwise. + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + Combines multiple filters so that a test must pass all + of them in order to pass this filter. + + + + + Constructs an empty AndFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters pass, otherwise false + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters match, otherwise false + + + + Checks whether the AndFilter is explicit matched by a test. + + The test to be matched + True if all the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + CategoryFilter is able to select or exclude tests + based on their categories. + + + + + + Construct a CategoryFilter using a single category name + + A category name + + + + Check whether the filter matches a test + + The test to be matched + + + + + Gets the element name + + Element name + + + + NotFilter negates the operation of another filter + + + + + Construct a not filter on another filter + + The filter to be negated + + + + Gets the base filter + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Check whether the filter matches a test + + The test to be matched + True if it matches, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Combines multiple filters so that a test must pass one + of them in order to pass this filter. + + + + + Constructs an empty OrFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters pass, otherwise false + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters match, otherwise false + + + + Checks whether the OrFilter is explicit matched by a test + + The test to be matched + True if any of the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + Interface for logging within the engine + + + + + Logs the specified message at the error level. + + The message. + + + + Logs the specified message at the error level. + + The message. + The arguments. + + + + Logs the specified message at the warning level. + + The message. + + + + Logs the specified message at the warning level. + + The message. + The arguments. + + + + Logs the specified message at the info level. + + The message. + + + + Logs the specified message at the info level. + + The message. + The arguments. + + + + Logs the specified message at the debug level. + + The message. + + + + Logs the specified message at the debug level. + + The message. + The arguments. + + + + InternalTrace provides facilities for tracing the execution + of the NUnit framework. Tests and classes under test may make use + of Console writes, System.Diagnostics.Trace or various loggers and + NUnit itself traps and processes each of them. For that reason, a + separate internal trace is needed. + + Note: + InternalTrace uses a global lock to allow multiple threads to write + trace messages. This can easily make it a bottleneck so it must be + used sparingly. Keep the trace Level as low as possible and only + insert InternalTrace writes where they are needed. + TODO: add some buffering and a separate writer thread as an option. + TODO: figure out a way to turn on trace in specific classes only. + + + + + Gets a flag indicating whether the InternalTrace is initialized + + + + + Initialize the internal trace facility using the name of the log + to be written to and the trace level. + + The log name + The trace level + + + + Initialize the internal trace using a provided TextWriter and level + + A TextWriter + The InternalTraceLevel + + + + Get a named Logger + + + + + + Get a logger named for a particular Type. + + + + + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. + + + + + Use the default settings as specified by the user. + + + + + Do not display any trace messages + + + + + Display Error messages only + + + + + Display Warning level and higher messages + + + + + Display informational and higher messages + + + + + Display debug messages and higher - i.e. all messages + + + + + Display debug messages and higher - i.e. all messages + + + + + A trace listener that writes to a separate file per domain + and process using it. + + + + + Construct an InternalTraceWriter that writes to a file. + + Path to the file to use + + + + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + + + + + + Returns the character encoding in which the output is written. + + The character encoding in which the output is written. + + + + Writes a character to the text string or stream. + + The character to write to the text stream. + + + + Writes a string to the text string or stream. + + The string to write. + + + + Writes a string followed by a line terminator to the text string or stream. + + The string to write. If is null, only the line terminator is written. + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. + + + + + Provides internal logging to the NUnit framework + + + + + Initializes a new instance of the class. + + The name. + The log level. + The writer where logs are sent. + + + + Logs the message at error level. + + The message. + + + + Logs the message at error level. + + The message. + The message arguments. + + + + Logs the message at warm level. + + The message. + + + + Logs the message at warning level. + + The message. + The message arguments. + + + + Logs the message at info level. + + The message. + + + + Logs the message at info level. + + The message. + The message arguments. + + + + Logs the message at debug level. + + The message. + + + + Logs the message at debug level. + + The message. + The message arguments. + + + + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. + + + + + Construct a MethodWrapper for a Type and a MethodInfo. + + + + + Construct a MethodInfo for a given Type and method name. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the method. + + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. + + + + + Construct a ParameterWrapper for a given method and parameter + + + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter. + + + + + Gets the underlying ParameterInfo + + + + + Gets the Type of the parameter + + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the parameter. + + + + + TestCaseTimeoutException is thrown when a test running directly + on a TestWorker thread is cancelled due to timeout. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + TestNameGenerator is able to create test names according to + a coded pattern. + + + + + Default pattern used to generate names + + + + + Construct a TestNameGenerator + + + + + Construct a TestNameGenerator + + The pattern used by this generator. + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + The display name + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + Arguments to be used + The display name + + + + The TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. + + + + + Construct a TypeWrapper for a specified Type. + + + + + Gets the underlying Type on which this TypeWrapper is based. + + + + + Gets the base type of this type as an ITypeInfo + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Returns true if the Type wrapped is T + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type represents a static class. + + + + + Get the display name for this type + + + + + Get the display name for an object of this type, constructed with the specified args. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns an array of custom attributes of the specified type applied to this type + + + + + Returns a value indicating whether the type has an attribute of the specified type. + + + + + + + + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + 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. + + + + + + + Gets or sets the maximum line length for this writer + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a given + 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 result of the constraint that failed + + + + Gets the unique type name between expected and actual. + + The expected value + The actual value causing the failure + Output of the unique type name for expected + Output of the unique type name for actual + + + + 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 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 ConstraintResult for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. + + + + + Construct a GenericMethodHelper for a method + + MethodInfo for the method to examine + + + + Return the type arguments for the method, deducing them + from the arguments actually provided. + + The arguments to the method + An array of type arguments. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + Randomizer returns a set of random _values in a repeatable + way, to allow re-running of tests if necessary. It extends + the .NET Random class, providing random values for a much + wider range of types. + + The class is used internally by the framework to generate + test case data and is also exposed for use by users through + the TestContext.Random property. + + + For consistency with the underlying Random Type, methods + returning a single value use the prefix "Next..." Those + without an argument return a non-negative value up to + the full positive range of the Type. Overloads are provided + for specifying a maximum or a range. Methods that return + arrays or strings use the prefix "Get..." to avoid + confusion with the single-value methods. + + + + + Initial seed used to create randomizers for this run + + + + + 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. + + + + + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. + + + + + + Default constructor + + + + + Construct based on seed value + + + + + + Returns a random unsigned int. + + + + + Returns a random unsigned int less than the specified maximum. + + + + + Returns a random unsigned int within a specified range. + + + + + Returns a non-negative random short. + + + + + Returns a non-negative random short less than the specified maximum. + + + + + Returns a non-negative random short within a specified range. + + + + + Returns a random unsigned short. + + + + + Returns a random unsigned short less than the specified maximum. + + + + + Returns a random unsigned short within a specified range. + + + + + Returns a random long. + + + + + Returns a random long less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random ulong. + + + + + Returns a random ulong less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random Byte + + + + + Returns a random Byte less than the specified maximum. + + + + + Returns a random Byte within a specified range + + + + + Returns a random SByte + + + + + Returns a random sbyte less than the specified maximum. + + + + + Returns a random sbyte within a specified range + + + + + Returns a random bool + + + + + Returns a random bool based on the probability a true result + + + + + Returns a random double between 0.0 and the specified maximum. + + + + + Returns a random double within a specified range. + + + + + Returns a random float. + + + + + Returns a random float between 0.0 and the specified maximum. + + + + + Returns a random float within a specified range. + + + + + Returns a random enum value of the specified Type as an object. + + + + + Returns a random enum value of the specified Type. + + + + + Default characters for random functions. + + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + string representing the set of characters from which to construct the resulting string + A random string of arbitrary length + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + A random string of arbitrary length + Uses DefaultStringChars as the input character set + + + + Generate a random string based on the characters from the input string. + + A random string of the default length + Uses DefaultStringChars as the input character set + + + + Returns a random decimal. + + + + + Returns a random decimal between positive zero and the specified maximum. + + + + + Returns a random decimal within a specified range, which is not + permitted to exceed decimal.MaxVal in the current implementation. + + + A limitation of this implementation is that the range from min + to max must not exceed decimal.MaxVal. + + + + + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. + + + + + Single instance of our default filter + + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + Regex pattern used to delete lines from the bottom of the stack + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + + + + Construct a stack filter instance + + + + + Filters a raw stack trace and returns the result. + + The original stack trace + A filtered stack trace + + + + Provides methods to support legacy string comparison methods. + + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if + strB is sorted first + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + True if the strings are equivalent, false if not. + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + Type arguments used to create a generic fixture instance + + + + + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a ParameterSet from an object implementing ITestData + + + + + + The RunState for this set of parameters. + + + + + The arguments to be used in running the test, + which must match the method signature. + + + + + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. + + + + + Gets the property dictionary for this test + + + + + Applies ParameterSet _values to the test itself. + + A test. + + + + The original arguments provided by the user, + used for display purposes. + + + + + Enumeration indicating whether the tests are + running normally or being cancelled. + + + + + Running normally with no stop requested + + + + + A graceful stop has been requested + + + + + A forced stop has been requested + + + + + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. + + + + + The FriendlyName of the AppDomain in which the assembly is running + + + + + The selected strategy for joining parameter data into test cases + + + + + The process ID of the executing assembly + + + + + The stack trace from any data provider that threw + an exception. + + + + + The reason a test was not run + + + + + The author of the tests + + + + + The ApartmentState required for running the test + + + + + The categories applying to a test + + + + + The Description of a test + + + + + The number of threads to be used in running tests + + + + + The maximum time in ms, above which the test is considered to have failed + + + + + The ParallelScope associated with a test + + + + + The number of times the test should be repeated + + + + + Indicates that the test should be run on a separate thread + + + + + The culture to be set for a test + + + + + The UI culture to be set for a test + + + + + The type that is under test + + + + + The timeout value for the test + + + + + The test will be ignored until the given date + + + + + The optional Order the test will run in + + + + + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. + + + + + Default constructor uses the current culture. + + + + + Construct a CultureDetector for a particular culture for testing. + + The culture to be used + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + Tests to determine if the current culture is supported + based on a culture attribute. + + The attribute to examine + + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + ExceptionHelper provides static methods for working with exceptions + + + + + Rethrows an exception, preserving its stack trace + + The exception to rethrow + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. Excludes exception names, creating more readable message + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined stack trace. + + + + Gets the stack trace of the exception. + + The exception. + A string representation of the stack trace. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + OSPlatform represents a particular operating system platform + + + + + Platform ID for Unix as defined by Microsoft .NET 2.0 and greater + + + + + Platform ID for Unix as defined by Mono + + + + + Platform ID for XBox as defined by .NET and Mono + + + + + Platform ID for MacOSX as defined by .NET and Mono + + + + + Get the OSPlatform under which we are currently running + + + + + Gets the actual OS Version, not the incorrect value that might be + returned for Win 8.1 and Win 10 + + + If an application is not manifested as Windows 8.1 or Windows 10, + the version returned from Environment.OSVersion will not be 6.3 and 10.0 + respectively, but will be 6.2 and 6.3. The correct value can be found in + the registry. + + The original version + The correct OS version + + + + Product Type Enumeration used for Windows + + + + + Product type is unknown or unspecified + + + + + Product type is Workstation + + + + + Product type is Domain Controller + + + + + Product type is Server + + + + + Construct from a platform ID and version + + + + + Construct from a platform ID, version and product type + + + + + Get the platform ID of this instance + + + + + Get the Version of this instance + + + + + Get the Product Type of this instance + + + + + Return true if this is a windows platform + + + + + Return true if this is a Unix or Linux platform + + + + + Return true if the platform is Win32S + + + + + Return true if the platform is Win32Windows + + + + + Return true if the platform is Win32NT + + + + + Return true if the platform is Windows CE + + + + + Return true if the platform is Xbox + + + + + Return true if the platform is MacOSX + + + + + Return true if the platform is Windows 95 + + + + + Return true if the platform is Windows 98 + + + + + Return true if the platform is Windows ME + + + + + Return true if the platform is NT 3 + + + + + Return true if the platform is NT 4 + + + + + Return true if the platform is NT 5 + + + + + Return true if the platform is Windows 2000 + + + + + Return true if the platform is Windows XP + + + + + Return true if the platform is Windows 2003 Server + + + + + Return true if the platform is NT 6 + + + + + Return true if the platform is NT 6.0 + + + + + Return true if the platform is NT 6.1 + + + + + Return true if the platform is NT 6.2 + + + + + Return true if the platform is NT 6.3 + + + + + Return true if the platform is Vista + + + + + Return true if the platform is Windows 2008 Server (original or R2) + + + + + Return true if the platform is Windows 2008 Server (original) + + + + + Return true if the platform is Windows 2008 Server R2 + + + + + Return true if the platform is Windows 2012 Server (original or R2) + + + + + Return true if the platform is Windows 2012 Server (original) + + + + + Return true if the platform is Windows 2012 Server R2 + + + + + Return true if the platform is Windows 7 + + + + + Return true if the platform is Windows 8 + + + + + Return true if the platform is Windows 8.1 + + + + + Return true if the platform is Windows 10 + + + + + Return true if the platform is Windows Server. This is named Windows + Server 10 to distinguish it from previous versions of Windows Server. + + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + The expected result to be returned + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + The expected result of the test, which + must match the method return type. + + + + + Gets a value indicating whether an expected result was specified. + + + + + PlatformHelper class is used by the PlatformAttribute class to + determine whether a platform is supported. + + + + + Comma-delimited list of all supported OS platform constants + + + + + Comma-delimited list of all supported Runtime platform constants + + + + + Default constructor uses the operating system and + common language runtime of the system. + + + + + Construct a PlatformHelper for a particular operating + system and common language runtime. Used in testing. + + RuntimeFramework to be used + OperatingSystem to be used + + + + Test to determine if one of a collection of platforms + is being used currently. + + + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Test to determine if the a particular platform or comma- + delimited set of platforms is in use. + + Name of the platform or comma-separated list of platform ids + True if the platform is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + A PropertyBag represents a collection of name value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + + + + Adds a key/value pair to the property set + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + + True if their are _values present, otherwise false + + + + + Gets a collection containing all the keys in the property set + + + + + + Gets or sets the list of _values for a particular key + + + + + Returns an XmlNode representing the current PropertyBag. + + Not used + An XmlNode representing the PropertyBag + + + + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + + The parent node. + Not used + + + + + Helper methods for inspecting a type by reflection. + + Many of these methods take ICustomAttributeProvider as an + argument to avoid duplication, even though certain attributes can + only appear on specific types of members, like MethodInfo or Type. + + In the case where a type is being examined for the presence of + an attribute, interface or named member, the Reflect methods + operate with the full name of the member being sought. This + removes the necessity of the caller having a reference to the + assembly that defines the item being sought and allows the + NUnit core to inspect assemblies that reference an older + version of the NUnit framework. + + + + + Examine a fixture type and return an array of methods having a + particular attribute. The array is order with base methods first. + + The type to examine + The attribute Type to look for + Specifies whether to search the fixture type inheritance chain + The array of methods found + + + + Examine a fixture type and return true if it has a method with + a particular attribute. + + The type to examine + The attribute Type to look for + True if found, otherwise false + + + + Invoke the default constructor on a Type + + The Type to be constructed + An instance of the Type + + + + Invoke a constructor on a Type with arguments + + The Type to be constructed + Arguments to the constructor + An instance of the Type + + + + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() + + An array of objects + An array of Types + + + + Invoke a parameterless method returning void on an object. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + + + + Invoke a method, converting any TargetInvocationException to an NUnitException. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The TestResult class represents the result of a test. + + + + + Error message for when child tests have errors + + + + + Error message for when child tests have warnings + + + + + Error message for when child tests are ignored + + + + + The minimum duration for tests + + + + + Aggregate assertion count + + + + + ReaderWriterLock + + + + + Construct a test result given a Test + + The test to be used + + + + Gets the test with which this result is associated. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets or sets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Adds a test attachment to the test result + + The TestAttachment object to attach + + + + Gets the collection of files attached to the test + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets or sets the count of asserts executed + when running the test. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Gets a TextWriter, which will write output to be included in the result. + + + + + Gets any text output written to this result. + + + + + Gets a list of assertion results associated with the test. + + + + + Returns the Xml representation of the result. + + If true, descendant results are included + An XmlNode representing the result + + + + Adds the XML representation of the result as a child of the + supplied parent node.. + + The parent node. + If true, descendant results are included + + + + + Gets a count of pending failures (from Multiple Assert) + + + + + Gets the worst assertion status (highest enum) in all the assertion results + + + + + Set the result of the test + + The ResultState to use in the result + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + Stack trace giving the location of the command + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + The FailureSite to use in the result + + + + RecordTearDownException appends the message and stacktrace + from an exception arising during teardown of the test + to any previously recorded information, so that any + earlier failure information is not lost. Note that + calling Assert.Ignore, Assert.Inconclusive, etc. during + teardown is treated as an error. If the current result + represents a suite, it may show a teardown error even + though all contained tests passed. + + The Exception to be recorded + + + + Determine result after test has run to completion. + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Adds a reason element to a node and returns it. + + The target node. + The new reason element. + + + + Adds a failure element to a node and returns it. + + The target node. + The new failure element. + + + + Adds an attachments element to a node and returns it. + + The target node. + The new attachments element. + + + + Creates a failure message incorporating failures + from a Multiple Assert block for use by runners + that don't know about AssertionResults. + + Message as a string + + + + Enumeration identifying a common language + runtime implementation. + + + + Any supported runtime framework + + + Microsoft .NET Framework + + + Microsoft Shared Source CLI + + + Mono + + + MonoTouch + + + + RuntimeFramework represents a particular version + of a common language runtime implementation. + + + + + DefaultVersion is an empty Version, used to indicate that + NUnit should select the CLR version to use for the test. + + + + + Construct from a runtime type and version. If the version has + two parts, it is taken as a framework version. If it has three + or more, it is taken as a CLR version. In either case, the other + version is deduced based on the runtime type and provided version. + + The runtime type of the framework + The version of the framework + + + + Static method to return a RuntimeFramework object + for the framework that is currently in use. + + + + + The type of this runtime framework + + + + + The framework version for this runtime framework + + + + + The CLR version for this runtime framework + + + + + Return true if any CLR version may be used in + matching this RuntimeFramework object. + + + + + Returns the Display name for this framework + + + + + Parses a string representing a RuntimeFramework. + The string may be just a RuntimeType name or just + a Version or a hyphenated RuntimeType-Version or + a Version prefixed by 'versionString'. + + + + + + + Overridden to return the short name of the framework + + + + + + Returns true if the current framework matches the + one supplied as an argument. Two frameworks match + if their runtime types are the same or either one + is RuntimeType.Any and all specified version components + are equal. Negative (i.e. unspecified) version + components are ignored. + + The RuntimeFramework to be matched. + True on match, otherwise false + + + + Helper class used to save and restore certain static or + singleton settings in the environment that affect tests + or which might be changed by the user tests. + + + + + Link to a prior saved context + + + + + Indicates that a stop has been requested + + + + + The event listener currently receiving notifications + + + + + The number of assertions for the current test + + + + + The current culture + + + + + The current UI culture + + + + + The current test result + + + + + The current Principal. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + An existing instance of TestExecutionContext. + + + + Gets and sets the current context. + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current test event listener + + + + + The current WorkItemDispatcher. Made public for + use by nunitlite.tests + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + Default tolerance value used for floating point equality + when no other tolerance is specified. + + + + + The worker that spawned the context. + For builds without the parallel feature, it is null. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets the assert count. + + The assert count. + + + + The current nesting level of multiple assert blocks + + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + Gets or sets the current for the Thread. + + + + + The current head of the ValueFormatter chain, copied from MsgUtils.ValueFormatter + + + + + If true, all tests must run on the same thread. No new thread may be spawned. + + + + + Record any changes in the environment made by + the test code in the execution context so it + will be passed on to lower level tests. + + + + + Set up the execution environment to match a context. + Note that we may be running on the same thread where the + context was initially created or on a different thread. + + + + + Increments the assert count by one. + + + + + Increments the assert count by a specified amount. + + + + + Adds a new ValueFormatterFactory to the chain of formatters + + The new factory + + + + Obtain lifetime service object + + + + + + An IsolatedContext is used when running code + that may effect the current result in ways that + should not impact the final result of the test. + A new TestExecutionContext is created with an + initially clear result, which is discarded on + exiting the context. + + + using (new TestExecutionContext.IsolatedContext()) + { + // Code that should not impact the result + } + + + + + Save the original current TestExecutionContext and + make a new isolated context current. + + + + + Restore the original TestExecutionContext. + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Unique Empty filter. + + + + + Indicates whether this is the EmptyFilter + + + + + Indicates whether this is a top-level filter, + not contained in any other filter. + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Determine whether the test itself matches the filter criteria, without + examining either parents or descendants. This is overridden by each + different type of filter to perform the necessary tests. + + The test to which the filter is applied + True if the filter matches the any parent of the test + + + + Determine whether any ancestor of the test matches the filter criteria + + The test to which the filter is applied + True if the filter matches the an ancestor of the test + + + + Determine whether any descendant of the test matches the filter criteria. + + The test to be matched + True if at least one descendant matches the filter criteria + + + + Create a TestFilter instance from an xml representation. + + + + + Create a TestFilter from it's TNode representation + + + + + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. + + + + + Adds an XML node + + True if recursive + The added XML node + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test case has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Construct a new TestListener - private so it may not be used. + + + + + Get a listener that does nothing + + + + + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. + + + + + Initializes a new instance of the class. + + The callback handler to be used for reporting progress. + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished. Sends a result summary to the callback. + to + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Returns the parent test item for the targer test item if it exists + + + parent test item + + + + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. + + The string to be used + A new string with the _values replaced + + + + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. + + + + + Initializes a new instance of the class. + + The ITypeInfo for the type that represents the suite. + + + + Gets a string representing the type of test + + + + + + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. + + + + + Construct from a MethodInfo + + + + + + Gets a string representing the type of test + + + + + + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. + + + + + Initializes a new instance of the class. + + The type. + + + + The Test abstract class represents a test within the framework. + + + + + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. + + + + + Used to cache the declaring type for this MethodInfo + + + + + Method property backing field + + + + + Constructs a test given its name + + The name of the test + + + + Constructs a test given the path through the + test hierarchy to its parent and a name. + + The parent tests full name + The name of the test + + + + TODO: Documentation needed for constructor + + + + + + Construct a test from a MethodInfo + + + + + + Gets or sets the id of the test + + + + + + Gets or sets the name of the test + + + + + Gets or sets the fully qualified name of the test + + + + + + Gets the name of the class where this test was declared. + Returns null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + The arguments to use in creating the test or empty array if none required. + + + + + Gets the TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. + + + + + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Whether or not the test should be run + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Gets a string representing the type of test. Used as an attribute + value in the XML representation of a test and has no other + function in the framework. + + + + + Gets a count of test cases represented by + or contained under this test. + + + + + Gets the properties for this test + + + + + Returns true if this is a TestSuite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the parent as a Test object. + Used by the core to set the parent. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets or sets a fixture object for running this test. + + + + + Static prefix used for ids in this AppDomain. + Set by FrameworkController. + + + + + Gets or Sets the Int value representing the seed for the RandomGenerator + + + + + + The SetUp methods. + + + + + The teardown methods + + + + + Creates a TestResult for this test. + + A TestResult suitable for this type of test. + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object implementing ICustomAttributeProvider + + + + Mark the test as Invalid (not runnable) specifying a reason + + The reason the test is not runnable + + + + Get custom attributes applied to a test + + + + + Add standard attributes and members to a test node. + + + + + + + Returns the Xml representation of the test + + If true, include child tests recursively + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Compares this test to another test for sorting purposes + + The other test + Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test + + + + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. + + + + + Initializes a new instance of the class + specifying the Assembly and the path from which it was loaded. + + The assembly this test represents. + The path used to load the assembly. + + + + Initializes a new instance of the class + for a path which could not be loaded. + + The path used to load the assembly. + + + + Copy-constructor style to create a filtered copy of the test assemblies + test cases + + + + + + + Gets the Assembly represented by this instance. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Get custom attributes specified on the assembly + + + + + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. + + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used + + + + The TestMethod class represents a Test implemented as a method. + + + + + The ParameterSet used to create this test method + + + + + Initializes a new instance of the class. + + The method to be used as a test. + + + + Initializes a new instance of the class. + + The method to be used as a test. + The suite or fixture to which the new test will be added + + + + The arguments to use in executing the test method, or empty array if none are provided. + + + + + Overridden to return a TestCaseResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Returns a TNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Gets this test's child tests + + A list of child tests + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns the name of the method + + + + + TestSuite represents a composite test, which contains other tests. + + + + + Our collection of child tests + + + + + Initializes a new instance of the class. + + The name of the suite. + + + + Initializes a new instance of the class. + + Name of the parent suite. + The name of the suite. + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Copy constructor style to create a filtered copy of the given test suite + + Test Suite to copy + Filter to be applied + + + + Sorts tests under this suite. + + + + + Adds a test to the suite. + + The test. + + + + Gets this test's child tests + + The list of child tests + + + + Gets a count of test cases represented by + or contained under this test. + + + + + + The arguments to use in creating the fixture, or empty array if none are provided. + + + + + Set to true to suppress sorting this suite's contents + + + + + OneTimeSetUp methods for this suite + + + + + OneTimeTearDown methods for this suite + + + + + Overridden to return a TestSuiteResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. + + A list of methodinfos to check + + + + ThreadUtility provides a set of static methods convenient + for working with threads. + + + + + Pre-Task compatibility + + + + + Abort a thread, helping to dislodging it if it is blocked in native code + + The thread to abort + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Do our best to kill a thread + + The thread to kill + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Do our best to kill a thread, passing state info + + The thread to kill + Info for the ThreadAbortException handler + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Schedule a threadpool thread to check on the aborting thread in case it's in a message pump native blocking wait + + + + + Captures the current thread's native id. If provided to later, allows the thread to be killed if it's in a message pump native blocking wait. + + + + + Sends a message to the thread to dislodge it from native code and allow a return to managed code, where a ThreadAbortException can be generated. + The message is meaningless (WM_CLOSE without a window handle) but it will end any blocking message wait. + + + + + TypeHelper provides static methods that operate on Types. + + + + + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. + + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The display name for the Type + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The arglist provided. + The display name for the Type + + + + Returns the best fit for a common type to be used in + matching actual arguments to a methods Type parameters. + + The first type. + The second type. + Either type1 or type2, depending on which is more general. + + + + Determines whether the specified type is numeric. + + The type to be examined. + + true if the specified type is numeric; otherwise, false. + + + + + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. + + An array of args to be converted + A ParameterInfo[] whose types will be used as targets + + + + Determines whether this instance can deduce type args for a generic type from the supplied arguments. + + The type to be examined. + The arglist. + The type args to be used. + + true if this the provided args give sufficient information to determine the type args to be used; otherwise, false. + + + + + Return the interfaces implemented by a Type. + + The Type to be examined. + An array of Types for the interfaces. + + + + Represents the result of running a single test case. + + + + + Construct a TestCaseResult based on a TestMethod + + A TestMethod to which the result applies. + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Represents the result of running a test suite + + + + + Construct a TestSuiteResult base on a TestSuite + + The TestSuite to which the result applies + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. + + The result to be added + + + + The TestFixtureData class represents a set of arguments + and other parameter info to be used for a parameterized + fixture. It is derived from TestFixtureParameters and adds a + fluent syntax for use in initializing the fixture. + + + + + 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. + + + + Marks the test fixture as explicit. + + + + + Marks the test fixture as explicit, specifying the reason. + + + + + Ignores this TestFixture, specifying the reason. + + The reason. + + + + + Asserts on Directories + + + + + DO NOT USE! Use DirectoryAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + 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 the 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 point to the same directory. + If they are not 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 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 + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + 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 the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to 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 the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + 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 the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to 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 the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 regular expression supplied as an argument. + + + + + Abstract base for Exceptions that terminate a test and provide a ResultState. + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter names in making asserts. + + + + + 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 + + + + 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. + + 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 + + + + 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 + + + + 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 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 + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 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 regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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. + + + + + 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. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + 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 + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + 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 + + + + + Modifies a test by adding a category to it. + + The test to modify + + + + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. + + + + + Default constructor + + + + + 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 + + + + Causes a test to be skipped if this CultureAttribute is not satisfied. + + The test to modify + + + + Tests to determine if the current culture is supported + based on the properties of this attribute. + + True, if the current culture is supported + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. + + + + + Default constructor + + + + + 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 a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointSourceAttribute. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointsAttribute. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct a description Attribute + + The text of the description + + + + 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 + + + + Modifies a test by marking it as explicit. + + The test to modify + + + + 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 giving a reason for ignoring the test + + The reason for ignoring the test + + + + The date in the future to stop ignoring the test as a string in UTC time. + For example for a date and time, "2014-12-25 08:10:00Z" or for just a date, + "2014-12-25". If just a date is given, the Ignore will expire at midnight UTC. + + + Once the ignore until date has passed, the test will be marked + as runnable. Tests with an ignore until date will have an IgnoreUntilDate + property set which will appear in the test results. + + The string does not contain a valid string representation of a date and time. + + + + Modifies a test by marking it as Ignored. + + The test to modify + + + + 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 items 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 + + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + The abstract base class for all custom attributes defined by NUnit. + + + + + Default constructor + + + + + Marks a test to use a pairwise join of any argument + data provided. Arguments will be combined in such a + way that all possible pairs of arguments are used. + + + + + Default constructor + + + + + 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-delimited list of platforms + + + + Causes a test to be skipped if this PlatformAttribute is not satisfied. + + The test to modify + + + + 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 + + + + + Modifies a test by adding properties to it. + + The test to modify + + + + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. + + + + + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + + + + + + Construct a set of ints within a specified range + + + + + Construct a set of unsigned ints within a specified range + + + + + Construct a set of longs within a specified range + + + + + Construct a set of unsigned longs within a specified range + + + + + Construct a set of shorts within a specified range + + + + + Construct a set of unsigned shorts within a specified range + + + + + Construct a set of doubles within a specified range + + + + + Construct a set of floats within a specified range + + + + + Construct a set of bytes within a specified range + + + + + Construct a set of sbytes within a specified range + + + + + 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 unsigned ints using default step of 1 + + + + + + + Construct a range of unsigned ints specifying the step size + + + + + + + + Construct a range of longs using a default step of 1 + + + + + + + Construct a range of longs + + + + + + + + Construct a range of unsigned longs using default step of 1 + + + + + + + Construct a range of unsigned longs specifying the step size + + + + + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RepeatAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + 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 in the STA, causing it + to run in a separate thread if necessary. + + + + + Construct a RequiresSTAAttribute + + + + + Marks a test that must run on a separate thread. + + + + + Construct a RequiresThreadAttribute + + + + + Construct a RequiresThreadAttribute, specifying the apartment + + + + + Marks a test to use a Sequential join of any argument + data provided. Arguments will be combined into test cases, + taking the next value of each argument until all are used. + + + + + Default constructor + + + + + 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 identify a method that is called + immediately before each test is run. + + + + + Attribute used to identify a class that contains + or + methods for all the test fixtures under a given namespace. + + + + + Build a SetUpFixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A SetUpFixture object as a TestSuite. + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + The author of this test + + + + + The type that this test is testing + + + + + Modifies a test by adding a description, if not already set. + + The test to modify + + + + Gets or sets the expected result. + + The result. + + + + Returns true if an expected result has been set + + + + + Construct a TestMethod from a given method. + + The method for which a test is to be constructed. + The suite to which the test will be added. + A TestMethod + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + 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 or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test case. + + + + + Gets the list of arguments to a test case + + + + + Gets the properties of the test case + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if the expected result has been set + + + + + Gets or sets the description. + + The description. + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the reason for ignoring the test + + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets or sets the reason for not running the test. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Comma-delimited list of platforms to run the test for + + + + + Comma-delimited list of platforms to not run the test for + + + + + Gets and sets the category for this test case. + May be a comma-separated list of categories. + + + + + Performs several special conversions allowed by NUnit in order to + permit arguments with types that cannot be used in the constructor + of an Attribute such as TestCaseAttribute or to simplify their use. + + The arguments to be converted + The ParameterInfo array for the method + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a name + + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type + + The type that will provide data + + + + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + + The method for which data is needed. + + + + + TestFixtureAttribute is used to mark a class that represents a TestFixture. + + + + + 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. + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test fixture. + + + + + The arguments originally provided to the attribute + + + + + Properties pertaining to this fixture + + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Descriptive text for this fixture + + + + + The author of this fixture + + + + + The type that this fixture is testing + + + + + Gets or sets the ignore reason. May set RunState as a side effect. + + The ignore reason. + + + + Gets or sets the reason for not running the fixture. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Build a fixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A an IEnumerable holding one TestFixture object. + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Construct the attribute, specifying a combining strategy and source of parameter data. + + + + + Used 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 class or assembly, sets the default timeout + for all contained test methods. + + + + + Construct a TimeoutAttribute given a time in milliseconds + + The timeout value in milliseconds + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + 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 + + + + + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. + + + + + 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 + + + + + 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 a static method, property or field 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 a static 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 + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + + An enumeration containing individual data items + + + + + A set of Assert methods operating on one or more collections + + + + + DO NOT USE! Use CollectionAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + 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 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 + 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 + 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 + 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 + 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 + 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 + 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 + Arguments to be used in formatting the message + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset does not contain the superset + + 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 the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset contains the superset. + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. + + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Asserts on Files + + + + + DO NOT USE! Use FileAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 regular expression 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 a subpath of the 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 + inclusively within a specified range. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + + 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 + + + + + Basic Asserts on strings. + + + + + DO NOT USE! Use StringAssert.AreEqualIgnoringCase(...) or Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 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 + + + + 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 TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the 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 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 + + + + + + + + Marks the test case as explicit. + + + + + Marks the test case as explicit, specifying the reason. + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Provide the context information of the current test. + This is an adapter for the internal ExecutionContext + class, hiding the internals from the user test. + + + + + Construct a TestContext for an ExecutionContext + + The ExecutionContext to adapt + + + + 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 TextWriter that will send output to the current test result. + + + + + Gets a TextWriter that will send output directly to Console.Error + + + + + Gets a TextWriter for use in displaying immediate progress messages + + + + + TestParameters object holds parameters for the test run, if any are specified + + + + + Static DefaultWorkDirectory is now used as the source + of the public instance property WorkDirectory. This is + a bit odd but necessary to avoid breaking user tests. + + + + + Get a representation of the current test. + + + + + Gets a Representation of the TestResult for the current test. + + + + + Gets the unique name of the Worker that is executing this test. + + + + + Gets the directory containing the current test assembly. + + + + + Gets the directory to be used for outputting files created + by this test run. + + + + + Gets the random generator. + + + The random generator. + + + + Write the string representation of a boolean value to the current result + + + Write a char to the current result + + + Write a char array to the current result + + + Write the string representation of a double to the current result + + + Write the string representation of an Int32 value to the current result + + + Write the string representation of an Int64 value to the current result + + + Write the string representation of a decimal value to the current result + + + Write the string representation of an object to the current result + + + Write the string representation of a Single value to the current result + + + Write a string to the current result + + + Write the string representation of a UInt32 value to the current result + + + Write the string representation of a UInt64 value to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a line terminator to the current result + + + Write the string representation of a boolean value to the current result followed by a line terminator + + + Write a char to the current result followed by a line terminator + + + Write a char array to the current result followed by a line terminator + + + Write the string representation of a double to the current result followed by a line terminator + + + Write the string representation of an Int32 value to the current result followed by a line terminator + + + Write the string representation of an Int64 value to the current result followed by a line terminator + + + Write the string representation of a decimal value to the current result followed by a line terminator + + + Write the string representation of an object to the current result followed by a line terminator + + + Write the string representation of a Single value to the current result followed by a line terminator + + + Write a string to the current result followed by a line terminator + + + Write the string representation of a UInt32 value to the current result followed by a line terminator + + + Write the string representation of a UInt64 value to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + + This method adds the a new ValueFormatterFactory to the + chain of responsibility used for formatting values in messages. + The scope of the change is the current TestContext. + + The factory delegate + + + + Attach a file to the current test result + + Relative or absolute file path to attachment + Optional description of attachment + + + + This method provides a simplified way to add a ValueFormatter + delegate to the chain of responsibility, creating the factory + delegate internally. It is useful when the Type of the object + is the only criterion for selection of the formatter, since + it can be used without getting involved with a compound function. + + The type supported by this formatter + The ValueFormatter delegate + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Construct a TestAdapter for a Test + + The Test to be adapted + + + + Gets the unique Id of a test + + + + + The name of the test, which may or may not be + the same as the method name. + + + + + The name of the method representing the test. + + + + + The FullName of the test + + + + + The ClassName of the test + + + + + The properties of the test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a TestResult + + The TestResult to be adapted + + + + Gets a ResultState representing the outcome of the test. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + TestParameters class holds any named parameters supplied to the test run + + + + + Gets the number of test parameters + + + + + Gets a collection of the test parameter names + + + + + Gets a flag indicating whether a parameter with the specified name exists. + + Name of the parameter + True if it exists, otherwise false + + + + Indexer provides access to the internal dictionary + + Name of the parameter + Value of the parameter or null if not present + + + + Get method is a simple alternative to the indexer + + Name of the parameter + Value of the parameter or null if not present + + + + Get the value of a parameter or a default string + + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Get the value of a parameter or return a default + + The return Type + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Adds a parameter to the list + + Name of the parameter + Value of the parameter + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + 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 ArgumentException + + + + + Creates a constraint specifying an expected ArgumentNullException + + + + + Creates a constraint specifying an expected InvalidOperationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + 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 + + + + + Provides static methods to express conditions + that must be met for the test to succeed. If + any test fails, a warning is issued. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + 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 an actual value, succeeding if the constraint + fails and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + The message to display if the condition is true + Arguments to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + FrameworkPackageSettings is a static class containing constant values that + are used as keys in setting up a TestPackage. These values are used in + the framework, and set in the runner. Setting values may be a string, int or bool. + + + + + Flag (bool) indicating whether tests are being debugged. + + + + + Flag (bool) indicating whether to pause execution of tests to allow + the user to attach a debugger. + + + + + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. + + + + + Full path of the directory to be used for work and result files. + This path is provided to tests by the framework TestContext. + + + + + Integer value in milliseconds for the default timeout value + for test cases. If not specified, there is no timeout except + as specified by attributes on the tests themselves. + + + + + A TextWriter to which the internal trace will be sent. + + + + + A list of tests to be loaded. + + + + + The number of test threads to run for the assembly. If set to + 1, a single queue is used. If set to 0, tests are executed + directly, without queuing. + + + + + The random seed to be used for this assembly. If specified + as the value reported from a prior run, the framework should + generate identical random values for tests as were used for + that run, provided that no change has been made to the test + assembly. Default is a random value itself. + + + + + If true, execution stops after the first error or failure. + + + + + If true, use of the event queue is suppressed and test events are synchronous. + + + + + The default naming pattern used in generating test names + + + + + Parameters to be passed on to the tests, serialized to a single string which needs parsing. Obsoleted by ; kept for backward compatibility. + + + + + Parameters to be passed on to the tests, already parsed into an IDictionary<string, string>. Replaces . + + + + + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. + + + + + Gets the custom attributes from the given object. + + .NET Standard 1.3 libraries do not have an ICustomAttributeProvider, so we need to cast to each of + it's direct subtypes and try to get attributes off those instead. + The actual. + Type of the attribute. + if set to true [inherit]. + A list of the given attribute on the given object. + + + + A MarshalByRefObject that lives forever + + + + + Obtains a lifetime service object to control the lifetime policy for this instance. + + + + + Provides NUnit specific extensions to aid in Reflection + across multiple frameworks + + + This version of the class supplies GetTypeInfo() on platforms + that don't support it. + + + + + GetTypeInfo gives access to most of the Type information we take for granted + on .NET Core and Windows Runtime. Rather than #ifdef different code for different + platforms, it is easiest to just code all platforms as if they worked this way, + thus the simple passthrough. + + + + + + + Extensions for Assembly that are not available in pre-4.5 .NET releases + + + + + An easy way to get a single custom attribute from an assembly + + The attribute Type + The assembly + An attribute of Type T + + + + Type extensions that apply to all target frameworks + + + + + Determines if the given array is castable/matches the array. + + + + + + + + Determines if one type can be implicitly converted from another + + + + + + + + This class is used as a flag when we get a parameter list for a method/constructor, but + we do not know one of the types because null was passed in. + + + + + Represents a thread-safe first-in, first-out collection of objects. + + Specifies the type of elements in the queue. + + All public and protected members of are thread-safe and may be used + concurrently from multiple threads. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class that contains elements copied from the specified collection + + The collection whose elements are copied to the new . + The argument is + null. + + + + Adds an object to the end of the . + + The object to add to the end of the . The value can be a null reference + (Nothing in Visual Basic) for reference types. + + + + + Attempts to add an object to the . + + The object to add to the . The value can be a null + reference (Nothing in Visual Basic) for reference types. + + true if the object was added successfully; otherwise, false. + For , this operation will always add the object to the + end of the + and return true. + + + + Attempts to remove and return the object at the beginning of the . + + + When this method returns, if the operation was successful, contains the + object removed. If no object was available to be removed, the value is unspecified. + + true if an element was removed and returned from the beginning of the + successfully; otherwise, false. + + + + Attempts to return an object from the beginning of the + without removing it. + + When this method returns, contains an object from + the beginning of the or an + unspecified value if the operation failed. + true if and object was returned successfully; otherwise, false. + + + + Returns an enumerator that iterates through a collection. + + An that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through the . + + An enumerator for the contents of the . + + The enumeration represents a moment-in-time snapshot of the contents + of the queue. It does not reflect any updates to the collection after + was called. The enumerator is safe to use + concurrently with reads from and writes to the queue. + + + + + Copies the elements of the to an , starting at a particular + index. + + The one-dimensional Array that is the + destination of the elements copied from the + . The Array must have zero-based indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + + is multidimensional. -or- + does not have zero-based indexing. -or- + is equal to or greater than the length of the + -or- The number of elements in the source is + greater than the available space from to the end of the destination + . -or- The type of the source cannot be cast automatically to the type of the + destination . + + + + + Copies the elements to an existing one-dimensional Array, starting at the specified array index. + + The one-dimensional Array that is the + destination of the elements copied from the + . The Array must have zero-based + indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + is equal to or greater than the + length of the + -or- The number of elements in the source is greater than the + available space from to the end of the destination . + + + + + Copies the elements stored in the to a new array. + + A new array containing a snapshot of elements copied from the . + + + + Gets a value indicating whether access to the is + synchronized with the SyncRoot. + + true if access to the is synchronized + with the SyncRoot; otherwise, false. For , this property always + returns false. + + + + Attempts to remove and return an object from the . + + + When this method returns, if the operation was successful, contains the + object removed. If no object was available to be removed, the value is unspecified. + + true if an element was removed and returned successfully; otherwise, false. + For , this operation will attempt to remove the object + from the beginning of the . + + + + + Gets an object that can be used to synchronize access to the . This property is not supported. + + The SyncRoot property is not supported. + + + + Gets the number of elements contained in the . + + The number of elements contained in the . + + For determining whether the collection contains any items, use of the + property is recommended rather than retrieving the number of items from the + property and comparing it to 0. + + + + + Gets a value that indicates whether the is empty. + + true if the is empty; otherwise, false. + + For determining whether the collection contains any items, use of this property is recommended + rather than retrieving the number of items from the property and comparing it + to 0. However, as this collection is intended to be accessed concurrently, it may be the case + that another thread will modify the collection after returns, thus invalidating + the result. + + + + + Defines methods to manipulate thread-safe collections intended for producer/consumer usage. + + Specifies the type of elements in the collection. + + All implementations of this interface must enable all members of this interface + to be used concurrently from multiple threads. + + + + + Attempts to add an object to the . + + The object to add to the . + true if the object was added successfully; otherwise, false. + The was invalid for this collection. + + + + Attempts to remove and return an object from the . + + + When this method returns, if the object was removed and returned successfully, contains the removed object. If no object was available to be removed, the value is + unspecified. + + true if an object was removed and returned successfully; otherwise, false. + + + + Copies the elements contained in the to a new array. + + A new array containing the elements copied from the . + + + + Copies the elements of the to + an + , starting at a specified index. + + The one-dimensional that is the destination of + the elements copied from the . + The array must have zero-based indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + is equal to or greater than the + length of the + -or- The number of elements in the source is greater than the + available space from to the end of the destination . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/csharp/packages/NUnit.3.7.1/lib/net40/nunit.framework.dll b/csharp/packages/NUnit.3.7.1/lib/net40/nunit.framework.dll new file mode 100644 index 0000000000000000000000000000000000000000..fb653bafb31c7b711b5a6ded6673045d1b680214 GIT binary patch literal 332800 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 + + + nunit.framework + + + +

    + The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. + + + + + The default suite builder used by the test assembly builder. + + + + + Initializes a new instance of the class. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + FrameworkController provides a facade for use in loading, browsing + and running tests without requiring a reference to the NUnit + framework. All calls are encapsulated in constructors for + this class and its nested classes, which only require the + types of the Common Type System as arguments. + + The controller supports four actions: Load, Explore, Count and Run. + They are intended to be called by a driver, which should allow for + proper sequencing of calls. Load must be called before any of the + other actions. The driver may support other actions, such as + reload on run, by combining these calls. + + + + + Construct a FrameworkController using the default builder and runner. + + The AssemblyName or path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController using the default builder and runner. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The full AssemblyName or the path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Gets the ITestAssemblyBuilder used by this controller instance. + + The builder. + + + + Gets the ITestAssemblyRunner used by this controller instance. + + The runner. + + + + Gets the AssemblyName or the path for which this FrameworkController was created + + + + + Gets the Assembly for which this + + + + + Gets a dictionary of settings for the FrameworkController + + + + + Loads the tests in the assembly + + + + + + Returns info about the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of exploring the tests + + + + Runs the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Runs the tests in an assembly synchronously reporting back the test results through the callback + or through the return value + + The callback that receives the test results + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Runs the tests in an assembly asynchronously reporting back the test results through the callback + + The callback that receives the test results + A string containing the XML representation of the filter to use + + + + Stops the test run + + True to force the stop, false for a cooperative stop + + + + Counts the number of test cases in the loaded TestSuite + + A string containing the XML representation of the filter to use + The number of tests + + + + Inserts environment element + + Target node + The new node + + + + Inserts settings element + + Target node + Settings dictionary + The new node + + + + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. + + + + + LoadTestsAction loads a test into the FrameworkController + + + + + LoadTestsAction loads the tests in an assembly. + + The controller. + The callback handler. + + + + ExploreTestsAction returns info about the tests in an assembly + + + + + Initializes a new instance of the class. + + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. + + + + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. + + + + + Construct a CountsTestAction and perform the count of test cases. + + A FrameworkController holding the TestSuite whose cases are to be counted + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunTestsAction runs the loaded TestSuite held by the FrameworkController. + + + + + Construct a RunTestsAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunAsyncAction initiates an asynchronous test run, returning immediately + + + + + Construct a RunAsyncAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + StopRunAction stops an ongoing run. + + + + + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. + + The FrameworkController for which a run is to be stopped. + True the stop should be forced, false for a cooperative stop. + >A callback handler used to report results + A forced stop will cause threads and processes to be killed as needed. + + + + The ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + The ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. + + + + + Gets the tree of loaded tests, or null if + no tests have been loaded. + + + + + Gets the tree of test results, if the test + run is completed, otherwise null. + + + + + Indicates whether a test has been loaded + + + + + Indicates whether a test is currently running + + + + + Indicates whether a test run is complete + + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + File name of the assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive ITestListener notifications. + A test filter used to select tests to be run + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Implementation of ITestAssemblyRunner + + + + + Initializes a new instance of the class. + + The builder. + + + + Gets the default level of parallel execution (worker threads) + + + + + The tree of tests that was loaded by the builder + + + + + The test result, if a run has completed + + + + + Indicates whether a test is loaded + + + + + Indicates whether a test is running + + + + + Indicates whether a test run is complete + + + + + Our settings, specified when loading the assembly + + + + + The top level WorkItem created for the assembly as a whole + + + + + The TestExecutionContext for the top level WorkItem + + + + + Loads the tests found in an Assembly + + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Loads the tests found in an Assembly + + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + RunAsync is a template method, calling various abstract and + virtual methods to be overridden by derived classes. + + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any tests that are currently running + + + + Initiate the test run. + + + + + Create the initial TestExecutionContext used to run tests + + The ITestListener specified in the RunAsync call + + + + Handle the the Completed event for the top level work item + + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + Verifies that the first int is greater than the second + int. 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 int is greater than the second + int. 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Verifies that the first value is greater than or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that an int is zero. + + The number to be examined + + + + Asserts that an int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is zero. + + The number to be examined + + + + Asserts that an unsigned int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is zero. + + The number to be examined + + + + Asserts that a Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is zero. + + The number to be examined + + + + Asserts that an unsigned Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is not zero. + + The number to be examined + + + + Asserts that an int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is not zero. + + The number to be examined + + + + Asserts that an unsigned int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is not zero. + + The number to be examined + + + + Asserts that a Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is positive. + + The number to be examined + + + + Asserts that an int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is positive. + + The number to be examined + + + + Asserts that an unsigned int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is positive. + + The number to be examined + + + + Asserts that a Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is positive. + + The number to be examined + + + + Asserts that an unsigned Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is positive. + + The number to be examined + + + + Asserts that a decimal is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is positive. + + The number to be examined + + + + Asserts that a double is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is positive. + + The number to be examined + + + + Asserts that a float is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is negative. + + The number to be examined + + + + Asserts that an int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is negative. + + The number to be examined + + + + Asserts that an unsigned int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is negative. + + The number to be examined + + + + Asserts that a Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is negative. + + The number to be examined + + + + Asserts that an unsigned Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is negative. + + The number to be examined + + + + Asserts that a decimal is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is negative. + + The number to be examined + + + + Asserts that a double is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is negative. + + The number to be examined + + + + Asserts that a float is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + 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. + + + + + DO NOT USE! Use Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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. + + + + + Issues a warning using the message and arguments provided. + + The message to display. + Arguments to be used in formatting the message + + + + Issues a warning using the message provided. + + The message to display. + + + + 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. + + + + + Asserts that an object is contained in a collection. + + The expected object + The collection 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 collection. + + The expected object + The collection to be examined + + + + Wraps code containing a series of assertions, which should all + be executed, even if they fail. Failed results are saved and + reported at the end of the code block. + + A TestDelegate to be executed in Multiple Assertion mode. + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Verifies that an async 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 an async delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that an async delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + + + + Verifies that an async delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + + + + Verifies that an async 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 an async delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that an async 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 an async 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 an async delegate throws an exception of a certain Type + or one derived from it 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 an async delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that an async delegate does not throw an exception + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate does not throw an exception. + + A TestDelegate + + + + 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 + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + 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 TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + 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 TestDelegate + + + + 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 + + + + 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 + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it 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 of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + 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 TestDelegate + + + + 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 + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + 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 + + + + 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 + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + 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 function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments 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 + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + Delegate used by tests that execute async code and + capture any thrown exception. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter names in making asserts. + + + + + 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 + + + + 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. + + 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 + + + + 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 + + + + 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 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 + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 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 regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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. + + + + + 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. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + 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 + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + Marks a test that must run in a particular threading apartment state, causing it + to run in a separate thread if necessary. + + + + + Construct an ApartmentAttribute + + The apartment state that this test must be run under. You must pass in a valid apartment state. + + + + Provides the Author of a test or test fixture. + + + + + Initializes a new instance of the class. + + The name of the author. + + + + Initializes a new instance of the class. + + The name of the author. + The email address of the author. + + + + 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 + + + + + Modifies a test by adding a category to it. + + The test to modify + + + + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. + + + + + Default constructor + + + + + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. + + + + + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParameterDataProvider. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Modify the test by adding the name of the combining strategy + to the properties. + + The test to modify + + + + DefaultFloatingPointToleranceAttribute sets the tolerance used + by default when checking the equality of floating point values. + + + + + Construct specifying an amount + + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a NonParallelizableAttribute. + + + + + The NonTestAssemblyAttribute may be used by third-party frameworks + or other software that references the nunit framework but does not + contain tests. Applying the attribute indicates that the assembly + is not a test assembly and may prevent errors if certain runners + attempt to load the assembly. Note that recognition of the attribute + depends on each individual runner. + + + + + SingleThreadedAttribute applies to a test fixture and indicates + that all the child tests must be run on the same thread as the + OneTimeSetUp and OneTimeTearDown. It sets a flag in the + TestExecutionContext and forces all tests to be run sequentially + on the current thread. Any ParallelScope setting is ignored. + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + TestAssemblyDirectoryResolveAttribute is used to mark a test assembly as needing a + special assembly resolution hook that will explicitly search the test assembly's + directory for dependent assemblies. This works around a conflict between mixed-mode + assembly initialization and tests running in their own AppDomain in some cases. + + + + + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. + + + + + Construct a LevelOfParallelismAttribute. + + The number of worker threads to be created by the framework. + + + + Attribute used to identify a method that is called once + to perform setup before any child tests are run. + + + + + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RetryAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a ParallelizableAttribute using default ParallelScope.Self. + + + + + Construct a ParallelizableAttribute with a specified scope. + + The ParallelScope associated with this attribute. + + + + Overridden to check for invalid combinations of settings + + + + + + Modify the context to be used for child tests + + The current TestExecutionContext + + + + 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 + + + + Causes a test to be skipped if this CultureAttribute is not satisfied. + + The test to modify + + + + Tests to determine if the current culture is supported + based on the properties of this attribute. + + True, if the current culture is supported + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. + + + + + Default constructor + + + + + 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 a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointSourceAttribute. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointsAttribute. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct a description Attribute + + The text of the description + + + + 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 + + + + Modifies a test by marking it as explicit. + + The test to modify + + + + 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 giving a reason for ignoring the test + + The reason for ignoring the test + + + + The date in the future to stop ignoring the test as a string in UTC time. + For example for a date and time, "2014-12-25 08:10:00Z" or for just a date, + "2014-12-25". If just a date is given, the Ignore will expire at midnight UTC. + + + Once the ignore until date has passed, the test will be marked + as runnable. Tests with an ignore until date will have an IgnoreUntilDate + property set which will appear in the test results. + + The string does not contain a valid string representation of a date and time. + + + + Modifies a test by marking it as Ignored. + + The test to modify + + + + 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 items 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 + + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + The abstract base class for all custom attributes defined by NUnit. + + + + + Default constructor + + + + + Marks a test to use a pairwise join of any argument + data provided. Arguments will be combined in such a + way that all possible pairs of arguments are used. + + + + + Default constructor + + + + + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. + + + + + No ParallelScope was specified on the test + + + + + The test may be run in parallel with others at the same level. + Valid on classes and methods but not assemblies. + + + + + Test may not be run in parallel with any others. Valid on + classes and methods but not assemblies. + + + + + Mask used to extract the flags that apply to the item on which a + ParallelizableAttribute has been placed, as opposed to descendants. + + + + + Descendants of the test may be run in parallel with one another. + Valid on assemblies and classes but not on methods. + + + + + Descendants of the test down to the level of TestFixtures may be + run in parallel with one another. Valid on assemblies and classes + but not on methods. + + + + + Mask used to extract all the flags that impact descendants of a + test and place them in the TestExecutionContext. + + + + + The test and its descendants may be run in parallel with others at + the same level. Valid on classes and methods but not assemblies. + + + + + 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-delimited list of platforms + + + + Causes a test to be skipped if this PlatformAttribute is not satisfied. + + The test to modify + + + + 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 + + + + + Modifies a test by adding properties to it. + + The test to modify + + + + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. + + + + + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + + + + + + Construct a set of ints within a specified range + + + + + Construct a set of unsigned ints within a specified range + + + + + Construct a set of longs within a specified range + + + + + Construct a set of unsigned longs within a specified range + + + + + Construct a set of shorts within a specified range + + + + + Construct a set of unsigned shorts within a specified range + + + + + Construct a set of doubles within a specified range + + + + + Construct a set of floats within a specified range + + + + + Construct a set of bytes within a specified range + + + + + Construct a set of sbytes within a specified range + + + + + 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 unsigned ints using default step of 1 + + + + + + + Construct a range of unsigned ints specifying the step size + + + + + + + + Construct a range of longs using a default step of 1 + + + + + + + Construct a range of longs + + + + + + + + Construct a range of unsigned longs using default step of 1 + + + + + + + Construct a range of unsigned longs specifying the step size + + + + + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RepeatAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + 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 in the STA, causing it + to run in a separate thread if necessary. + + + + + Construct a RequiresSTAAttribute + + + + + Marks a test that must run on a separate thread. + + + + + Construct a RequiresThreadAttribute + + + + + Construct a RequiresThreadAttribute, specifying the apartment + + + + + Marks a test to use a Sequential join of any argument + data provided. Arguments will be combined into test cases, + taking the next value of each argument until all are used. + + + + + Default constructor + + + + + 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 identify a method that is called + immediately before each test is run. + + + + + Attribute used to identify a class that contains + or + methods for all the test fixtures under a given namespace. + + + + + Build a SetUpFixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A SetUpFixture object as a TestSuite. + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + The author of this test + + + + + The type that this test is testing + + + + + Modifies a test by adding a description, if not already set. + + The test to modify + + + + Gets or sets the expected result. + + The result. + + + + Returns true if an expected result has been set + + + + + Construct a TestMethod from a given method. + + The method for which a test is to be constructed. + The suite to which the test will be added. + A TestMethod + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + 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 or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test case. + + + + + Gets the list of arguments to a test case + + + + + Gets the properties of the test case + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if the expected result has been set + + + + + Gets or sets the description. + + The description. + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the reason for ignoring the test + + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets or sets the reason for not running the test. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Comma-delimited list of platforms to run the test for + + + + + Comma-delimited list of platforms to not run the test for + + + + + Gets and sets the category for this test case. + May be a comma-separated list of categories. + + + + + Performs several special conversions allowed by NUnit in order to + permit arguments with types that cannot be used in the constructor + of an Attribute such as TestCaseAttribute or to simplify their use. + + The arguments to be converted + The ParameterInfo array for the method + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a name + + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type + + The type that will provide data + + + + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + + The method for which data is needed. + + + + + TestFixtureAttribute is used to mark a class that represents a TestFixture. + + + + + 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. + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test fixture. + + + + + The arguments originally provided to the attribute + + + + + Properties pertaining to this fixture + + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Descriptive text for this fixture + + + + + The author of this fixture + + + + + The type that this fixture is testing + + + + + Gets or sets the ignore reason. May set RunState as a side effect. + + The ignore reason. + + + + Gets or sets the reason for not running the fixture. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Build a fixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A an IEnumerable holding one TestFixture object. + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. + + + + + Error message string is public so the tests can use it + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type 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 + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestFixtures from a given Type, + using available parameter data. + + The TypeInfo for which fixtures are to be constructed. + One or more TestFixtures as TestSuite + + + + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. + + The type for which data is needed. + + + + + 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. + + + + + Indicates which class the test or test fixture is testing + + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Construct the attribute, specifying a combining strategy and source of parameter data. + + + + + Used 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 class or assembly, sets the default timeout + for all contained test methods. + + + + + Construct a TimeoutAttribute given a time in milliseconds + + The timeout value in milliseconds + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + 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 + + + + + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. + + + + + 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 + + + + + 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 a static method, property or field 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 a static 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 + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + + An enumeration containing individual data items + + + + + A set of Assert methods operating on one or more collections + + + + + DO NOT USE! Use CollectionAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + 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 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 + 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 + 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 + 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 + 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 + 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 + 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 + Arguments to be used in formatting the message + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset does not contain the superset + + 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 the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset contains the superset. + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 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 + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + 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. + + + + + Constructs an AttributeConstraint for a specified attribute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + 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 + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation + + + + + 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 + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Gets the expected object + + + + + Test whether the expected item is contained in the collection + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether two collections are equivalent + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + 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 ignore case and return 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. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + 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. + + + + + If used performs a default ascending comparison + + + + + If used performs a reverse comparison + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + Then signals a break between two ordering steps + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of the constraint. + + + + + + An OrderingStep represents one stage of the sort + + + + + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another + + + + + Construct a CollectionSupersetConstraint + + The collection that the actual value is expected to be a superset of + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a superset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + 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 + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionTally counts (tallies) the number of + occurrences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + The number of objects remaining in the tally + + + + + 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 + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Construct a default ComparisonAdapter + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + ComparerAdapter extends and + allows use of an or + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a + + + + + 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 + + + + + Tolerance used in making the comparison + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + A ConstraintResult + + + + Protected function overridden by derived class to actually perform the comparison + + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use a and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Set the tolerance for use in this comparison + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual _values is allowed to deviate from + the expected value. + + Self + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + Retrieves the value to be tested from an ActualValueDelegate. + The default implementation simply evaluates the delegate but derived + classes may override it to provide for delayed processing. + + An ActualValueDelegate + Delegate evaluation result + + + + 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 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. + + + + + Returns a DelayedConstraint.WithRawDelayInterval with the specified delay time. + + The delay, which defaults to milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + Resolves any pending operators and returns the resolved 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 reorganized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + Pushes the specified operator onto the stack. + + The operator to put onto the stack. + + + + Pops the topmost operator from the stack. + + The topmost operator on the stack + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Pushes the specified constraint. As a side effect, + the constraint's Builder field is set to the + ConstraintBuilder owning this stack. + + The constraint to put onto the stack + + + + Pops this topmost constraint from the stack. + As a side effect, the constraint's Builder + field is set to null. + + The topmost contraint on the stack + + + + 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 expression 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. + + + + + 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 + reorganized. When a constraint is appended, it is returned as the + value of the operation so that modifiers may be applied. However, + any partially built expression is attached to the constraint for + later resolution. When an operator is appended, the partial + expression is returned. If it's a self-resolving operator, then + a ResolvableConstraintExpression is returned. + + + + + 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. Note that the constraint + is not reduced at this time. For example, if there + is a NotOperator on the stack we don't reduce and + return a NotConstraint. The original constraint must + be returned because it may support modifiers that + are yet to be applied. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + With is currently a NOP - reserved for future use. + + + + + 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests if item is equal to zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 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 ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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 constraint that succeeds if the value + is a file or directory and it exists. + + + + + ConstraintStatus represents the status of a ConstraintResult + returned by a Constraint being applied to an actual value. + + + + + The status has not yet been set + + + + + The constraint succeeded + + + + + The constraint failed + + + + + An error occured in applying the constraint (reserved for future use) + + + + + Contain the result of matching a against an actual value. + + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + The status of the new ConstraintResult. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + If true, applies a status of Success to the result, otherwise Failure. + + + + The actual value that was passed to the method. + + + + + Gets and sets the ResultStatus for this result. + + + + + True if actual value meets the Constraint criteria otherwise false. + + + + + Display friendly name of the constraint. + + + + + Description of the constraint may be affected by the state the constraint had + when was performed against the actual value. + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the result 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 + + + + 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 + + + + 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. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Flag the constraint to ignore case and return self. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Allows only changing the time dimension of delay interval and setting a polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawDelayInterval + + Parent DelayedConstraint on which delay interval dimension is required to be set + + + + Changes delay interval dimension to minutes + + + + + Changes delay interval dimension to seconds + + + + + Changes delay interval dimension to milliseconds + + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only setting the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithDimensionedDelayInterval + + Parent DelayedConstraint on which polling interval is required to be set + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only changing the time dimension of the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawPollingInterval + + Parent DelayedConstraint on which polling dimension is required to be set + + + + Changes polling interval dimension to minutes + + + + + Changes polling interval dimension to seconds + + + + + Changes polling interval dimension to milliseconds + + + + + Delay value store as an Interval object + + + + + Polling value stored as an Interval object + + + + + Creates a new DelayedConstraint + + The inner constraint to 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 to decorate + The time interval after which the match is performed, in milliseconds + The time interval used for polling, in milliseconds + If the value of is less than 0 + + + + Gets text describing a constraint + + + + + 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 + A ConstraintResult + + + + 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 + + + + Returns the string representation of the constraint. + + + + + Adjusts a Timestamp by a given TimeSpan + + + + + + + + Returns the difference between two Timestamps as a TimeSpan + + + + + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected key is contained in the dictionary + + + + + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. + + + + + Construct a DictionaryContainsValueConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected value is contained in the dictionary + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that the collection is empty + + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyStringConstraint tests whether a string is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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. + + + + + + + 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. + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Gets the tolerance for this comparison. + + + The tolerance. + + + + + Gets a value indicating whether to compare case insensitive. + + + true if comparing case insensitive; otherwise, false. + + + + + Gets a value indicating whether or not to clip strings. + + + true if set to clip strings otherwise, false. + + + + + Gets the failure points. + + + The failure points. + + + + + 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. + + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flags the constraint to include + property in comparison of two values. + + + Using this modifier does not allow to use the + constraint modifier. + + + + + 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 + + + + 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 + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + EqualityAdapter class handles all equality comparisons + that use an , + or a . + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps an . + + + + + Returns an EqualityAdapter that uses a predicate function for items comparison. + + + + + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps a . + + + + + 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. + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + FileExistsConstraint is used to determine if a file exists + + + + + Initializes a new instance of the class. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + FileOrDirectoryExistsConstraint is used to determine if a file or directory exists + + + + + If true, the constraint will only check if files exist, not directories + + + + + If true, the constraint will only check if directories exist, not files + + + + + Initializes a new instance of the class that + will check files and directories. + + + + + Initializes a new instance of the class that + will only check files if ignoreDirectories is true. + + if set to true [ignore directories]. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + 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. + + + + + 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 + + + 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 + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + Interface for all constraints + + + + + The display name of this Constraint for use by ToString(). + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + 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 + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + Keeps track of an interval time which can be represented in + Minutes, Seconds or Milliseconds + + + + + Constructs a interval given an value in milliseconds + + + + + Gets Interval value represented as a TimeSpan object + + + + + Returns the interval with the current value as a number of minutes. + + + + + Returns the interval with the current value as a number of seconds. + + + + + Returns the interval with the current value as a number of milliseconds. + + + + + Is true for intervals created with a non zero value + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + + + + IntervalUnit provides the semantics to the value stored in Interval class. + + + + + Unit representing an Interval in minutes + + + + + Unit representing an Interval in seconds + + + + + Unit representing an Interval in milliseconds + + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + An extension of ResolvableConstraintExpression that adds a no-op Items property for readability. + + + + + Create a new instance of ItemsConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + + No-op property for readability. + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + 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 + + + + + Abstract method to get the max line length + + + + + 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 given + 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 failing constraint result + + + + 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 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 + + + + Custom value formatter function + + The value + + + + + Custom value formatter factory function + + The next formatter function + ValueFormatter + If the given formatter is unable to handle a certain format, it must call the next formatter in the chain + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Formatting strings used for expected and actual _values + + + + + Current head of chain of value formatters. Public for testing. + + + + + Add a formatter to the chain of responsibility. + + + + + + Formats text to represent a generalized value. + + The value + The formatted text + + + + Formats 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 + + + + 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 + + + + Converts any null 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 + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test that the actual value is an NaN + + + + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + 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 + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + 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. + + + + + Returns the default NUnitComparer. + + + + + Compares two objects + + + + + + + + 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 + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occurred. + + + + + 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 the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depth. + + + + + Flags the comparer to include + property in comparison of two values. + + + Using this modifier does not allow to use the + modifier. + + + + + Compares two objects for equality within a tolerance. + + + + + 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 + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + 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. + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + 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. + + + + + 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. + + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + 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. + + + + + The syntax element preceding this operator + + + + + The syntax element following 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. + + + + + 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. + + + + + + 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. + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + 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. + + + + + + + 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. + + + + + Gets the name of the property to which the operator applies + + + + + 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. + + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + 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. + + + + + 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. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifies the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Modifies the current instance to be case-sensitive + and returns it. + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether one path in canonical form is a subpath of another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Gets text describing a constraint + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + Construct given a base constraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Formats a prefix constraint's description. + + + + + 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 + + + + Returns the string representation of the constraint. + + + + + + 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 value + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two _values are within a + specified range. + + + + + Initializes a new instance of the class. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + 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 + + + + 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. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Resolve the current expression to a Constraint + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Return the top-level constraint for this expression + + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. + + + + + Construct an EqualConstraintResult + + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + 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 + + + + Display the failure information for two IEnumerables that did not match. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + 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. + + + + + + + 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 + + + + + Description of this constraint + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + 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 a given string + + The string to be tested + True for success, false for failure + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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 + + + + 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. + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + 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 actual value for a failing constraint test to a + MessageWriter. This override only handles the special message + used when an exception is expected but none is thrown. + + The writer on which the actual value is displayed + + + + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Executes the code and returns success if an exception is thrown. + + A delegate representing the code to be tested + True if an exception is thrown, otherwise false + + + + Returns the ActualValueDelegate itself as the value to be tested. + + A delegate representing the code to be tested + The delegate itself + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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. + + + + + Returns a default Tolerance object, equivalent to an exact match. + + + + + Returns an empty Tolerance object, equivalent to an exact match. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + 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 as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of clock ticks. + + + + + Gets the for the current Tolerance + + + + + Gets the magnitude of the current Tolerance instance. + + + + + Returns true if the current tolerance has not been set or is using the . + + + + + Apply the tolerance to an expected value and return + a Tolerance.Range that represents the acceptable values. + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Tolerance.Range represents the range of values that match + a specific tolerance, when applied to a specific value. + + + + + The lower bound of the range + + + + + The Upper bound of the range + + + + + Construct a Range + + + + + 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. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + The type of the actual argument to which the constraint was applied + + + + + Construct a TypeConstraint for a given Type + + The expected type for the constraint + Prefix used in forming the constraint description + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that all items are unique. + + + + + + + XmlSerializableConstraint tests whether + an object is serializable in xml format. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of this constraint + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct a standalone ExactCountConstraint + + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + 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. + + + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. + + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Asserts on Directories + + + + + DO NOT USE! Use DirectoryAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + 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 the 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 point to the same directory. + If they are not 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 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 + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + 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 the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to 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 the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + 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 the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to 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 the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 regular expression supplied as an argument. + + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + Default Constructor (normally used) + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Abstract base for Exceptions that terminate a test and provide a ResultState. + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Class used to guard against unexpected argument values + or operations by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Throws an ArgumentOutOfRangeException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an ArgumentException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an InvalidOperationException if the specified condition is not met. + + The condition that must be met + The exception message to be used + + + + The AssertionResult class represents the result of a single assertion. + + + + + Construct an AssertionResult + + + + The pass/fail status of the assertion + + + The message produced by the assertion, or null + + + The stacktrace associated with the assertion, or null + + + + ToString Override + + + + + Override GetHashCode + + + + + Override Equals + + + + + + AssertionStatus enumeration represents the possible outcomes of an assertion. + The order of definition is significant, higher level values override lower + ones in determining the overall result of a test. + + + + + An assumption failed + + + + + The assertion succeeded + + + + + A warning message was issued + + + + + The assertion failed + + + + + An unexpected exception was thrown + + + + + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. + + + + + Apply changes to the execution context + + The execution context + + + + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + CombiningStrategy is the abstract base for classes that + know how to combine values provided for individual test + parameters to create a set of test cases. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. + + + Attributes or other objects should implement one of the + derived interfaces, rather than this one, since they + indicate in which part of the command chain the wrapper + should be applied. + + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. + + + + + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. + + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + The IFixtureBuilder interface is exposed by a class that knows how to + build a TestFixture from one or more Types. In general, it is exposed + by an attribute, but may be implemented in a helper class used by the + attribute in some cases. + + + + + Build one or more TestFixtures from type provided. At least one + non-null TestSuite must always be returned, since the method is + generally called because the user has marked the target class as + a fixture. If something prevents the fixture from being used, it + will be returned nonetheless, labelled as non-runnable. + + The type info of the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + IImplyFixture is an empty marker interface used by attributes like + TestAttribute that cause the class where they are used to be treated + as a TestFixture even without a TestFixtureAttribute. + + Marker interfaces are not usually considered a good practice, but + we use it here to avoid cluttering the attribute hierarchy with + classes that don't contain any extra implementation. + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The IDataPointProvider interface is used by extensions + that provide data for a single test parameter. + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + The IParameterDataSource interface is implemented by types + that can provide data for a test method parameter. + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + An enumeration containing individual data items + + + + The IParameterInfo interface is an abstraction of a .NET parameter. + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter + + + + + Gets the underlying .NET ParameterInfo + + + + + Gets the Type of the parameter + + + + + A PropertyBag represents a collection of name/value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + The entries in a PropertyBag are of two kinds: those that + take a single value and those that take multiple _values. + However, the PropertyBag has no knowledge of which entries + fall into each category and the distinction is entirely + up to the code using the PropertyBag. + + When working with multi-valued properties, client code + should use the Add method to add name/value pairs and + indexing to retrieve a list of all _values for a given + key. For example: + + bag.Add("Tag", "one"); + bag.Add("Tag", "two"); + Assert.That(bag["Tag"], + Is.EqualTo(new string[] { "one", "two" })); + + When working with single-valued properties, client code + should use the Set method to set the value and Get to + retrieve the value. The GetSetting methods may also be + used to retrieve the value in a type-safe manner while + also providing default. For example: + + bag.Set("Priority", "low"); + bag.Set("Priority", "high"); // replaces value + Assert.That(bag.Get("Priority"), + Is.EqualTo("high")); + Assert.That(bag.GetSetting("Priority", "low"), + Is.EqualTo("high")); + + + + + Adds a key/value pair to the property bag + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + True if their are _values present, otherwise false + + + + Gets or sets the list of _values for a particular key + + The key for which the _values are to be retrieved or set + + + + Gets a collection containing all the keys in the property set + + + + + The IReflectionInfo interface is implemented by NUnit wrapper objects that perform reflection. + + + + + Returns an array of custom attributes of the specified type applied to this object + + + + + Returns a value indicating whether an attribute of the specified type is defined on this object. + + + + + The ISimpleTestBuilder interface is exposed by a class that knows how to + build a single TestMethod from a suitable MethodInfo Types. In general, + it is exposed by an attribute, but may be implemented in a helper class + used by the attribute in some cases. + + + + + Build a TestMethod from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. + + + + + Examine the type and determine if it is suitable for + this builder to use in building a TestSuite. + + Note that returning false will cause the type to be ignored + in loading the tests. If it is desired to load the suite + but label it as non-runnable, ignored, etc., then this + method must return true. + + The type of the fixture to be used + True if the type can be used to build a TestSuite + + + + Build a TestSuite from type provided. + + The type of the fixture to be used + A TestSuite + + + + Common interface supported by all representations + of a test. Only includes informational fields. + The Run method is specifically excluded to allow + for data-only representations of a test. + + + + + Gets the id of the test + + + + + Gets the name of the test + + + + + Gets the type of the test + + + + + Gets the fully qualified name of the test + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the Type of the test fixture, if applicable, or + null if no fixture type is associated with this test. + + + + + Gets an IMethod for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the RunState of the test, indicating whether it can be run. + + + + + Count of the test cases ( 1 if this is a test case ) + + + + + Gets the properties of the test + + + + + Gets the parent test, if any. + + The parent test or null if none exists. + + + + Returns true if this is a test suite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets a fixture object for running this test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + The ITestBuilder interface is exposed by a class that knows how to + build one or more TestMethods from a MethodInfo. In general, it is exposed + by an attribute, which has additional information available to provide + the necessary test parameters to distinguish the test cases built. + + + + + Build one or more TestMethods from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. + + + This interface is not the same as the ITestCaseBuilder interface in NUnit 2.x. + We have reused the name because the two products don't interoperate at all. + + + + + Examine the method and determine if it is suitable for + this builder to use in building a TestCase to be + included in the suite being populated. + + Note that returning false will cause the method to be ignored + in loading the tests. If it is desired to load the method + but label it as non-runnable, ignored, etc., then this + method must return true. + + The test method to examine + The suite being populated + True is the builder can use this method + + + + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. + + The method to be used as a test case + The test suite being populated, or null + A TestCase or null + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + + + + Gets the expected result of the test case + + + + + Returns true if an expected result has been set + + + + + The ITestData interface is implemented by a class that + represents a single instance of a parameterized test. + + + + + Gets the name to be used for the test + + + + + Gets the RunState for this test case. + + + + + Gets the argument list to be provided to the test + + + + + Gets the property dictionary for the test case + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Determine if a particular test passes the filter criteria. Pass + may examine the parents and/or descendants of a test, depending + on the semantics of the particular filter + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + The ITestCaseData interface is implemented by a class + that is able to return the data required to create an + instance of a parameterized test fixture. + + + + + Get the TypeArgs if separately set + + + + + The ITestListener interface is used internally to receive + notifications of significant events while a test is being + run. The events are propagated to clients by means of an + AsyncCallback. NUnit extensions may also monitor these events. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + The ITestResult interface represents the result of a test. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. Not available in + the Compact Framework 1.0. + + + + + Gets the number of asserts executed + when running the test and all its children. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Accessing HasChildren should not force creation of the + Children collection in classes implementing this interface. + + + + + Gets the collection of child results. + + + + + Gets the Test to which this result applies. + + + + + Gets any text output written to this result. + + + + + Gets a list of AssertionResults associated with the test + + + + + Gets the collection of files attached to the test + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + Returns true if the Type wrapped is equal to the argument + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the Namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type is a static class. + + + + + Get the display name for this typeInfo. + + + + + Get the display name for an object of this type, constructed with specific arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a value indicating whether this type has a method with a specified public attribute + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + An object implementing IXmlNodeBuilder is able to build + an XML representation of itself and any children. + + + + + Returns a TNode representing the current object. + + If true, children are included where applicable + A TNode representing the result + + + + Returns a TNode representing the current object after + adding it as a child of the supplied parent node. + + The parent node. + If true, children are included, where applicable + + + + + The ResultState class represents the outcome of running a test. + It contains two pieces of information. The Status of the test + is an enum indicating whether the test passed, failed, was + skipped or was inconclusive. The Label provides a more + detailed breakdown for use by client runners. + + + + + Initializes a new instance of the class. + + The TestStatus. + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + + + + Initializes a new instance of the class. + + The TestStatus. + The stage at which the result was produced + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + The stage at which the result was produced + + + + The result is inconclusive + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test was skipped because it is explicit + + + + + The test succeeded + + + + + The test issued a warning + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The test was not runnable. + + + + + A suite failed because one or more child tests failed or had errors + + + + + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + Gets the TestStatus for the test. + + The status. + + + + Gets the label under which this test result is + categorized, if any. + + + + + Gets the stage of test execution in which + the failure or other result took place. + + + + + Get a new ResultState, which is the same as the current + one but with the FailureSite set to the specified value. + + The FailureSite to use + A new ResultState + + + + Test whether this ResultState has the same Status and Label + as another one. In other words, the whether two are equal + ignoring the Site. + + + + + + + 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. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The FailureSite enum indicates the stage of a test + in which an error or failure occurred. + + + + + Failure in the test itself + + + + + Failure in the SetUp method + + + + + Failure in the TearDown method + + + + + Failure of a parent test + + + + + Failure of a child test + + + + + The RunState enum indicates whether a test can be executed. + + + + + The test is not runnable. + + + + + The test is runnable. + + + + + The test can only be run explicitly + + + + + The test has been skipped. This value may + appear on a Test when certain attributes + are used to skip the test. + + + + + The test has been ignored. May appear on + a Test, when the IgnoreAttribute is used. + + + + + The TestAttachment class represents a file attached to a TestResult, + with an optional description. + + + + + Absolute file path to attachment file + + + + + User specifed description of attachment. May be null. + + + + + Creates a TestAttachment class to represent a file attached to a test result. + + Absolute file path to attachment file + User specifed description of attachment. May be null. + + + + The TestOutput class holds a unit of output from + a test to a specific output stream + + + + + Construct with text, output destination type and + the name of the test that produced the output. + + Text to be output + Name of the stream or channel to which the text should be written + FullName of test that produced the output + + + + Return string representation of the object for debugging + + + + + + Get the text + + + + + Get the output type + + + + + Get the name of the test that created the output + + + + + Convert the TestOutput object to an XML string + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + There was a warning + + + + + The test failed + + + + + TNode represents a single node in the XML representation + of a Test or TestResult. It replaces System.Xml.XmlNode and + System.Xml.Linq.XElement, providing a minimal set of methods + for operating on the XML in a platform-independent manner. + + + + + Constructs a new instance of TNode + + The name of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + Flag indicating whether to use CDATA when writing the text + + + + Gets the name of the node + + + + + Gets the value of the node + + + + + Gets a flag indicating whether the value should be output using CDATA. + + + + + Gets the dictionary of attributes + + + + + Gets a list of child nodes + + + + + Gets the first ChildNode + + + + + Gets the XML representation of this node. + + + + + Create a TNode from it's XML text representation + + The XML text to be parsed + A TNode + + + + Adds a new element as a child of the current node and returns it. + + The element name. + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + + The element name + The text content of the new element + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + The value will be output using a CDATA section. + + The element name + The text content of the new element + The newly created child element + + + + Adds an attribute with a specified name and value to the XmlNode. + + The name of the attribute. + The value of the attribute. + + + + Finds a single descendant of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + + + Finds all descendants of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + Writes the XML representation of the node to an XmlWriter + + + + + + Class used to represent a list of XmlResults + + + + + Class used to represent the attributes of a node + + + + + Gets or sets the value associated with the specified key. + Overridden to return null if attribute is not found. + + The key. + Value of the attribute or null + + + + Asserts on Files + + + + + DO NOT USE! Use FileAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + AssemblyHelper provides static methods for working + with assemblies. + + + + + Gets the path from which an assembly was loaded. + For builds where this is not possible, returns + the name of the assembly. + + The assembly. + The path. + + + + Gets the path to the directory from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the AssemblyName of an assembly. + + The assembly + An AssemblyName + + + + Loads an assembly given a string, which may be the + path to the assembly or the AssemblyName + + + + + + + Gets the assembly path from code base. + + Public for testing purposes + The code base. + + + + + Waits for pending asynchronous operations to complete, if appropriate, + and returns a proper result of the invocation by unwrapping task results + + The raw result of the method invocation + The unwrapped result, if necessary + + + + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + Class to build ether a parameterized or a normal NUnitTestMethod. + There are four cases that the builder must deal with: + 1. The method needs no params and none are provided + 2. The method needs params and they are provided + 3. The method needs no params but they are provided in error + 4. The method needs params but they are not provided + This could have been done using two different builders, but it + turned out to be simpler to have just one. The BuildFrom method + takes a different branch depending on whether any parameters are + provided, but all four cases are dealt with in lower-level methods + + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + A Test representing one or more method invocations + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + The test suite being built, to which the new test would be added + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations + + + + Builds a ParameterizedMethodSuite containing individual test cases. + + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases + + + + Build a simple, non-parameterized TestMethod for this method. + + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. + + + + Class that can build a tree of automatic namespace + suites from a group of fixtures. + + + + + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. + + + + + The root of the test suite being created by this builder. + + + + + Initializes a new instance of the class. + + The root suite. + + + + Gets the root entry in the tree created by the NamespaceTreeBuilder. + + The root suite. + + + + Adds the specified fixtures to the tree. + + The fixtures to be added. + + + + Adds the specified fixture to the tree. + + The fixture to be added. + + + + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. + + + + + Constructs an + + + + + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. + + The MethodInfo from which to construct the TestMethod + The suite or fixture to which the new test will be added + The ParameterSet to be used, or null + + + + + Helper method that checks the signature of a TestMethod and + any supplied parameters to determine if the test is valid. + + Currently, NUnitTestMethods are required to be public, + non-abstract methods, either static or instance, + returning void. They may take arguments but the _values must + be provided or the TestMethod is not considered runnable. + + Methods not meeting these criteria will be marked as + non-runnable and the method will return false in that case. + + The TestMethod to be checked. If it + is found to be non-runnable, it will be modified. + Parameters to be used for this test, or null + True if the method signature is valid, false if not + + The return value is no longer used internally, but is retained + for testing purposes. + + + + + NUnitTestFixtureBuilder is able to build a fixture given + a class marked with a TestFixtureAttribute or an unmarked + class containing test methods. In the first case, it is + called by the attribute and in the second directly by + NUnitSuiteBuilder. + + + + + Build a TestFixture from type provided. A non-null TestSuite + must always be returned, since the method is generally called + because the user has marked the target class as a fixture. + If something prevents the fixture from being used, it should + be returned nonetheless, labelled as non-runnable. + + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. + + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + + + + + Method to add test cases to the newly constructed fixture. + + The fixture to which cases should be added + + + + Method to create a test case from a MethodInfo and add + it to the fixture being built. It first checks to see if + any global TestCaseBuilder addin wants to build the + test case. If not, it uses the internal builder + collection maintained by this fixture builder. + + The default implementation has no test case builders. + Derived classes should add builders to the collection + in their constructor. + + The method for which a test is to be created + The test suite being built. + A newly constructed Test + + + + Built-in SuiteBuilder for all types of test classes. + + + + + Checks to see if the provided Type is a fixture. + To be considered a fixture, it must be a non-abstract + class with one or more attributes implementing the + IFixtureBuilder interface or one or more methods + marked as tests. + + The fixture type to check + True if the fixture can be built, false if not + + + + Build a TestSuite from TypeInfo provided. + + The fixture type to build + A TestSuite built from that type + + + + We look for attributes implementing IFixtureBuilder at one level + of inheritance at a time. Attributes on base classes are not used + unless there are no fixture builder attributes at all on the derived + class. This is by design. + + The type being examined for attributes + A list of the attributes found. + + + + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. + + + + The number of test cases that cover all possible pairs of test function + parameters values is significantly less than the number of test cases + that cover all possible combination of test function parameters values. + And because different studies show that most of software failures are + caused by combination of no more than two parameters, pairwise testing + can be an effective ways to test the system when it's impossible to test + all combinations of parameters. + + + The PairwiseStrategy code is based on "jenny" tool by Bob Jenkins: + http://burtleburtle.net/bob/math/jenny.html + + + + + + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea + + + + + Initializes a new instance of the FleaRand class. + + The seed. + + + + FeatureInfo represents coverage of a single value of test function + parameter, represented as a pair of indices, Dimension and Feature. In + terms of unit testing, Dimension is the index of the test parameter and + Feature is the index of the supplied value in that parameter's list of + sources. + + + + + Initializes a new instance of FeatureInfo class. + + Index of a dimension. + Index of a feature. + + + + A FeatureTuple represents a combination of features, one per test + parameter, which should be covered by a test case. In the + PairwiseStrategy, we are only trying to cover pairs of features, so the + tuples actually may contain only single feature or pair of features, but + the algorithm itself works with triplets, quadruples and so on. + + + + + Initializes a new instance of FeatureTuple class for a single feature. + + Single feature. + + + + Initializes a new instance of FeatureTuple class for a pair of features. + + First feature. + Second feature. + + + + TestCase represents a single test case covering a list of features. + + + + + Initializes a new instance of TestCaseInfo class. + + A number of features in the test case. + + + + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. + + + + The algorithm starts with creating a set of all feature tuples which we + will try to cover (see method). This set + includes every single feature and all possible pairs of features. We + store feature tuples in the 3-D collection (where axes are "dimension", + "feature", and "all combinations which includes this feature"), and for + every two feature (e.g. "A" and "B") we generate both ("A", "B") and + ("B", "A") pairs. This data structure extremely reduces the amount of + time needed to calculate coverage for a single test case (this + calculation is the most time-consuming part of the algorithm). + + + Then the algorithm picks one tuple from the uncovered tuple, creates a + test case that covers this tuple, and then removes this tuple and all + other tuples covered by this test case from the collection of uncovered + tuples. + + + Picking a tuple to cover + + + There are no any special rules defined for picking tuples to cover. We + just pick them one by one, in the order they were generated. + + + Test generation + + + Test generation starts from creating a completely random test case which + covers, nevertheless, previously selected tuple. Then the algorithm + tries to maximize number of tuples which this test covers. + + + Test generation and maximization process repeats seven times for every + selected tuple and then the algorithm picks the best test case ("seven" + is a magic number which provides good results in acceptable time). + + Maximizing test coverage + + To maximize tests coverage, the algorithm walks thru the list of mutable + dimensions (mutable dimension is a dimension that are not included in + the previously selected tuple). Then for every dimension, the algorithm + walks thru the list of features and checks if this feature provides + better coverage than randomly selected feature, and if yes keeps this + feature. + + + This process repeats while it shows progress. If the last iteration + doesn't improve coverage, the process ends. + + + In addition, for better results, before start every iteration, the + algorithm "scrambles" dimensions - so for every iteration dimension + probes in a different order. + + + + + + Creates a set of test cases for specified dimensions. + + + An array which contains information about dimensions. Each element of + this array represents a number of features in the specific dimension. + + + A set of test cases. + + + + + Gets the test cases generated by this strategy instance. + + A set of test cases. + + + + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. + + + + + Construct with a collection of individual providers + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + TestActionAfterCommand handles the AfterTest method of a single + TestActionItem, provided the items BeforeTest has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + AfterCommand is a DelegatingTestCommand that performs some + specific action after the inner command is run. + + + + + Construct an AfterCommand + + + + + Execute the command + + + + + Set this to perform action after the inner command. + + + + + ContextSettingsCommand applies specified changes to the + TestExecutionContext prior to running a test. No special + action is needed after the test runs, since the prior + context will be restored automatically. + + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Perform the before test action + + + + + Perform the after test action + + + + + TestActionBeforeCommand handles the BeforeTest method of a single + TestActionItem, relying on the item to remember it has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + BeforeTestCommand is a DelegatingTestCommand that performs some + specific action before the inner command is run. + + + + + Construct a BeforeCommand + + + + + Execute the command + + + + + Action to perform before the inner command. + + + + + ConstructFixtureCommand constructs the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + + + + DelegatingTestCommand wraps an inner TestCommand. + Derived classes may do what they like before or + after running the inner command. + + + + TODO: Documentation needed for field + + + + TODO: Documentation needed for constructor + + + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + + + + EmptyTestCommand is a TestCommand that does nothing. It simply + returns the current result from the context when executed. We + use it to avoid testing for null when executing a chain of + DelegatingTestCommands. + + + + + Construct a NullCommand for a test + + + + + Execute the command + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The inner command. + The max time allowed in milliseconds + + + + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + A SetUpTearDownList for use by the command + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + A SetUpTearDownList for use by the command + + + + SetUpTearDownCommand runs SetUp methods for a suite, + runs the test and then runs TearDown methods. + + + + + Initializes a new instance of the class. + + The inner command. + List of setup/teardown items + + + + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. + + + + + Construct a SetUpTearDownNode + + A list of setup methods for this level + A list teardown methods for this level + + + + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. + + + + + Run SetUp on this level. + + The execution context to use for running. + + + + Run TearDown for this level. + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The test being skipped. + + + + Overridden to simply set the CurrentResult to the + appropriate Skipped state. + + The execution context for the test + A TestResult + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + The TestAction with which to wrap the inner command. + + + + TestActionItem wraps a single execution of an ITestAction. + It's primary purpose is to track whether the BeforeTest + method has been called and suppress calling the + AfterTest method if it has not. This is necessary when + ITestActions are used before and after a CompositeWorkItem, + since the OneTimeSetUpCommand and OneTimeTearDownCommand + are separate command chains. By sharing a TestActionItem + between the setup and teardown chains, the two calls can + be coordinated. + + + + + Construct a TestActionItem + + The ITestAction to be included + + + + Get flag indicating if the BeforeTest entry was already called. + + + + + Run the BeforeTest method of the action and remember that it has been run. + + The test to which the action applies + + + + Run the AfterTest action, but only if the BeforeTest + action was actually run. + + The test to which the action applies + + + + TestCommand is the abstract base class for all test commands + in the framework. A TestCommand represents a single stage in + the execution of a test, e.g.: SetUp/TearDown, checking for + Timeout, verifying the returned result from a method, etc. + + TestCommands may decorate other test commands so that the + execution of a lower-level command is nested within that + of a higher level command. All nested commands are executed + synchronously, as a single unit. Scheduling test execution + on separate threads is handled at a higher level, using the + task dispatcher. + + + + + Construct a TestCommand for a test. + + The test to be executed + + + + Gets the test associated with this command. + + + + + Runs the test in a specified context, returning a TestResult. + + The TestExecutionContext to be used for running the test. + A TestResult + + + + TestMethodCommand is the lowest level concrete command + used to run actual test cases. + + + + + Initializes a new instance of the class. + + The test. + + + + Runs the test, saving a TestResult in the execution context, as + well as returning it. If the test has an expected result, it + is asserts on that value. Since failed tests and errors throw + an exception, this command must be wrapped in an outer command, + will handle that exception and records the failure. This role + is usually played by the SetUpTearDown command. + + The execution context + + + + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. + + + + + Constructs a TheoryResultCommand + + The command to be wrapped by this one + + + + TimeoutCommand creates a timer in order to cancel + a test if it exceeds a specified time and adjusts + the test result if it did time out. + + + + + Initializes a new instance of the class. + + The inner command + Timeout value + + + + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. + + + + + Default constructor uses the current culture. + + + + + Construct a CultureDetector for a particular culture for testing. + + The culture to be used + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + Tests to determine if the current culture is supported + based on a culture attribute. + + The attribute to examine + + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + ExceptionHelper provides static methods for working with exceptions + + + + + Rethrows an exception, preserving its stack trace + + The exception to rethrow + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. Excludes exception names, creating more readable message + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined stack trace. + + + + Gets the stack trace of the exception. + + The exception. + A string representation of the stack trace. + + + + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. + + + + + List of Child WorkItems + + + + + Construct a CompositeWorkItem for executing a test suite + using a filter to select child tests. + + The TestSuite to be executed + A filter used to select child tests + + + + Method that actually performs the work. Overridden + in CompositeWorkItem to do one-time setup, run all child + items and then dispatch the one-time teardown work item. + + + + + + + + + + Cancel (abort or stop) a CompositeWorkItem and all of its children + + true if the CompositeWorkItem and all of its children should be aborted, false if it should allow all currently running tests to complete + + + + OneTimeTearDownWorkItem represents the cleanup + and one-time teardown phase of a CompositeWorkItem + + + + + Construct a OneTimeTearDownWOrkItem wrapping a CompositeWorkItem + + The CompositeWorkItem being wrapped + + + + The WorkItem name, overridden to indicate this is the teardown. + + + + + + + + + + PerformWork is not used in CompositeWorkItem + + + + + EventListenerTextWriter sends text output to the currently active + ITestEventListener in the form of a TestOutput object. If no event + listener is active in the context, or if there is no context, + the output is forwarded to the supplied default writer. + + + + + Construct an EventListenerTextWriter + + The name of the stream to use for events + The default writer to use if no listener is available + + + + Get the Encoding for this TextWriter + + + + + Write formatted string + + + + + Write formatted string + + + + + Write formatted string + + + + + Write an object + + + + + Write a string + + + + + Write a decimal + + + + + Write a double + + + + + Write formatted string + + + + + Write a ulong + + + + + Write a long + + + + + Write a uint + + + + + Write an int + + + + + Write a char + + + + + Write a boolean + + + + + Write chars + + + + + Write chars + + + + + Write a float + + + + + Write a string with newline + + + + + Write an object with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write a decimal with newline + + + + + Write a formatted string with newline + + + + + Write a double with newline + + + + + Write a uint with newline + + + + + Write a ulong with newline + + + + + Write a long with newline + + + + + Write an int with newline + + + + + Write a bool with newline + + + + + Write chars with newline + + + + + Write chars with newline + + + + + Write a char with newline + + + + + Write a float with newline + + + + + Write newline + + + + + The EventPumpState enum represents the state of an + EventPump. + + + + + The pump is stopped + + + + + The pump is pumping events with no stop requested + + + + + The pump is pumping events but a stop has been requested + + + + + EventPump pulls events out of an EventQueue and sends + them to a listener. It is used to send events back to + the client without using the CallContext of the test + runner thread. + + + + + The downstream listener to which we send events + + + + + The queue that holds our events + + + + + Thread to do the pumping + + + + + The current state of the eventpump + + + + + Constructor + + The EventListener to receive events + The event queue to pull events from + + + + Gets or sets the current state of the pump + + + + + Gets or sets the name of this EventPump + (used only internally and for testing). + + + + + Dispose stops the pump + Disposes the used WaitHandle, too. + + + + + Start the pump + + + + + Tell the pump to stop after emptying the queue. + + + + + Our thread proc for removing items from the event + queue and sending them on. Note that this would + need to do more locking if any other thread were + removing events from the queue. + + + + + NUnit.Core.Event is the abstract base for all stored events. + An Event is the stored representation of a call to the + ITestListener interface and is used to record such calls + or to queue them for forwarding on another thread or at + a later time. + + + + + The Send method is implemented by derived classes to send the event to the specified listener. + + The listener. + + + + TestStartedEvent holds information needed to call the TestStarted method. + + + + + Initializes a new instance of the class. + + The test. + + + + Calls TestStarted on the specified listener. + + The listener. + + + + TestFinishedEvent holds information needed to call the TestFinished method. + + + + + Initializes a new instance of the class. + + The result. + + + + Calls TestFinished on the specified listener. + + The listener. + + + + TestOutputEvent holds information needed to call the TestOutput method. + + + + + Initializes a new instance of the class. + + The output object. + + + + Calls TestOutput on the specified listener. + + The listener. + + + + Implements a queue of work items each of which + is queued as a WaitCallback. + + + + + Gets the count of items in the queue. + + + + + Enqueues the specified event + + The event to enqueue. + + + + Removes the first element from the queue and returns it (or null). + + + If true and the queue is empty, the calling thread is blocked until + either an element is enqueued, or is called. + + + + + If the queue not empty + the first element. + + + otherwise, if ==false + or has been called + null. + + + + + + + Stop processing of the queue + + + + + An IWorkItemDispatcher handles execution of work items. + + + + + Start execution, performing any initialization. Sets + the top level work item and dispatches it. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + true if the IWorkItemDispatcher should abort all currently running WorkItems, false if it should allow all currently running WorkItems to complete + + + + ParallelWorkItemDispatcher handles execution of work items by + queuing them for worker threads to process. + + + + + Construct a ParallelWorkItemDispatcher + + Number of workers to use + + + + Enumerates all the shifts supported by the dispatcher + + + + + Enumerates all the Queues supported by the dispatcher + + + + + Start execution, setting the top level work, + enqueuing it and starting a shift to execute it. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + Save the state of the queues + + + + + Try to restore a saved queue state + True if the state was restored, otherwise false + + + + QueuingEventListener uses an EventQueue to store any + events received on its EventListener interface. + + + + + The EventQueue created and filled by this listener + + + + + Construct a QueuingEventListener + + + + + A test has started + + The test that is starting + + + + A test case finished + + Result of the test case + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + A SimpleWorkItem represents a single test case and is + marked as completed immediately upon execution. This + class is also used for skipped or ignored test suites. + + + + + Construct a simple work item for a test. + + The test to be executed + The filter used to select this test + + + + Method that performs actually performs the work. + + + + + Creates a test command for use in running this test. + + A TestCommand + + + + SimpleWorkItemDispatcher handles execution of WorkItems by + directly executing them. It is provided so that a dispatcher + is always available in the context, thereby simplifying the + code needed to run child tests. + + + + + Start execution, creating the execution thread, + setting the top level work and dispatching it. + + + + + Dispatch a single work item for execution by + executing it directly. + The item to dispatch + + + + + Cancel (abort or stop) the ongoing run. + If no run is in process, the call has no effect. + + true if the run should be aborted, false if it should allow its currently running test to complete + + + + A TestWorker pulls work items from a queue + and executes them. + + + + + Event handler for TestWorker events + + The TestWorker sending the event + The WorkItem that caused the event + + + + Event signaled immediately before executing a WorkItem + + + + + Event signaled immediately after executing a WorkItem + + + + + Construct a new TestWorker. + + The queue from which to pull work items + The name of this worker + + + + The WorkItemQueue from which this worker pulls WorkItems + + + + + The name of this worker - also used for the thread + + + + + Indicates whether the worker thread is running + + + + + Our ThreadProc, which pulls and runs tests in a loop + + + + + Start processing work items. + + + + + Stop the thread, either immediately or after finishing the current WorkItem + + true if the thread should be aborted, false if it should allow the currently running test to complete + + + + The TextCapture class intercepts console output and writes it + to the current execution context, if one is present on the thread. + If no execution context is found, the output is written to a + default destination, normally the original destination of the + intercepted output. + + + + + Construct a TextCapture object + + The default destination for non-intercepted output + + + + Gets the Encoding in use by this TextWriter + + + + + Writes a single character + + The char to write + + + + Writes a string + + The string to write + + + + Writes a string followed by a line terminator + + The string to write + + + + A WorkItem may be an individual test case, a fixture or + a higher level grouping of tests. All WorkItems inherit + from the abstract WorkItem class, which uses the template + pattern to allow derived classes to perform work in + whatever way is needed. + + A WorkItem is created with a particular TestExecutionContext + and is responsible for re-establishing that context in the + current thread before it begins or resumes execution. + + + + + Construct a WorkItem for a particular test. + + The test that the WorkItem will run + Filter used to include or exclude child items + + + + Construct a work Item that wraps another work Item. + Wrapper items are used to represent independently + dispatched tasks, which form part of the execution + of a single test, such as OneTimeTearDown. + + The WorkItem being wrapped + + + + Initialize the TestExecutionContext. This must be done + before executing the WorkItem. + + + Originally, the context was provided in the constructor + but delaying initialization of the context until the item + is about to be dispatched allows changes in the parent + context during OneTimeSetUp to be reflected in the child. + + The TestExecutionContext to use + + + + Event triggered when the item is complete + + + + + Gets the current state of the WorkItem + + + + + The test being executed by the work item + + + + + The name of the work item - defaults to the Test name. + + + + + Filter used to include or exclude child tests + + + + + The execution context + + + + + The worker executing this item. + + + + + The test result + + + + + Gets the ParallelScope associated with the test, if any, + otherwise returning ParallelScope.Default; + + + + + Execute the current work item, including any + child work items. + + + + + Marks the WorkItem as NotRunnable. + + Reason for test being NotRunnable. + + + + Cancel (abort or stop) a WorkItem + + true if the WorkItem should be aborted, false if it should run to completion + + + + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. + + + + + Method called by the derived class when all work is complete + + + + + Builds the set up tear down list. + + Unsorted array of setup MethodInfos. + Unsorted array of teardown MethodInfos. + A list of SetUpTearDownItems + + + + Changes the result of the test, logging the old and new states + + The new ResultState + The new message + + + + WorkItemBuilder class knows how to build a tree of work items from a tree of tests + + + + + Creates a work item. + + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + True if child work items should be created and added. + + + + + Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. + + + A signed integer that indicates the relative values of and , as shown in the following table.Value Meaning Less than zero is less than .Zero equals .Greater than zero is greater than . + + The first object to compare.The second object to compare. + + + + WorkItemQueueState indicates the current state of a WorkItemQueue + + + + + The queue is paused + + + + + The queue is running + + + + + The queue is stopped + + + + + A WorkItemQueue holds work items that are ready to + be run, either initially or after some dependency + has been satisfied. + + + + + Initializes a new instance of the class. + + The name of the queue. + Flag indicating whether this is a parallel queue + "ApartmentState to use for items on this queue + + + + Gets the name of the work item queue. + + + + + Gets a flag indicating whether this queue is used for parallel execution + + + + + Gets the target ApartmentState for work items on this queue + + + + + Gets the total number of items processed so far + + + + + Gets the maximum number of work items. + + + + + Gets the current state of the queue + + + + + Get a bool indicating whether the queue is empty. + + + + + Enqueue a WorkItem to be processed + + The WorkItem to process + + + + Dequeue a WorkItem for processing + + A WorkItem or null if the queue has stopped + + + + Start or restart processing of items from the queue + + + + + Signal the queue to stop + + + + + Pause the queue for restarting later + + + + + Save the current inner queue and create new ones for use by + a non-parallel fixture with parallel children. + + + + + Restore the inner queue that was previously saved + + + + + The current state of a work item + + + + + Ready to run or continue + + + + + Work Item is executing + + + + + Complete + + + + + The dispatcher needs to do different things at different, + non-overlapped times. For example, non-parallel tests may + not be run at the same time as parallel tests. We model + this using the metaphor of a working shift. The WorkShift + class associates one or more WorkItemQueues with one or + more TestWorkers. + + Work in the queues is processed until all queues are empty + and all workers are idle. Both tests are needed because a + worker that is busy may end up adding more work to one of + the queues. At that point, the shift is over and another + shift may begin. This cycle continues until all the tests + have been run. + + + + + Construct a WorkShift + + + + + Event that fires when the shift has ended + + + + + The Name of this shift + + + + + Gets a flag indicating whether the shift is currently active + + + + + Gets a list of the queues associated with this shift. + + Used for testing + + + + Gets the list of workers associated with this shift. + + + + + Gets a bool indicating whether this shift has any work to do + + + + + Add a WorkItemQueue to the shift, starting it if the + shift is currently active. + + + + + Assign a worker to the shift. + + + + + + Start or restart processing for the shift + + + + + End the shift, pausing all queues and raising + the EndOfShift event. + + + + + Shut down the shift. + + + + + Cancel (abort or stop) the shift without completing all work + + true if the WorkShift should be aborted, false if it should allow its currently running tests to complete + + + + 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. + + + + + + + Gets or sets the maximum line length for this writer + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a given + 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 result of the constraint that failed + + + + Gets the unique type name between expected and actual. + + The expected value + The actual value causing the failure + Output of the unique type name for expected + Output of the unique type name for actual + + + + 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 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 ConstraintResult for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + Combines multiple filters so that a test must pass all + of them in order to pass this filter. + + + + + Constructs an empty AndFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters pass, otherwise false + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters match, otherwise false + + + + Checks whether the AndFilter is explicit matched by a test. + + The test to be matched + True if all the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + CategoryFilter is able to select or exclude tests + based on their categories. + + + + + + Construct a CategoryFilter using a single category name + + A category name + + + + Check whether the filter matches a test + + The test to be matched + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + A base class for multi-part filters + + + + + Constructs an empty CompositeFilter + + + + + Constructs a CompositeFilter from an array of filters + + + + + + Adds a filter to the list of filters + + The filter to be added + + + + Return a list of the composing filters. + + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is explicit matched by a test. + + The test to be matched + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + IdFilter selects tests based on their id + + + + + Construct an IdFilter for a single value + + The id the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a MethodNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a NamespaceFilter for a single namespace + + The namespace the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + NotFilter negates the operation of another filter + + + + + Construct a not filter on another filter + + The filter to be negated + + + + Gets the base filter + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Check whether the filter matches a test + + The test to be matched + True if it matches, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Combines multiple filters so that a test must pass one + of them in order to pass this filter. + + + + + Constructs an empty OrFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters pass, otherwise false + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters match, otherwise false + + + + Checks whether the OrFilter is explicit matched by a test + + The test to be matched + True if any of the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + PropertyFilter is able to select or exclude tests + based on their properties. + + + + + + Construct a PropertyFilter using a property name and expected value + + A property name + The expected value of the property + + + + Check whether the filter matches a test + + The test to be matched + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + TestName filter selects tests based on their Name + + + + + Construct a TestNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. + + + + + Returns the value matched by the filter - used for testing + + + + + Indicates whether the value is a regular expression + + + + + Construct a ValueMatchFilter for a single value. + + The value to be included. + + + + Match the input provided by the derived class + + The value to be matchedT + True for a match, false otherwise. + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. + + + + + Construct a GenericMethodHelper for a method + + MethodInfo for the method to examine + + + + Return the type arguments for the method, deducing them + from the arguments actually provided. + + The arguments to the method + An array of type arguments. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + Interface for logging within the engine + + + + + Logs the specified message at the error level. + + The message. + + + + Logs the specified message at the error level. + + The message. + The arguments. + + + + Logs the specified message at the warning level. + + The message. + + + + Logs the specified message at the warning level. + + The message. + The arguments. + + + + Logs the specified message at the info level. + + The message. + + + + Logs the specified message at the info level. + + The message. + The arguments. + + + + Logs the specified message at the debug level. + + The message. + + + + Logs the specified message at the debug level. + + The message. + The arguments. + + + + InternalTrace provides facilities for tracing the execution + of the NUnit framework. Tests and classes under test may make use + of Console writes, System.Diagnostics.Trace or various loggers and + NUnit itself traps and processes each of them. For that reason, a + separate internal trace is needed. + + Note: + InternalTrace uses a global lock to allow multiple threads to write + trace messages. This can easily make it a bottleneck so it must be + used sparingly. Keep the trace Level as low as possible and only + insert InternalTrace writes where they are needed. + TODO: add some buffering and a separate writer thread as an option. + TODO: figure out a way to turn on trace in specific classes only. + + + + + Gets a flag indicating whether the InternalTrace is initialized + + + + + Initialize the internal trace facility using the name of the log + to be written to and the trace level. + + The log name + The trace level + + + + Initialize the internal trace using a provided TextWriter and level + + A TextWriter + The InternalTraceLevel + + + + Get a named Logger + + + + + + Get a logger named for a particular Type. + + + + + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. + + + + + Use the default settings as specified by the user. + + + + + Do not display any trace messages + + + + + Display Error messages only + + + + + Display Warning level and higher messages + + + + + Display informational and higher messages + + + + + Display debug messages and higher - i.e. all messages + + + + + Display debug messages and higher - i.e. all messages + + + + + A trace listener that writes to a separate file per domain + and process using it. + + + + + Construct an InternalTraceWriter that writes to a file. + + Path to the file to use + + + + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + + + + + + Returns the character encoding in which the output is written. + + The character encoding in which the output is written. + + + + Writes a character to the text string or stream. + + The character to write to the text stream. + + + + Writes a string to the text string or stream. + + The string to write. + + + + Writes a string followed by a line terminator to the text string or stream. + + The string to write. If is null, only the line terminator is written. + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. + + + + + Provides internal logging to the NUnit framework + + + + + Initializes a new instance of the class. + + The name. + The log level. + The writer where logs are sent. + + + + Logs the message at error level. + + The message. + + + + Logs the message at error level. + + The message. + The message arguments. + + + + Logs the message at warm level. + + The message. + + + + Logs the message at warning level. + + The message. + The message arguments. + + + + Logs the message at info level. + + The message. + + + + Logs the message at info level. + + The message. + The message arguments. + + + + Logs the message at debug level. + + The message. + + + + Logs the message at debug level. + + The message. + The message arguments. + + + + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. + + + + + Construct a MethodWrapper for a Type and a MethodInfo. + + + + + Construct a MethodInfo for a given Type and method name. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the method. + + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + OSPlatform represents a particular operating system platform + + + + + Platform ID for Unix as defined by Microsoft .NET 2.0 and greater + + + + + Platform ID for Unix as defined by Mono + + + + + Platform ID for XBox as defined by .NET and Mono + + + + + Platform ID for MacOSX as defined by .NET and Mono + + + + + Get the OSPlatform under which we are currently running + + + + + Gets the actual OS Version, not the incorrect value that might be + returned for Win 8.1 and Win 10 + + + If an application is not manifested as Windows 8.1 or Windows 10, + the version returned from Environment.OSVersion will not be 6.3 and 10.0 + respectively, but will be 6.2 and 6.3. The correct value can be found in + the registry. + + The original version + The correct OS version + + + + Product Type Enumeration used for Windows + + + + + Product type is unknown or unspecified + + + + + Product type is Workstation + + + + + Product type is Domain Controller + + + + + Product type is Server + + + + + Construct from a platform ID and version + + + + + Construct from a platform ID, version and product type + + + + + Get the platform ID of this instance + + + + + Get the Version of this instance + + + + + Get the Product Type of this instance + + + + + Return true if this is a windows platform + + + + + Return true if this is a Unix or Linux platform + + + + + Return true if the platform is Win32S + + + + + Return true if the platform is Win32Windows + + + + + Return true if the platform is Win32NT + + + + + Return true if the platform is Windows CE + + + + + Return true if the platform is Xbox + + + + + Return true if the platform is MacOSX + + + + + Return true if the platform is Windows 95 + + + + + Return true if the platform is Windows 98 + + + + + Return true if the platform is Windows ME + + + + + Return true if the platform is NT 3 + + + + + Return true if the platform is NT 4 + + + + + Return true if the platform is NT 5 + + + + + Return true if the platform is Windows 2000 + + + + + Return true if the platform is Windows XP + + + + + Return true if the platform is Windows 2003 Server + + + + + Return true if the platform is NT 6 + + + + + Return true if the platform is NT 6.0 + + + + + Return true if the platform is NT 6.1 + + + + + Return true if the platform is NT 6.2 + + + + + Return true if the platform is NT 6.3 + + + + + Return true if the platform is Vista + + + + + Return true if the platform is Windows 2008 Server (original or R2) + + + + + Return true if the platform is Windows 2008 Server (original) + + + + + Return true if the platform is Windows 2008 Server R2 + + + + + Return true if the platform is Windows 2012 Server (original or R2) + + + + + Return true if the platform is Windows 2012 Server (original) + + + + + Return true if the platform is Windows 2012 Server R2 + + + + + Return true if the platform is Windows 7 + + + + + Return true if the platform is Windows 8 + + + + + Return true if the platform is Windows 8.1 + + + + + Return true if the platform is Windows 10 + + + + + Return true if the platform is Windows Server. This is named Windows + Server 10 to distinguish it from previous versions of Windows Server. + + + + + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. + + + + + Construct a ParameterWrapper for a given method and parameter + + + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter. + + + + + Gets the underlying ParameterInfo + + + + + Gets the Type of the parameter + + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the parameter. + + + + + PlatformHelper class is used by the PlatformAttribute class to + determine whether a platform is supported. + + + + + Comma-delimited list of all supported OS platform constants + + + + + Comma-delimited list of all supported Runtime platform constants + + + + + Default constructor uses the operating system and + common language runtime of the system. + + + + + Construct a PlatformHelper for a particular operating + system and common language runtime. Used in testing. + + RuntimeFramework to be used + OperatingSystem to be used + + + + Test to determine if one of a collection of platforms + is being used currently. + + + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Test to determine if the a particular platform or comma- + delimited set of platforms is in use. + + Name of the platform or comma-separated list of platform ids + True if the platform is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + A PropertyBag represents a collection of name value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + + + + Adds a key/value pair to the property set + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + + True if their are _values present, otherwise false + + + + + Gets a collection containing all the keys in the property set + + + + + + Gets or sets the list of _values for a particular key + + + + + Returns an XmlNode representing the current PropertyBag. + + Not used + An XmlNode representing the PropertyBag + + + + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + + The parent node. + Not used + + + + + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. + + + + + The FriendlyName of the AppDomain in which the assembly is running + + + + + The selected strategy for joining parameter data into test cases + + + + + The process ID of the executing assembly + + + + + The stack trace from any data provider that threw + an exception. + + + + + The reason a test was not run + + + + + The author of the tests + + + + + The ApartmentState required for running the test + + + + + The categories applying to a test + + + + + The Description of a test + + + + + The number of threads to be used in running tests + + + + + The maximum time in ms, above which the test is considered to have failed + + + + + The ParallelScope associated with a test + + + + + The number of times the test should be repeated + + + + + Indicates that the test should be run on a separate thread + + + + + The culture to be set for a test + + + + + The UI culture to be set for a test + + + + + The type that is under test + + + + + The timeout value for the test + + + + + The test will be ignored until the given date + + + + + The optional Order the test will run in + + + + + Randomizer returns a set of random _values in a repeatable + way, to allow re-running of tests if necessary. It extends + the .NET Random class, providing random values for a much + wider range of types. + + The class is used internally by the framework to generate + test case data and is also exposed for use by users through + the TestContext.Random property. + + + For consistency with the underlying Random Type, methods + returning a single value use the prefix "Next..." Those + without an argument return a non-negative value up to + the full positive range of the Type. Overloads are provided + for specifying a maximum or a range. Methods that return + arrays or strings use the prefix "Get..." to avoid + confusion with the single-value methods. + + + + + Initial seed used to create randomizers for this run + + + + + 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. + + + + + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. + + + + + + Default constructor + + + + + Construct based on seed value + + + + + + Returns a random unsigned int. + + + + + Returns a random unsigned int less than the specified maximum. + + + + + Returns a random unsigned int within a specified range. + + + + + Returns a non-negative random short. + + + + + Returns a non-negative random short less than the specified maximum. + + + + + Returns a non-negative random short within a specified range. + + + + + Returns a random unsigned short. + + + + + Returns a random unsigned short less than the specified maximum. + + + + + Returns a random unsigned short within a specified range. + + + + + Returns a random long. + + + + + Returns a random long less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random ulong. + + + + + Returns a random ulong less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random Byte + + + + + Returns a random Byte less than the specified maximum. + + + + + Returns a random Byte within a specified range + + + + + Returns a random SByte + + + + + Returns a random sbyte less than the specified maximum. + + + + + Returns a random sbyte within a specified range + + + + + Returns a random bool + + + + + Returns a random bool based on the probability a true result + + + + + Returns a random double between 0.0 and the specified maximum. + + + + + Returns a random double within a specified range. + + + + + Returns a random float. + + + + + Returns a random float between 0.0 and the specified maximum. + + + + + Returns a random float within a specified range. + + + + + Returns a random enum value of the specified Type as an object. + + + + + Returns a random enum value of the specified Type. + + + + + Default characters for random functions. + + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + string representing the set of characters from which to construct the resulting string + A random string of arbitrary length + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + A random string of arbitrary length + Uses DefaultStringChars as the input character set + + + + Generate a random string based on the characters from the input string. + + A random string of the default length + Uses DefaultStringChars as the input character set + + + + Returns a random decimal. + + + + + Returns a random decimal between positive zero and the specified maximum. + + + + + Returns a random decimal within a specified range, which is not + permitted to exceed decimal.MaxVal in the current implementation. + + + A limitation of this implementation is that the range from min + to max must not exceed decimal.MaxVal. + + + + + Helper methods for inspecting a type by reflection. + + Many of these methods take ICustomAttributeProvider as an + argument to avoid duplication, even though certain attributes can + only appear on specific types of members, like MethodInfo or Type. + + In the case where a type is being examined for the presence of + an attribute, interface or named member, the Reflect methods + operate with the full name of the member being sought. This + removes the necessity of the caller having a reference to the + assembly that defines the item being sought and allows the + NUnit core to inspect assemblies that reference an older + version of the NUnit framework. + + + + + Examine a fixture type and return an array of methods having a + particular attribute. The array is order with base methods first. + + The type to examine + The attribute Type to look for + Specifies whether to search the fixture type inheritance chain + The array of methods found + + + + Examine a fixture type and return true if it has a method with + a particular attribute. + + The type to examine + The attribute Type to look for + True if found, otherwise false + + + + Invoke the default constructor on a Type + + The Type to be constructed + An instance of the Type + + + + Invoke a constructor on a Type with arguments + + The Type to be constructed + Arguments to the constructor + An instance of the Type + + + + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() + + An array of objects + An array of Types + + + + Invoke a parameterless method returning void on an object. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + + + + Invoke a method, converting any TargetInvocationException to an NUnitException. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The TestResult class represents the result of a test. + + + + + Error message for when child tests have errors + + + + + Error message for when child tests have warnings + + + + + Error message for when child tests are ignored + + + + + The minimum duration for tests + + + + + Aggregate assertion count + + + + + ReaderWriterLock + + + + + Construct a test result given a Test + + The test to be used + + + + Gets the test with which this result is associated. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets or sets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Adds a test attachment to the test result + + The TestAttachment object to attach + + + + Gets the collection of files attached to the test + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets or sets the count of asserts executed + when running the test. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Gets a TextWriter, which will write output to be included in the result. + + + + + Gets any text output written to this result. + + + + + Gets a list of assertion results associated with the test. + + + + + Returns the Xml representation of the result. + + If true, descendant results are included + An XmlNode representing the result + + + + Adds the XML representation of the result as a child of the + supplied parent node.. + + The parent node. + If true, descendant results are included + + + + + Gets a count of pending failures (from Multiple Assert) + + + + + Gets the worst assertion status (highest enum) in all the assertion results + + + + + Set the result of the test + + The ResultState to use in the result + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + Stack trace giving the location of the command + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + The FailureSite to use in the result + + + + RecordTearDownException appends the message and stacktrace + from an exception arising during teardown of the test + to any previously recorded information, so that any + earlier failure information is not lost. Note that + calling Assert.Ignore, Assert.Inconclusive, etc. during + teardown is treated as an error. If the current result + represents a suite, it may show a teardown error even + though all contained tests passed. + + The Exception to be recorded + + + + Determine result after test has run to completion. + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Adds a reason element to a node and returns it. + + The target node. + The new reason element. + + + + Adds a failure element to a node and returns it. + + The target node. + The new failure element. + + + + Adds an attachments element to a node and returns it. + + The target node. + The new attachments element. + + + + Creates a failure message incorporating failures + from a Multiple Assert block for use by runners + that don't know about AssertionResults. + + Message as a string + + + + Enumeration identifying a common language + runtime implementation. + + + + Any supported runtime framework + + + Microsoft .NET Framework + + + Microsoft Shared Source CLI + + + Mono + + + MonoTouch + + + + RuntimeFramework represents a particular version + of a common language runtime implementation. + + + + + DefaultVersion is an empty Version, used to indicate that + NUnit should select the CLR version to use for the test. + + + + + Construct from a runtime type and version. If the version has + two parts, it is taken as a framework version. If it has three + or more, it is taken as a CLR version. In either case, the other + version is deduced based on the runtime type and provided version. + + The runtime type of the framework + The version of the framework + + + + Static method to return a RuntimeFramework object + for the framework that is currently in use. + + + + + The type of this runtime framework + + + + + The framework version for this runtime framework + + + + + The CLR version for this runtime framework + + + + + Return true if any CLR version may be used in + matching this RuntimeFramework object. + + + + + Returns the Display name for this framework + + + + + Parses a string representing a RuntimeFramework. + The string may be just a RuntimeType name or just + a Version or a hyphenated RuntimeType-Version or + a Version prefixed by 'versionString'. + + + + + + + Overridden to return the short name of the framework + + + + + + Returns true if the current framework matches the + one supplied as an argument. Two frameworks match + if their runtime types are the same or either one + is RuntimeType.Any and all specified version components + are equal. Negative (i.e. unspecified) version + components are ignored. + + The RuntimeFramework to be matched. + True on match, otherwise false + + + + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. + + + + + Single instance of our default filter + + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + Regex pattern used to delete lines from the bottom of the stack + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + + + + Construct a stack filter instance + + + + + Filters a raw stack trace and returns the result. + + The original stack trace + A filtered stack trace + + + + Provides methods to support legacy string comparison methods. + + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if + strB is sorted first + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + True if the strings are equivalent, false if not. + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + The expected result to be returned + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + The expected result of the test, which + must match the method return type. + + + + + Gets a value indicating whether an expected result was specified. + + + + + TestCaseTimeoutException is thrown when a test running directly + on a TestWorker thread is cancelled due to timeout. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + Helper class used to save and restore certain static or + singleton settings in the environment that affect tests + or which might be changed by the user tests. + + + + + Link to a prior saved context + + + + + Indicates that a stop has been requested + + + + + The event listener currently receiving notifications + + + + + The number of assertions for the current test + + + + + The current culture + + + + + The current UI culture + + + + + The current test result + + + + + The current Principal. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + An existing instance of TestExecutionContext. + + + + Gets and sets the current context. + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current test event listener + + + + + The current WorkItemDispatcher. Made public for + use by nunitlite.tests + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + Default tolerance value used for floating point equality + when no other tolerance is specified. + + + + + The worker that spawned the context. + For builds without the parallel feature, it is null. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets the assert count. + + The assert count. + + + + The current nesting level of multiple assert blocks + + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + Gets or sets the current for the Thread. + + + + + The current head of the ValueFormatter chain, copied from MsgUtils.ValueFormatter + + + + + If true, all tests must run on the same thread. No new thread may be spawned. + + + + + Record any changes in the environment made by + the test code in the execution context so it + will be passed on to lower level tests. + + + + + Set up the execution environment to match a context. + Note that we may be running on the same thread where the + context was initially created or on a different thread. + + + + + Increments the assert count by one. + + + + + Increments the assert count by a specified amount. + + + + + Adds a new ValueFormatterFactory to the chain of formatters + + The new factory + + + + Obtain lifetime service object + + + + + + An IsolatedContext is used when running code + that may effect the current result in ways that + should not impact the final result of the test. + A new TestExecutionContext is created with an + initially clear result, which is discarded on + exiting the context. + + + using (new TestExecutionContext.IsolatedContext()) + { + // Code that should not impact the result + } + + + + + Save the original current TestExecutionContext and + make a new isolated context current. + + + + + Restore the original TestExecutionContext. + + + + + Enumeration indicating whether the tests are + running normally or being cancelled. + + + + + Running normally with no stop requested + + + + + A graceful stop has been requested + + + + + A forced stop has been requested + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Unique Empty filter. + + + + + Indicates whether this is the EmptyFilter + + + + + Indicates whether this is a top-level filter, + not contained in any other filter. + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Determine whether the test itself matches the filter criteria, without + examining either parents or descendants. This is overridden by each + different type of filter to perform the necessary tests. + + The test to which the filter is applied + True if the filter matches the any parent of the test + + + + Determine whether any ancestor of the test matches the filter criteria + + The test to which the filter is applied + True if the filter matches the an ancestor of the test + + + + Determine whether any descendant of the test matches the filter criteria. + + The test to be matched + True if at least one descendant matches the filter criteria + + + + Create a TestFilter instance from an xml representation. + + + + + Create a TestFilter from it's TNode representation + + + + + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. + + + + + Adds an XML node + + True if recursive + The added XML node + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + Type arguments used to create a generic fixture instance + + + + + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test case has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Construct a new TestListener - private so it may not be used. + + + + + Get a listener that does nothing + + + + + TestNameGenerator is able to create test names according to + a coded pattern. + + + + + Default pattern used to generate names + + + + + Construct a TestNameGenerator + + + + + Construct a TestNameGenerator + + The pattern used by this generator. + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + The display name + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + Arguments to be used + The display name + + + + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a ParameterSet from an object implementing ITestData + + + + + + The RunState for this set of parameters. + + + + + The arguments to be used in running the test, + which must match the method signature. + + + + + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. + + + + + Gets the property dictionary for this test + + + + + Applies ParameterSet _values to the test itself. + + A test. + + + + The original arguments provided by the user, + used for display purposes. + + + + + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. + + + + + Initializes a new instance of the class. + + The callback handler to be used for reporting progress. + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished. Sends a result summary to the callback. + to + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Returns the parent test item for the targer test item if it exists + + + parent test item + + + + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. + + The string to be used + A new string with the _values replaced + + + + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. + + + + + Initializes a new instance of the class. + + The ITypeInfo for the type that represents the suite. + + + + Gets a string representing the type of test + + + + + + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. + + + + + Construct from a MethodInfo + + + + + + Gets a string representing the type of test + + + + + + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. + + + + + Initializes a new instance of the class. + + The type. + + + + The Test abstract class represents a test within the framework. + + + + + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. + + + + + Used to cache the declaring type for this MethodInfo + + + + + Method property backing field + + + + + Constructs a test given its name + + The name of the test + + + + Constructs a test given the path through the + test hierarchy to its parent and a name. + + The parent tests full name + The name of the test + + + + TODO: Documentation needed for constructor + + + + + + Construct a test from a MethodInfo + + + + + + Gets or sets the id of the test + + + + + + Gets or sets the name of the test + + + + + Gets or sets the fully qualified name of the test + + + + + + Gets the name of the class where this test was declared. + Returns null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + The arguments to use in creating the test or empty array if none required. + + + + + Gets the TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. + + + + + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Whether or not the test should be run + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Gets a string representing the type of test. Used as an attribute + value in the XML representation of a test and has no other + function in the framework. + + + + + Gets a count of test cases represented by + or contained under this test. + + + + + Gets the properties for this test + + + + + Returns true if this is a TestSuite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the parent as a Test object. + Used by the core to set the parent. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets or sets a fixture object for running this test. + + + + + Static prefix used for ids in this AppDomain. + Set by FrameworkController. + + + + + Gets or Sets the Int value representing the seed for the RandomGenerator + + + + + + The SetUp methods. + + + + + The teardown methods + + + + + Creates a TestResult for this test. + + A TestResult suitable for this type of test. + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object implementing ICustomAttributeProvider + + + + Mark the test as Invalid (not runnable) specifying a reason + + The reason the test is not runnable + + + + Get custom attributes applied to a test + + + + + Add standard attributes and members to a test node. + + + + + + + Returns the Xml representation of the test + + If true, include child tests recursively + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Compares this test to another test for sorting purposes + + The other test + Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test + + + + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. + + + + + Initializes a new instance of the class + specifying the Assembly and the path from which it was loaded. + + The assembly this test represents. + The path used to load the assembly. + + + + Initializes a new instance of the class + for a path which could not be loaded. + + The path used to load the assembly. + + + + Copy-constructor style to create a filtered copy of the test assemblies + test cases + + + + + + + Gets the Assembly represented by this instance. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Get custom attributes specified on the assembly + + + + + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. + + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used + + + + The TestMethod class represents a Test implemented as a method. + + + + + The ParameterSet used to create this test method + + + + + Initializes a new instance of the class. + + The method to be used as a test. + + + + Initializes a new instance of the class. + + The method to be used as a test. + The suite or fixture to which the new test will be added + + + + The arguments to use in executing the test method, or empty array if none are provided. + + + + + Overridden to return a TestCaseResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Returns a TNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Gets this test's child tests + + A list of child tests + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns the name of the method + + + + + TestSuite represents a composite test, which contains other tests. + + + + + Our collection of child tests + + + + + Initializes a new instance of the class. + + The name of the suite. + + + + Initializes a new instance of the class. + + Name of the parent suite. + The name of the suite. + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Copy constructor style to create a filtered copy of the given test suite + + Test Suite to copy + Filter to be applied + + + + Sorts tests under this suite. + + + + + Adds a test to the suite. + + The test. + + + + Gets this test's child tests + + The list of child tests + + + + Gets a count of test cases represented by + or contained under this test. + + + + + + The arguments to use in creating the fixture, or empty array if none are provided. + + + + + Set to true to suppress sorting this suite's contents + + + + + OneTimeSetUp methods for this suite + + + + + OneTimeTearDown methods for this suite + + + + + Overridden to return a TestSuiteResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. + + A list of methodinfos to check + + + + ThreadUtility provides a set of static methods convenient + for working with threads. + + + + + Pre-Task compatibility + + + + + Abort a thread, helping to dislodging it if it is blocked in native code + + The thread to abort + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Do our best to kill a thread + + The thread to kill + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Do our best to kill a thread, passing state info + + The thread to kill + Info for the ThreadAbortException handler + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Schedule a threadpool thread to check on the aborting thread in case it's in a message pump native blocking wait + + + + + Captures the current thread's native id. If provided to later, allows the thread to be killed if it's in a message pump native blocking wait. + + + + + Sends a message to the thread to dislodge it from native code and allow a return to managed code, where a ThreadAbortException can be generated. + The message is meaningless (WM_CLOSE without a window handle) but it will end any blocking message wait. + + + + + TypeHelper provides static methods that operate on Types. + + + + + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. + + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The display name for the Type + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The arglist provided. + The display name for the Type + + + + Returns the best fit for a common type to be used in + matching actual arguments to a methods Type parameters. + + The first type. + The second type. + Either type1 or type2, depending on which is more general. + + + + Determines whether the specified type is numeric. + + The type to be examined. + + true if the specified type is numeric; otherwise, false. + + + + + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. + + An array of args to be converted + A ParameterInfo[] whose types will be used as targets + + + + Determines whether this instance can deduce type args for a generic type from the supplied arguments. + + The type to be examined. + The arglist. + The type args to be used. + + true if this the provided args give sufficient information to determine the type args to be used; otherwise, false. + + + + + Return the interfaces implemented by a Type. + + The Type to be examined. + An array of Types for the interfaces. + + + + The TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. + + + + + Construct a TypeWrapper for a specified Type. + + + + + Gets the underlying Type on which this TypeWrapper is based. + + + + + Gets the base type of this type as an ITypeInfo + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Returns true if the Type wrapped is T + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type represents a static class. + + + + + Get the display name for this type + + + + + Get the display name for an object of this type, constructed with the specified args. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns an array of custom attributes of the specified type applied to this type + + + + + Returns a value indicating whether the type has an attribute of the specified type. + + + + + + + + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Represents the result of running a single test case. + + + + + Construct a TestCaseResult based on a TestMethod + + A TestMethod to which the result applies. + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Represents the result of running a test suite + + + + + Construct a TestSuiteResult base on a TestSuite + + The TestSuite to which the result applies + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. + + The result to be added + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 regular expression 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 a subpath of the 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 + inclusively within a specified range. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + 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 + + + + + Basic Asserts on strings. + + + + + DO NOT USE! Use StringAssert.AreEqualIgnoringCase(...) or Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 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 + + + + 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 TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the 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 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 + + + + + + + + Marks the test case as explicit. + + + + + Marks the test case as explicit, specifying the reason. + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Provide the context information of the current test. + This is an adapter for the internal ExecutionContext + class, hiding the internals from the user test. + + + + + Construct a TestContext for an ExecutionContext + + The ExecutionContext to adapt + + + + 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 TextWriter that will send output to the current test result. + + + + + Gets a TextWriter that will send output directly to Console.Error + + + + + Gets a TextWriter for use in displaying immediate progress messages + + + + + TestParameters object holds parameters for the test run, if any are specified + + + + + Static DefaultWorkDirectory is now used as the source + of the public instance property WorkDirectory. This is + a bit odd but necessary to avoid breaking user tests. + + + + + Get a representation of the current test. + + + + + Gets a Representation of the TestResult for the current test. + + + + + Gets the unique name of the Worker that is executing this test. + + + + + Gets the directory containing the current test assembly. + + + + + Gets the directory to be used for outputting files created + by this test run. + + + + + Gets the random generator. + + + The random generator. + + + + Write the string representation of a boolean value to the current result + + + Write a char to the current result + + + Write a char array to the current result + + + Write the string representation of a double to the current result + + + Write the string representation of an Int32 value to the current result + + + Write the string representation of an Int64 value to the current result + + + Write the string representation of a decimal value to the current result + + + Write the string representation of an object to the current result + + + Write the string representation of a Single value to the current result + + + Write a string to the current result + + + Write the string representation of a UInt32 value to the current result + + + Write the string representation of a UInt64 value to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a line terminator to the current result + + + Write the string representation of a boolean value to the current result followed by a line terminator + + + Write a char to the current result followed by a line terminator + + + Write a char array to the current result followed by a line terminator + + + Write the string representation of a double to the current result followed by a line terminator + + + Write the string representation of an Int32 value to the current result followed by a line terminator + + + Write the string representation of an Int64 value to the current result followed by a line terminator + + + Write the string representation of a decimal value to the current result followed by a line terminator + + + Write the string representation of an object to the current result followed by a line terminator + + + Write the string representation of a Single value to the current result followed by a line terminator + + + Write a string to the current result followed by a line terminator + + + Write the string representation of a UInt32 value to the current result followed by a line terminator + + + Write the string representation of a UInt64 value to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + + This method adds the a new ValueFormatterFactory to the + chain of responsibility used for formatting values in messages. + The scope of the change is the current TestContext. + + The factory delegate + + + + Attach a file to the current test result + + Relative or absolute file path to attachment + Optional description of attachment + + + + This method provides a simplified way to add a ValueFormatter + delegate to the chain of responsibility, creating the factory + delegate internally. It is useful when the Type of the object + is the only criterion for selection of the formatter, since + it can be used without getting involved with a compound function. + + The type supported by this formatter + The ValueFormatter delegate + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Construct a TestAdapter for a Test + + The Test to be adapted + + + + Gets the unique Id of a test + + + + + The name of the test, which may or may not be + the same as the method name. + + + + + The name of the method representing the test. + + + + + The FullName of the test + + + + + The ClassName of the test + + + + + The properties of the test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a TestResult + + The TestResult to be adapted + + + + Gets a ResultState representing the outcome of the test. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + The TestFixtureData class represents a set of arguments + and other parameter info to be used for a parameterized + fixture. It is derived from TestFixtureParameters and adds a + fluent syntax for use in initializing the fixture. + + + + + 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. + + + + Marks the test fixture as explicit. + + + + + Marks the test fixture as explicit, specifying the reason. + + + + + Ignores this TestFixture, specifying the reason. + + The reason. + + + + + TestParameters class holds any named parameters supplied to the test run + + + + + Gets the number of test parameters + + + + + Gets a collection of the test parameter names + + + + + Gets a flag indicating whether a parameter with the specified name exists. + + Name of the parameter + True if it exists, otherwise false + + + + Indexer provides access to the internal dictionary + + Name of the parameter + Value of the parameter or null if not present + + + + Get method is a simple alternative to the indexer + + Name of the parameter + Value of the parameter or null if not present + + + + Get the value of a parameter or a default string + + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Get the value of a parameter or return a default + + The return Type + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Adds a parameter to the list + + Name of the parameter + Value of the parameter + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + 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 ArgumentException + + + + + Creates a constraint specifying an expected ArgumentNullException + + + + + Creates a constraint specifying an expected InvalidOperationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + 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 + + + + + Provides static methods to express conditions + that must be met for the test to succeed. If + any test fails, a warning is issued. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + 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 an actual value, succeeding if the constraint + fails and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + The message to display if the condition is true + Arguments to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + FrameworkPackageSettings is a static class containing constant values that + are used as keys in setting up a TestPackage. These values are used in + the framework, and set in the runner. Setting values may be a string, int or bool. + + + + + Flag (bool) indicating whether tests are being debugged. + + + + + Flag (bool) indicating whether to pause execution of tests to allow + the user to attach a debugger. + + + + + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. + + + + + Full path of the directory to be used for work and result files. + This path is provided to tests by the framework TestContext. + + + + + Integer value in milliseconds for the default timeout value + for test cases. If not specified, there is no timeout except + as specified by attributes on the tests themselves. + + + + + A TextWriter to which the internal trace will be sent. + + + + + A list of tests to be loaded. + + + + + The number of test threads to run for the assembly. If set to + 1, a single queue is used. If set to 0, tests are executed + directly, without queuing. + + + + + The random seed to be used for this assembly. If specified + as the value reported from a prior run, the framework should + generate identical random values for tests as were used for + that run, provided that no change has been made to the test + assembly. Default is a random value itself. + + + + + If true, execution stops after the first error or failure. + + + + + If true, use of the event queue is suppressed and test events are synchronous. + + + + + The default naming pattern used in generating test names + + + + + Parameters to be passed on to the tests, serialized to a single string which needs parsing. Obsoleted by ; kept for backward compatibility. + + + + + Parameters to be passed on to the tests, already parsed into an IDictionary<string, string>. Replaces . + + + + + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. + + + + + Gets the custom attributes from the given object. + + .NET Standard 1.3 libraries do not have an ICustomAttributeProvider, so we need to cast to each of + it's direct subtypes and try to get attributes off those instead. + The actual. + Type of the attribute. + if set to true [inherit]. + A list of the given attribute on the given object. + + + + A MarshalByRefObject that lives forever + + + + + Obtains a lifetime service object to control the lifetime policy for this instance. + + + + + Provides NUnit specific extensions to aid in Reflection + across multiple frameworks + + + This version of the class supplies GetTypeInfo() on platforms + that don't support it. + + + + + GetTypeInfo gives access to most of the Type information we take for granted + on .NET Core and Windows Runtime. Rather than #ifdef different code for different + platforms, it is easiest to just code all platforms as if they worked this way, + thus the simple passthrough. + + + + + + + Extensions for Assembly that are not available in pre-4.5 .NET releases + + + + + An easy way to get a single custom attribute from an assembly + + The attribute Type + The assembly + An attribute of Type T + + + + Type extensions that apply to all target frameworks + + + + + Determines if the given array is castable/matches the array. + + + + + + + + Determines if one type can be implicitly converted from another + + + + + + + + This class is used as a flag when we get a parameter list for a method/constructor, but + we do not know one of the types because null was passed in. + + + + diff --git a/csharp/packages/NUnit.3.7.1/lib/net45/nunit.framework.dll b/csharp/packages/NUnit.3.7.1/lib/net45/nunit.framework.dll new file mode 100644 index 0000000000000000000000000000000000000000..2451b3ffa3e6d80d9aa2208df4991486396ee2eb GIT binary patch literal 333312 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

    qI5ja6-+oZslY1ter>f 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 YVIW@TH8Gr%U-)}8re6=`sxk1t0W1cas{jB1 literal 0 HcmV?d00001 diff --git a/csharp/packages/NUnit.3.7.1/lib/net45/nunit.framework.xml b/csharp/packages/NUnit.3.7.1/lib/net45/nunit.framework.xml new file mode 100644 index 00000000..788ba07d --- /dev/null +++ b/csharp/packages/NUnit.3.7.1/lib/net45/nunit.framework.xml @@ -0,0 +1,19434 @@ + + + + nunit.framework + + + +

    + The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. + + + + + The default suite builder used by the test assembly builder. + + + + + Initializes a new instance of the class. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + FrameworkController provides a facade for use in loading, browsing + and running tests without requiring a reference to the NUnit + framework. All calls are encapsulated in constructors for + this class and its nested classes, which only require the + types of the Common Type System as arguments. + + The controller supports four actions: Load, Explore, Count and Run. + They are intended to be called by a driver, which should allow for + proper sequencing of calls. Load must be called before any of the + other actions. The driver may support other actions, such as + reload on run, by combining these calls. + + + + + Construct a FrameworkController using the default builder and runner. + + The AssemblyName or path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController using the default builder and runner. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The full AssemblyName or the path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Gets the ITestAssemblyBuilder used by this controller instance. + + The builder. + + + + Gets the ITestAssemblyRunner used by this controller instance. + + The runner. + + + + Gets the AssemblyName or the path for which this FrameworkController was created + + + + + Gets the Assembly for which this + + + + + Gets a dictionary of settings for the FrameworkController + + + + + Loads the tests in the assembly + + + + + + Returns info about the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of exploring the tests + + + + Runs the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Runs the tests in an assembly synchronously reporting back the test results through the callback + or through the return value + + The callback that receives the test results + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Runs the tests in an assembly asynchronously reporting back the test results through the callback + + The callback that receives the test results + A string containing the XML representation of the filter to use + + + + Stops the test run + + True to force the stop, false for a cooperative stop + + + + Counts the number of test cases in the loaded TestSuite + + A string containing the XML representation of the filter to use + The number of tests + + + + Inserts environment element + + Target node + The new node + + + + Inserts settings element + + Target node + Settings dictionary + The new node + + + + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. + + + + + LoadTestsAction loads a test into the FrameworkController + + + + + LoadTestsAction loads the tests in an assembly. + + The controller. + The callback handler. + + + + ExploreTestsAction returns info about the tests in an assembly + + + + + Initializes a new instance of the class. + + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. + + + + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. + + + + + Construct a CountsTestAction and perform the count of test cases. + + A FrameworkController holding the TestSuite whose cases are to be counted + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunTestsAction runs the loaded TestSuite held by the FrameworkController. + + + + + Construct a RunTestsAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunAsyncAction initiates an asynchronous test run, returning immediately + + + + + Construct a RunAsyncAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + StopRunAction stops an ongoing run. + + + + + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. + + The FrameworkController for which a run is to be stopped. + True the stop should be forced, false for a cooperative stop. + >A callback handler used to report results + A forced stop will cause threads and processes to be killed as needed. + + + + The ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + The ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. + + + + + Gets the tree of loaded tests, or null if + no tests have been loaded. + + + + + Gets the tree of test results, if the test + run is completed, otherwise null. + + + + + Indicates whether a test has been loaded + + + + + Indicates whether a test is currently running + + + + + Indicates whether a test run is complete + + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + File name of the assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive ITestListener notifications. + A test filter used to select tests to be run + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Implementation of ITestAssemblyRunner + + + + + Initializes a new instance of the class. + + The builder. + + + + Gets the default level of parallel execution (worker threads) + + + + + The tree of tests that was loaded by the builder + + + + + The test result, if a run has completed + + + + + Indicates whether a test is loaded + + + + + Indicates whether a test is running + + + + + Indicates whether a test run is complete + + + + + Our settings, specified when loading the assembly + + + + + The top level WorkItem created for the assembly as a whole + + + + + The TestExecutionContext for the top level WorkItem + + + + + Loads the tests found in an Assembly + + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Loads the tests found in an Assembly + + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + RunAsync is a template method, calling various abstract and + virtual methods to be overridden by derived classes. + + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any tests that are currently running + + + + Initiate the test run. + + + + + Create the initial TestExecutionContext used to run tests + + The ITestListener specified in the RunAsync call + + + + Handle the the Completed event for the top level work item + + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + Verifies that the first int is greater than the second + int. 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 int is greater than the second + int. 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Verifies that the first value is greater than or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that an int is zero. + + The number to be examined + + + + Asserts that an int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is zero. + + The number to be examined + + + + Asserts that an unsigned int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is zero. + + The number to be examined + + + + Asserts that a Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is zero. + + The number to be examined + + + + Asserts that an unsigned Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is not zero. + + The number to be examined + + + + Asserts that an int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is not zero. + + The number to be examined + + + + Asserts that an unsigned int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is not zero. + + The number to be examined + + + + Asserts that a Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is positive. + + The number to be examined + + + + Asserts that an int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is positive. + + The number to be examined + + + + Asserts that an unsigned int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is positive. + + The number to be examined + + + + Asserts that a Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is positive. + + The number to be examined + + + + Asserts that an unsigned Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is positive. + + The number to be examined + + + + Asserts that a decimal is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is positive. + + The number to be examined + + + + Asserts that a double is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is positive. + + The number to be examined + + + + Asserts that a float is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is negative. + + The number to be examined + + + + Asserts that an int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is negative. + + The number to be examined + + + + Asserts that an unsigned int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is negative. + + The number to be examined + + + + Asserts that a Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is negative. + + The number to be examined + + + + Asserts that an unsigned Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is negative. + + The number to be examined + + + + Asserts that a decimal is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is negative. + + The number to be examined + + + + Asserts that a double is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is negative. + + The number to be examined + + + + Asserts that a float is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + 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. + + + + + DO NOT USE! Use Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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. + + + + + Issues a warning using the message and arguments provided. + + The message to display. + Arguments to be used in formatting the message + + + + Issues a warning using the message provided. + + The message to display. + + + + 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. + + + + + Asserts that an object is contained in a collection. + + The expected object + The collection 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 collection. + + The expected object + The collection to be examined + + + + Wraps code containing a series of assertions, which should all + be executed, even if they fail. Failed results are saved and + reported at the end of the code block. + + A TestDelegate to be executed in Multiple Assertion mode. + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Verifies that an async 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 an async delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that an async delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + + + + Verifies that an async delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + + + + Verifies that an async 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 an async delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that an async 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 an async 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 an async delegate throws an exception of a certain Type + or one derived from it 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 an async delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that an async delegate does not throw an exception + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate does not throw an exception. + + A TestDelegate + + + + 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 + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + 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 TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + 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 TestDelegate + + + + 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 + + + + 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 + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it 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 of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + 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 TestDelegate + + + + 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 + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + 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 + + + + 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 + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + 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 function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments 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 + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + Delegate used by tests that execute async code and + capture any thrown exception. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter names in making asserts. + + + + + 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 + + + + 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. + + 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 + + + + 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 + + + + 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 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 + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 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 regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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. + + + + + DefaultFloatingPointToleranceAttribute sets the tolerance used + by default when checking the equality of floating point values. + + + + + Construct specifying an amount + + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + The NonTestAssemblyAttribute may be used by third-party frameworks + or other software that references the nunit framework but does not + contain tests. Applying the attribute indicates that the assembly + is not a test assembly and may prevent errors if certain runners + attempt to load the assembly. Note that recognition of the attribute + depends on each individual runner. + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a NonParallelizableAttribute. + + + + + AfterCommand is a DelegatingTestCommand that performs some + specific action after the inner command is run. + + + + + Construct an AfterCommand + + + + + Execute the command + + + + + Set this to perform action after the inner command. + + + + + BeforeTestCommand is a DelegatingTestCommand that performs some + specific action before the inner command is run. + + + + + Construct a BeforeCommand + + + + + Execute the command + + + + + Action to perform before the inner command. + + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + + + + EmptyTestCommand is a TestCommand that does nothing. It simply + returns the current result from the context when executed. We + use it to avoid testing for null when executing a chain of + DelegatingTestCommands. + + + + + Construct a NullCommand for a test + + + + + Execute the command + + + + + TestActionAfterCommand handles the AfterTest method of a single + TestActionItem, provided the items BeforeTest has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + TestActionBeforeCommand handles the BeforeTest method of a single + TestActionItem, relying on the item to remember it has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Perform the before test action + + + + + Perform the after test action + + + + + ConstructFixtureCommand constructs the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + + + + TimeoutCommand creates a timer in order to cancel + a test if it exceeds a specified time and adjusts + the test result if it did time out. + + + + + Initializes a new instance of the class. + + The inner command + Timeout value + + + + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + A SetUpTearDownList for use by the command + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + A SetUpTearDownList for use by the command + + + + ContextSettingsCommand applies specified changes to the + TestExecutionContext prior to running a test. No special + action is needed after the test runs, since the prior + context will be restored automatically. + + + + + DelegatingTestCommand wraps an inner TestCommand. + Derived classes may do what they like before or + after running the inner command. + + + + TODO: Documentation needed for field + + + + TODO: Documentation needed for constructor + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The inner command. + The max time allowed in milliseconds + + + + SetUpTearDownCommand runs SetUp methods for a suite, + runs the test and then runs TearDown methods. + + + + + Initializes a new instance of the class. + + The inner command. + List of setup/teardown items + + + + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. + + + + + Construct a SetUpTearDownNode + + A list of setup methods for this level + A list teardown methods for this level + + + + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. + + + + + Run SetUp on this level. + + The execution context to use for running. + + + + Run TearDown for this level. + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The test being skipped. + + + + Overridden to simply set the CurrentResult to the + appropriate Skipped state. + + The execution context for the test + A TestResult + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + The TestAction with which to wrap the inner command. + + + + TestActionItem wraps a single execution of an ITestAction. + It's primary purpose is to track whether the BeforeTest + method has been called and suppress calling the + AfterTest method if it has not. This is necessary when + ITestActions are used before and after a CompositeWorkItem, + since the OneTimeSetUpCommand and OneTimeTearDownCommand + are separate command chains. By sharing a TestActionItem + between the setup and teardown chains, the two calls can + be coordinated. + + + + + Construct a TestActionItem + + The ITestAction to be included + + + + Get flag indicating if the BeforeTest entry was already called. + + + + + Run the BeforeTest method of the action and remember that it has been run. + + The test to which the action applies + + + + Run the AfterTest action, but only if the BeforeTest + action was actually run. + + The test to which the action applies + + + + TestCommand is the abstract base class for all test commands + in the framework. A TestCommand represents a single stage in + the execution of a test, e.g.: SetUp/TearDown, checking for + Timeout, verifying the returned result from a method, etc. + + TestCommands may decorate other test commands so that the + execution of a lower-level command is nested within that + of a higher level command. All nested commands are executed + synchronously, as a single unit. Scheduling test execution + on separate threads is handled at a higher level, using the + task dispatcher. + + + + + Construct a TestCommand for a test. + + The test to be executed + + + + Gets the test associated with this command. + + + + + Runs the test in a specified context, returning a TestResult. + + The TestExecutionContext to be used for running the test. + A TestResult + + + + TestMethodCommand is the lowest level concrete command + used to run actual test cases. + + + + + Initializes a new instance of the class. + + The test. + + + + Runs the test, saving a TestResult in the execution context, as + well as returning it. If the test has an expected result, it + is asserts on that value. Since failed tests and errors throw + an exception, this command must be wrapped in an outer command, + will handle that exception and records the failure. This role + is usually played by the SetUpTearDown command. + + The execution context + + + + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. + + + + + Constructs a TheoryResultCommand + + The command to be wrapped by this one + + + + WorkItemBuilder class knows how to build a tree of work items from a tree of tests + + + + + Creates a work item. + + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + True if child work items should be created and added. + + + + + Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. + + + A signed integer that indicates the relative values of and , as shown in the following table.Value Meaning Less than zero is less than .Zero equals .Greater than zero is greater than . + + The first object to compare.The second object to compare. + + + + EventListenerTextWriter sends text output to the currently active + ITestEventListener in the form of a TestOutput object. If no event + listener is active in the context, or if there is no context, + the output is forwarded to the supplied default writer. + + + + + Construct an EventListenerTextWriter + + The name of the stream to use for events + The default writer to use if no listener is available + + + + Get the Encoding for this TextWriter + + + + + Write formatted string + + + + + Write formatted string + + + + + Write formatted string + + + + + Write an object + + + + + Write a string + + + + + Write a decimal + + + + + Write a double + + + + + Write formatted string + + + + + Write a ulong + + + + + Write a long + + + + + Write a uint + + + + + Write an int + + + + + Write a char + + + + + Write a boolean + + + + + Write chars + + + + + Write chars + + + + + Write a float + + + + + Write a string with newline + + + + + Write an object with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write a decimal with newline + + + + + Write a formatted string with newline + + + + + Write a double with newline + + + + + Write a uint with newline + + + + + Write a ulong with newline + + + + + Write a long with newline + + + + + Write an int with newline + + + + + Write a bool with newline + + + + + Write chars with newline + + + + + Write chars with newline + + + + + Write a char with newline + + + + + Write a float with newline + + + + + Write newline + + + + + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. + + + + + List of Child WorkItems + + + + + Construct a CompositeWorkItem for executing a test suite + using a filter to select child tests. + + The TestSuite to be executed + A filter used to select child tests + + + + Method that actually performs the work. Overridden + in CompositeWorkItem to do one-time setup, run all child + items and then dispatch the one-time teardown work item. + + + + + + + + + + Cancel (abort or stop) a CompositeWorkItem and all of its children + + true if the CompositeWorkItem and all of its children should be aborted, false if it should allow all currently running tests to complete + + + + OneTimeTearDownWorkItem represents the cleanup + and one-time teardown phase of a CompositeWorkItem + + + + + Construct a OneTimeTearDownWOrkItem wrapping a CompositeWorkItem + + The CompositeWorkItem being wrapped + + + + The WorkItem name, overridden to indicate this is the teardown. + + + + + + + + + + PerformWork is not used in CompositeWorkItem + + + + + The EventPumpState enum represents the state of an + EventPump. + + + + + The pump is stopped + + + + + The pump is pumping events with no stop requested + + + + + The pump is pumping events but a stop has been requested + + + + + EventPump pulls events out of an EventQueue and sends + them to a listener. It is used to send events back to + the client without using the CallContext of the test + runner thread. + + + + + The downstream listener to which we send events + + + + + The queue that holds our events + + + + + Thread to do the pumping + + + + + The current state of the eventpump + + + + + Constructor + + The EventListener to receive events + The event queue to pull events from + + + + Gets or sets the current state of the pump + + + + + Gets or sets the name of this EventPump + (used only internally and for testing). + + + + + Dispose stops the pump + Disposes the used WaitHandle, too. + + + + + Start the pump + + + + + Tell the pump to stop after emptying the queue. + + + + + Our thread proc for removing items from the event + queue and sending them on. Note that this would + need to do more locking if any other thread were + removing events from the queue. + + + + + NUnit.Core.Event is the abstract base for all stored events. + An Event is the stored representation of a call to the + ITestListener interface and is used to record such calls + or to queue them for forwarding on another thread or at + a later time. + + + + + The Send method is implemented by derived classes to send the event to the specified listener. + + The listener. + + + + TestStartedEvent holds information needed to call the TestStarted method. + + + + + Initializes a new instance of the class. + + The test. + + + + Calls TestStarted on the specified listener. + + The listener. + + + + TestFinishedEvent holds information needed to call the TestFinished method. + + + + + Initializes a new instance of the class. + + The result. + + + + Calls TestFinished on the specified listener. + + The listener. + + + + TestOutputEvent holds information needed to call the TestOutput method. + + + + + Initializes a new instance of the class. + + The output object. + + + + Calls TestOutput on the specified listener. + + The listener. + + + + Implements a queue of work items each of which + is queued as a WaitCallback. + + + + + Gets the count of items in the queue. + + + + + Enqueues the specified event + + The event to enqueue. + + + + Removes the first element from the queue and returns it (or null). + + + If true and the queue is empty, the calling thread is blocked until + either an element is enqueued, or is called. + + + + + If the queue not empty + the first element. + + + otherwise, if ==false + or has been called + null. + + + + + + + Stop processing of the queue + + + + + An IWorkItemDispatcher handles execution of work items. + + + + + Start execution, performing any initialization. Sets + the top level work item and dispatches it. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + true if the IWorkItemDispatcher should abort all currently running WorkItems, false if it should allow all currently running WorkItems to complete + + + + ParallelWorkItemDispatcher handles execution of work items by + queuing them for worker threads to process. + + + + + Construct a ParallelWorkItemDispatcher + + Number of workers to use + + + + Enumerates all the shifts supported by the dispatcher + + + + + Enumerates all the Queues supported by the dispatcher + + + + + Start execution, setting the top level work, + enqueuing it and starting a shift to execute it. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + + + + Save the state of the queues + + + + + Try to restore a saved queue state + True if the state was restored, otherwise false + + + + QueuingEventListener uses an EventQueue to store any + events received on its EventListener interface. + + + + + The EventQueue created and filled by this listener + + + + + Construct a QueuingEventListener + + + + + A test has started + + The test that is starting + + + + A test case finished + + Result of the test case + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + A SimpleWorkItem represents a single test case and is + marked as completed immediately upon execution. This + class is also used for skipped or ignored test suites. + + + + + Construct a simple work item for a test. + + The test to be executed + The filter used to select this test + + + + Method that performs actually performs the work. + + + + + Creates a test command for use in running this test. + + A TestCommand + + + + SimpleWorkItemDispatcher handles execution of WorkItems by + directly executing them. It is provided so that a dispatcher + is always available in the context, thereby simplifying the + code needed to run child tests. + + + + + Start execution, creating the execution thread, + setting the top level work and dispatching it. + + + + + Dispatch a single work item for execution by + executing it directly. + The item to dispatch + + + + + Cancel (abort or stop) the ongoing run. + If no run is in process, the call has no effect. + + true if the run should be aborted, false if it should allow its currently running test to complete + + + + A TestWorker pulls work items from a queue + and executes them. + + + + + Event handler for TestWorker events + + The TestWorker sending the event + The WorkItem that caused the event + + + + Event signaled immediately before executing a WorkItem + + + + + Event signaled immediately after executing a WorkItem + + + + + Construct a new TestWorker. + + The queue from which to pull work items + The name of this worker + + + + The WorkItemQueue from which this worker pulls WorkItems + + + + + The name of this worker - also used for the thread + + + + + Indicates whether the worker thread is running + + + + + Our ThreadProc, which pulls and runs tests in a loop + + + + + Start processing work items. + + + + + Stop the thread, either immediately or after finishing the current WorkItem + + true if the thread should be aborted, false if it should allow the currently running test to complete + + + + The TextCapture class intercepts console output and writes it + to the current execution context, if one is present on the thread. + If no execution context is found, the output is written to a + default destination, normally the original destination of the + intercepted output. + + + + + Construct a TextCapture object + + The default destination for non-intercepted output + + + + Gets the Encoding in use by this TextWriter + + + + + Writes a single character + + The char to write + + + + Writes a string + + The string to write + + + + Writes a string followed by a line terminator + + The string to write + + + + A WorkItem may be an individual test case, a fixture or + a higher level grouping of tests. All WorkItems inherit + from the abstract WorkItem class, which uses the template + pattern to allow derived classes to perform work in + whatever way is needed. + + A WorkItem is created with a particular TestExecutionContext + and is responsible for re-establishing that context in the + current thread before it begins or resumes execution. + + + + + Construct a WorkItem for a particular test. + + The test that the WorkItem will run + Filter used to include or exclude child items + + + + Construct a work Item that wraps another work Item. + Wrapper items are used to represent independently + dispatched tasks, which form part of the execution + of a single test, such as OneTimeTearDown. + + The WorkItem being wrapped + + + + Initialize the TestExecutionContext. This must be done + before executing the WorkItem. + + + Originally, the context was provided in the constructor + but delaying initialization of the context until the item + is about to be dispatched allows changes in the parent + context during OneTimeSetUp to be reflected in the child. + + The TestExecutionContext to use + + + + Event triggered when the item is complete + + + + + Gets the current state of the WorkItem + + + + + The test being executed by the work item + + + + + The name of the work item - defaults to the Test name. + + + + + Filter used to include or exclude child tests + + + + + The execution context + + + + + The worker executing this item. + + + + + The test result + + + + + Gets the ParallelScope associated with the test, if any, + otherwise returning ParallelScope.Default; + + + + + Execute the current work item, including any + child work items. + + + + + Marks the WorkItem as NotRunnable. + + Reason for test being NotRunnable. + + + + Cancel (abort or stop) a WorkItem + + true if the WorkItem should be aborted, false if it should run to completion + + + + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. + + + + + Method called by the derived class when all work is complete + + + + + Builds the set up tear down list. + + Unsorted array of setup MethodInfos. + Unsorted array of teardown MethodInfos. + A list of SetUpTearDownItems + + + + Changes the result of the test, logging the old and new states + + The new ResultState + The new message + + + + WorkItemQueueState indicates the current state of a WorkItemQueue + + + + + The queue is paused + + + + + The queue is running + + + + + The queue is stopped + + + + + A WorkItemQueue holds work items that are ready to + be run, either initially or after some dependency + has been satisfied. + + + + + Initializes a new instance of the class. + + The name of the queue. + Flag indicating whether this is a parallel queue + "ApartmentState to use for items on this queue + + + + Gets the name of the work item queue. + + + + + Gets a flag indicating whether this queue is used for parallel execution + + + + + Gets the target ApartmentState for work items on this queue + + + + + Gets the total number of items processed so far + + + + + Gets the maximum number of work items. + + + + + Gets the current state of the queue + + + + + Get a bool indicating whether the queue is empty. + + + + + Enqueue a WorkItem to be processed + + The WorkItem to process + + + + Dequeue a WorkItem for processing + + A WorkItem or null if the queue has stopped + + + + Start or restart processing of items from the queue + + + + + Signal the queue to stop + + + + + Pause the queue for restarting later + + + + + Save the current inner queue and create new ones for use by + a non-parallel fixture with parallel children. + + + + + Restore the inner queue that was previously saved + + + + + The current state of a work item + + + + + Ready to run or continue + + + + + Work Item is executing + + + + + Complete + + + + + The dispatcher needs to do different things at different, + non-overlapped times. For example, non-parallel tests may + not be run at the same time as parallel tests. We model + this using the metaphor of a working shift. The WorkShift + class associates one or more WorkItemQueues with one or + more TestWorkers. + + Work in the queues is processed until all queues are empty + and all workers are idle. Both tests are needed because a + worker that is busy may end up adding more work to one of + the queues. At that point, the shift is over and another + shift may begin. This cycle continues until all the tests + have been run. + + + + + Construct a WorkShift + + + + + Event that fires when the shift has ended + + + + + The Name of this shift + + + + + Gets a flag indicating whether the shift is currently active + + + + + Gets a list of the queues associated with this shift. + + Used for testing + + + + Gets the list of workers associated with this shift. + + + + + Gets a bool indicating whether this shift has any work to do + + + + + Add a WorkItemQueue to the shift, starting it if the + shift is currently active. + + + + + Assign a worker to the shift. + + + + + + Start or restart processing for the shift + + + + + End the shift, pausing all queues and raising + the EndOfShift event. + + + + + Shut down the shift. + + + + + Cancel (abort or stop) the shift without completing all work + + true if the WorkShift should be aborted, false if it should allow its currently running tests to complete + + + + TestCaseTimeoutException is thrown when a test running directly + on a TestWorker thread is cancelled due to timeout. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + AssemblyHelper provides static methods for working + with assemblies. + + + + + Gets the path from which an assembly was loaded. + For builds where this is not possible, returns + the name of the assembly. + + The assembly. + The path. + + + + Gets the path to the directory from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the AssemblyName of an assembly. + + The assembly + An AssemblyName + + + + Loads an assembly given a string, which may be the + path to the assembly or the AssemblyName + + + + + + + Gets the assembly path from code base. + + Public for testing purposes + The code base. + + + + + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + Built-in SuiteBuilder for all types of test classes. + + + + + Checks to see if the provided Type is a fixture. + To be considered a fixture, it must be a non-abstract + class with one or more attributes implementing the + IFixtureBuilder interface or one or more methods + marked as tests. + + The fixture type to check + True if the fixture can be built, false if not + + + + Build a TestSuite from TypeInfo provided. + + The fixture type to build + A TestSuite built from that type + + + + We look for attributes implementing IFixtureBuilder at one level + of inheritance at a time. Attributes on base classes are not used + unless there are no fixture builder attributes at all on the derived + class. This is by design. + + The type being examined for attributes + A list of the attributes found. + + + + Class to build ether a parameterized or a normal NUnitTestMethod. + There are four cases that the builder must deal with: + 1. The method needs no params and none are provided + 2. The method needs params and they are provided + 3. The method needs no params but they are provided in error + 4. The method needs params but they are not provided + This could have been done using two different builders, but it + turned out to be simpler to have just one. The BuildFrom method + takes a different branch depending on whether any parameters are + provided, but all four cases are dealt with in lower-level methods + + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + A Test representing one or more method invocations + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + The test suite being built, to which the new test would be added + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations + + + + Builds a ParameterizedMethodSuite containing individual test cases. + + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases + + + + Build a simple, non-parameterized TestMethod for this method. + + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. + + + + Class that can build a tree of automatic namespace + suites from a group of fixtures. + + + + + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. + + + + + The root of the test suite being created by this builder. + + + + + Initializes a new instance of the class. + + The root suite. + + + + Gets the root entry in the tree created by the NamespaceTreeBuilder. + + The root suite. + + + + Adds the specified fixtures to the tree. + + The fixtures to be added. + + + + Adds the specified fixture to the tree. + + The fixture to be added. + + + + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. + + + + + Constructs an + + + + + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. + + The MethodInfo from which to construct the TestMethod + The suite or fixture to which the new test will be added + The ParameterSet to be used, or null + + + + + Helper method that checks the signature of a TestMethod and + any supplied parameters to determine if the test is valid. + + Currently, NUnitTestMethods are required to be public, + non-abstract methods, either static or instance, + returning void. They may take arguments but the _values must + be provided or the TestMethod is not considered runnable. + + Methods not meeting these criteria will be marked as + non-runnable and the method will return false in that case. + + The TestMethod to be checked. If it + is found to be non-runnable, it will be modified. + Parameters to be used for this test, or null + True if the method signature is valid, false if not + + The return value is no longer used internally, but is retained + for testing purposes. + + + + + NUnitTestFixtureBuilder is able to build a fixture given + a class marked with a TestFixtureAttribute or an unmarked + class containing test methods. In the first case, it is + called by the attribute and in the second directly by + NUnitSuiteBuilder. + + + + + Build a TestFixture from type provided. A non-null TestSuite + must always be returned, since the method is generally called + because the user has marked the target class as a fixture. + If something prevents the fixture from being used, it should + be returned nonetheless, labelled as non-runnable. + + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. + + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + + + + + Method to add test cases to the newly constructed fixture. + + The fixture to which cases should be added + + + + Method to create a test case from a MethodInfo and add + it to the fixture being built. It first checks to see if + any global TestCaseBuilder addin wants to build the + test case. If not, it uses the internal builder + collection maintained by this fixture builder. + + The default implementation has no test case builders. + Derived classes should add builders to the collection + in their constructor. + + The method for which a test is to be created + The test suite being built. + A newly constructed Test + + + + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. + + + + The number of test cases that cover all possible pairs of test function + parameters values is significantly less than the number of test cases + that cover all possible combination of test function parameters values. + And because different studies show that most of software failures are + caused by combination of no more than two parameters, pairwise testing + can be an effective ways to test the system when it's impossible to test + all combinations of parameters. + + + The PairwiseStrategy code is based on "jenny" tool by Bob Jenkins: + http://burtleburtle.net/bob/math/jenny.html + + + + + + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea + + + + + Initializes a new instance of the FleaRand class. + + The seed. + + + + FeatureInfo represents coverage of a single value of test function + parameter, represented as a pair of indices, Dimension and Feature. In + terms of unit testing, Dimension is the index of the test parameter and + Feature is the index of the supplied value in that parameter's list of + sources. + + + + + Initializes a new instance of FeatureInfo class. + + Index of a dimension. + Index of a feature. + + + + A FeatureTuple represents a combination of features, one per test + parameter, which should be covered by a test case. In the + PairwiseStrategy, we are only trying to cover pairs of features, so the + tuples actually may contain only single feature or pair of features, but + the algorithm itself works with triplets, quadruples and so on. + + + + + Initializes a new instance of FeatureTuple class for a single feature. + + Single feature. + + + + Initializes a new instance of FeatureTuple class for a pair of features. + + First feature. + Second feature. + + + + TestCase represents a single test case covering a list of features. + + + + + Initializes a new instance of TestCaseInfo class. + + A number of features in the test case. + + + + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. + + + + The algorithm starts with creating a set of all feature tuples which we + will try to cover (see method). This set + includes every single feature and all possible pairs of features. We + store feature tuples in the 3-D collection (where axes are "dimension", + "feature", and "all combinations which includes this feature"), and for + every two feature (e.g. "A" and "B") we generate both ("A", "B") and + ("B", "A") pairs. This data structure extremely reduces the amount of + time needed to calculate coverage for a single test case (this + calculation is the most time-consuming part of the algorithm). + + + Then the algorithm picks one tuple from the uncovered tuple, creates a + test case that covers this tuple, and then removes this tuple and all + other tuples covered by this test case from the collection of uncovered + tuples. + + + Picking a tuple to cover + + + There are no any special rules defined for picking tuples to cover. We + just pick them one by one, in the order they were generated. + + + Test generation + + + Test generation starts from creating a completely random test case which + covers, nevertheless, previously selected tuple. Then the algorithm + tries to maximize number of tuples which this test covers. + + + Test generation and maximization process repeats seven times for every + selected tuple and then the algorithm picks the best test case ("seven" + is a magic number which provides good results in acceptable time). + + Maximizing test coverage + + To maximize tests coverage, the algorithm walks thru the list of mutable + dimensions (mutable dimension is a dimension that are not included in + the previously selected tuple). Then for every dimension, the algorithm + walks thru the list of features and checks if this feature provides + better coverage than randomly selected feature, and if yes keeps this + feature. + + + This process repeats while it shows progress. If the last iteration + doesn't improve coverage, the process ends. + + + In addition, for better results, before start every iteration, the + algorithm "scrambles" dimensions - so for every iteration dimension + probes in a different order. + + + + + + Creates a set of test cases for specified dimensions. + + + An array which contains information about dimensions. Each element of + this array represents a number of features in the specific dimension. + + + A set of test cases. + + + + + Gets the test cases generated by this strategy instance. + + A set of test cases. + + + + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. + + + + + Construct with a collection of individual providers + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Waits for pending asynchronous operations to complete, if appropriate, + and returns a proper result of the invocation by unwrapping task results + + The raw result of the method invocation + The unwrapped result, if necessary + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + A base class for multi-part filters + + + + + Constructs an empty CompositeFilter + + + + + Constructs a CompositeFilter from an array of filters + + + + + + Adds a filter to the list of filters + + The filter to be added + + + + Return a list of the composing filters. + + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is explicit matched by a test. + + The test to be matched + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a MethodNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a NamespaceFilter for a single namespace + + The namespace the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + PropertyFilter is able to select or exclude tests + based on their properties. + + + + + + Construct a PropertyFilter using a property name and expected value + + A property name + The expected value of the property + + + + Check whether the filter matches a test + + The test to be matched + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + TestName filter selects tests based on their Name + + + + + Construct a TestNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + Combines multiple filters so that a test must pass all + of them in order to pass this filter. + + + + + Constructs an empty AndFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters pass, otherwise false + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters match, otherwise false + + + + Checks whether the AndFilter is explicit matched by a test. + + The test to be matched + True if all the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + CategoryFilter is able to select or exclude tests + based on their categories. + + + + + + Construct a CategoryFilter using a single category name + + A category name + + + + Check whether the filter matches a test + + The test to be matched + + + + + Gets the element name + + Element name + + + + IdFilter selects tests based on their id + + + + + Construct an IdFilter for a single value + + The id the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + NotFilter negates the operation of another filter + + + + + Construct a not filter on another filter + + The filter to be negated + + + + Gets the base filter + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Check whether the filter matches a test + + The test to be matched + True if it matches, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Combines multiple filters so that a test must pass one + of them in order to pass this filter. + + + + + Constructs an empty OrFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters pass, otherwise false + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters match, otherwise false + + + + Checks whether the OrFilter is explicit matched by a test + + The test to be matched + True if any of the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. + + + + + Returns the value matched by the filter - used for testing + + + + + Indicates whether the value is a regular expression + + + + + Construct a ValueMatchFilter for a single value. + + The value to be included. + + + + Match the input provided by the derived class + + The value to be matchedT + True for a match, false otherwise. + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. + + + + + Construct a GenericMethodHelper for a method + + MethodInfo for the method to examine + + + + Return the type arguments for the method, deducing them + from the arguments actually provided. + + The arguments to the method + An array of type arguments. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. + + + + + Default constructor uses the current culture. + + + + + Construct a CultureDetector for a particular culture for testing. + + The culture to be used + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + Tests to determine if the current culture is supported + based on a culture attribute. + + The attribute to examine + + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + ExceptionHelper provides static methods for working with exceptions + + + + + Rethrows an exception, preserving its stack trace + + The exception to rethrow + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. Excludes exception names, creating more readable message + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined stack trace. + + + + Gets the stack trace of the exception. + + The exception. + A string representation of the stack trace. + + + + 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. + + + + + + + Gets or sets the maximum line length for this writer + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a given + 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 result of the constraint that failed + + + + Gets the unique type name between expected and actual. + + The expected value + The actual value causing the failure + Output of the unique type name for expected + Output of the unique type name for actual + + + + 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 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 ConstraintResult for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + Interface for logging within the engine + + + + + Logs the specified message at the error level. + + The message. + + + + Logs the specified message at the error level. + + The message. + The arguments. + + + + Logs the specified message at the warning level. + + The message. + + + + Logs the specified message at the warning level. + + The message. + The arguments. + + + + Logs the specified message at the info level. + + The message. + + + + Logs the specified message at the info level. + + The message. + The arguments. + + + + Logs the specified message at the debug level. + + The message. + + + + Logs the specified message at the debug level. + + The message. + The arguments. + + + + InternalTrace provides facilities for tracing the execution + of the NUnit framework. Tests and classes under test may make use + of Console writes, System.Diagnostics.Trace or various loggers and + NUnit itself traps and processes each of them. For that reason, a + separate internal trace is needed. + + Note: + InternalTrace uses a global lock to allow multiple threads to write + trace messages. This can easily make it a bottleneck so it must be + used sparingly. Keep the trace Level as low as possible and only + insert InternalTrace writes where they are needed. + TODO: add some buffering and a separate writer thread as an option. + TODO: figure out a way to turn on trace in specific classes only. + + + + + Gets a flag indicating whether the InternalTrace is initialized + + + + + Initialize the internal trace facility using the name of the log + to be written to and the trace level. + + The log name + The trace level + + + + Initialize the internal trace using a provided TextWriter and level + + A TextWriter + The InternalTraceLevel + + + + Get a named Logger + + + + + + Get a logger named for a particular Type. + + + + + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. + + + + + Use the default settings as specified by the user. + + + + + Do not display any trace messages + + + + + Display Error messages only + + + + + Display Warning level and higher messages + + + + + Display informational and higher messages + + + + + Display debug messages and higher - i.e. all messages + + + + + Display debug messages and higher - i.e. all messages + + + + + A trace listener that writes to a separate file per domain + and process using it. + + + + + Construct an InternalTraceWriter that writes to a file. + + Path to the file to use + + + + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + + + + + + Returns the character encoding in which the output is written. + + The character encoding in which the output is written. + + + + Writes a character to the text string or stream. + + The character to write to the text stream. + + + + Writes a string to the text string or stream. + + The string to write. + + + + Writes a string followed by a line terminator to the text string or stream. + + The string to write. If is null, only the line terminator is written. + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. + + + + + Provides internal logging to the NUnit framework + + + + + Initializes a new instance of the class. + + The name. + The log level. + The writer where logs are sent. + + + + Logs the message at error level. + + The message. + + + + Logs the message at error level. + + The message. + The message arguments. + + + + Logs the message at warm level. + + The message. + + + + Logs the message at warning level. + + The message. + The message arguments. + + + + Logs the message at info level. + + The message. + + + + Logs the message at info level. + + The message. + The message arguments. + + + + Logs the message at debug level. + + The message. + + + + Logs the message at debug level. + + The message. + The message arguments. + + + + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. + + + + + Construct a MethodWrapper for a Type and a MethodInfo. + + + + + Construct a MethodInfo for a given Type and method name. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the method. + + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + OSPlatform represents a particular operating system platform + + + + + Platform ID for Unix as defined by Microsoft .NET 2.0 and greater + + + + + Platform ID for Unix as defined by Mono + + + + + Platform ID for XBox as defined by .NET and Mono + + + + + Platform ID for MacOSX as defined by .NET and Mono + + + + + Get the OSPlatform under which we are currently running + + + + + Gets the actual OS Version, not the incorrect value that might be + returned for Win 8.1 and Win 10 + + + If an application is not manifested as Windows 8.1 or Windows 10, + the version returned from Environment.OSVersion will not be 6.3 and 10.0 + respectively, but will be 6.2 and 6.3. The correct value can be found in + the registry. + + The original version + The correct OS version + + + + Product Type Enumeration used for Windows + + + + + Product type is unknown or unspecified + + + + + Product type is Workstation + + + + + Product type is Domain Controller + + + + + Product type is Server + + + + + Construct from a platform ID and version + + + + + Construct from a platform ID, version and product type + + + + + Get the platform ID of this instance + + + + + Get the Version of this instance + + + + + Get the Product Type of this instance + + + + + Return true if this is a windows platform + + + + + Return true if this is a Unix or Linux platform + + + + + Return true if the platform is Win32S + + + + + Return true if the platform is Win32Windows + + + + + Return true if the platform is Win32NT + + + + + Return true if the platform is Windows CE + + + + + Return true if the platform is Xbox + + + + + Return true if the platform is MacOSX + + + + + Return true if the platform is Windows 95 + + + + + Return true if the platform is Windows 98 + + + + + Return true if the platform is Windows ME + + + + + Return true if the platform is NT 3 + + + + + Return true if the platform is NT 4 + + + + + Return true if the platform is NT 5 + + + + + Return true if the platform is Windows 2000 + + + + + Return true if the platform is Windows XP + + + + + Return true if the platform is Windows 2003 Server + + + + + Return true if the platform is NT 6 + + + + + Return true if the platform is NT 6.0 + + + + + Return true if the platform is NT 6.1 + + + + + Return true if the platform is NT 6.2 + + + + + Return true if the platform is NT 6.3 + + + + + Return true if the platform is Vista + + + + + Return true if the platform is Windows 2008 Server (original or R2) + + + + + Return true if the platform is Windows 2008 Server (original) + + + + + Return true if the platform is Windows 2008 Server R2 + + + + + Return true if the platform is Windows 2012 Server (original or R2) + + + + + Return true if the platform is Windows 2012 Server (original) + + + + + Return true if the platform is Windows 2012 Server R2 + + + + + Return true if the platform is Windows 7 + + + + + Return true if the platform is Windows 8 + + + + + Return true if the platform is Windows 8.1 + + + + + Return true if the platform is Windows 10 + + + + + Return true if the platform is Windows Server. This is named Windows + Server 10 to distinguish it from previous versions of Windows Server. + + + + + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. + + + + + Construct a ParameterWrapper for a given method and parameter + + + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter. + + + + + Gets the underlying ParameterInfo + + + + + Gets the Type of the parameter + + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the parameter. + + + + + PlatformHelper class is used by the PlatformAttribute class to + determine whether a platform is supported. + + + + + Comma-delimited list of all supported OS platform constants + + + + + Comma-delimited list of all supported Runtime platform constants + + + + + Default constructor uses the operating system and + common language runtime of the system. + + + + + Construct a PlatformHelper for a particular operating + system and common language runtime. Used in testing. + + RuntimeFramework to be used + OperatingSystem to be used + + + + Test to determine if one of a collection of platforms + is being used currently. + + + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Test to determine if the a particular platform or comma- + delimited set of platforms is in use. + + Name of the platform or comma-separated list of platform ids + True if the platform is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + A PropertyBag represents a collection of name value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + + + + Adds a key/value pair to the property set + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + + True if their are _values present, otherwise false + + + + + Gets a collection containing all the keys in the property set + + + + + + Gets or sets the list of _values for a particular key + + + + + Returns an XmlNode representing the current PropertyBag. + + Not used + An XmlNode representing the PropertyBag + + + + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + + The parent node. + Not used + + + + + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. + + + + + The FriendlyName of the AppDomain in which the assembly is running + + + + + The selected strategy for joining parameter data into test cases + + + + + The process ID of the executing assembly + + + + + The stack trace from any data provider that threw + an exception. + + + + + The reason a test was not run + + + + + The author of the tests + + + + + The ApartmentState required for running the test + + + + + The categories applying to a test + + + + + The Description of a test + + + + + The number of threads to be used in running tests + + + + + The maximum time in ms, above which the test is considered to have failed + + + + + The ParallelScope associated with a test + + + + + The number of times the test should be repeated + + + + + Indicates that the test should be run on a separate thread + + + + + The culture to be set for a test + + + + + The UI culture to be set for a test + + + + + The type that is under test + + + + + The timeout value for the test + + + + + The test will be ignored until the given date + + + + + The optional Order the test will run in + + + + + Randomizer returns a set of random _values in a repeatable + way, to allow re-running of tests if necessary. It extends + the .NET Random class, providing random values for a much + wider range of types. + + The class is used internally by the framework to generate + test case data and is also exposed for use by users through + the TestContext.Random property. + + + For consistency with the underlying Random Type, methods + returning a single value use the prefix "Next..." Those + without an argument return a non-negative value up to + the full positive range of the Type. Overloads are provided + for specifying a maximum or a range. Methods that return + arrays or strings use the prefix "Get..." to avoid + confusion with the single-value methods. + + + + + Initial seed used to create randomizers for this run + + + + + 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. + + + + + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. + + + + + + Default constructor + + + + + Construct based on seed value + + + + + + Returns a random unsigned int. + + + + + Returns a random unsigned int less than the specified maximum. + + + + + Returns a random unsigned int within a specified range. + + + + + Returns a non-negative random short. + + + + + Returns a non-negative random short less than the specified maximum. + + + + + Returns a non-negative random short within a specified range. + + + + + Returns a random unsigned short. + + + + + Returns a random unsigned short less than the specified maximum. + + + + + Returns a random unsigned short within a specified range. + + + + + Returns a random long. + + + + + Returns a random long less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random ulong. + + + + + Returns a random ulong less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random Byte + + + + + Returns a random Byte less than the specified maximum. + + + + + Returns a random Byte within a specified range + + + + + Returns a random SByte + + + + + Returns a random sbyte less than the specified maximum. + + + + + Returns a random sbyte within a specified range + + + + + Returns a random bool + + + + + Returns a random bool based on the probability a true result + + + + + Returns a random double between 0.0 and the specified maximum. + + + + + Returns a random double within a specified range. + + + + + Returns a random float. + + + + + Returns a random float between 0.0 and the specified maximum. + + + + + Returns a random float within a specified range. + + + + + Returns a random enum value of the specified Type as an object. + + + + + Returns a random enum value of the specified Type. + + + + + Default characters for random functions. + + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + string representing the set of characters from which to construct the resulting string + A random string of arbitrary length + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + A random string of arbitrary length + Uses DefaultStringChars as the input character set + + + + Generate a random string based on the characters from the input string. + + A random string of the default length + Uses DefaultStringChars as the input character set + + + + Returns a random decimal. + + + + + Returns a random decimal between positive zero and the specified maximum. + + + + + Returns a random decimal within a specified range, which is not + permitted to exceed decimal.MaxVal in the current implementation. + + + A limitation of this implementation is that the range from min + to max must not exceed decimal.MaxVal. + + + + + Helper methods for inspecting a type by reflection. + + Many of these methods take ICustomAttributeProvider as an + argument to avoid duplication, even though certain attributes can + only appear on specific types of members, like MethodInfo or Type. + + In the case where a type is being examined for the presence of + an attribute, interface or named member, the Reflect methods + operate with the full name of the member being sought. This + removes the necessity of the caller having a reference to the + assembly that defines the item being sought and allows the + NUnit core to inspect assemblies that reference an older + version of the NUnit framework. + + + + + Examine a fixture type and return an array of methods having a + particular attribute. The array is order with base methods first. + + The type to examine + The attribute Type to look for + Specifies whether to search the fixture type inheritance chain + The array of methods found + + + + Examine a fixture type and return true if it has a method with + a particular attribute. + + The type to examine + The attribute Type to look for + True if found, otherwise false + + + + Invoke the default constructor on a Type + + The Type to be constructed + An instance of the Type + + + + Invoke a constructor on a Type with arguments + + The Type to be constructed + Arguments to the constructor + An instance of the Type + + + + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() + + An array of objects + An array of Types + + + + Invoke a parameterless method returning void on an object. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + + + + Invoke a method, converting any TargetInvocationException to an NUnitException. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The TestResult class represents the result of a test. + + + + + Error message for when child tests have errors + + + + + Error message for when child tests have warnings + + + + + Error message for when child tests are ignored + + + + + The minimum duration for tests + + + + + Aggregate assertion count + + + + + ReaderWriterLock + + + + + Construct a test result given a Test + + The test to be used + + + + Gets the test with which this result is associated. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets or sets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Adds a test attachment to the test result + + The TestAttachment object to attach + + + + Gets the collection of files attached to the test + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets or sets the count of asserts executed + when running the test. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Gets a TextWriter, which will write output to be included in the result. + + + + + Gets any text output written to this result. + + + + + Gets a list of assertion results associated with the test. + + + + + Returns the Xml representation of the result. + + If true, descendant results are included + An XmlNode representing the result + + + + Adds the XML representation of the result as a child of the + supplied parent node.. + + The parent node. + If true, descendant results are included + + + + + Gets a count of pending failures (from Multiple Assert) + + + + + Gets the worst assertion status (highest enum) in all the assertion results + + + + + Set the result of the test + + The ResultState to use in the result + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + Stack trace giving the location of the command + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + The FailureSite to use in the result + + + + RecordTearDownException appends the message and stacktrace + from an exception arising during teardown of the test + to any previously recorded information, so that any + earlier failure information is not lost. Note that + calling Assert.Ignore, Assert.Inconclusive, etc. during + teardown is treated as an error. If the current result + represents a suite, it may show a teardown error even + though all contained tests passed. + + The Exception to be recorded + + + + Determine result after test has run to completion. + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Adds a reason element to a node and returns it. + + The target node. + The new reason element. + + + + Adds a failure element to a node and returns it. + + The target node. + The new failure element. + + + + Adds an attachments element to a node and returns it. + + The target node. + The new attachments element. + + + + Creates a failure message incorporating failures + from a Multiple Assert block for use by runners + that don't know about AssertionResults. + + Message as a string + + + + Enumeration identifying a common language + runtime implementation. + + + + Any supported runtime framework + + + Microsoft .NET Framework + + + Microsoft Shared Source CLI + + + Mono + + + MonoTouch + + + + RuntimeFramework represents a particular version + of a common language runtime implementation. + + + + + DefaultVersion is an empty Version, used to indicate that + NUnit should select the CLR version to use for the test. + + + + + Construct from a runtime type and version. If the version has + two parts, it is taken as a framework version. If it has three + or more, it is taken as a CLR version. In either case, the other + version is deduced based on the runtime type and provided version. + + The runtime type of the framework + The version of the framework + + + + Static method to return a RuntimeFramework object + for the framework that is currently in use. + + + + + The type of this runtime framework + + + + + The framework version for this runtime framework + + + + + The CLR version for this runtime framework + + + + + Return true if any CLR version may be used in + matching this RuntimeFramework object. + + + + + Returns the Display name for this framework + + + + + Parses a string representing a RuntimeFramework. + The string may be just a RuntimeType name or just + a Version or a hyphenated RuntimeType-Version or + a Version prefixed by 'versionString'. + + + + + + + Overridden to return the short name of the framework + + + + + + Returns true if the current framework matches the + one supplied as an argument. Two frameworks match + if their runtime types are the same or either one + is RuntimeType.Any and all specified version components + are equal. Negative (i.e. unspecified) version + components are ignored. + + The RuntimeFramework to be matched. + True on match, otherwise false + + + + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. + + + + + Single instance of our default filter + + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + Regex pattern used to delete lines from the bottom of the stack + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + + + + Construct a stack filter instance + + + + + Filters a raw stack trace and returns the result. + + The original stack trace + A filtered stack trace + + + + Provides methods to support legacy string comparison methods. + + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if + strB is sorted first + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + True if the strings are equivalent, false if not. + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + The expected result to be returned + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + The expected result of the test, which + must match the method return type. + + + + + Gets a value indicating whether an expected result was specified. + + + + + Helper class used to save and restore certain static or + singleton settings in the environment that affect tests + or which might be changed by the user tests. + + + + + Link to a prior saved context + + + + + Indicates that a stop has been requested + + + + + The event listener currently receiving notifications + + + + + The number of assertions for the current test + + + + + The current culture + + + + + The current UI culture + + + + + The current test result + + + + + The current Principal. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + An existing instance of TestExecutionContext. + + + + Gets and sets the current context. + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current test event listener + + + + + The current WorkItemDispatcher. Made public for + use by nunitlite.tests + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + Default tolerance value used for floating point equality + when no other tolerance is specified. + + + + + The worker that spawned the context. + For builds without the parallel feature, it is null. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets the assert count. + + The assert count. + + + + The current nesting level of multiple assert blocks + + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + Gets or sets the current for the Thread. + + + + + The current head of the ValueFormatter chain, copied from MsgUtils.ValueFormatter + + + + + If true, all tests must run on the same thread. No new thread may be spawned. + + + + + Record any changes in the environment made by + the test code in the execution context so it + will be passed on to lower level tests. + + + + + Set up the execution environment to match a context. + Note that we may be running on the same thread where the + context was initially created or on a different thread. + + + + + Increments the assert count by one. + + + + + Increments the assert count by a specified amount. + + + + + Adds a new ValueFormatterFactory to the chain of formatters + + The new factory + + + + Obtain lifetime service object + + + + + + An IsolatedContext is used when running code + that may effect the current result in ways that + should not impact the final result of the test. + A new TestExecutionContext is created with an + initially clear result, which is discarded on + exiting the context. + + + using (new TestExecutionContext.IsolatedContext()) + { + // Code that should not impact the result + } + + + + + Save the original current TestExecutionContext and + make a new isolated context current. + + + + + Restore the original TestExecutionContext. + + + + + Enumeration indicating whether the tests are + running normally or being cancelled. + + + + + Running normally with no stop requested + + + + + A graceful stop has been requested + + + + + A forced stop has been requested + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Unique Empty filter. + + + + + Indicates whether this is the EmptyFilter + + + + + Indicates whether this is a top-level filter, + not contained in any other filter. + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Determine whether the test itself matches the filter criteria, without + examining either parents or descendants. This is overridden by each + different type of filter to perform the necessary tests. + + The test to which the filter is applied + True if the filter matches the any parent of the test + + + + Determine whether any ancestor of the test matches the filter criteria + + The test to which the filter is applied + True if the filter matches the an ancestor of the test + + + + Determine whether any descendant of the test matches the filter criteria. + + The test to be matched + True if at least one descendant matches the filter criteria + + + + Create a TestFilter instance from an xml representation. + + + + + Create a TestFilter from it's TNode representation + + + + + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. + + + + + Adds an XML node + + True if recursive + The added XML node + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + Type arguments used to create a generic fixture instance + + + + + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test case has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Construct a new TestListener - private so it may not be used. + + + + + Get a listener that does nothing + + + + + TestNameGenerator is able to create test names according to + a coded pattern. + + + + + Default pattern used to generate names + + + + + Construct a TestNameGenerator + + + + + Construct a TestNameGenerator + + The pattern used by this generator. + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + The display name + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + Arguments to be used + The display name + + + + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a ParameterSet from an object implementing ITestData + + + + + + The RunState for this set of parameters. + + + + + The arguments to be used in running the test, + which must match the method signature. + + + + + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. + + + + + Gets the property dictionary for this test + + + + + Applies ParameterSet _values to the test itself. + + A test. + + + + The original arguments provided by the user, + used for display purposes. + + + + + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. + + + + + Initializes a new instance of the class. + + The callback handler to be used for reporting progress. + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished. Sends a result summary to the callback. + to + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Returns the parent test item for the targer test item if it exists + + + parent test item + + + + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. + + The string to be used + A new string with the _values replaced + + + + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. + + + + + Initializes a new instance of the class. + + The ITypeInfo for the type that represents the suite. + + + + Gets a string representing the type of test + + + + + + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. + + + + + Construct from a MethodInfo + + + + + + Gets a string representing the type of test + + + + + + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. + + + + + Initializes a new instance of the class. + + The type. + + + + The Test abstract class represents a test within the framework. + + + + + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. + + + + + Used to cache the declaring type for this MethodInfo + + + + + Method property backing field + + + + + Constructs a test given its name + + The name of the test + + + + Constructs a test given the path through the + test hierarchy to its parent and a name. + + The parent tests full name + The name of the test + + + + TODO: Documentation needed for constructor + + + + + + Construct a test from a MethodInfo + + + + + + Gets or sets the id of the test + + + + + + Gets or sets the name of the test + + + + + Gets or sets the fully qualified name of the test + + + + + + Gets the name of the class where this test was declared. + Returns null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + The arguments to use in creating the test or empty array if none required. + + + + + Gets the TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. + + + + + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Whether or not the test should be run + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Gets a string representing the type of test. Used as an attribute + value in the XML representation of a test and has no other + function in the framework. + + + + + Gets a count of test cases represented by + or contained under this test. + + + + + Gets the properties for this test + + + + + Returns true if this is a TestSuite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the parent as a Test object. + Used by the core to set the parent. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets or sets a fixture object for running this test. + + + + + Static prefix used for ids in this AppDomain. + Set by FrameworkController. + + + + + Gets or Sets the Int value representing the seed for the RandomGenerator + + + + + + The SetUp methods. + + + + + The teardown methods + + + + + Creates a TestResult for this test. + + A TestResult suitable for this type of test. + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object implementing ICustomAttributeProvider + + + + Mark the test as Invalid (not runnable) specifying a reason + + The reason the test is not runnable + + + + Get custom attributes applied to a test + + + + + Add standard attributes and members to a test node. + + + + + + + Returns the Xml representation of the test + + If true, include child tests recursively + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Compares this test to another test for sorting purposes + + The other test + Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test + + + + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. + + + + + Initializes a new instance of the class + specifying the Assembly and the path from which it was loaded. + + The assembly this test represents. + The path used to load the assembly. + + + + Initializes a new instance of the class + for a path which could not be loaded. + + The path used to load the assembly. + + + + Copy-constructor style to create a filtered copy of the test assemblies + test cases + + + + + + + Gets the Assembly represented by this instance. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Get custom attributes specified on the assembly + + + + + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. + + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used + + + + The TestMethod class represents a Test implemented as a method. + + + + + The ParameterSet used to create this test method + + + + + Initializes a new instance of the class. + + The method to be used as a test. + + + + Initializes a new instance of the class. + + The method to be used as a test. + The suite or fixture to which the new test will be added + + + + The arguments to use in executing the test method, or empty array if none are provided. + + + + + Overridden to return a TestCaseResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Returns a TNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Gets this test's child tests + + A list of child tests + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns the name of the method + + + + + TestSuite represents a composite test, which contains other tests. + + + + + Our collection of child tests + + + + + Initializes a new instance of the class. + + The name of the suite. + + + + Initializes a new instance of the class. + + Name of the parent suite. + The name of the suite. + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Copy constructor style to create a filtered copy of the given test suite + + Test Suite to copy + Filter to be applied + + + + Sorts tests under this suite. + + + + + Adds a test to the suite. + + The test. + + + + Gets this test's child tests + + The list of child tests + + + + Gets a count of test cases represented by + or contained under this test. + + + + + + The arguments to use in creating the fixture, or empty array if none are provided. + + + + + Set to true to suppress sorting this suite's contents + + + + + OneTimeSetUp methods for this suite + + + + + OneTimeTearDown methods for this suite + + + + + Overridden to return a TestSuiteResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. + + A list of methodinfos to check + + + + ThreadUtility provides a set of static methods convenient + for working with threads. + + + + + Pre-Task compatibility + + + + + Abort a thread, helping to dislodging it if it is blocked in native code + + The thread to abort + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Do our best to kill a thread + + The thread to kill + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Do our best to kill a thread, passing state info + + The thread to kill + Info for the ThreadAbortException handler + The native thread id (if known), otherwise 0. + If provided, allows the thread to be killed if it's in a message pump native blocking wait. + This must have previously been captured by calling from the running thread itself. + + + + Schedule a threadpool thread to check on the aborting thread in case it's in a message pump native blocking wait + + + + + Captures the current thread's native id. If provided to later, allows the thread to be killed if it's in a message pump native blocking wait. + + + + + Sends a message to the thread to dislodge it from native code and allow a return to managed code, where a ThreadAbortException can be generated. + The message is meaningless (WM_CLOSE without a window handle) but it will end any blocking message wait. + + + + + TypeHelper provides static methods that operate on Types. + + + + + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. + + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The display name for the Type + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The arglist provided. + The display name for the Type + + + + Returns the best fit for a common type to be used in + matching actual arguments to a methods Type parameters. + + The first type. + The second type. + Either type1 or type2, depending on which is more general. + + + + Determines whether the specified type is numeric. + + The type to be examined. + + true if the specified type is numeric; otherwise, false. + + + + + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. + + An array of args to be converted + A ParameterInfo[] whose types will be used as targets + + + + Determines whether this instance can deduce type args for a generic type from the supplied arguments. + + The type to be examined. + The arglist. + The type args to be used. + + true if this the provided args give sufficient information to determine the type args to be used; otherwise, false. + + + + + Return the interfaces implemented by a Type. + + The Type to be examined. + An array of Types for the interfaces. + + + + The TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. + + + + + Construct a TypeWrapper for a specified Type. + + + + + Gets the underlying Type on which this TypeWrapper is based. + + + + + Gets the base type of this type as an ITypeInfo + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Returns true if the Type wrapped is T + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type represents a static class. + + + + + Get the display name for this type + + + + + Get the display name for an object of this type, constructed with the specified args. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns an array of custom attributes of the specified type applied to this type + + + + + Returns a value indicating whether the type has an attribute of the specified type. + + + + + + + + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Represents the result of running a single test case. + + + + + Construct a TestCaseResult based on a TestMethod + + A TestMethod to which the result applies. + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Represents the result of running a test suite + + + + + Construct a TestSuiteResult base on a TestSuite + + The TestSuite to which the result applies + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. + + The result to be added + + + + The TestAttachment class represents a file attached to a TestResult, + with an optional description. + + + + + Absolute file path to attachment file + + + + + User specifed description of attachment. May be null. + + + + + Creates a TestAttachment class to represent a file attached to a test result. + + Absolute file path to attachment file + User specifed description of attachment. May be null. + + + + The AssertionResult class represents the result of a single assertion. + + + + + Construct an AssertionResult + + + + The pass/fail status of the assertion + + + The message produced by the assertion, or null + + + The stacktrace associated with the assertion, or null + + + + ToString Override + + + + + Override GetHashCode + + + + + Override Equals + + + + + + AssertionStatus enumeration represents the possible outcomes of an assertion. + The order of definition is significant, higher level values override lower + ones in determining the overall result of a test. + + + + + An assumption failed + + + + + The assertion succeeded + + + + + A warning message was issued + + + + + The assertion failed + + + + + An unexpected exception was thrown + + + + + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. + + + + + Apply changes to the execution context + + The execution context + + + + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. + + + Attributes or other objects should implement one of the + derived interfaces, rather than this one, since they + indicate in which part of the command chain the wrapper + should be applied. + + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. + + + + + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. + + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + The IFixtureBuilder interface is exposed by a class that knows how to + build a TestFixture from one or more Types. In general, it is exposed + by an attribute, but may be implemented in a helper class used by the + attribute in some cases. + + + + + Build one or more TestFixtures from type provided. At least one + non-null TestSuite must always be returned, since the method is + generally called because the user has marked the target class as + a fixture. If something prevents the fixture from being used, it + will be returned nonetheless, labelled as non-runnable. + + The type info of the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + IImplyFixture is an empty marker interface used by attributes like + TestAttribute that cause the class where they are used to be treated + as a TestFixture even without a TestFixtureAttribute. + + Marker interfaces are not usually considered a good practice, but + we use it here to avoid cluttering the attribute hierarchy with + classes that don't contain any extra implementation. + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The IDataPointProvider interface is used by extensions + that provide data for a single test parameter. + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + The IParameterDataSource interface is implemented by types + that can provide data for a test method parameter. + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + An enumeration containing individual data items + + + + The IParameterInfo interface is an abstraction of a .NET parameter. + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter + + + + + Gets the underlying .NET ParameterInfo + + + + + Gets the Type of the parameter + + + + + A PropertyBag represents a collection of name/value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + The entries in a PropertyBag are of two kinds: those that + take a single value and those that take multiple _values. + However, the PropertyBag has no knowledge of which entries + fall into each category and the distinction is entirely + up to the code using the PropertyBag. + + When working with multi-valued properties, client code + should use the Add method to add name/value pairs and + indexing to retrieve a list of all _values for a given + key. For example: + + bag.Add("Tag", "one"); + bag.Add("Tag", "two"); + Assert.That(bag["Tag"], + Is.EqualTo(new string[] { "one", "two" })); + + When working with single-valued properties, client code + should use the Set method to set the value and Get to + retrieve the value. The GetSetting methods may also be + used to retrieve the value in a type-safe manner while + also providing default. For example: + + bag.Set("Priority", "low"); + bag.Set("Priority", "high"); // replaces value + Assert.That(bag.Get("Priority"), + Is.EqualTo("high")); + Assert.That(bag.GetSetting("Priority", "low"), + Is.EqualTo("high")); + + + + + Adds a key/value pair to the property bag + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + True if their are _values present, otherwise false + + + + Gets or sets the list of _values for a particular key + + The key for which the _values are to be retrieved or set + + + + Gets a collection containing all the keys in the property set + + + + + The IReflectionInfo interface is implemented by NUnit wrapper objects that perform reflection. + + + + + Returns an array of custom attributes of the specified type applied to this object + + + + + Returns a value indicating whether an attribute of the specified type is defined on this object. + + + + + The ISimpleTestBuilder interface is exposed by a class that knows how to + build a single TestMethod from a suitable MethodInfo Types. In general, + it is exposed by an attribute, but may be implemented in a helper class + used by the attribute in some cases. + + + + + Build a TestMethod from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. + + + + + Examine the type and determine if it is suitable for + this builder to use in building a TestSuite. + + Note that returning false will cause the type to be ignored + in loading the tests. If it is desired to load the suite + but label it as non-runnable, ignored, etc., then this + method must return true. + + The type of the fixture to be used + True if the type can be used to build a TestSuite + + + + Build a TestSuite from type provided. + + The type of the fixture to be used + A TestSuite + + + + Common interface supported by all representations + of a test. Only includes informational fields. + The Run method is specifically excluded to allow + for data-only representations of a test. + + + + + Gets the id of the test + + + + + Gets the name of the test + + + + + Gets the type of the test + + + + + Gets the fully qualified name of the test + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the Type of the test fixture, if applicable, or + null if no fixture type is associated with this test. + + + + + Gets an IMethod for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the RunState of the test, indicating whether it can be run. + + + + + Count of the test cases ( 1 if this is a test case ) + + + + + Gets the properties of the test + + + + + Gets the parent test, if any. + + The parent test or null if none exists. + + + + Returns true if this is a test suite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets a fixture object for running this test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + The ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. + + + This interface is not the same as the ITestCaseBuilder interface in NUnit 2.x. + We have reused the name because the two products don't interoperate at all. + + + + + Examine the method and determine if it is suitable for + this builder to use in building a TestCase to be + included in the suite being populated. + + Note that returning false will cause the method to be ignored + in loading the tests. If it is desired to load the method + but label it as non-runnable, ignored, etc., then this + method must return true. + + The test method to examine + The suite being populated + True is the builder can use this method + + + + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. + + The method to be used as a test case + The test suite being populated, or null + A TestCase or null + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + + + + Gets the expected result of the test case + + + + + Returns true if an expected result has been set + + + + + The ITestData interface is implemented by a class that + represents a single instance of a parameterized test. + + + + + Gets the name to be used for the test + + + + + Gets the RunState for this test case. + + + + + Gets the argument list to be provided to the test + + + + + Gets the property dictionary for the test case + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Determine if a particular test passes the filter criteria. Pass + may examine the parents and/or descendants of a test, depending + on the semantics of the particular filter + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + The ITestCaseData interface is implemented by a class + that is able to return the data required to create an + instance of a parameterized test fixture. + + + + + Get the TypeArgs if separately set + + + + + The ITestListener interface is used internally to receive + notifications of significant events while a test is being + run. The events are propagated to clients by means of an + AsyncCallback. NUnit extensions may also monitor these events. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + The ITestBuilder interface is exposed by a class that knows how to + build one or more TestMethods from a MethodInfo. In general, it is exposed + by an attribute, which has additional information available to provide + the necessary test parameters to distinguish the test cases built. + + + + + Build one or more TestMethods from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ITestResult interface represents the result of a test. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. Not available in + the Compact Framework 1.0. + + + + + Gets the number of asserts executed + when running the test and all its children. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Accessing HasChildren should not force creation of the + Children collection in classes implementing this interface. + + + + + Gets the collection of child results. + + + + + Gets the Test to which this result applies. + + + + + Gets any text output written to this result. + + + + + Gets a list of AssertionResults associated with the test + + + + + Gets the collection of files attached to the test + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + Returns true if the Type wrapped is equal to the argument + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the Namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type is a static class. + + + + + Get the display name for this typeInfo. + + + + + Get the display name for an object of this type, constructed with specific arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a value indicating whether this type has a method with a specified public attribute + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + An object implementing IXmlNodeBuilder is able to build + an XML representation of itself and any children. + + + + + Returns a TNode representing the current object. + + If true, children are included where applicable + A TNode representing the result + + + + Returns a TNode representing the current object after + adding it as a child of the supplied parent node. + + The parent node. + If true, children are included, where applicable + + + + + The ResultState class represents the outcome of running a test. + It contains two pieces of information. The Status of the test + is an enum indicating whether the test passed, failed, was + skipped or was inconclusive. The Label provides a more + detailed breakdown for use by client runners. + + + + + Initializes a new instance of the class. + + The TestStatus. + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + + + + Initializes a new instance of the class. + + The TestStatus. + The stage at which the result was produced + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + The stage at which the result was produced + + + + The result is inconclusive + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test was skipped because it is explicit + + + + + The test succeeded + + + + + The test issued a warning + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The test was not runnable. + + + + + A suite failed because one or more child tests failed or had errors + + + + + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + Gets the TestStatus for the test. + + The status. + + + + Gets the label under which this test result is + categorized, if any. + + + + + Gets the stage of test execution in which + the failure or other result took place. + + + + + Get a new ResultState, which is the same as the current + one but with the FailureSite set to the specified value. + + The FailureSite to use + A new ResultState + + + + Test whether this ResultState has the same Status and Label + as another one. In other words, the whether two are equal + ignoring the Site. + + + + + + + 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. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The FailureSite enum indicates the stage of a test + in which an error or failure occurred. + + + + + Failure in the test itself + + + + + Failure in the SetUp method + + + + + Failure in the TearDown method + + + + + Failure of a parent test + + + + + Failure of a child test + + + + + The RunState enum indicates whether a test can be executed. + + + + + The test is not runnable. + + + + + The test is runnable. + + + + + The test can only be run explicitly + + + + + The test has been skipped. This value may + appear on a Test when certain attributes + are used to skip the test. + + + + + The test has been ignored. May appear on + a Test, when the IgnoreAttribute is used. + + + + + The TestOutput class holds a unit of output from + a test to a specific output stream + + + + + Construct with text, output destination type and + the name of the test that produced the output. + + Text to be output + Name of the stream or channel to which the text should be written + FullName of test that produced the output + + + + Return string representation of the object for debugging + + + + + + Get the text + + + + + Get the output type + + + + + Get the name of the test that created the output + + + + + Convert the TestOutput object to an XML string + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + There was a warning + + + + + The test failed + + + + + TNode represents a single node in the XML representation + of a Test or TestResult. It replaces System.Xml.XmlNode and + System.Xml.Linq.XElement, providing a minimal set of methods + for operating on the XML in a platform-independent manner. + + + + + Constructs a new instance of TNode + + The name of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + Flag indicating whether to use CDATA when writing the text + + + + Gets the name of the node + + + + + Gets the value of the node + + + + + Gets a flag indicating whether the value should be output using CDATA. + + + + + Gets the dictionary of attributes + + + + + Gets a list of child nodes + + + + + Gets the first ChildNode + + + + + Gets the XML representation of this node. + + + + + Create a TNode from it's XML text representation + + The XML text to be parsed + A TNode + + + + Adds a new element as a child of the current node and returns it. + + The element name. + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + + The element name + The text content of the new element + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + The value will be output using a CDATA section. + + The element name + The text content of the new element + The newly created child element + + + + Adds an attribute with a specified name and value to the XmlNode. + + The name of the attribute. + The value of the attribute. + + + + Finds a single descendant of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + + + Finds all descendants of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + Writes the XML representation of the node to an XmlWriter + + + + + + Class used to represent a list of XmlResults + + + + + Class used to represent the attributes of a node + + + + + Gets or sets the value associated with the specified key. + Overridden to return null if attribute is not found. + + The key. + Value of the attribute or null + + + + CombiningStrategy is the abstract base for classes that + know how to combine values provided for individual test + parameters to create a set of test cases. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides static methods to express conditions + that must be met for the test to succeed. If + any test fails, a warning is issued. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + 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 an actual value, succeeding if the constraint + fails and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + The message to display if the condition is true + Arguments to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + 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. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + 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 + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + Marks a test that must run in a particular threading apartment state, causing it + to run in a separate thread if necessary. + + + + + Construct an ApartmentAttribute + + The apartment state that this test must be run under. You must pass in a valid apartment state. + + + + Provides the Author of a test or test fixture. + + + + + Initializes a new instance of the class. + + The name of the author. + + + + Initializes a new instance of the class. + + The name of the author. + The email address of the author. + + + + 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 + + + + + Modifies a test by adding a category to it. + + The test to modify + + + + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. + + + + + Default constructor + + + + + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. + + + + + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParameterDataProvider. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Modify the test by adding the name of the combining strategy + to the properties. + + The test to modify + + + + 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 + + + + Causes a test to be skipped if this CultureAttribute is not satisfied. + + The test to modify + + + + Tests to determine if the current culture is supported + based on the properties of this attribute. + + True, if the current culture is supported + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. + + + + + Default constructor + + + + + 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 a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointSourceAttribute. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointsAttribute. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct a description Attribute + + The text of the description + + + + 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 + + + + Modifies a test by marking it as explicit. + + The test to modify + + + + 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 giving a reason for ignoring the test + + The reason for ignoring the test + + + + The date in the future to stop ignoring the test as a string in UTC time. + For example for a date and time, "2014-12-25 08:10:00Z" or for just a date, + "2014-12-25". If just a date is given, the Ignore will expire at midnight UTC. + + + Once the ignore until date has passed, the test will be marked + as runnable. Tests with an ignore until date will have an IgnoreUntilDate + property set which will appear in the test results. + + The string does not contain a valid string representation of a date and time. + + + + Modifies a test by marking it as Ignored. + + The test to modify + + + + 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 items 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 + + + + + SingleThreadedAttribute applies to a test fixture and indicates + that all the child tests must be run on the same thread as the + OneTimeSetUp and OneTimeTearDown. It sets a flag in the + TestExecutionContext and forces all tests to be run sequentially + on the current thread. Any ParallelScope setting is ignored. + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + TestAssemblyDirectoryResolveAttribute is used to mark a test assembly as needing a + special assembly resolution hook that will explicitly search the test assembly's + directory for dependent assemblies. This works around a conflict between mixed-mode + assembly initialization and tests running in their own AppDomain in some cases. + + + + + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. + + + + + Construct a LevelOfParallelismAttribute. + + The number of worker threads to be created by the framework. + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + The abstract base class for all custom attributes defined by NUnit. + + + + + Default constructor + + + + + Attribute used to identify a method that is called once + to perform setup before any child tests are run. + + + + + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + Marks a test to use a pairwise join of any argument + data provided. Arguments will be combined in such a + way that all possible pairs of arguments are used. + + + + + Default constructor + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a ParallelizableAttribute using default ParallelScope.Self. + + + + + Construct a ParallelizableAttribute with a specified scope. + + The ParallelScope associated with this attribute. + + + + Overridden to check for invalid combinations of settings + + + + + + Modify the context to be used for child tests + + The current TestExecutionContext + + + + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. + + + + + No ParallelScope was specified on the test + + + + + The test may be run in parallel with others at the same level. + Valid on classes and methods but not assemblies. + + + + + Test may not be run in parallel with any others. Valid on + classes and methods but not assemblies. + + + + + Mask used to extract the flags that apply to the item on which a + ParallelizableAttribute has been placed, as opposed to descendants. + + + + + Descendants of the test may be run in parallel with one another. + Valid on assemblies and classes but not on methods. + + + + + Descendants of the test down to the level of TestFixtures may be + run in parallel with one another. Valid on assemblies and classes + but not on methods. + + + + + Mask used to extract all the flags that impact descendants of a + test and place them in the TestExecutionContext. + + + + + The test and its descendants may be run in parallel with others at + the same level. Valid on classes and methods but not assemblies. + + + + + 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-delimited list of platforms + + + + Causes a test to be skipped if this PlatformAttribute is not satisfied. + + The test to modify + + + + 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 + + + + + Modifies a test by adding properties to it. + + The test to modify + + + + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. + + + + + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + + + + + + Construct a set of ints within a specified range + + + + + Construct a set of unsigned ints within a specified range + + + + + Construct a set of longs within a specified range + + + + + Construct a set of unsigned longs within a specified range + + + + + Construct a set of shorts within a specified range + + + + + Construct a set of unsigned shorts within a specified range + + + + + Construct a set of doubles within a specified range + + + + + Construct a set of floats within a specified range + + + + + Construct a set of bytes within a specified range + + + + + Construct a set of sbytes within a specified range + + + + + 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 unsigned ints using default step of 1 + + + + + + + Construct a range of unsigned ints specifying the step size + + + + + + + + Construct a range of longs using a default step of 1 + + + + + + + Construct a range of longs + + + + + + + + Construct a range of unsigned longs using default step of 1 + + + + + + + Construct a range of unsigned longs specifying the step size + + + + + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RepeatAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + 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 in the STA, causing it + to run in a separate thread if necessary. + + + + + Construct a RequiresSTAAttribute + + + + + Marks a test that must run on a separate thread. + + + + + Construct a RequiresThreadAttribute + + + + + Construct a RequiresThreadAttribute, specifying the apartment + + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RetryAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Marks a test to use a Sequential join of any argument + data provided. Arguments will be combined into test cases, + taking the next value of each argument until all are used. + + + + + Default constructor + + + + + 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 identify a method that is called + immediately before each test is run. + + + + + Attribute used to identify a class that contains + or + methods for all the test fixtures under a given namespace. + + + + + Build a SetUpFixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A SetUpFixture object as a TestSuite. + + + + 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. + + + + + Provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + The author of this test + + + + + The type that this test is testing + + + + + Modifies a test by adding a description, if not already set. + + The test to modify + + + + Gets or sets the expected result. + + The result. + + + + Returns true if an expected result has been set + + + + + Construct a TestMethod from a given method. + + The method for which a test is to be constructed. + The suite to which the test will be added. + A TestMethod + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + 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 or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test case. + + + + + Gets the list of arguments to a test case + + + + + Gets the properties of the test case + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if the expected result has been set + + + + + Gets or sets the description. + + The description. + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the reason for ignoring the test + + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets or sets the reason for not running the test. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Comma-delimited list of platforms to run the test for + + + + + Comma-delimited list of platforms to not run the test for + + + + + Gets and sets the category for this test case. + May be a comma-separated list of categories. + + + + + Performs several special conversions allowed by NUnit in order to + permit arguments with types that cannot be used in the constructor + of an Attribute such as TestCaseAttribute or to simplify their use. + + The arguments to be converted + The ParameterInfo array for the method + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a name + + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type + + The type that will provide data + + + + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + + The method for which data is needed. + + + + + TestFixtureAttribute is used to mark a class that represents a TestFixture. + + + + + 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. + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test fixture. + + + + + The arguments originally provided to the attribute + + + + + Properties pertaining to this fixture + + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Descriptive text for this fixture + + + + + The author of this fixture + + + + + The type that this fixture is testing + + + + + Gets or sets the ignore reason. May set RunState as a side effect. + + The ignore reason. + + + + Gets or sets the reason for not running the fixture. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Build a fixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A an IEnumerable holding one TestFixture object. + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. + + + + + Error message string is public so the tests can use it + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type 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 + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestFixtures from a given Type, + using available parameter data. + + The TypeInfo for which fixtures are to be constructed. + One or more TestFixtures as TestSuite + + + + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. + + The type for which data is needed. + + + + + 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. + + + + + Indicates which class the test or test fixture is testing + + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Construct the attribute, specifying a combining strategy and source of parameter data. + + + + + Used 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 class or assembly, sets the default timeout + for all contained test methods. + + + + + Construct a TimeoutAttribute given a time in milliseconds + + The timeout value in milliseconds + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + 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 + + + + + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. + + + + + 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 + + + + + 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 a static method, property or field 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 a static 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 + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + + An enumeration containing individual data items + + + + + A set of Assert methods operating on one or more collections + + + + + DO NOT USE! Use CollectionAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + 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 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 + 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 + 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 + 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 + 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 + 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 + 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 + Arguments to be used in formatting the message + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset does not contain the superset + + 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 the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset contains the superset. + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 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 + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + 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. + + + + + Constructs an AttributeConstraint for a specified attribute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + 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 + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation + + + + + 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 + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Gets the expected object + + + + + Test whether the expected item is contained in the collection + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether two collections are equivalent + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + 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 ignore case and return 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. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + 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. + + + + + If used performs a default ascending comparison + + + + + If used performs a reverse comparison + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + Then signals a break between two ordering steps + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of the constraint. + + + + + + An OrderingStep represents one stage of the sort + + + + + 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 + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another + + + + + Construct a CollectionSupersetConstraint + + The collection that the actual value is expected to be a superset of + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a superset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionTally counts (tallies) the number of + occurrences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + The number of objects remaining in the tally + + + + + 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 + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Construct a default ComparisonAdapter + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + ComparerAdapter extends and + allows use of an or + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a + + + + + 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 + + + + + Tolerance used in making the comparison + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + A ConstraintResult + + + + Protected function overridden by derived class to actually perform the comparison + + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use a and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Set the tolerance for use in this comparison + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual _values is allowed to deviate from + the expected value. + + Self + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + Retrieves the value to be tested from an ActualValueDelegate. + The default implementation simply evaluates the delegate but derived + classes may override it to provide for delayed processing. + + An ActualValueDelegate + Delegate evaluation result + + + + 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 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. + + + + + Returns a DelayedConstraint.WithRawDelayInterval with the specified delay time. + + The delay, which defaults to milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + Resolves any pending operators and returns the resolved 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 reorganized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + Pushes the specified operator onto the stack. + + The operator to put onto the stack. + + + + Pops the topmost operator from the stack. + + The topmost operator on the stack + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Pushes the specified constraint. As a side effect, + the constraint's Builder field is set to the + ConstraintBuilder owning this stack. + + The constraint to put onto the stack + + + + Pops this topmost constraint from the stack. + As a side effect, the constraint's Builder + field is set to null. + + The topmost contraint on the stack + + + + 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 expression 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. + + + + + 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 + reorganized. When a constraint is appended, it is returned as the + value of the operation so that modifiers may be applied. However, + any partially built expression is attached to the constraint for + later resolution. When an operator is appended, the partial + expression is returned. If it's a self-resolving operator, then + a ResolvableConstraintExpression is returned. + + + + + 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. Note that the constraint + is not reduced at this time. For example, if there + is a NotOperator on the stack we don't reduce and + return a NotConstraint. The original constraint must + be returned because it may support modifiers that + are yet to be applied. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + With is currently a NOP - reserved for future use. + + + + + 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests if item is equal to zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 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 ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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 constraint that succeeds if the value + is a file or directory and it exists. + + + + + ConstraintStatus represents the status of a ConstraintResult + returned by a Constraint being applied to an actual value. + + + + + The status has not yet been set + + + + + The constraint succeeded + + + + + The constraint failed + + + + + An error occured in applying the constraint (reserved for future use) + + + + + Contain the result of matching a against an actual value. + + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + The status of the new ConstraintResult. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + If true, applies a status of Success to the result, otherwise Failure. + + + + The actual value that was passed to the method. + + + + + Gets and sets the ResultStatus for this result. + + + + + True if actual value meets the Constraint criteria otherwise false. + + + + + Display friendly name of the constraint. + + + + + Description of the constraint may be affected by the state the constraint had + when was performed against the actual value. + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the result 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 + + + + 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 + + + + 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. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Flag the constraint to ignore case and return self. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Allows only changing the time dimension of delay interval and setting a polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawDelayInterval + + Parent DelayedConstraint on which delay interval dimension is required to be set + + + + Changes delay interval dimension to minutes + + + + + Changes delay interval dimension to seconds + + + + + Changes delay interval dimension to milliseconds + + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only setting the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithDimensionedDelayInterval + + Parent DelayedConstraint on which polling interval is required to be set + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only changing the time dimension of the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawPollingInterval + + Parent DelayedConstraint on which polling dimension is required to be set + + + + Changes polling interval dimension to minutes + + + + + Changes polling interval dimension to seconds + + + + + Changes polling interval dimension to milliseconds + + + + + Delay value store as an Interval object + + + + + Polling value stored as an Interval object + + + + + Creates a new DelayedConstraint + + The inner constraint to 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 to decorate + The time interval after which the match is performed, in milliseconds + The time interval used for polling, in milliseconds + If the value of is less than 0 + + + + Gets text describing a constraint + + + + + 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 + A ConstraintResult + + + + 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 + + + + Returns the string representation of the constraint. + + + + + Adjusts a Timestamp by a given TimeSpan + + + + + + + + Returns the difference between two Timestamps as a TimeSpan + + + + + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected key is contained in the dictionary + + + + + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. + + + + + Construct a DictionaryContainsValueConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected value is contained in the dictionary + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that the collection is empty + + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyStringConstraint tests whether a string is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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. + + + + + + + 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. + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Gets the tolerance for this comparison. + + + The tolerance. + + + + + Gets a value indicating whether to compare case insensitive. + + + true if comparing case insensitive; otherwise, false. + + + + + Gets a value indicating whether or not to clip strings. + + + true if set to clip strings otherwise, false. + + + + + Gets the failure points. + + + The failure points. + + + + + 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. + + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flags the constraint to include + property in comparison of two values. + + + Using this modifier does not allow to use the + constraint modifier. + + + + + 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 + + + + 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 + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + EqualityAdapter class handles all equality comparisons + that use an , + or a . + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps an . + + + + + Returns an EqualityAdapter that uses a predicate function for items comparison. + + + + + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps a . + + + + + 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. + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + FileExistsConstraint is used to determine if a file exists + + + + + Initializes a new instance of the class. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + FileOrDirectoryExistsConstraint is used to determine if a file or directory exists + + + + + If true, the constraint will only check if files exist, not directories + + + + + If true, the constraint will only check if directories exist, not files + + + + + Initializes a new instance of the class that + will check files and directories. + + + + + Initializes a new instance of the class that + will only check files if ignoreDirectories is true. + + if set to true [ignore directories]. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + 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. + + + + + 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 + + + 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 + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + Interface for all constraints + + + + + The display name of this Constraint for use by ToString(). + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + 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 + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + Keeps track of an interval time which can be represented in + Minutes, Seconds or Milliseconds + + + + + Constructs a interval given an value in milliseconds + + + + + Gets Interval value represented as a TimeSpan object + + + + + Returns the interval with the current value as a number of minutes. + + + + + Returns the interval with the current value as a number of seconds. + + + + + Returns the interval with the current value as a number of milliseconds. + + + + + Is true for intervals created with a non zero value + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + + + + IntervalUnit provides the semantics to the value stored in Interval class. + + + + + Unit representing an Interval in minutes + + + + + Unit representing an Interval in seconds + + + + + Unit representing an Interval in milliseconds + + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + An extension of ResolvableConstraintExpression that adds a no-op Items property for readability. + + + + + Create a new instance of ItemsConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + + No-op property for readability. + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + 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 + + + + + Abstract method to get the max line length + + + + + 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 given + 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 failing constraint result + + + + 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 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 + + + + Custom value formatter function + + The value + + + + + Custom value formatter factory function + + The next formatter function + ValueFormatter + If the given formatter is unable to handle a certain format, it must call the next formatter in the chain + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Formatting strings used for expected and actual _values + + + + + Current head of chain of value formatters. Public for testing. + + + + + Add a formatter to the chain of responsibility. + + + + + + Formats text to represent a generalized value. + + The value + The formatted text + + + + Formats 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 + + + + 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 + + + + Converts any null 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 + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test that the actual value is an NaN + + + + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + 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 + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + 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. + + + + + Returns the default NUnitComparer. + + + + + Compares two objects + + + + + + + + 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 + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occurred. + + + + + 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 the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depth. + + + + + Flags the comparer to include + property in comparison of two values. + + + Using this modifier does not allow to use the + modifier. + + + + + Compares two objects for equality within a tolerance. + + + + + 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 + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + 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. + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + 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. + + + + + 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. + + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + 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. + + + + + The syntax element preceding this operator + + + + + The syntax element following 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. + + + + + 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. + + + + + + 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. + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + 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. + + + + + + + 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. + + + + + Gets the name of the property to which the operator applies + + + + + 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. + + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + 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. + + + + + 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. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifies the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Modifies the current instance to be case-sensitive + and returns it. + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether one path in canonical form is a subpath of another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Gets text describing a constraint + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + Construct given a base constraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Formats a prefix constraint's description. + + + + + 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 + + + + Returns the string representation of the constraint. + + + + + + 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 value + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two _values are within a + specified range. + + + + + Initializes a new instance of the class. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + 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 + + + + 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. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Resolve the current expression to a Constraint + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Return the top-level constraint for this expression + + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. + + + + + Construct an EqualConstraintResult + + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + 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 + + + + Display the failure information for two IEnumerables that did not match. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + 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. + + + + + + + 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 + + + + + Description of this constraint + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + 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 a given string + + The string to be tested + True for success, false for failure + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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 + + + + 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. + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + 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 actual value for a failing constraint test to a + MessageWriter. This override only handles the special message + used when an exception is expected but none is thrown. + + The writer on which the actual value is displayed + + + + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Executes the code and returns success if an exception is thrown. + + A delegate representing the code to be tested + True if an exception is thrown, otherwise false + + + + Returns the ActualValueDelegate itself as the value to be tested. + + A delegate representing the code to be tested + The delegate itself + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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. + + + + + Returns a default Tolerance object, equivalent to an exact match. + + + + + Returns an empty Tolerance object, equivalent to an exact match. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + 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 as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of clock ticks. + + + + + Gets the for the current Tolerance + + + + + Gets the magnitude of the current Tolerance instance. + + + + + Returns true if the current tolerance has not been set or is using the . + + + + + Apply the tolerance to an expected value and return + a Tolerance.Range that represents the acceptable values. + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Tolerance.Range represents the range of values that match + a specific tolerance, when applied to a specific value. + + + + + The lower bound of the range + + + + + The Upper bound of the range + + + + + Construct a Range + + + + + 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. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + The type of the actual argument to which the constraint was applied + + + + + Construct a TypeConstraint for a given Type + + The expected type for the constraint + Prefix used in forming the constraint description + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that all items are unique. + + + + + + + XmlSerializableConstraint tests whether + an object is serializable in xml format. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns the string representation of this constraint + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct a standalone ExactCountConstraint + + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + 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. + + + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. + + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Asserts on Directories + + + + + DO NOT USE! Use DirectoryAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + 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 the 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 point to the same directory. + If they are not 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 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 + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + 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 the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to 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 the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + 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 the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to 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 the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 regular expression supplied as an argument. + + + + + Thrown when an assertion failed. + + + + + Default Constructor (normally used) + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + Abstract base for Exceptions that terminate a test and provide a ResultState. + + + + 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 + + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Asserts on Files + + + + + DO NOT USE! Use FileAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + + + + Class used to guard against unexpected argument values + or operations by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Throws an ArgumentOutOfRangeException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an ArgumentException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an InvalidOperationException if the specified condition is not met. + + The condition that must be met + The exception message to be used + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 regular expression 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 a subpath of the 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 + inclusively within a specified range. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + 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 + + + + + Basic Asserts on strings. + + + + + DO NOT USE! Use StringAssert.AreEqualIgnoringCase(...) or Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 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 + + + + 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 TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the 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 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 + + + + + + + + Marks the test case as explicit. + + + + + Marks the test case as explicit, specifying the reason. + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Provide the context information of the current test. + This is an adapter for the internal ExecutionContext + class, hiding the internals from the user test. + + + + + Construct a TestContext for an ExecutionContext + + The ExecutionContext to adapt + + + + 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 TextWriter that will send output to the current test result. + + + + + Gets a TextWriter that will send output directly to Console.Error + + + + + Gets a TextWriter for use in displaying immediate progress messages + + + + + TestParameters object holds parameters for the test run, if any are specified + + + + + Static DefaultWorkDirectory is now used as the source + of the public instance property WorkDirectory. This is + a bit odd but necessary to avoid breaking user tests. + + + + + Get a representation of the current test. + + + + + Gets a Representation of the TestResult for the current test. + + + + + Gets the unique name of the Worker that is executing this test. + + + + + Gets the directory containing the current test assembly. + + + + + Gets the directory to be used for outputting files created + by this test run. + + + + + Gets the random generator. + + + The random generator. + + + + Write the string representation of a boolean value to the current result + + + Write a char to the current result + + + Write a char array to the current result + + + Write the string representation of a double to the current result + + + Write the string representation of an Int32 value to the current result + + + Write the string representation of an Int64 value to the current result + + + Write the string representation of a decimal value to the current result + + + Write the string representation of an object to the current result + + + Write the string representation of a Single value to the current result + + + Write a string to the current result + + + Write the string representation of a UInt32 value to the current result + + + Write the string representation of a UInt64 value to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a line terminator to the current result + + + Write the string representation of a boolean value to the current result followed by a line terminator + + + Write a char to the current result followed by a line terminator + + + Write a char array to the current result followed by a line terminator + + + Write the string representation of a double to the current result followed by a line terminator + + + Write the string representation of an Int32 value to the current result followed by a line terminator + + + Write the string representation of an Int64 value to the current result followed by a line terminator + + + Write the string representation of a decimal value to the current result followed by a line terminator + + + Write the string representation of an object to the current result followed by a line terminator + + + Write the string representation of a Single value to the current result followed by a line terminator + + + Write a string to the current result followed by a line terminator + + + Write the string representation of a UInt32 value to the current result followed by a line terminator + + + Write the string representation of a UInt64 value to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + + This method adds the a new ValueFormatterFactory to the + chain of responsibility used for formatting values in messages. + The scope of the change is the current TestContext. + + The factory delegate + + + + Attach a file to the current test result + + Relative or absolute file path to attachment + Optional description of attachment + + + + This method provides a simplified way to add a ValueFormatter + delegate to the chain of responsibility, creating the factory + delegate internally. It is useful when the Type of the object + is the only criterion for selection of the formatter, since + it can be used without getting involved with a compound function. + + The type supported by this formatter + The ValueFormatter delegate + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Construct a TestAdapter for a Test + + The Test to be adapted + + + + Gets the unique Id of a test + + + + + The name of the test, which may or may not be + the same as the method name. + + + + + The name of the method representing the test. + + + + + The FullName of the test + + + + + The ClassName of the test + + + + + The properties of the test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a TestResult + + The TestResult to be adapted + + + + Gets a ResultState representing the outcome of the test. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + The TestFixtureData class represents a set of arguments + and other parameter info to be used for a parameterized + fixture. It is derived from TestFixtureParameters and adds a + fluent syntax for use in initializing the fixture. + + + + + 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. + + + + Marks the test fixture as explicit. + + + + + Marks the test fixture as explicit, specifying the reason. + + + + + Ignores this TestFixture, specifying the reason. + + The reason. + + + + + TestParameters class holds any named parameters supplied to the test run + + + + + Gets the number of test parameters + + + + + Gets a collection of the test parameter names + + + + + Gets a flag indicating whether a parameter with the specified name exists. + + Name of the parameter + True if it exists, otherwise false + + + + Indexer provides access to the internal dictionary + + Name of the parameter + Value of the parameter or null if not present + + + + Get method is a simple alternative to the indexer + + Name of the parameter + Value of the parameter or null if not present + + + + Get the value of a parameter or a default string + + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Get the value of a parameter or return a default + + The return Type + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Adds a parameter to the list + + Name of the parameter + Value of the parameter + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + 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 ArgumentException + + + + + Creates a constraint specifying an expected ArgumentNullException + + + + + Creates a constraint specifying an expected InvalidOperationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + 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 + + + + + FrameworkPackageSettings is a static class containing constant values that + are used as keys in setting up a TestPackage. These values are used in + the framework, and set in the runner. Setting values may be a string, int or bool. + + + + + Flag (bool) indicating whether tests are being debugged. + + + + + Flag (bool) indicating whether to pause execution of tests to allow + the user to attach a debugger. + + + + + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. + + + + + Full path of the directory to be used for work and result files. + This path is provided to tests by the framework TestContext. + + + + + Integer value in milliseconds for the default timeout value + for test cases. If not specified, there is no timeout except + as specified by attributes on the tests themselves. + + + + + A TextWriter to which the internal trace will be sent. + + + + + A list of tests to be loaded. + + + + + The number of test threads to run for the assembly. If set to + 1, a single queue is used. If set to 0, tests are executed + directly, without queuing. + + + + + The random seed to be used for this assembly. If specified + as the value reported from a prior run, the framework should + generate identical random values for tests as were used for + that run, provided that no change has been made to the test + assembly. Default is a random value itself. + + + + + If true, execution stops after the first error or failure. + + + + + If true, use of the event queue is suppressed and test events are synchronous. + + + + + The default naming pattern used in generating test names + + + + + Parameters to be passed on to the tests, serialized to a single string which needs parsing. Obsoleted by ; kept for backward compatibility. + + + + + Parameters to be passed on to the tests, already parsed into an IDictionary<string, string>. Replaces . + + + + + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. + + + + + Gets the custom attributes from the given object. + + .NET Standard 1.3 libraries do not have an ICustomAttributeProvider, so we need to cast to each of + it's direct subtypes and try to get attributes off those instead. + The actual. + Type of the attribute. + if set to true [inherit]. + A list of the given attribute on the given object. + + + + A MarshalByRefObject that lives forever + + + + + Obtains a lifetime service object to control the lifetime policy for this instance. + + + + + Type extensions that apply to all target frameworks + + + + + Determines if the given array is castable/matches the array. + + + + + + + + Determines if one type can be implicitly converted from another + + + + + + + + This class is used as a flag when we get a parameter list for a method/constructor, but + we do not know one of the types because null was passed in. + + + + diff --git a/csharp/packages/NUnit.3.7.1/lib/netstandard1.3/nunit.framework.dll b/csharp/packages/NUnit.3.7.1/lib/netstandard1.3/nunit.framework.dll new file mode 100644 index 0000000000000000000000000000000000000000..695918ee82913d023cdb939cd27b5262c489019c GIT binary patch literal 299520 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 F{{Tz2Ag=%b literal 0 HcmV?d00001 diff --git a/csharp/packages/NUnit.3.7.1/lib/netstandard1.3/nunit.framework.xml b/csharp/packages/NUnit.3.7.1/lib/netstandard1.3/nunit.framework.xml new file mode 100644 index 00000000..596d03d1 --- /dev/null +++ b/csharp/packages/NUnit.3.7.1/lib/netstandard1.3/nunit.framework.xml @@ -0,0 +1,18351 @@ + + + + nunit.framework + + + + + The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. + + + + + The default suite builder used by the test assembly builder. + + + + + Initializes a new instance of the class. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + FrameworkController provides a facade for use in loading, browsing + and running tests without requiring a reference to the NUnit + framework. All calls are encapsulated in constructors for + this class and its nested classes, which only require the + types of the Common Type System as arguments. + + The controller supports four actions: Load, Explore, Count and Run. + They are intended to be called by a driver, which should allow for + proper sequencing of calls. Load must be called before any of the + other actions. The driver may support other actions, such as + reload on run, by combining these calls. + + + + + Construct a FrameworkController using the default builder and runner. + + The AssemblyName or path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController using the default builder and runner. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The full AssemblyName or the path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Gets the ITestAssemblyBuilder used by this controller instance. + + The builder. + + + + Gets the ITestAssemblyRunner used by this controller instance. + + The runner. + + + + Gets the AssemblyName or the path for which this FrameworkController was created + + + + + Gets the Assembly for which this + + + + + Gets a dictionary of settings for the FrameworkController + + + + + Loads the tests in the assembly + + + + + + Returns info about the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of exploring the tests + + + + Runs the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Runs the tests in an assembly synchronously reporting back the test results through the callback + or through the return value + + The callback that receives the test results + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Runs the tests in an assembly asynchronously reporting back the test results through the callback + + The callback that receives the test results + A string containing the XML representation of the filter to use + + + + Stops the test run + + True to force the stop, false for a cooperative stop + + + + Counts the number of test cases in the loaded TestSuite + + A string containing the XML representation of the filter to use + The number of tests + + + + Inserts environment element + + Target node + The new node + + + + Inserts settings element + + Target node + Settings dictionary + The new node + + + + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. + + + + + LoadTestsAction loads a test into the FrameworkController + + + + + LoadTestsAction loads the tests in an assembly. + + The controller. + The callback handler. + + + + ExploreTestsAction returns info about the tests in an assembly + + + + + Initializes a new instance of the class. + + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. + + + + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. + + + + + Construct a CountsTestAction and perform the count of test cases. + + A FrameworkController holding the TestSuite whose cases are to be counted + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunTestsAction runs the loaded TestSuite held by the FrameworkController. + + + + + Construct a RunTestsAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunAsyncAction initiates an asynchronous test run, returning immediately + + + + + Construct a RunAsyncAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + StopRunAction stops an ongoing run. + + + + + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. + + The FrameworkController for which a run is to be stopped. + True the stop should be forced, false for a cooperative stop. + >A callback handler used to report results + A forced stop will cause threads and processes to be killed as needed. + + + + The ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + The ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. + + + + + Gets the tree of loaded tests, or null if + no tests have been loaded. + + + + + Gets the tree of test results, if the test + run is completed, otherwise null. + + + + + Indicates whether a test has been loaded + + + + + Indicates whether a test is currently running + + + + + Indicates whether a test run is complete + + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + File name of the assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive ITestListener notifications. + A test filter used to select tests to be run + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Implementation of ITestAssemblyRunner + + + + + Initializes a new instance of the class. + + The builder. + + + + The tree of tests that was loaded by the builder + + + + + The test result, if a run has completed + + + + + Indicates whether a test is loaded + + + + + Indicates whether a test is running + + + + + Indicates whether a test run is complete + + + + + Our settings, specified when loading the assembly + + + + + The top level WorkItem created for the assembly as a whole + + + + + The TestExecutionContext for the top level WorkItem + + + + + Loads the tests found in an Assembly + + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Loads the tests found in an Assembly + + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + RunAsync is a template method, calling various abstract and + virtual methods to be overridden by derived classes. + + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any tests that are currently running + + + + Initiate the test run. + + + + + Create the initial TestExecutionContext used to run tests + + The ITestListener specified in the RunAsync call + + + + Handle the the Completed event for the top level work item + + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + Verifies that the first int is greater than the second + int. 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 int is greater than the second + int. 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Verifies that the first value is greater than or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that an int is zero. + + The number to be examined + + + + Asserts that an int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is zero. + + The number to be examined + + + + Asserts that an unsigned int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is zero. + + The number to be examined + + + + Asserts that a Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is zero. + + The number to be examined + + + + Asserts that an unsigned Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is not zero. + + The number to be examined + + + + Asserts that an int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is not zero. + + The number to be examined + + + + Asserts that an unsigned int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is not zero. + + The number to be examined + + + + Asserts that a Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is positive. + + The number to be examined + + + + Asserts that an int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is positive. + + The number to be examined + + + + Asserts that an unsigned int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is positive. + + The number to be examined + + + + Asserts that a Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is positive. + + The number to be examined + + + + Asserts that an unsigned Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is positive. + + The number to be examined + + + + Asserts that a decimal is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is positive. + + The number to be examined + + + + Asserts that a double is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is positive. + + The number to be examined + + + + Asserts that a float is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is negative. + + The number to be examined + + + + Asserts that an int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is negative. + + The number to be examined + + + + Asserts that an unsigned int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is negative. + + The number to be examined + + + + Asserts that a Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is negative. + + The number to be examined + + + + Asserts that an unsigned Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is negative. + + The number to be examined + + + + Asserts that a decimal is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is negative. + + The number to be examined + + + + Asserts that a double is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is negative. + + The number to be examined + + + + Asserts that a float is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + 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. + + + + + DO NOT USE! Use Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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. + + + + + Issues a warning using the message and arguments provided. + + The message to display. + Arguments to be used in formatting the message + + + + Issues a warning using the message provided. + + The message to display. + + + + 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. + + + + + Asserts that an object is contained in a collection. + + The expected object + The collection 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 collection. + + The expected object + The collection to be examined + + + + Wraps code containing a series of assertions, which should all + be executed, even if they fail. Failed results are saved and + reported at the end of the code block. + + A TestDelegate to be executed in Multiple Assertion mode. + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Verifies that an async 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 an async delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that an async delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + + + + Verifies that an async delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + + + + Verifies that an async 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 an async delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that an async 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 an async 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 an async delegate throws an exception of a certain Type + or one derived from it 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 an async delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that an async delegate does not throw an exception + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate does not throw an exception. + + A TestDelegate + + + + 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 + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + 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 TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + 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 TestDelegate + + + + 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 + + + + 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 + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it 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 of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + 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 TestDelegate + + + + 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 + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + 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 + + + + 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 + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + 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 function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments 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 + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + Delegate used by tests that execute async code and + capture any thrown exception. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter names in making asserts. + + + + + 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 + + + + 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. + + 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 + + + + 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 + + + + 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 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 + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 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 regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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. + + + + + 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. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + 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 + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + Provides the Author of a test or test fixture. + + + + + Initializes a new instance of the class. + + The name of the author. + + + + Initializes a new instance of the class. + + The name of the author. + The email address of the author. + + + + 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 + + + + + Modifies a test by adding a category to it. + + The test to modify + + + + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. + + + + + Default constructor + + + + + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. + + + + + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParameterDataProvider. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Modify the test by adding the name of the combining strategy + to the properties. + + The test to modify + + + + 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 + + + + Causes a test to be skipped if this CultureAttribute is not satisfied. + + The test to modify + + + + Tests to determine if the current culture is supported + based on the properties of this attribute. + + True, if the current culture is supported + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. + + + + + Default constructor + + + + + 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 a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointSourceAttribute. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointsAttribute. + + + + + DefaultFloatingPointToleranceAttribute sets the tolerance used + by default when checking the equality of floating point values. + + + + + Construct specifying an amount + + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct a description Attribute + + The text of the description + + + + 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 + + + + Modifies a test by marking it as explicit. + + The test to modify + + + + 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 giving a reason for ignoring the test + + The reason for ignoring the test + + + + The date in the future to stop ignoring the test as a string in UTC time. + For example for a date and time, "2014-12-25 08:10:00Z" or for just a date, + "2014-12-25". If just a date is given, the Ignore will expire at midnight UTC. + + + Once the ignore until date has passed, the test will be marked + as runnable. Tests with an ignore until date will have an IgnoreUntilDate + property set which will appear in the test results. + + The string does not contain a valid string representation of a date and time. + + + + Modifies a test by marking it as Ignored. + + The test to modify + + + + 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 items 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 + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a NonParallelizableAttribute. + + + + + The NonTestAssemblyAttribute may be used by third-party frameworks + or other software that references the nunit framework but does not + contain tests. Applying the attribute indicates that the assembly + is not a test assembly and may prevent errors if certain runners + attempt to load the assembly. Note that recognition of the attribute + depends on each individual runner. + + + + + SingleThreadedAttribute applies to a test fixture and indicates + that all the child tests must be run on the same thread as the + OneTimeSetUp and OneTimeTearDown. It sets a flag in the + TestExecutionContext and forces all tests to be run sequentially + on the current thread. Any ParallelScope setting is ignored. + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + TestAssemblyDirectoryResolveAttribute is used to mark a test assembly as needing a + special assembly resolution hook that will explicitly search the test assembly's + directory for dependent assemblies. This works around a conflict between mixed-mode + assembly initialization and tests running in their own AppDomain in some cases. + + + + + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. + + + + + Construct a LevelOfParallelismAttribute. + + The number of worker threads to be created by the framework. + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + The abstract base class for all custom attributes defined by NUnit. + + + + + Default constructor + + + + + Attribute used to identify a method that is called once + to perform setup before any child tests are run. + + + + + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + Marks a test to use a pairwise join of any argument + data provided. Arguments will be combined in such a + way that all possible pairs of arguments are used. + + + + + Default constructor + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a ParallelizableAttribute using default ParallelScope.Self. + + + + + Construct a ParallelizableAttribute with a specified scope. + + The ParallelScope associated with this attribute. + + + + Overridden to check for invalid combinations of settings + + + + + + Modify the context to be used for child tests + + The current TestExecutionContext + + + + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. + + + + + No ParallelScope was specified on the test + + + + + The test may be run in parallel with others at the same level. + Valid on classes and methods but not assemblies. + + + + + Test may not be run in parallel with any others. Valid on + classes and methods but not assemblies. + + + + + Mask used to extract the flags that apply to the item on which a + ParallelizableAttribute has been placed, as opposed to descendants. + + + + + Descendants of the test may be run in parallel with one another. + Valid on assemblies and classes but not on methods. + + + + + Descendants of the test down to the level of TestFixtures may be + run in parallel with one another. Valid on assemblies and classes + but not on methods. + + + + + Mask used to extract all the flags that impact descendants of a + test and place them in the TestExecutionContext. + + + + + The test and its descendants may be run in parallel with others at + the same level. Valid on classes and methods but not assemblies. + + + + + 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 + + + + + Modifies a test by adding properties to it. + + The test to modify + + + + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. + + + + + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + + + + + + Construct a set of ints within a specified range + + + + + Construct a set of unsigned ints within a specified range + + + + + Construct a set of longs within a specified range + + + + + Construct a set of unsigned longs within a specified range + + + + + Construct a set of shorts within a specified range + + + + + Construct a set of unsigned shorts within a specified range + + + + + Construct a set of doubles within a specified range + + + + + Construct a set of floats within a specified range + + + + + Construct a set of bytes within a specified range + + + + + Construct a set of sbytes within a specified range + + + + + 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 unsigned ints using default step of 1 + + + + + + + Construct a range of unsigned ints specifying the step size + + + + + + + + Construct a range of longs using a default step of 1 + + + + + + + Construct a range of longs + + + + + + + + Construct a range of unsigned longs using default step of 1 + + + + + + + Construct a range of unsigned longs specifying the step size + + + + + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RepeatAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RetryAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Marks a test to use a Sequential join of any argument + data provided. Arguments will be combined into test cases, + taking the next value of each argument until all are used. + + + + + Default constructor + + + + + Attribute used to identify a method that is called + immediately before each test is run. + + + + + Attribute used to identify a class that contains + or + methods for all the test fixtures under a given namespace. + + + + + Build a SetUpFixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A SetUpFixture object as a TestSuite. + + + + 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. + + + + + Provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + The author of this test + + + + + The type that this test is testing + + + + + Modifies a test by adding a description, if not already set. + + The test to modify + + + + Gets or sets the expected result. + + The result. + + + + Returns true if an expected result has been set + + + + + Construct a TestMethod from a given method. + + The method for which a test is to be constructed. + The suite to which the test will be added. + A TestMethod + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + 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 or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test case. + + + + + Gets the list of arguments to a test case + + + + + Gets the properties of the test case + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if the expected result has been set + + + + + Gets or sets the description. + + The description. + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the reason for ignoring the test + + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets or sets the reason for not running the test. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets and sets the category for this test case. + May be a comma-separated list of categories. + + + + + Performs several special conversions allowed by NUnit in order to + permit arguments with types that cannot be used in the constructor + of an Attribute such as TestCaseAttribute or to simplify their use. + + The arguments to be converted + The ParameterInfo array for the method + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a name + + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type + + The type that will provide data + + + + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + + The method for which data is needed. + + + + + TestFixtureAttribute is used to mark a class that represents a TestFixture. + + + + + 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. + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test fixture. + + + + + The arguments originally provided to the attribute + + + + + Properties pertaining to this fixture + + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Descriptive text for this fixture + + + + + The author of this fixture + + + + + The type that this fixture is testing + + + + + Gets or sets the ignore reason. May set RunState as a side effect. + + The ignore reason. + + + + Gets or sets the reason for not running the fixture. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Build a fixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A an IEnumerable holding one TestFixture object. + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. + + + + + Error message string is public so the tests can use it + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type 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 + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestFixtures from a given Type, + using available parameter data. + + The TypeInfo for which fixtures are to be constructed. + One or more TestFixtures as TestSuite + + + + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. + + The type for which data is needed. + + + + + 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. + + + + + Indicates which class the test or test fixture is testing + + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Construct the attribute, specifying a combining strategy and source of parameter data. + + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + 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 + + + + + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. + + + + + 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 + + + + + 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 a static method, property or field 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 a static 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 + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + + An enumeration containing individual data items + + + + + A set of Assert methods operating on one or more collections + + + + + DO NOT USE! Use CollectionAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + 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 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 + 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 + 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 + 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 + 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 + 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 + 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 + Arguments to be used in formatting the message + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset does not contain the superset + + 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 the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset contains the superset. + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 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 + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + 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. + + + + + Constructs an AttributeConstraint for a specified attribute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + 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 + + + + 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 + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Gets the expected object + + + + + Test whether the expected item is contained in the collection + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether two collections are equivalent + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + 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 ignore case and return 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. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + 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. + + + + + If used performs a default ascending comparison + + + + + If used performs a reverse comparison + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + Then signals a break between two ordering steps + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of the constraint. + + + + + + An OrderingStep represents one stage of the sort + + + + + 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 + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another + + + + + Construct a CollectionSupersetConstraint + + The collection that the actual value is expected to be a superset of + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a superset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionTally counts (tallies) the number of + occurrences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + The number of objects remaining in the tally + + + + + 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 + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Construct a default ComparisonAdapter + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + ComparerAdapter extends and + allows use of an or + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a + + + + + 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 + + + + + Tolerance used in making the comparison + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + A ConstraintResult + + + + Protected function overridden by derived class to actually perform the comparison + + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use a and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Set the tolerance for use in this comparison + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual _values is allowed to deviate from + the expected value. + + Self + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + Retrieves the value to be tested from an ActualValueDelegate. + The default implementation simply evaluates the delegate but derived + classes may override it to provide for delayed processing. + + An ActualValueDelegate + Delegate evaluation result + + + + 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 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. + + + + + Returns a DelayedConstraint.WithRawDelayInterval with the specified delay time. + + The delay, which defaults to milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + Resolves any pending operators and returns the resolved 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 reorganized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + Pushes the specified operator onto the stack. + + The operator to put onto the stack. + + + + Pops the topmost operator from the stack. + + The topmost operator on the stack + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Pushes the specified constraint. As a side effect, + the constraint's Builder field is set to the + ConstraintBuilder owning this stack. + + The constraint to put onto the stack + + + + Pops this topmost constraint from the stack. + As a side effect, the constraint's Builder + field is set to null. + + The topmost contraint on the stack + + + + 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 expression 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. + + + + + 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 + reorganized. When a constraint is appended, it is returned as the + value of the operation so that modifiers may be applied. However, + any partially built expression is attached to the constraint for + later resolution. When an operator is appended, the partial + expression is returned. If it's a self-resolving operator, then + a ResolvableConstraintExpression is returned. + + + + + 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. Note that the constraint + is not reduced at this time. For example, if there + is a NotOperator on the stack we don't reduce and + return a NotConstraint. The original constraint must + be returned because it may support modifiers that + are yet to be applied. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + With is currently a NOP - reserved for future use. + + + + + 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests if item is equal to zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 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 ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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 constraint that succeeds if the value + is a file or directory and it exists. + + + + + ConstraintStatus represents the status of a ConstraintResult + returned by a Constraint being applied to an actual value. + + + + + The status has not yet been set + + + + + The constraint succeeded + + + + + The constraint failed + + + + + An error occured in applying the constraint (reserved for future use) + + + + + Contain the result of matching a against an actual value. + + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + The status of the new ConstraintResult. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + If true, applies a status of Success to the result, otherwise Failure. + + + + The actual value that was passed to the method. + + + + + Gets and sets the ResultStatus for this result. + + + + + True if actual value meets the Constraint criteria otherwise false. + + + + + Display friendly name of the constraint. + + + + + Description of the constraint may be affected by the state the constraint had + when was performed against the actual value. + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the result 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 + + + + 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 + + + + 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. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Flag the constraint to ignore case and return self. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Allows only changing the time dimension of delay interval and setting a polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawDelayInterval + + Parent DelayedConstraint on which delay interval dimension is required to be set + + + + Changes delay interval dimension to minutes + + + + + Changes delay interval dimension to seconds + + + + + Changes delay interval dimension to milliseconds + + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only setting the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithDimensionedDelayInterval + + Parent DelayedConstraint on which polling interval is required to be set + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only changing the time dimension of the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawPollingInterval + + Parent DelayedConstraint on which polling dimension is required to be set + + + + Changes polling interval dimension to minutes + + + + + Changes polling interval dimension to seconds + + + + + Changes polling interval dimension to milliseconds + + + + + Delay value store as an Interval object + + + + + Polling value stored as an Interval object + + + + + Creates a new DelayedConstraint + + The inner constraint to 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 to decorate + The time interval after which the match is performed, in milliseconds + The time interval used for polling, in milliseconds + If the value of is less than 0 + + + + Gets text describing a constraint + + + + + 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 + A ConstraintResult + + + + 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 + + + + Returns the string representation of the constraint. + + + + + Adjusts a Timestamp by a given TimeSpan + + + + + + + + Returns the difference between two Timestamps as a TimeSpan + + + + + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected key is contained in the dictionary + + + + + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. + + + + + Construct a DictionaryContainsValueConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected value is contained in the dictionary + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that the collection is empty + + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyStringConstraint tests whether a string is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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. + + + + + + + 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. + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Gets the tolerance for this comparison. + + + The tolerance. + + + + + Gets a value indicating whether to compare case insensitive. + + + true if comparing case insensitive; otherwise, false. + + + + + Gets a value indicating whether or not to clip strings. + + + true if set to clip strings otherwise, false. + + + + + Gets the failure points. + + + The failure points. + + + + + 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. + + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flags the constraint to include + property in comparison of two values. + + + Using this modifier does not allow to use the + constraint modifier. + + + + + 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 + + + + 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 + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. + + + + + Construct an EqualConstraintResult + + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + 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 + + + + Display the failure information for two IEnumerables that did not match. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + EqualityAdapter class handles all equality comparisons + that use an , + or a . + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps an . + + + + + Returns an EqualityAdapter that uses a predicate function for items comparison. + + + + + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps a . + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct a standalone ExactCountConstraint + + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + 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. + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + FileExistsConstraint is used to determine if a file exists + + + + + Initializes a new instance of the class. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + FileOrDirectoryExistsConstraint is used to determine if a file or directory exists + + + + + If true, the constraint will only check if files exist, not directories + + + + + If true, the constraint will only check if directories exist, not files + + + + + Initializes a new instance of the class that + will check files and directories. + + + + + Initializes a new instance of the class that + will only check files if ignoreDirectories is true. + + if set to true [ignore directories]. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + 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. + + + + + 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 + + + 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 + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + Interface for all constraints + + + + + The display name of this Constraint for use by ToString(). + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + 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 + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + Keeps track of an interval time which can be represented in + Minutes, Seconds or Milliseconds + + + + + Constructs a interval given an value in milliseconds + + + + + Gets Interval value represented as a TimeSpan object + + + + + Returns the interval with the current value as a number of minutes. + + + + + Returns the interval with the current value as a number of seconds. + + + + + Returns the interval with the current value as a number of milliseconds. + + + + + Is true for intervals created with a non zero value + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + + + + IntervalUnit provides the semantics to the value stored in Interval class. + + + + + Unit representing an Interval in minutes + + + + + Unit representing an Interval in seconds + + + + + Unit representing an Interval in milliseconds + + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + An extension of ResolvableConstraintExpression that adds a no-op Items property for readability. + + + + + Create a new instance of ItemsConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + + No-op property for readability. + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + 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 + + + + + Abstract method to get the max line length + + + + + 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 given + 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 failing constraint result + + + + 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 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 + + + + Custom value formatter function + + The value + + + + + Custom value formatter factory function + + The next formatter function + ValueFormatter + If the given formatter is unable to handle a certain format, it must call the next formatter in the chain + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Formatting strings used for expected and actual _values + + + + + Current head of chain of value formatters. Public for testing. + + + + + Add a formatter to the chain of responsibility. + + + + + + Formats text to represent a generalized value. + + The value + The formatted text + + + + Formats 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 + + + + 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 + + + + Converts any null 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 + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test that the actual value is an NaN + + + + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + 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 + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + 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. + + + + + Returns the default NUnitComparer. + + + + + Compares two objects + + + + + + + + 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 + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occurred. + + + + + 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 the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depth. + + + + + Flags the comparer to include + property in comparison of two values. + + + Using this modifier does not allow to use the + modifier. + + + + + Compares two objects for equality within a tolerance. + + + + + 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 + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + 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. + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + 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. + + + + + 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. + + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + 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. + + + + + The syntax element preceding this operator + + + + + The syntax element following 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. + + + + + 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. + + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + 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. + + + + + + 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. + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + 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. + + + + + + + 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. + + + + + Gets the name of the property to which the operator applies + + + + + 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. + + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + 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. + + + + + 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. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifies the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Modifies the current instance to be case-sensitive + and returns it. + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether one path in canonical form is a subpath of another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Gets text describing a constraint + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + Construct given a base constraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Formats a prefix constraint's description. + + + + + 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 + + + + Returns the string representation of the constraint. + + + + + + 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 value + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two _values are within a + specified range. + + + + + Initializes a new instance of the class. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + 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 + + + + 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. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Resolve the current expression to a Constraint + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Return the top-level constraint for this expression + + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + 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. + + + + + + + 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 + + + + + Description of this constraint + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + 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 a given string + + The string to be tested + True for success, false for failure + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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 + + + + 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. + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + 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 actual value for a failing constraint test to a + MessageWriter. This override only handles the special message + used when an exception is expected but none is thrown. + + The writer on which the actual value is displayed + + + + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Executes the code and returns success if an exception is thrown. + + A delegate representing the code to be tested + True if an exception is thrown, otherwise false + + + + Returns the ActualValueDelegate itself as the value to be tested. + + A delegate representing the code to be tested + The delegate itself + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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. + + + + + Returns a default Tolerance object, equivalent to an exact match. + + + + + Returns an empty Tolerance object, equivalent to an exact match. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + 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 as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of clock ticks. + + + + + Gets the for the current Tolerance + + + + + Gets the magnitude of the current Tolerance instance. + + + + + Returns true if the current tolerance has not been set or is using the . + + + + + Apply the tolerance to an expected value and return + a Tolerance.Range that represents the acceptable values. + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Tolerance.Range represents the range of values that match + a specific tolerance, when applied to a specific value. + + + + + The lower bound of the range + + + + + The Upper bound of the range + + + + + Construct a Range + + + + + 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. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + The type of the actual argument to which the constraint was applied + + + + + Construct a TypeConstraint for a given Type + + The expected type for the constraint + Prefix used in forming the constraint description + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that all items are unique. + + + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. + + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Asserts on Directories + + + + + DO NOT USE! Use DirectoryAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + 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 the 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 point to the same directory. + If they are not 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 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 + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + 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 the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to 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 the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + 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 the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to 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 the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 regular expression supplied as an argument. + + + + + 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 + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + 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 + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + Default Constructor (normally used) + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + Abstract base for Exceptions that terminate a test and provide a ResultState. + + + + 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 + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + Asserts on Files + + + + + DO NOT USE! Use FileAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + + + + Class used to guard against unexpected argument values + or operations by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Throws an ArgumentOutOfRangeException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an ArgumentException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an InvalidOperationException if the specified condition is not met. + + The condition that must be met + The exception message to be used + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + The AssertionResult class represents the result of a single assertion. + + + + + Construct an AssertionResult + + + + The pass/fail status of the assertion + + + The message produced by the assertion, or null + + + The stacktrace associated with the assertion, or null + + + + ToString Override + + + + + Override GetHashCode + + + + + Override Equals + + + + + + AssertionStatus enumeration represents the possible outcomes of an assertion. + The order of definition is significant, higher level values override lower + ones in determining the overall result of a test. + + + + + An assumption failed + + + + + The assertion succeeded + + + + + A warning message was issued + + + + + The assertion failed + + + + + An unexpected exception was thrown + + + + + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. + + + + + Apply changes to the execution context + + The execution context + + + + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + CombiningStrategy is the abstract base for classes that + know how to combine values provided for individual test + parameters to create a set of test cases. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. + + + Attributes or other objects should implement one of the + derived interfaces, rather than this one, since they + indicate in which part of the command chain the wrapper + should be applied. + + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. + + + + + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. + + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + The IFixtureBuilder interface is exposed by a class that knows how to + build a TestFixture from one or more Types. In general, it is exposed + by an attribute, but may be implemented in a helper class used by the + attribute in some cases. + + + + + Build one or more TestFixtures from type provided. At least one + non-null TestSuite must always be returned, since the method is + generally called because the user has marked the target class as + a fixture. If something prevents the fixture from being used, it + will be returned nonetheless, labelled as non-runnable. + + The type info of the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + IImplyFixture is an empty marker interface used by attributes like + TestAttribute that cause the class where they are used to be treated + as a TestFixture even without a TestFixtureAttribute. + + Marker interfaces are not usually considered a good practice, but + we use it here to avoid cluttering the attribute hierarchy with + classes that don't contain any extra implementation. + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The IDataPointProvider interface is used by extensions + that provide data for a single test parameter. + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + The IParameterDataSource interface is implemented by types + that can provide data for a test method parameter. + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + An enumeration containing individual data items + + + + The IParameterInfo interface is an abstraction of a .NET parameter. + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter + + + + + Gets the underlying .NET ParameterInfo + + + + + Gets the Type of the parameter + + + + + A PropertyBag represents a collection of name/value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + The entries in a PropertyBag are of two kinds: those that + take a single value and those that take multiple _values. + However, the PropertyBag has no knowledge of which entries + fall into each category and the distinction is entirely + up to the code using the PropertyBag. + + When working with multi-valued properties, client code + should use the Add method to add name/value pairs and + indexing to retrieve a list of all _values for a given + key. For example: + + bag.Add("Tag", "one"); + bag.Add("Tag", "two"); + Assert.That(bag["Tag"], + Is.EqualTo(new string[] { "one", "two" })); + + When working with single-valued properties, client code + should use the Set method to set the value and Get to + retrieve the value. The GetSetting methods may also be + used to retrieve the value in a type-safe manner while + also providing default. For example: + + bag.Set("Priority", "low"); + bag.Set("Priority", "high"); // replaces value + Assert.That(bag.Get("Priority"), + Is.EqualTo("high")); + Assert.That(bag.GetSetting("Priority", "low"), + Is.EqualTo("high")); + + + + + Adds a key/value pair to the property bag + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + True if their are _values present, otherwise false + + + + Gets or sets the list of _values for a particular key + + The key for which the _values are to be retrieved or set + + + + Gets a collection containing all the keys in the property set + + + + + The IReflectionInfo interface is implemented by NUnit wrapper objects that perform reflection. + + + + + Returns an array of custom attributes of the specified type applied to this object + + + + + Returns a value indicating whether an attribute of the specified type is defined on this object. + + + + + The ISimpleTestBuilder interface is exposed by a class that knows how to + build a single TestMethod from a suitable MethodInfo Types. In general, + it is exposed by an attribute, but may be implemented in a helper class + used by the attribute in some cases. + + + + + Build a TestMethod from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. + + + + + Examine the type and determine if it is suitable for + this builder to use in building a TestSuite. + + Note that returning false will cause the type to be ignored + in loading the tests. If it is desired to load the suite + but label it as non-runnable, ignored, etc., then this + method must return true. + + The type of the fixture to be used + True if the type can be used to build a TestSuite + + + + Build a TestSuite from type provided. + + The type of the fixture to be used + A TestSuite + + + + Common interface supported by all representations + of a test. Only includes informational fields. + The Run method is specifically excluded to allow + for data-only representations of a test. + + + + + Gets the id of the test + + + + + Gets the name of the test + + + + + Gets the type of the test + + + + + Gets the fully qualified name of the test + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the Type of the test fixture, if applicable, or + null if no fixture type is associated with this test. + + + + + Gets an IMethod for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the RunState of the test, indicating whether it can be run. + + + + + Count of the test cases ( 1 if this is a test case ) + + + + + Gets the properties of the test + + + + + Gets the parent test, if any. + + The parent test or null if none exists. + + + + Returns true if this is a test suite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets a fixture object for running this test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + The ITestBuilder interface is exposed by a class that knows how to + build one or more TestMethods from a MethodInfo. In general, it is exposed + by an attribute, which has additional information available to provide + the necessary test parameters to distinguish the test cases built. + + + + + Build one or more TestMethods from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. + + + This interface is not the same as the ITestCaseBuilder interface in NUnit 2.x. + We have reused the name because the two products don't interoperate at all. + + + + + Examine the method and determine if it is suitable for + this builder to use in building a TestCase to be + included in the suite being populated. + + Note that returning false will cause the method to be ignored + in loading the tests. If it is desired to load the method + but label it as non-runnable, ignored, etc., then this + method must return true. + + The test method to examine + The suite being populated + True is the builder can use this method + + + + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. + + The method to be used as a test case + The test suite being populated, or null + A TestCase or null + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + + + + Gets the expected result of the test case + + + + + Returns true if an expected result has been set + + + + + The ITestData interface is implemented by a class that + represents a single instance of a parameterized test. + + + + + Gets the name to be used for the test + + + + + Gets the RunState for this test case. + + + + + Gets the argument list to be provided to the test + + + + + Gets the property dictionary for the test case + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Determine if a particular test passes the filter criteria. Pass + may examine the parents and/or descendants of a test, depending + on the semantics of the particular filter + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + The ITestCaseData interface is implemented by a class + that is able to return the data required to create an + instance of a parameterized test fixture. + + + + + Get the TypeArgs if separately set + + + + + The ITestListener interface is used internally to receive + notifications of significant events while a test is being + run. The events are propagated to clients by means of an + AsyncCallback. NUnit extensions may also monitor these events. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + The ITestResult interface represents the result of a test. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. Not available in + the Compact Framework 1.0. + + + + + Gets the number of asserts executed + when running the test and all its children. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Accessing HasChildren should not force creation of the + Children collection in classes implementing this interface. + + + + + Gets the collection of child results. + + + + + Gets the Test to which this result applies. + + + + + Gets any text output written to this result. + + + + + Gets a list of AssertionResults associated with the test + + + + + Gets the collection of files attached to the test + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + Returns true if the Type wrapped is equal to the argument + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the Namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type is a static class. + + + + + Get the display name for this typeInfo. + + + + + Get the display name for an object of this type, constructed with specific arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a value indicating whether this type has a method with a specified public attribute + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + An object implementing IXmlNodeBuilder is able to build + an XML representation of itself and any children. + + + + + Returns a TNode representing the current object. + + If true, children are included where applicable + A TNode representing the result + + + + Returns a TNode representing the current object after + adding it as a child of the supplied parent node. + + The parent node. + If true, children are included, where applicable + + + + + The ResultState class represents the outcome of running a test. + It contains two pieces of information. The Status of the test + is an enum indicating whether the test passed, failed, was + skipped or was inconclusive. The Label provides a more + detailed breakdown for use by client runners. + + + + + Initializes a new instance of the class. + + The TestStatus. + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + + + + Initializes a new instance of the class. + + The TestStatus. + The stage at which the result was produced + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + The stage at which the result was produced + + + + The result is inconclusive + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test was skipped because it is explicit + + + + + The test succeeded + + + + + The test issued a warning + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The test was not runnable. + + + + + A suite failed because one or more child tests failed or had errors + + + + + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + Gets the TestStatus for the test. + + The status. + + + + Gets the label under which this test result is + categorized, if any. + + + + + Gets the stage of test execution in which + the failure or other result took place. + + + + + Get a new ResultState, which is the same as the current + one but with the FailureSite set to the specified value. + + The FailureSite to use + A new ResultState + + + + Test whether this ResultState has the same Status and Label + as another one. In other words, the whether two are equal + ignoring the Site. + + + + + + + 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. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The FailureSite enum indicates the stage of a test + in which an error or failure occurred. + + + + + Failure in the test itself + + + + + Failure in the SetUp method + + + + + Failure in the TearDown method + + + + + Failure of a parent test + + + + + Failure of a child test + + + + + The RunState enum indicates whether a test can be executed. + + + + + The test is not runnable. + + + + + The test is runnable. + + + + + The test can only be run explicitly + + + + + The test has been skipped. This value may + appear on a Test when certain attributes + are used to skip the test. + + + + + The test has been ignored. May appear on + a Test, when the IgnoreAttribute is used. + + + + + The TestAttachment class represents a file attached to a TestResult, + with an optional description. + + + + + Absolute file path to attachment file + + + + + User specifed description of attachment. May be null. + + + + + Creates a TestAttachment class to represent a file attached to a test result. + + Absolute file path to attachment file + User specifed description of attachment. May be null. + + + + The TestOutput class holds a unit of output from + a test to a specific output stream + + + + + Construct with text, output destination type and + the name of the test that produced the output. + + Text to be output + Name of the stream or channel to which the text should be written + FullName of test that produced the output + + + + Return string representation of the object for debugging + + + + + + Get the text + + + + + Get the output type + + + + + Get the name of the test that created the output + + + + + Convert the TestOutput object to an XML string + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + There was a warning + + + + + The test failed + + + + + TNode represents a single node in the XML representation + of a Test or TestResult. It replaces System.Xml.XmlNode and + System.Xml.Linq.XElement, providing a minimal set of methods + for operating on the XML in a platform-independent manner. + + + + + Constructs a new instance of TNode + + The name of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + Flag indicating whether to use CDATA when writing the text + + + + Gets the name of the node + + + + + Gets the value of the node + + + + + Gets a flag indicating whether the value should be output using CDATA. + + + + + Gets the dictionary of attributes + + + + + Gets a list of child nodes + + + + + Gets the first ChildNode + + + + + Gets the XML representation of this node. + + + + + Create a TNode from it's XML text representation + + The XML text to be parsed + A TNode + + + + Adds a new element as a child of the current node and returns it. + + The element name. + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + + The element name + The text content of the new element + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + The value will be output using a CDATA section. + + The element name + The text content of the new element + The newly created child element + + + + Adds an attribute with a specified name and value to the XmlNode. + + The name of the attribute. + The value of the attribute. + + + + Finds a single descendant of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + + + Finds all descendants of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + Writes the XML representation of the node to an XmlWriter + + + + + + Class used to represent a list of XmlResults + + + + + Class used to represent the attributes of a node + + + + + Gets or sets the value associated with the specified key. + Overridden to return null if attribute is not found. + + The key. + Value of the attribute or null + + + + AssemblyHelper provides static methods for working + with assemblies. + + + + + Gets the path from which an assembly was loaded. + For builds where this is not possible, returns + the name of the assembly. + + The assembly. + The path. + + + + Gets the path to the directory from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the AssemblyName of an assembly. + + The assembly + An AssemblyName + + + + Loads an assembly given a string, which is the AssemblyName + + + + + + + Gets the assembly path from code base. + + Public for testing purposes + The code base. + + + + + Waits for pending asynchronous operations to complete, if appropriate, + and returns a proper result of the invocation by unwrapping task results + + The raw result of the method invocation + The unwrapped result, if necessary + + + + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + Built-in SuiteBuilder for all types of test classes. + + + + + Checks to see if the provided Type is a fixture. + To be considered a fixture, it must be a non-abstract + class with one or more attributes implementing the + IFixtureBuilder interface or one or more methods + marked as tests. + + The fixture type to check + True if the fixture can be built, false if not + + + + Build a TestSuite from TypeInfo provided. + + The fixture type to build + A TestSuite built from that type + + + + We look for attributes implementing IFixtureBuilder at one level + of inheritance at a time. Attributes on base classes are not used + unless there are no fixture builder attributes at all on the derived + class. This is by design. + + The type being examined for attributes + A list of the attributes found. + + + + Class to build ether a parameterized or a normal NUnitTestMethod. + There are four cases that the builder must deal with: + 1. The method needs no params and none are provided + 2. The method needs params and they are provided + 3. The method needs no params but they are provided in error + 4. The method needs params but they are not provided + This could have been done using two different builders, but it + turned out to be simpler to have just one. The BuildFrom method + takes a different branch depending on whether any parameters are + provided, but all four cases are dealt with in lower-level methods + + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + A Test representing one or more method invocations + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + The test suite being built, to which the new test would be added + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations + + + + Builds a ParameterizedMethodSuite containing individual test cases. + + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases + + + + Build a simple, non-parameterized TestMethod for this method. + + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. + + + + Class that can build a tree of automatic namespace + suites from a group of fixtures. + + + + + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. + + + + + The root of the test suite being created by this builder. + + + + + Initializes a new instance of the class. + + The root suite. + + + + Gets the root entry in the tree created by the NamespaceTreeBuilder. + + The root suite. + + + + Adds the specified fixtures to the tree. + + The fixtures to be added. + + + + Adds the specified fixture to the tree. + + The fixture to be added. + + + + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. + + + + + Constructs an + + + + + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. + + The MethodInfo from which to construct the TestMethod + The suite or fixture to which the new test will be added + The ParameterSet to be used, or null + + + + + Helper method that checks the signature of a TestMethod and + any supplied parameters to determine if the test is valid. + + Currently, NUnitTestMethods are required to be public, + non-abstract methods, either static or instance, + returning void. They may take arguments but the _values must + be provided or the TestMethod is not considered runnable. + + Methods not meeting these criteria will be marked as + non-runnable and the method will return false in that case. + + The TestMethod to be checked. If it + is found to be non-runnable, it will be modified. + Parameters to be used for this test, or null + True if the method signature is valid, false if not + + The return value is no longer used internally, but is retained + for testing purposes. + + + + + NUnitTestFixtureBuilder is able to build a fixture given + a class marked with a TestFixtureAttribute or an unmarked + class containing test methods. In the first case, it is + called by the attribute and in the second directly by + NUnitSuiteBuilder. + + + + + Build a TestFixture from type provided. A non-null TestSuite + must always be returned, since the method is generally called + because the user has marked the target class as a fixture. + If something prevents the fixture from being used, it should + be returned nonetheless, labelled as non-runnable. + + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. + + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + + + + + Method to add test cases to the newly constructed fixture. + + The fixture to which cases should be added + + + + Method to create a test case from a MethodInfo and add + it to the fixture being built. It first checks to see if + any global TestCaseBuilder addin wants to build the + test case. If not, it uses the internal builder + collection maintained by this fixture builder. + + The default implementation has no test case builders. + Derived classes should add builders to the collection + in their constructor. + + The method for which a test is to be created + The test suite being built. + A newly constructed Test + + + + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. + + + + The number of test cases that cover all possible pairs of test function + parameters values is significantly less than the number of test cases + that cover all possible combination of test function parameters values. + And because different studies show that most of software failures are + caused by combination of no more than two parameters, pairwise testing + can be an effective ways to test the system when it's impossible to test + all combinations of parameters. + + + The PairwiseStrategy code is based on "jenny" tool by Bob Jenkins: + http://burtleburtle.net/bob/math/jenny.html + + + + + + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea + + + + + Initializes a new instance of the FleaRand class. + + The seed. + + + + FeatureInfo represents coverage of a single value of test function + parameter, represented as a pair of indices, Dimension and Feature. In + terms of unit testing, Dimension is the index of the test parameter and + Feature is the index of the supplied value in that parameter's list of + sources. + + + + + Initializes a new instance of FeatureInfo class. + + Index of a dimension. + Index of a feature. + + + + A FeatureTuple represents a combination of features, one per test + parameter, which should be covered by a test case. In the + PairwiseStrategy, we are only trying to cover pairs of features, so the + tuples actually may contain only single feature or pair of features, but + the algorithm itself works with triplets, quadruples and so on. + + + + + Initializes a new instance of FeatureTuple class for a single feature. + + Single feature. + + + + Initializes a new instance of FeatureTuple class for a pair of features. + + First feature. + Second feature. + + + + TestCase represents a single test case covering a list of features. + + + + + Initializes a new instance of TestCaseInfo class. + + A number of features in the test case. + + + + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. + + + + The algorithm starts with creating a set of all feature tuples which we + will try to cover (see method). This set + includes every single feature and all possible pairs of features. We + store feature tuples in the 3-D collection (where axes are "dimension", + "feature", and "all combinations which includes this feature"), and for + every two feature (e.g. "A" and "B") we generate both ("A", "B") and + ("B", "A") pairs. This data structure extremely reduces the amount of + time needed to calculate coverage for a single test case (this + calculation is the most time-consuming part of the algorithm). + + + Then the algorithm picks one tuple from the uncovered tuple, creates a + test case that covers this tuple, and then removes this tuple and all + other tuples covered by this test case from the collection of uncovered + tuples. + + + Picking a tuple to cover + + + There are no any special rules defined for picking tuples to cover. We + just pick them one by one, in the order they were generated. + + + Test generation + + + Test generation starts from creating a completely random test case which + covers, nevertheless, previously selected tuple. Then the algorithm + tries to maximize number of tuples which this test covers. + + + Test generation and maximization process repeats seven times for every + selected tuple and then the algorithm picks the best test case ("seven" + is a magic number which provides good results in acceptable time). + + Maximizing test coverage + + To maximize tests coverage, the algorithm walks thru the list of mutable + dimensions (mutable dimension is a dimension that are not included in + the previously selected tuple). Then for every dimension, the algorithm + walks thru the list of features and checks if this feature provides + better coverage than randomly selected feature, and if yes keeps this + feature. + + + This process repeats while it shows progress. If the last iteration + doesn't improve coverage, the process ends. + + + In addition, for better results, before start every iteration, the + algorithm "scrambles" dimensions - so for every iteration dimension + probes in a different order. + + + + + + Creates a set of test cases for specified dimensions. + + + An array which contains information about dimensions. Each element of + this array represents a number of features in the specific dimension. + + + A set of test cases. + + + + + Gets the test cases generated by this strategy instance. + + A set of test cases. + + + + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. + + + + + Construct with a collection of individual providers + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + TestActionAfterCommand handles the AfterTest method of a single + TestActionItem, provided the items BeforeTest has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + AfterCommand is a DelegatingTestCommand that performs some + specific action after the inner command is run. + + + + + Construct an AfterCommand + + + + + Execute the command + + + + + Set this to perform action after the inner command. + + + + + ContextSettingsCommand applies specified changes to the + TestExecutionContext prior to running a test. No special + action is needed after the test runs, since the prior + context will be restored automatically. + + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Perform the before test action + + + + + Perform the after test action + + + + + TestActionBeforeCommand handles the BeforeTest method of a single + TestActionItem, relying on the item to remember it has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + BeforeTestCommand is a DelegatingTestCommand that performs some + specific action before the inner command is run. + + + + + Construct a BeforeCommand + + + + + Execute the command + + + + + Action to perform before the inner command. + + + + + ConstructFixtureCommand constructs the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + + + + DelegatingTestCommand wraps an inner TestCommand. + Derived classes may do what they like before or + after running the inner command. + + + + TODO: Documentation needed for field + + + + TODO: Documentation needed for constructor + + + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + + + + EmptyTestCommand is a TestCommand that does nothing. It simply + returns the current result from the context when executed. We + use it to avoid testing for null when executing a chain of + DelegatingTestCommands. + + + + + Construct a NullCommand for a test + + + + + Execute the command + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The inner command. + The max time allowed in milliseconds + + + + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + A SetUpTearDownList for use by the command + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + A SetUpTearDownList for use by the command + + + + SetUpTearDownCommand runs SetUp methods for a suite, + runs the test and then runs TearDown methods. + + + + + Initializes a new instance of the class. + + The inner command. + List of setup/teardown items + + + + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. + + + + + Construct a SetUpTearDownNode + + A list of setup methods for this level + A list teardown methods for this level + + + + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. + + + + + Run SetUp on this level. + + The execution context to use for running. + + + + Run TearDown for this level. + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The test being skipped. + + + + Overridden to simply set the CurrentResult to the + appropriate Skipped state. + + The execution context for the test + A TestResult + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + The TestAction with which to wrap the inner command. + + + + TestActionItem wraps a single execution of an ITestAction. + It's primary purpose is to track whether the BeforeTest + method has been called and suppress calling the + AfterTest method if it has not. This is necessary when + ITestActions are used before and after a CompositeWorkItem, + since the OneTimeSetUpCommand and OneTimeTearDownCommand + are separate command chains. By sharing a TestActionItem + between the setup and teardown chains, the two calls can + be coordinated. + + + + + Construct a TestActionItem + + The ITestAction to be included + + + + Get flag indicating if the BeforeTest entry was already called. + + + + + Run the BeforeTest method of the action and remember that it has been run. + + The test to which the action applies + + + + Run the AfterTest action, but only if the BeforeTest + action was actually run. + + The test to which the action applies + + + + TestCommand is the abstract base class for all test commands + in the framework. A TestCommand represents a single stage in + the execution of a test, e.g.: SetUp/TearDown, checking for + Timeout, verifying the returned result from a method, etc. + + TestCommands may decorate other test commands so that the + execution of a lower-level command is nested within that + of a higher level command. All nested commands are executed + synchronously, as a single unit. Scheduling test execution + on separate threads is handled at a higher level, using the + task dispatcher. + + + + + Construct a TestCommand for a test. + + The test to be executed + + + + Gets the test associated with this command. + + + + + Runs the test in a specified context, returning a TestResult. + + The TestExecutionContext to be used for running the test. + A TestResult + + + + TestMethodCommand is the lowest level concrete command + used to run actual test cases. + + + + + Initializes a new instance of the class. + + The test. + + + + Runs the test, saving a TestResult in the execution context, as + well as returning it. If the test has an expected result, it + is asserts on that value. Since failed tests and errors throw + an exception, this command must be wrapped in an outer command, + will handle that exception and records the failure. This role + is usually played by the SetUpTearDown command. + + The execution context + + + + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. + + + + + Constructs a TheoryResultCommand + + The command to be wrapped by this one + + + + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. + + + + + Default constructor uses the current culture. + + + + + Construct a CultureDetector for a particular culture for testing. + + The culture to be used + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + Tests to determine if the current culture is supported + based on a culture attribute. + + The attribute to examine + + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + ExceptionHelper provides static methods for working with exceptions + + + + + Rethrows an exception, preserving its stack trace + + The exception to rethrow + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. Excludes exception names, creating more readable message + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined stack trace. + + + + Gets the stack trace of the exception. + + The exception. + A string representation of the stack trace. + + + + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. + + + + + List of Child WorkItems + + + + + Construct a CompositeWorkItem for executing a test suite + using a filter to select child tests. + + The TestSuite to be executed + A filter used to select child tests + + + + Method that actually performs the work. Overridden + in CompositeWorkItem to do one-time setup, run all child + items and then dispatch the one-time teardown work item. + + + + + + + + + + Cancel (abort or stop) a CompositeWorkItem and all of its children + + true if the CompositeWorkItem and all of its children should be aborted, false if it should allow all currently running tests to complete + + + + OneTimeTearDownWorkItem represents the cleanup + and one-time teardown phase of a CompositeWorkItem + + + + + Construct a OneTimeTearDownWOrkItem wrapping a CompositeWorkItem + + The CompositeWorkItem being wrapped + + + + The WorkItem name, overridden to indicate this is the teardown. + + + + + + + + + + PerformWork is not used in CompositeWorkItem + + + + + EventListenerTextWriter sends text output to the currently active + ITestEventListener in the form of a TestOutput object. If no event + listener is active in the context, or if there is no context, + the output is forwarded to the supplied default writer. + + + + + Construct an EventListenerTextWriter + + The name of the stream to use for events + The default writer to use if no listener is available + + + + Get the Encoding for this TextWriter + + + + + Write formatted string + + + + + Write formatted string + + + + + Write formatted string + + + + + Write an object + + + + + Write a string + + + + + Write a decimal + + + + + Write a double + + + + + Write formatted string + + + + + Write a ulong + + + + + Write a long + + + + + Write a uint + + + + + Write an int + + + + + Write a char + + + + + Write a boolean + + + + + Write chars + + + + + Write chars + + + + + Write a float + + + + + Write a string with newline + + + + + Write an object with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write a decimal with newline + + + + + Write a formatted string with newline + + + + + Write a double with newline + + + + + Write a uint with newline + + + + + Write a ulong with newline + + + + + Write a long with newline + + + + + Write an int with newline + + + + + Write a bool with newline + + + + + Write chars with newline + + + + + Write chars with newline + + + + + Write a char with newline + + + + + Write a float with newline + + + + + Write newline + + + + + An IWorkItemDispatcher handles execution of work items. + + + + + Start execution, performing any initialization. Sets + the top level work item and dispatches it. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + true if the IWorkItemDispatcher should abort all currently running WorkItems, false if it should allow all currently running WorkItems to complete + + + + A SimpleWorkItem represents a single test case and is + marked as completed immediately upon execution. This + class is also used for skipped or ignored test suites. + + + + + Construct a simple work item for a test. + + The test to be executed + The filter used to select this test + + + + Method that performs actually performs the work. + + + + + Creates a test command for use in running this test. + + A TestCommand + + + + SimpleWorkItemDispatcher handles execution of WorkItems by + directly executing them. It is provided so that a dispatcher + is always available in the context, thereby simplifying the + code needed to run child tests. + + + + + Start execution, creating the execution thread, + setting the top level work and dispatching it. + + + + + Dispatch a single work item for execution by + executing it directly. + The item to dispatch + + + + + Cancel (abort or stop) the ongoing run. + If no run is in process, the call has no effect. + + true if the run should be aborted, false if it should allow its currently running test to complete + + + + The TextCapture class intercepts console output and writes it + to the current execution context, if one is present on the thread. + If no execution context is found, the output is written to a + default destination, normally the original destination of the + intercepted output. + + + + + Construct a TextCapture object + + The default destination for non-intercepted output + + + + Gets the Encoding in use by this TextWriter + + + + + Writes a single character + + The char to write + + + + Writes a string + + The string to write + + + + Writes a string followed by a line terminator + + The string to write + + + + A WorkItem may be an individual test case, a fixture or + a higher level grouping of tests. All WorkItems inherit + from the abstract WorkItem class, which uses the template + pattern to allow derived classes to perform work in + whatever way is needed. + + A WorkItem is created with a particular TestExecutionContext + and is responsible for re-establishing that context in the + current thread before it begins or resumes execution. + + + + + Construct a WorkItem for a particular test. + + The test that the WorkItem will run + Filter used to include or exclude child items + + + + Construct a work Item that wraps another work Item. + Wrapper items are used to represent independently + dispatched tasks, which form part of the execution + of a single test, such as OneTimeTearDown. + + The WorkItem being wrapped + + + + Initialize the TestExecutionContext. This must be done + before executing the WorkItem. + + + Originally, the context was provided in the constructor + but delaying initialization of the context until the item + is about to be dispatched allows changes in the parent + context during OneTimeSetUp to be reflected in the child. + + The TestExecutionContext to use + + + + Event triggered when the item is complete + + + + + Gets the current state of the WorkItem + + + + + The test being executed by the work item + + + + + The name of the work item - defaults to the Test name. + + + + + Filter used to include or exclude child tests + + + + + The execution context + + + + + The test result + + + + + Gets the ParallelScope associated with the test, if any, + otherwise returning ParallelScope.Default; + + + + + Execute the current work item, including any + child work items. + + + + + Marks the WorkItem as NotRunnable. + + Reason for test being NotRunnable. + + + + Cancel (abort or stop) a WorkItem + + true if the WorkItem should be aborted, false if it should run to completion + + + + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. + + + + + Method called by the derived class when all work is complete + + + + + Builds the set up tear down list. + + Unsorted array of setup MethodInfos. + Unsorted array of teardown MethodInfos. + A list of SetUpTearDownItems + + + + Changes the result of the test, logging the old and new states + + The new ResultState + The new message + + + + WorkItemBuilder class knows how to build a tree of work items from a tree of tests + + + + + Creates a work item. + + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + True if child work items should be created and added. + + + + + Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. + + + A signed integer that indicates the relative values of and , as shown in the following table.Value Meaning Less than zero is less than .Zero equals .Greater than zero is greater than . + + The first object to compare.The second object to compare. + + + + The current state of a work item + + + + + Ready to run or continue + + + + + Work Item is executing + + + + + Complete + + + + + 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. + + + + + + + Gets or sets the maximum line length for this writer + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a given + 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 result of the constraint that failed + + + + Gets the unique type name between expected and actual. + + The expected value + The actual value causing the failure + Output of the unique type name for expected + Output of the unique type name for actual + + + + 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 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 ConstraintResult for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + Combines multiple filters so that a test must pass all + of them in order to pass this filter. + + + + + Constructs an empty AndFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters pass, otherwise false + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters match, otherwise false + + + + Checks whether the AndFilter is explicit matched by a test. + + The test to be matched + True if all the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + CategoryFilter is able to select or exclude tests + based on their categories. + + + + + + Construct a CategoryFilter using a single category name + + A category name + + + + Check whether the filter matches a test + + The test to be matched + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + A base class for multi-part filters + + + + + Constructs an empty CompositeFilter + + + + + Constructs a CompositeFilter from an array of filters + + + + + + Adds a filter to the list of filters + + The filter to be added + + + + Return a list of the composing filters. + + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is explicit matched by a test. + + The test to be matched + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + IdFilter selects tests based on their id + + + + + Construct an IdFilter for a single value + + The id the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a MethodNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a NamespaceFilter for a single namespace + + The namespace the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + NotFilter negates the operation of another filter + + + + + Construct a not filter on another filter + + The filter to be negated + + + + Gets the base filter + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Check whether the filter matches a test + + The test to be matched + True if it matches, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Combines multiple filters so that a test must pass one + of them in order to pass this filter. + + + + + Constructs an empty OrFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters pass, otherwise false + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters match, otherwise false + + + + Checks whether the OrFilter is explicit matched by a test + + The test to be matched + True if any of the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + PropertyFilter is able to select or exclude tests + based on their properties. + + + + + + Construct a PropertyFilter using a property name and expected value + + A property name + The expected value of the property + + + + Check whether the filter matches a test + + The test to be matched + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + TestName filter selects tests based on their Name + + + + + Construct a TestNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. + + + + + Returns the value matched by the filter - used for testing + + + + + Indicates whether the value is a regular expression + + + + + Construct a ValueMatchFilter for a single value. + + The value to be included. + + + + Match the input provided by the derived class + + The value to be matchedT + True for a match, false otherwise. + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. + + + + + Construct a GenericMethodHelper for a method + + MethodInfo for the method to examine + + + + Return the type arguments for the method, deducing them + from the arguments actually provided. + + The arguments to the method + An array of type arguments. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Interface for logging within the engine + + + + + Logs the specified message at the error level. + + The message. + + + + Logs the specified message at the error level. + + The message. + The arguments. + + + + Logs the specified message at the warning level. + + The message. + + + + Logs the specified message at the warning level. + + The message. + The arguments. + + + + Logs the specified message at the info level. + + The message. + + + + Logs the specified message at the info level. + + The message. + The arguments. + + + + Logs the specified message at the debug level. + + The message. + + + + Logs the specified message at the debug level. + + The message. + The arguments. + + + + InternalTrace provides facilities for tracing the execution + of the NUnit framework. Tests and classes under test may make use + of Console writes, System.Diagnostics.Trace or various loggers and + NUnit itself traps and processes each of them. For that reason, a + separate internal trace is needed. + + Note: + InternalTrace uses a global lock to allow multiple threads to write + trace messages. This can easily make it a bottleneck so it must be + used sparingly. Keep the trace Level as low as possible and only + insert InternalTrace writes where they are needed. + TODO: add some buffering and a separate writer thread as an option. + TODO: figure out a way to turn on trace in specific classes only. + + + + + Gets a flag indicating whether the InternalTrace is initialized + + + + + Initialize the internal trace facility using the name of the log + to be written to and the trace level. + + The log name + The trace level + + + + Initialize the internal trace using a provided TextWriter and level + + A TextWriter + The InternalTraceLevel + + + + Get a named Logger + + + + + + Get a logger named for a particular Type. + + + + + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. + + + + + Use the default settings as specified by the user. + + + + + Do not display any trace messages + + + + + Display Error messages only + + + + + Display Warning level and higher messages + + + + + Display informational and higher messages + + + + + Display debug messages and higher - i.e. all messages + + + + + Display debug messages and higher - i.e. all messages + + + + + A trace listener that writes to a separate file per domain + and process using it. + + + + + Construct an InternalTraceWriter that writes to a file. + + Path to the file to use + + + + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + + + + + + Returns the character encoding in which the output is written. + + The character encoding in which the output is written. + + + + Writes a character to the text string or stream. + + The character to write to the text stream. + + + + Writes a string to the text string or stream. + + The string to write. + + + + Writes a string followed by a line terminator to the text string or stream. + + The string to write. If is null, only the line terminator is written. + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. + + + + + Provides internal logging to the NUnit framework + + + + + Initializes a new instance of the class. + + The name. + The log level. + The writer where logs are sent. + + + + Logs the message at error level. + + The message. + + + + Logs the message at error level. + + The message. + The message arguments. + + + + Logs the message at warm level. + + The message. + + + + Logs the message at warning level. + + The message. + The message arguments. + + + + Logs the message at info level. + + The message. + + + + Logs the message at info level. + + The message. + The message arguments. + + + + Logs the message at debug level. + + The message. + + + + Logs the message at debug level. + + The message. + The message arguments. + + + + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. + + + + + Construct a MethodWrapper for a Type and a MethodInfo. + + + + + Construct a MethodInfo for a given Type and method name. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the method. + + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. + + + + + Construct a ParameterWrapper for a given method and parameter + + + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter. + + + + + Gets the underlying ParameterInfo + + + + + Gets the Type of the parameter + + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the parameter. + + + + + A PropertyBag represents a collection of name value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + + + + Adds a key/value pair to the property set + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + + True if their are _values present, otherwise false + + + + + Gets a collection containing all the keys in the property set + + + + + + Gets or sets the list of _values for a particular key + + + + + Returns an XmlNode representing the current PropertyBag. + + Not used + An XmlNode representing the PropertyBag + + + + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + + The parent node. + Not used + + + + + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. + + + + + The FriendlyName of the AppDomain in which the assembly is running + + + + + The selected strategy for joining parameter data into test cases + + + + + The process ID of the executing assembly + + + + + The stack trace from any data provider that threw + an exception. + + + + + The reason a test was not run + + + + + The author of the tests + + + + + The ApartmentState required for running the test + + + + + The categories applying to a test + + + + + The Description of a test + + + + + The number of threads to be used in running tests + + + + + The maximum time in ms, above which the test is considered to have failed + + + + + The ParallelScope associated with a test + + + + + The number of times the test should be repeated + + + + + Indicates that the test should be run on a separate thread + + + + + The culture to be set for a test + + + + + The UI culture to be set for a test + + + + + The type that is under test + + + + + The timeout value for the test + + + + + The test will be ignored until the given date + + + + + The optional Order the test will run in + + + + + Randomizer returns a set of random _values in a repeatable + way, to allow re-running of tests if necessary. It extends + the .NET Random class, providing random values for a much + wider range of types. + + The class is used internally by the framework to generate + test case data and is also exposed for use by users through + the TestContext.Random property. + + + For consistency with the underlying Random Type, methods + returning a single value use the prefix "Next..." Those + without an argument return a non-negative value up to + the full positive range of the Type. Overloads are provided + for specifying a maximum or a range. Methods that return + arrays or strings use the prefix "Get..." to avoid + confusion with the single-value methods. + + + + + Initial seed used to create randomizers for this run + + + + + 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. + + + + + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. + + + + + + Default constructor + + + + + Construct based on seed value + + + + + + Returns a random unsigned int. + + + + + Returns a random unsigned int less than the specified maximum. + + + + + Returns a random unsigned int within a specified range. + + + + + Returns a non-negative random short. + + + + + Returns a non-negative random short less than the specified maximum. + + + + + Returns a non-negative random short within a specified range. + + + + + Returns a random unsigned short. + + + + + Returns a random unsigned short less than the specified maximum. + + + + + Returns a random unsigned short within a specified range. + + + + + Returns a random long. + + + + + Returns a random long less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random ulong. + + + + + Returns a random ulong less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random Byte + + + + + Returns a random Byte less than the specified maximum. + + + + + Returns a random Byte within a specified range + + + + + Returns a random SByte + + + + + Returns a random sbyte less than the specified maximum. + + + + + Returns a random sbyte within a specified range + + + + + Returns a random bool + + + + + Returns a random bool based on the probability a true result + + + + + Returns a random double between 0.0 and the specified maximum. + + + + + Returns a random double within a specified range. + + + + + Returns a random float. + + + + + Returns a random float between 0.0 and the specified maximum. + + + + + Returns a random float within a specified range. + + + + + Returns a random enum value of the specified Type as an object. + + + + + Returns a random enum value of the specified Type. + + + + + Default characters for random functions. + + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + string representing the set of characters from which to construct the resulting string + A random string of arbitrary length + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + A random string of arbitrary length + Uses DefaultStringChars as the input character set + + + + Generate a random string based on the characters from the input string. + + A random string of the default length + Uses DefaultStringChars as the input character set + + + + Returns a random decimal. + + + + + Returns a random decimal between positive zero and the specified maximum. + + + + + Returns a random decimal within a specified range, which is not + permitted to exceed decimal.MaxVal in the current implementation. + + + A limitation of this implementation is that the range from min + to max must not exceed decimal.MaxVal. + + + + + Helper methods for inspecting a type by reflection. + + Many of these methods take ICustomAttributeProvider as an + argument to avoid duplication, even though certain attributes can + only appear on specific types of members, like MethodInfo or Type. + + In the case where a type is being examined for the presence of + an attribute, interface or named member, the Reflect methods + operate with the full name of the member being sought. This + removes the necessity of the caller having a reference to the + assembly that defines the item being sought and allows the + NUnit core to inspect assemblies that reference an older + version of the NUnit framework. + + + + + Examine a fixture type and return an array of methods having a + particular attribute. The array is order with base methods first. + + The type to examine + The attribute Type to look for + Specifies whether to search the fixture type inheritance chain + The array of methods found + + + + Examine a fixture type and return true if it has a method with + a particular attribute. + + The type to examine + The attribute Type to look for + True if found, otherwise false + + + + Invoke the default constructor on a Type + + The Type to be constructed + An instance of the Type + + + + Invoke a constructor on a Type with arguments + + The Type to be constructed + Arguments to the constructor + An instance of the Type + + + + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() + + An array of objects + An array of Types + + + + Invoke a parameterless method returning void on an object. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + + + + Invoke a method, converting any TargetInvocationException to an NUnitException. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Represents the result of running a single test case. + + + + + Construct a TestCaseResult based on a TestMethod + + A TestMethod to which the result applies. + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + The TestResult class represents the result of a test. + + + + + Error message for when child tests have errors + + + + + Error message for when child tests have warnings + + + + + Error message for when child tests are ignored + + + + + The minimum duration for tests + + + + + Aggregate assertion count + + + + + Construct a test result given a Test + + The test to be used + + + + Gets the test with which this result is associated. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets or sets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Adds a test attachment to the test result + + The TestAttachment object to attach + + + + Gets the collection of files attached to the test + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets or sets the count of asserts executed + when running the test. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Gets a TextWriter, which will write output to be included in the result. + + + + + Gets any text output written to this result. + + + + + Gets a list of assertion results associated with the test. + + + + + Returns the Xml representation of the result. + + If true, descendant results are included + An XmlNode representing the result + + + + Adds the XML representation of the result as a child of the + supplied parent node.. + + The parent node. + If true, descendant results are included + + + + + Gets a count of pending failures (from Multiple Assert) + + + + + Gets the worst assertion status (highest enum) in all the assertion results + + + + + Set the result of the test + + The ResultState to use in the result + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + Stack trace giving the location of the command + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + The FailureSite to use in the result + + + + RecordTearDownException appends the message and stacktrace + from an exception arising during teardown of the test + to any previously recorded information, so that any + earlier failure information is not lost. Note that + calling Assert.Ignore, Assert.Inconclusive, etc. during + teardown is treated as an error. If the current result + represents a suite, it may show a teardown error even + though all contained tests passed. + + The Exception to be recorded + + + + Determine result after test has run to completion. + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Adds a reason element to a node and returns it. + + The target node. + The new reason element. + + + + Adds a failure element to a node and returns it. + + The target node. + The new failure element. + + + + Adds an attachments element to a node and returns it. + + The target node. + The new attachments element. + + + + Creates a failure message incorporating failures + from a Multiple Assert block for use by runners + that don't know about AssertionResults. + + Message as a string + + + + Represents the result of running a test suite + + + + + Construct a TestSuiteResult base on a TestSuite + + The TestSuite to which the result applies + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. + + The result to be added + + + + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. + + + + + Single instance of our default filter + + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + Regex pattern used to delete lines from the bottom of the stack + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + + + + Construct a stack filter instance + + + + + Filters a raw stack trace and returns the result. + + The original stack trace + A filtered stack trace + + + + Provides methods to support legacy string comparison methods. + + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if + strB is sorted first + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + True if the strings are equivalent, false if not. + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + The expected result to be returned + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + The expected result of the test, which + must match the method return type. + + + + + Gets a value indicating whether an expected result was specified. + + + + + TestCaseTimeoutException is thrown when a test running directly + on a TestWorker thread is cancelled due to timeout. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Helper class used to save and restore certain static or + singleton settings in the environment that affect tests + or which might be changed by the user tests. + + + + + Link to a prior saved context + + + + + Indicates that a stop has been requested + + + + + The event listener currently receiving notifications + + + + + The number of assertions for the current test + + + + + The current culture + + + + + The current UI culture + + + + + The current test result + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + An existing instance of TestExecutionContext. + + + + Gets and sets the current context. + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current test event listener + + + + + The current WorkItemDispatcher. Made public for + use by nunitlite.tests + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + Default tolerance value used for floating point equality + when no other tolerance is specified. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets the assert count. + + The assert count. + + + + The current nesting level of multiple assert blocks + + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + The current head of the ValueFormatter chain, copied from MsgUtils.ValueFormatter + + + + + If true, all tests must run on the same thread. No new thread may be spawned. + + + + + Record any changes in the environment made by + the test code in the execution context so it + will be passed on to lower level tests. + + + + + Set up the execution environment to match a context. + Note that we may be running on the same thread where the + context was initially created or on a different thread. + + + + + Increments the assert count by one. + + + + + Increments the assert count by a specified amount. + + + + + Adds a new ValueFormatterFactory to the chain of formatters + + The new factory + + + + An IsolatedContext is used when running code + that may effect the current result in ways that + should not impact the final result of the test. + A new TestExecutionContext is created with an + initially clear result, which is discarded on + exiting the context. + + + using (new TestExecutionContext.IsolatedContext()) + { + // Code that should not impact the result + } + + + + + Save the original current TestExecutionContext and + make a new isolated context current. + + + + + Restore the original TestExecutionContext. + + + + + Enumeration indicating whether the tests are + running normally or being cancelled. + + + + + Running normally with no stop requested + + + + + A graceful stop has been requested + + + + + A forced stop has been requested + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Unique Empty filter. + + + + + Indicates whether this is the EmptyFilter + + + + + Indicates whether this is a top-level filter, + not contained in any other filter. + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Determine whether the test itself matches the filter criteria, without + examining either parents or descendants. This is overridden by each + different type of filter to perform the necessary tests. + + The test to which the filter is applied + True if the filter matches the any parent of the test + + + + Determine whether any ancestor of the test matches the filter criteria + + The test to which the filter is applied + True if the filter matches the an ancestor of the test + + + + Determine whether any descendant of the test matches the filter criteria. + + The test to be matched + True if at least one descendant matches the filter criteria + + + + Create a TestFilter instance from an xml representation. + + + + + Create a TestFilter from it's TNode representation + + + + + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. + + + + + Adds an XML node + + True if recursive + The added XML node + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + Type arguments used to create a generic fixture instance + + + + + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test case has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Construct a new TestListener - private so it may not be used. + + + + + Get a listener that does nothing + + + + + TestNameGenerator is able to create test names according to + a coded pattern. + + + + + Default pattern used to generate names + + + + + Construct a TestNameGenerator + + + + + Construct a TestNameGenerator + + The pattern used by this generator. + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + The display name + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + Arguments to be used + The display name + + + + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a ParameterSet from an object implementing ITestData + + + + + + The RunState for this set of parameters. + + + + + The arguments to be used in running the test, + which must match the method signature. + + + + + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. + + + + + Gets the property dictionary for this test + + + + + Applies ParameterSet _values to the test itself. + + A test. + + + + The original arguments provided by the user, + used for display purposes. + + + + + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. + + + + + Initializes a new instance of the class. + + The callback handler to be used for reporting progress. + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished. Sends a result summary to the callback. + to + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Returns the parent test item for the targer test item if it exists + + + parent test item + + + + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. + + The string to be used + A new string with the _values replaced + + + + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. + + + + + Initializes a new instance of the class. + + The ITypeInfo for the type that represents the suite. + + + + Gets a string representing the type of test + + + + + + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. + + + + + Construct from a MethodInfo + + + + + + Gets a string representing the type of test + + + + + + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. + + + + + Initializes a new instance of the class. + + The type. + + + + The Test abstract class represents a test within the framework. + + + + + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. + + + + + Used to cache the declaring type for this MethodInfo + + + + + Method property backing field + + + + + Constructs a test given its name + + The name of the test + + + + Constructs a test given the path through the + test hierarchy to its parent and a name. + + The parent tests full name + The name of the test + + + + TODO: Documentation needed for constructor + + + + + + Construct a test from a MethodInfo + + + + + + Gets or sets the id of the test + + + + + + Gets or sets the name of the test + + + + + Gets or sets the fully qualified name of the test + + + + + + Gets the name of the class where this test was declared. + Returns null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + The arguments to use in creating the test or empty array if none required. + + + + + Gets the TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. + + + + + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Whether or not the test should be run + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Gets a string representing the type of test. Used as an attribute + value in the XML representation of a test and has no other + function in the framework. + + + + + Gets a count of test cases represented by + or contained under this test. + + + + + Gets the properties for this test + + + + + Returns true if this is a TestSuite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the parent as a Test object. + Used by the core to set the parent. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets or sets a fixture object for running this test. + + + + + Static prefix used for ids in this AppDomain. + Set by FrameworkController. + + + + + Gets or Sets the Int value representing the seed for the RandomGenerator + + + + + + The SetUp methods. + + + + + The teardown methods + + + + + Creates a TestResult for this test. + + A TestResult suitable for this type of test. + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object deriving from MemberInfo + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object deriving from MemberInfo + + + + Mark the test as Invalid (not runnable) specifying a reason + + The reason the test is not runnable + + + + Get custom attributes applied to a test + + + + + Add standard attributes and members to a test node. + + + + + + + Returns the Xml representation of the test + + If true, include child tests recursively + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Compares this test to another test for sorting purposes + + The other test + Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test + + + + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. + + + + + Initializes a new instance of the class + specifying the Assembly and the path from which it was loaded. + + The assembly this test represents. + The path used to load the assembly. + + + + Initializes a new instance of the class + for a path which could not be loaded. + + The path used to load the assembly. + + + + Copy-constructor style to create a filtered copy of the test assemblies + test cases + + + + + + + Gets the Assembly represented by this instance. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Get custom attributes specified on the assembly + + + + + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. + + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used + + + + The TestMethod class represents a Test implemented as a method. + + + + + The ParameterSet used to create this test method + + + + + Initializes a new instance of the class. + + The method to be used as a test. + + + + Initializes a new instance of the class. + + The method to be used as a test. + The suite or fixture to which the new test will be added + + + + The arguments to use in executing the test method, or empty array if none are provided. + + + + + Overridden to return a TestCaseResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Returns a TNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Gets this test's child tests + + A list of child tests + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns the name of the method + + + + + TestSuite represents a composite test, which contains other tests. + + + + + Our collection of child tests + + + + + Initializes a new instance of the class. + + The name of the suite. + + + + Initializes a new instance of the class. + + Name of the parent suite. + The name of the suite. + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Copy constructor style to create a filtered copy of the given test suite + + Test Suite to copy + Filter to be applied + + + + Sorts tests under this suite. + + + + + Adds a test to the suite. + + The test. + + + + Gets this test's child tests + + The list of child tests + + + + Gets a count of test cases represented by + or contained under this test. + + + + + + The arguments to use in creating the fixture, or empty array if none are provided. + + + + + Set to true to suppress sorting this suite's contents + + + + + OneTimeSetUp methods for this suite + + + + + OneTimeTearDown methods for this suite + + + + + Overridden to return a TestSuiteResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. + + A list of methodinfos to check + + + + TypeHelper provides static methods that operate on Types. + + + + + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. + + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The display name for the Type + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The arglist provided. + The display name for the Type + + + + Returns the best fit for a common type to be used in + matching actual arguments to a methods Type parameters. + + The first type. + The second type. + Either type1 or type2, depending on which is more general. + + + + Determines whether the specified type is numeric. + + The type to be examined. + + true if the specified type is numeric; otherwise, false. + + + + + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. + + An array of args to be converted + A ParameterInfo[] whose types will be used as targets + + + + Determines whether this instance can deduce type args for a generic type from the supplied arguments. + + The type to be examined. + The arglist. + The type args to be used. + + true if this the provided args give sufficient information to determine the type args to be used; otherwise, false. + + + + + Return the interfaces implemented by a Type. + + The Type to be examined. + An array of Types for the interfaces. + + + + The TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. + + + + + Construct a TypeWrapper for a specified Type. + + + + + Gets the underlying Type on which this TypeWrapper is based. + + + + + Gets the base type of this type as an ITypeInfo + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Returns true if the Type wrapped is T + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type represents a static class. + + + + + Get the display name for this type + + + + + Get the display name for an object of this type, constructed with the specified args. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns an array of custom attributes of the specified type applied to this type + + + + + Returns a value indicating whether the type has an attribute of the specified type. + + + + + + + + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 regular expression 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 a subpath of the 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 + inclusively within a specified range. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + 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 + + + + + Basic Asserts on strings. + + + + + DO NOT USE! Use StringAssert.AreEqualIgnoringCase(...) or Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 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 + + + + 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 TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the 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 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 + + + + + + + + Marks the test case as explicit. + + + + + Marks the test case as explicit, specifying the reason. + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Provide the context information of the current test. + This is an adapter for the internal ExecutionContext + class, hiding the internals from the user test. + + + + + Construct a TestContext for an ExecutionContext + + The ExecutionContext to adapt + + + + 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 TextWriter that will send output to the current test result. + + + + + Gets a TextWriter that will send output directly to Console.Error + + + + + Gets a TextWriter for use in displaying immediate progress messages + + + + + TestParameters object holds parameters for the test run, if any are specified + + + + + Static DefaultWorkDirectory is now used as the source + of the public instance property WorkDirectory. This is + a bit odd but necessary to avoid breaking user tests. + + + + + Get a representation of the current test. + + + + + Gets a Representation of the TestResult for the current test. + + + + + Gets the directory containing the current test assembly. + + + + + Gets the directory to be used for outputting files created + by this test run. + + + + + Gets the random generator. + + + The random generator. + + + + Write the string representation of a boolean value to the current result + + + Write a char to the current result + + + Write a char array to the current result + + + Write the string representation of a double to the current result + + + Write the string representation of an Int32 value to the current result + + + Write the string representation of an Int64 value to the current result + + + Write the string representation of a decimal value to the current result + + + Write the string representation of an object to the current result + + + Write the string representation of a Single value to the current result + + + Write a string to the current result + + + Write the string representation of a UInt32 value to the current result + + + Write the string representation of a UInt64 value to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a line terminator to the current result + + + Write the string representation of a boolean value to the current result followed by a line terminator + + + Write a char to the current result followed by a line terminator + + + Write a char array to the current result followed by a line terminator + + + Write the string representation of a double to the current result followed by a line terminator + + + Write the string representation of an Int32 value to the current result followed by a line terminator + + + Write the string representation of an Int64 value to the current result followed by a line terminator + + + Write the string representation of a decimal value to the current result followed by a line terminator + + + Write the string representation of an object to the current result followed by a line terminator + + + Write the string representation of a Single value to the current result followed by a line terminator + + + Write a string to the current result followed by a line terminator + + + Write the string representation of a UInt32 value to the current result followed by a line terminator + + + Write the string representation of a UInt64 value to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + + This method adds the a new ValueFormatterFactory to the + chain of responsibility used for formatting values in messages. + The scope of the change is the current TestContext. + + The factory delegate + + + + Attach a file to the current test result + + Relative or absolute file path to attachment + Optional description of attachment + + + + This method provides a simplified way to add a ValueFormatter + delegate to the chain of responsibility, creating the factory + delegate internally. It is useful when the Type of the object + is the only criterion for selection of the formatter, since + it can be used without getting involved with a compound function. + + The type supported by this formatter + The ValueFormatter delegate + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Construct a TestAdapter for a Test + + The Test to be adapted + + + + Gets the unique Id of a test + + + + + The name of the test, which may or may not be + the same as the method name. + + + + + The name of the method representing the test. + + + + + The FullName of the test + + + + + The ClassName of the test + + + + + The properties of the test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a TestResult + + The TestResult to be adapted + + + + Gets a ResultState representing the outcome of the test. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + The TestFixtureData class represents a set of arguments + and other parameter info to be used for a parameterized + fixture. It is derived from TestFixtureParameters and adds a + fluent syntax for use in initializing the fixture. + + + + + 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. + + + + Marks the test fixture as explicit. + + + + + Marks the test fixture as explicit, specifying the reason. + + + + + Ignores this TestFixture, specifying the reason. + + The reason. + + + + + TestParameters class holds any named parameters supplied to the test run + + + + + Gets the number of test parameters + + + + + Gets a collection of the test parameter names + + + + + Gets a flag indicating whether a parameter with the specified name exists. + + Name of the parameter + True if it exists, otherwise false + + + + Indexer provides access to the internal dictionary + + Name of the parameter + Value of the parameter or null if not present + + + + Get method is a simple alternative to the indexer + + Name of the parameter + Value of the parameter or null if not present + + + + Get the value of a parameter or a default string + + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Get the value of a parameter or return a default + + The return Type + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Adds a parameter to the list + + Name of the parameter + Value of the parameter + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + 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 ArgumentException + + + + + Creates a constraint specifying an expected ArgumentNullException + + + + + Creates a constraint specifying an expected InvalidOperationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + 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 + + + + + Provides static methods to express conditions + that must be met for the test to succeed. If + any test fails, a warning is issued. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + 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 an actual value, succeeding if the constraint + fails and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + The message to display if the condition is true + Arguments to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + FrameworkPackageSettings is a static class containing constant values that + are used as keys in setting up a TestPackage. These values are used in + the framework, and set in the runner. Setting values may be a string, int or bool. + + + + + Flag (bool) indicating whether tests are being debugged. + + + + + Flag (bool) indicating whether to pause execution of tests to allow + the user to attach a debugger. + + + + + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. + + + + + Full path of the directory to be used for work and result files. + This path is provided to tests by the framework TestContext. + + + + + Integer value in milliseconds for the default timeout value + for test cases. If not specified, there is no timeout except + as specified by attributes on the tests themselves. + + + + + A TextWriter to which the internal trace will be sent. + + + + + A list of tests to be loaded. + + + + + The number of test threads to run for the assembly. If set to + 1, a single queue is used. If set to 0, tests are executed + directly, without queuing. + + + + + The random seed to be used for this assembly. If specified + as the value reported from a prior run, the framework should + generate identical random values for tests as were used for + that run, provided that no change has been made to the test + assembly. Default is a random value itself. + + + + + If true, execution stops after the first error or failure. + + + + + If true, use of the event queue is suppressed and test events are synchronous. + + + + + The default naming pattern used in generating test names + + + + + Parameters to be passed on to the tests, serialized to a single string which needs parsing. Obsoleted by ; kept for backward compatibility. + + + + + Parameters to be passed on to the tests, already parsed into an IDictionary<string, string>. Replaces . + + + + + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. + + + + + Gets the custom attributes from the given object. + + .NET Standard 1.3 libraries do not have an ICustomAttributeProvider, so we need to cast to each of + it's direct subtypes and try to get attributes off those instead. + The actual. + Type of the attribute. + if set to true [inherit]. + A list of the given attribute on the given object. + + + + Specifies flags that control binding and the way in which the search for members + and types is conducted by reflection. + + + + + Specifies no binding flag. + + + + + Specifies that only members declared at the level of the supplied type's hierarchy + should be considered. Inherited members are not considered. + + + + + Specifies that instance members are to be included in the search. + + + + + Specifies that static members are to be included in the search. + + + + + Specifies that public members are to be included in the search. + + + + + Specifies that non-public members are to be included in the search. + + + + + Specifies that public and protected static members up the hierarchy should be + returned. Private static members in inherited classes are not returned. Static + members include fields, methods, events, and properties. Nested types are not + returned. + + + + + A MarshalByRefObject that lives forever + + + + + Provides NUnit specific extensions to aid in Reflection + across multiple frameworks + + + This version of the class allows direct calls on Type on + those platforms that would normally require use of + GetTypeInfo(). + + + + + Returns an array of generic arguments for the give type + + + + + + + Gets the constructor with the given parameter types + + + + + + + + Gets the constructors for a type + + + + + + + + + + + + + + + + + + + + + + + Gets declared or inherited interfaces on this type + + + + + + + Gets the member on a given type by name. BindingFlags ARE IGNORED. + + + + + + + + + Gets all members on a given type. BindingFlags ARE IGNORED. + + + + + + + + Gets field of the given name on the type + + + + + + + + Gets property of the given name on the type + + + + + + + + Gets property of the given name on the type + + + + + + + + + Gets the method with the given name and parameter list + + + + + + + + Gets the method with the given name and parameter list + + + + + + + + + Gets the method with the given name and parameter list + + + + + + + + + Gets public methods on the given type + + + + + + + Gets methods on a type + + + + + + + + Extensions to the various MemberInfo derived classes + + + + + Returns the get method for the given property + + + + + + + + Returns an array of custom attributes of the specified type applied to this member + + + + + Returns an array of custom attributes of the specified type applied to this parameter + + + + + Returns an array of custom attributes of the specified type applied to this assembly + + + + + Extensions for Assembly that are not available in .NET Standard + + + + + DNX does not have a version of GetCustomAttributes on Assembly that takes an inherit + parameter since it doesn't make sense on Assemblies. This version just ignores the + inherit parameter. + + The assembly + The type of attribute you are looking for + Ignored + + + + + Gets the types in a given assembly + + + + + + + Type extensions that apply to all target frameworks + + + + + Determines if the given array is castable/matches the array. + + + + + + + + Determines if one type can be implicitly converted from another + + + + + + + + This class is used as a flag when we get a parameter list for a method/constructor, but + we do not know one of the types because null was passed in. + + + + + A shim of the .NET interface for platforms that do not support it. + Used to indicate that a control can be the target of a callback event on the server. + + + + + Processes a callback event that targets a control. + + + + + + Returns the results of a callback event that targets a control. + + + + + diff --git a/csharp/packages/NUnit.3.7.1/lib/netstandard1.6/nunit.framework.dll b/csharp/packages/NUnit.3.7.1/lib/netstandard1.6/nunit.framework.dll new file mode 100644 index 0000000000000000000000000000000000000000..63214a9ce8213b38259a6734bb2884c71e9c2f47 GIT binary patch literal 299520 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

    XADA(RDx=#4 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 + + + nunit.framework + + + +

    + The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. + + + + + The default suite builder used by the test assembly builder. + + + + + Initializes a new instance of the class. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + + A TestSuite containing the tests found in the assembly + + + + + FrameworkController provides a facade for use in loading, browsing + and running tests without requiring a reference to the NUnit + framework. All calls are encapsulated in constructors for + this class and its nested classes, which only require the + types of the Common Type System as arguments. + + The controller supports four actions: Load, Explore, Count and Run. + They are intended to be called by a driver, which should allow for + proper sequencing of calls. Load must be called before any of the + other actions. The driver may support other actions, such as + reload on run, by combining these calls. + + + + + Construct a FrameworkController using the default builder and runner. + + The AssemblyName or path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController using the default builder and runner. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The full AssemblyName or the path to the test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + The test assembly + A prefix used for all test ids created under this controller. + A Dictionary of settings to use in loading and running the tests + The Type of the test runner + The Type of the test builder + + + + Gets the ITestAssemblyBuilder used by this controller instance. + + The builder. + + + + Gets the ITestAssemblyRunner used by this controller instance. + + The runner. + + + + Gets the AssemblyName or the path for which this FrameworkController was created + + + + + Gets the Assembly for which this + + + + + Gets a dictionary of settings for the FrameworkController + + + + + Loads the tests in the assembly + + + + + + Returns info about the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of exploring the tests + + + + Runs the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Runs the tests in an assembly synchronously reporting back the test results through the callback + or through the return value + + The callback that receives the test results + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Runs the tests in an assembly asynchronously reporting back the test results through the callback + + The callback that receives the test results + A string containing the XML representation of the filter to use + + + + Stops the test run + + True to force the stop, false for a cooperative stop + + + + Counts the number of test cases in the loaded TestSuite + + A string containing the XML representation of the filter to use + The number of tests + + + + Inserts environment element + + Target node + The new node + + + + Inserts settings element + + Target node + Settings dictionary + The new node + + + + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. + + + + + LoadTestsAction loads a test into the FrameworkController + + + + + LoadTestsAction loads the tests in an assembly. + + The controller. + The callback handler. + + + + ExploreTestsAction returns info about the tests in an assembly + + + + + Initializes a new instance of the class. + + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. + + + + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. + + + + + Construct a CountsTestAction and perform the count of test cases. + + A FrameworkController holding the TestSuite whose cases are to be counted + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunTestsAction runs the loaded TestSuite held by the FrameworkController. + + + + + Construct a RunTestsAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + RunAsyncAction initiates an asynchronous test run, returning immediately + + + + + Construct a RunAsyncAction and run all tests in the loaded TestSuite. + + A FrameworkController holding the TestSuite to run + A string containing the XML representation of the filter to use + A callback handler used to report results + + + + StopRunAction stops an ongoing run. + + + + + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. + + The FrameworkController for which a run is to be stopped. + True the stop should be forced, false for a cooperative stop. + >A callback handler used to report results + A forced stop will cause threads and processes to be killed as needed. + + + + The ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. + + + + + Build a suite of tests from a provided assembly + + The assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + Build a suite of tests given the filename of an assembly + + The filename of the assembly from which tests are to be built + A dictionary of options to use in building the suite + A TestSuite containing the tests found in the assembly + + + + The ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. + + + + + Gets the tree of loaded tests, or null if + no tests have been loaded. + + + + + Gets the tree of test results, if the test + run is completed, otherwise null. + + + + + Indicates whether a test has been loaded + + + + + Indicates whether a test is currently running + + + + + Indicates whether a test run is complete + + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + File name of the assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive ITestListener notifications. + A test filter used to select tests to be run + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Implementation of ITestAssemblyRunner + + + + + Initializes a new instance of the class. + + The builder. + + + + The tree of tests that was loaded by the builder + + + + + The test result, if a run has completed + + + + + Indicates whether a test is loaded + + + + + Indicates whether a test is running + + + + + Indicates whether a test run is complete + + + + + Our settings, specified when loading the assembly + + + + + The top level WorkItem created for the assembly as a whole + + + + + The TestExecutionContext for the top level WorkItem + + + + + Loads the tests found in an Assembly + + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Loads the tests found in an Assembly + + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Explore the test cases using a filter + + The filter to apply + Test Assembly with test cases that matches the filter + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + RunAsync is a template method, calling various abstract and + virtual methods to be overridden by derived classes. + + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any tests that are currently running + + + + Initiate the test run. + + + + + Create the initial TestExecutionContext used to run tests + + The ITestListener specified in the RunAsync call + + + + Handle the the Completed event for the top level work item + + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + Verifies that the first int is greater than the second + int. 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 int is greater than the second + int. 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Verifies that the first value is greater than or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 or equal to 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 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that an int is zero. + + The number to be examined + + + + Asserts that an int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is zero. + + The number to be examined + + + + Asserts that an unsigned int is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is zero. + + The number to be examined + + + + Asserts that a Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is zero. + + The number to be examined + + + + Asserts that an unsigned Long is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is not zero. + + The number to be examined + + + + Asserts that an int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is not zero. + + The number to be examined + + + + Asserts that an unsigned int is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is not zero. + + The number to be examined + + + + Asserts that a Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + + + + Asserts that an unsigned Long is not zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is zero. + + The number to be examined + + + + Asserts that a decimal is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is zero. + + The number to be examined + + + + Asserts that a double is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is zero. + + The number to be examined + + + + Asserts that a float is zero. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is positive. + + The number to be examined + + + + Asserts that an int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is positive. + + The number to be examined + + + + Asserts that an unsigned int is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is positive. + + The number to be examined + + + + Asserts that a Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is positive. + + The number to be examined + + + + Asserts that an unsigned Long is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is positive. + + The number to be examined + + + + Asserts that a decimal is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is positive. + + The number to be examined + + + + Asserts that a double is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is positive. + + The number to be examined + + + + Asserts that a float is positive. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an int is negative. + + The number to be examined + + + + Asserts that an int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned int is negative. + + The number to be examined + + + + Asserts that an unsigned int is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a Long is negative. + + The number to be examined + + + + Asserts that a Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an unsigned Long is negative. + + The number to be examined + + + + Asserts that an unsigned Long is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a decimal is negative. + + The number to be examined + + + + Asserts that a decimal is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a double is negative. + + The number to be examined + + + + Asserts that a double is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a float is negative. + + The number to be examined + + + + Asserts that a float is negative. + + The number to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + 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. + + + + + DO NOT USE! Use Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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. + + + + + Issues a warning using the message and arguments provided. + + The message to display. + Arguments to be used in formatting the message + + + + Issues a warning using the message provided. + + The message to display. + + + + 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. + + + + + Asserts that an object is contained in a collection. + + The expected object + The collection 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 collection. + + The expected object + The collection to be examined + + + + Wraps code containing a series of assertions, which should all + be executed, even if they fail. Failed results are saved and + reported at the end of the code block. + + A TestDelegate to be executed in Multiple Assertion mode. + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Verifies that an async 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 an async delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that an async delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + + + + Verifies that an async delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + + + + Verifies that an async 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 an async delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that an async 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 an async 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 an async delegate throws an exception of a certain Type + or one derived from it 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 an async delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that an async delegate does not throw an exception + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that an async delegate does not throw an exception. + + A TestDelegate + + + + 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 + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestDelegate + 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 TestDelegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestDelegate + 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 TestDelegate + + + + 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 + + + + 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 + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it 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 of a certain Type + or one derived from it when called and returns it. + + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestDelegate + 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 TestDelegate + + + + 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 + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + 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 + + + + 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 + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + 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 function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + The Type being compared. + The actual value to test + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + + This method is provided for use by VB developers needing to test + the value of properties with private setters. + + The actual value to test + A Constraint expression to be applied + The message that will be displayed on failure + Arguments 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 + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + Delegate used by tests that execute async code and + capture any thrown exception. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter names in making asserts. + + + + + 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 + + + + 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. + + 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 + + + + 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 + + + + 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 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 + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 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 regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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. + + + + + 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. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + 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 + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + Provides the Author of a test or test fixture. + + + + + Initializes a new instance of the class. + + The name of the author. + + + + Initializes a new instance of the class. + + The name of the author. + The email address of the author. + + + + 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 + + + + + Modifies a test by adding a category to it. + + The test to modify + + + + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. + + + + + Default constructor + + + + + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. + + + + + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParameterDataProvider. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Modify the test by adding the name of the combining strategy + to the properties. + + The test to modify + + + + 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 + + + + Causes a test to be skipped if this CultureAttribute is not satisfied. + + The test to modify + + + + Tests to determine if the current culture is supported + based on the properties of this attribute. + + True, if the current culture is supported + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. + + + + + Default constructor + + + + + 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 a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointSourceAttribute. + + + + + Used to mark a field, property or method providing a set of datapoints to + be used in executing any theories within the same fixture that require an + argument of the Type provided. The data source may provide an array of + the required Type or an . + Synonymous with DatapointsAttribute. + + + + + DefaultFloatingPointToleranceAttribute sets the tolerance used + by default when checking the equality of floating point values. + + + + + Construct specifying an amount + + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct a description Attribute + + The text of the description + + + + 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 + + + + Modifies a test by marking it as explicit. + + The test to modify + + + + 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 giving a reason for ignoring the test + + The reason for ignoring the test + + + + The date in the future to stop ignoring the test as a string in UTC time. + For example for a date and time, "2014-12-25 08:10:00Z" or for just a date, + "2014-12-25". If just a date is given, the Ignore will expire at midnight UTC. + + + Once the ignore until date has passed, the test will be marked + as runnable. Tests with an ignore until date will have an IgnoreUntilDate + property set which will appear in the test results. + + The string does not contain a valid string representation of a date and time. + + + + Modifies a test by marking it as Ignored. + + The test to modify + + + + 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 items 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 + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a NonParallelizableAttribute. + + + + + The NonTestAssemblyAttribute may be used by third-party frameworks + or other software that references the nunit framework but does not + contain tests. Applying the attribute indicates that the assembly + is not a test assembly and may prevent errors if certain runners + attempt to load the assembly. Note that recognition of the attribute + depends on each individual runner. + + + + + SingleThreadedAttribute applies to a test fixture and indicates + that all the child tests must be run on the same thread as the + OneTimeSetUp and OneTimeTearDown. It sets a flag in the + TestExecutionContext and forces all tests to be run sequentially + on the current thread. Any ParallelScope setting is ignored. + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + TestAssemblyDirectoryResolveAttribute is used to mark a test assembly as needing a + special assembly resolution hook that will explicitly search the test assembly's + directory for dependent assemblies. This works around a conflict between mixed-mode + assembly initialization and tests running in their own AppDomain in some cases. + + + + + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. + + + + + Construct a LevelOfParallelismAttribute. + + The number of worker threads to be created by the framework. + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + The abstract base class for all custom attributes defined by NUnit. + + + + + Default constructor + + + + + Attribute used to identify a method that is called once + to perform setup before any child tests are run. + + + + + Attribute used to identify a method that is called once + after all the child tests have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + Marks a test to use a pairwise join of any argument + data provided. Arguments will be combined in such a + way that all possible pairs of arguments are used. + + + + + Default constructor + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a ParallelizableAttribute using default ParallelScope.Self. + + + + + Construct a ParallelizableAttribute with a specified scope. + + The ParallelScope associated with this attribute. + + + + Overridden to check for invalid combinations of settings + + + + + + Modify the context to be used for child tests + + The current TestExecutionContext + + + + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. + + + + + No ParallelScope was specified on the test + + + + + The test may be run in parallel with others at the same level. + Valid on classes and methods but not assemblies. + + + + + Test may not be run in parallel with any others. Valid on + classes and methods but not assemblies. + + + + + Mask used to extract the flags that apply to the item on which a + ParallelizableAttribute has been placed, as opposed to descendants. + + + + + Descendants of the test may be run in parallel with one another. + Valid on assemblies and classes but not on methods. + + + + + Descendants of the test down to the level of TestFixtures may be + run in parallel with one another. Valid on assemblies and classes + but not on methods. + + + + + Mask used to extract all the flags that impact descendants of a + test and place them in the TestExecutionContext. + + + + + The test and its descendants may be run in parallel with others at + the same level. Valid on classes and methods but not assemblies. + + + + + 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 + + + + + Modifies a test by adding properties to it. + + The test to modify + + + + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. + + + + + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + + + + + + Construct a set of ints within a specified range + + + + + Construct a set of unsigned ints within a specified range + + + + + Construct a set of longs within a specified range + + + + + Construct a set of unsigned longs within a specified range + + + + + Construct a set of shorts within a specified range + + + + + Construct a set of unsigned shorts within a specified range + + + + + Construct a set of doubles within a specified range + + + + + Construct a set of floats within a specified range + + + + + Construct a set of bytes within a specified range + + + + + Construct a set of sbytes within a specified range + + + + + 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 unsigned ints using default step of 1 + + + + + + + Construct a range of unsigned ints specifying the step size + + + + + + + + Construct a range of longs using a default step of 1 + + + + + + + Construct a range of longs + + + + + + + + Construct a range of unsigned longs using default step of 1 + + + + + + + Construct a range of unsigned longs specifying the step size + + + + + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RepeatAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + 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 + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RetryAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Marks a test to use a Sequential join of any argument + data provided. Arguments will be combined into test cases, + taking the next value of each argument until all are used. + + + + + Default constructor + + + + + Attribute used to identify a method that is called + immediately before each test is run. + + + + + Attribute used to identify a class that contains + or + methods for all the test fixtures under a given namespace. + + + + + Build a SetUpFixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A SetUpFixture object as a TestSuite. + + + + 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. + + + + + Provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + The author of this test + + + + + The type that this test is testing + + + + + Modifies a test by adding a description, if not already set. + + The test to modify + + + + Gets or sets the expected result. + + The result. + + + + Returns true if an expected result has been set + + + + + Construct a TestMethod from a given method. + + The method for which a test is to be constructed. + The suite to which the test will be added. + A TestMethod + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + 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 or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test case. + + + + + Gets the list of arguments to a test case + + + + + Gets the properties of the test case + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if the expected result has been set + + + + + Gets or sets the description. + + The description. + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the reason for ignoring the test + + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets or sets the reason for not running the test. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets and sets the category for this test case. + May be a comma-separated list of categories. + + + + + Performs several special conversions allowed by NUnit in order to + permit arguments with types that cannot be used in the constructor + of an Attribute such as TestCaseAttribute or to simplify their use. + + The arguments to be converted + The ParameterInfo array for the method + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The MethodInfo for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a name + + The name of a static method, property or field that will provide data. + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + Construct with a Type + + The type that will provide data + + + + A set of parameters passed to the method, works only if the Source Name is a method. + If the source name is a field or property has no effect. + + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + + The method for which data is needed. + + + + + TestFixtureAttribute is used to mark a class that represents a TestFixture. + + + + + 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. + + + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test fixture. + + + + + The arguments originally provided to the attribute + + + + + Properties pertaining to this fixture + + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Descriptive text for this fixture + + + + + The author of this fixture + + + + + The type that this fixture is testing + + + + + Gets or sets the ignore reason. May set RunState as a side effect. + + The ignore reason. + + + + Gets or sets the reason for not running the fixture. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Build a fixture from type provided. Normally called for a Type + on which the attribute has been placed. + + The type info of the fixture to be used. + A an IEnumerable holding one TestFixture object. + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. + + + + + Error message string is public so the tests can use it + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + Construct with a Type and name + + The Type that will provide data + The name of a static method, property or field that will provide data. + + + + Construct with a Type + + The type 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 + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Construct one or more TestFixtures from a given Type, + using available parameter data. + + The TypeInfo for which fixtures are to be constructed. + One or more TestFixtures as TestSuite + + + + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. + + The type for which data is needed. + + + + + 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. + + + + + Indicates which class the test or test fixture is testing + + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + 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")] + public void TestDescriptionMethod() + {} + } + + + + + + Construct the attribute, specifying a combining strategy and source of parameter data. + + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + 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 + + + + + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. + + + + + 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 + + + + + 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 a static method, property or field 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 a static 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 + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + + An enumeration containing individual data items + + + + + A set of Assert methods operating on one or more collections + + + + + DO NOT USE! Use CollectionAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + 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 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 + 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 + 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 + 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 + 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 + 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 + 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 + Arguments to be used in formatting the message + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset does not contain the subset + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset contains the subset. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that the subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset does not contain the superset + + 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 the subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset contains the superset. + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 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 + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + 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. + + + + + Constructs an AttributeConstraint for a specified attribute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Returns a string representation of the constraint. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + 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 + + + + 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 + + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Gets the expected object + + + + + Test whether the expected item is contained in the collection + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether two collections are equivalent + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + 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 ignore case and return 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. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + 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. + + + + + If used performs a default ascending comparison + + + + + If used performs a reverse comparison + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + Then signals a break between two ordering steps + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of the constraint. + + + + + + An OrderingStep represents one stage of the sort + + + + + 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 + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another + + + + + Construct a CollectionSupersetConstraint + + The collection that the actual value is expected to be a superset of + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the actual collection is a superset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + CollectionTally counts (tallies) the number of + occurrences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + The number of objects remaining in the tally + + + + + 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 + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Construct a default ComparisonAdapter + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + ComparerAdapter extends and + allows use of an or + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a + + + + + 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 + + + + + Tolerance used in making the comparison + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + A ConstraintResult + + + + Protected function overridden by derived class to actually perform the comparison + + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use an and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Modifies the constraint to use a and returns self + + The comparer used for comparison tests + A constraint modified to use the given comparer + + + + Set the tolerance for use in this comparison + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual _values is allowed to deviate from + the expected value. + + Self + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + Retrieves the value to be tested from an ActualValueDelegate. + The default implementation simply evaluates the delegate but derived + classes may override it to provide for delayed processing. + + An ActualValueDelegate + Delegate evaluation result + + + + 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 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. + + + + + Returns a DelayedConstraint.WithRawDelayInterval with the specified delay time. + + The delay, which defaults to milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + Resolves any pending operators and returns the resolved 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 reorganized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + Pushes the specified operator onto the stack. + + The operator to put onto the stack. + + + + Pops the topmost operator from the stack. + + The topmost operator on the stack + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Pushes the specified constraint. As a side effect, + the constraint's Builder field is set to the + ConstraintBuilder owning this stack. + + The constraint to put onto the stack + + + + Pops this topmost constraint from the stack. + As a side effect, the constraint's Builder + field is set to null. + + The topmost contraint on the stack + + + + 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 expression 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. + + + + + 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 + reorganized. When a constraint is appended, it is returned as the + value of the operation so that modifiers may be applied. However, + any partially built expression is attached to the constraint for + later resolution. When an operator is appended, the partial + expression is returned. If it's a self-resolving operator, then + a ResolvableConstraintExpression is returned. + + + + + 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. Note that the constraint + is not reduced at this time. For example, if there + is a NotOperator on the stack we don't reduce and + return a NotConstraint. The original constraint must + be returned because it may support modifiers that + are yet to be applied. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + With is currently a NOP - reserved for future use. + + + + + 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 for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests if item is equal to zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 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 ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the regular expression 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 a subpath of the 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 constraint that succeeds if the value + is a file or directory and it exists. + + + + + ConstraintStatus represents the status of a ConstraintResult + returned by a Constraint being applied to an actual value. + + + + + The status has not yet been set + + + + + The constraint succeeded + + + + + The constraint failed + + + + + An error occured in applying the constraint (reserved for future use) + + + + + Contain the result of matching a against an actual value. + + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + The status of the new ConstraintResult. + + + + Constructs a for a particular . + + The Constraint to which this result applies. + The actual value to which the Constraint was applied. + If true, applies a status of Success to the result, otherwise Failure. + + + + The actual value that was passed to the method. + + + + + Gets and sets the ResultStatus for this result. + + + + + True if actual value meets the Constraint criteria otherwise false. + + + + + Display friendly name of the constraint. + + + + + Description of the constraint may be affected by the state the constraint had + when was performed against the actual value. + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the result 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 + + + + 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 + + + + 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. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Flag the constraint to ignore case and return self. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Allows only changing the time dimension of delay interval and setting a polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawDelayInterval + + Parent DelayedConstraint on which delay interval dimension is required to be set + + + + Changes delay interval dimension to minutes + + + + + Changes delay interval dimension to seconds + + + + + Changes delay interval dimension to milliseconds + + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only setting the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithDimensionedDelayInterval + + Parent DelayedConstraint on which polling interval is required to be set + + + + Set polling interval, in milliseconds + + A time interval, in milliseconds + + + + + Allows only changing the time dimension of the polling interval of a DelayedConstraint + + + + + Creates a new DelayedConstraint.WithRawPollingInterval + + Parent DelayedConstraint on which polling dimension is required to be set + + + + Changes polling interval dimension to minutes + + + + + Changes polling interval dimension to seconds + + + + + Changes polling interval dimension to milliseconds + + + + + Delay value store as an Interval object + + + + + Polling value stored as an Interval object + + + + + Creates a new DelayedConstraint + + The inner constraint to 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 to decorate + The time interval after which the match is performed, in milliseconds + The time interval used for polling, in milliseconds + If the value of is less than 0 + + + + Gets text describing a constraint + + + + + 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 + A ConstraintResult + + + + 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 + + + + Returns the string representation of the constraint. + + + + + Adjusts a Timestamp by a given TimeSpan + + + + + + + + Returns the difference between two Timestamps as a TimeSpan + + + + + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected key is contained in the dictionary + + + + + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. + + + + + Construct a DictionaryContainsValueConstraint + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the expected value is contained in the dictionary + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that the collection is empty + + + + + + + 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. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + EmptyStringConstraint tests whether a string is empty. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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. + + + + + + + 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. + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Gets the tolerance for this comparison. + + + The tolerance. + + + + + Gets a value indicating whether to compare case insensitive. + + + true if comparing case insensitive; otherwise, false. + + + + + Gets a value indicating whether or not to clip strings. + + + true if set to clip strings otherwise, false. + + + + + Gets the failure points. + + + The failure points. + + + + + 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. + + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flags the constraint to include + property in comparison of two values. + + + Using this modifier does not allow to use the + constraint modifier. + + + + + 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 + + + + 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 + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. + + + + + Construct an EqualConstraintResult + + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + 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 + + + + Display the failure information for two IEnumerables that did not match. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + EqualityAdapter class handles all equality comparisons + that use an , + or a . + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps an . + + + + + Returns an EqualityAdapter that uses a predicate function for items comparison. + + + + + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + that wraps an . + + + + + Returns an that wraps a . + + + + + ExactCountConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + Construct a standalone ExactCountConstraint + + + + + + Construct an ExactCountConstraint on top of an existing constraint + + + + + + + Apply the item constraint to each item in the collection, + succeeding only if the expected number of items pass. + + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + 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. + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + FileExistsConstraint is used to determine if a file exists + + + + + Initializes a new instance of the class. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + FileOrDirectoryExistsConstraint is used to determine if a file or directory exists + + + + + If true, the constraint will only check if files exist, not directories + + + + + If true, the constraint will only check if directories exist, not files + + + + + Initializes a new instance of the class that + will check files and directories. + + + + + Initializes a new instance of the class that + will only check files if ignoreDirectories is true. + + if set to true [ignore directories]. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + 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. + + + + + 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 + + + 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 + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + Interface for all constraints + + + + + The display name of this Constraint for use by ToString(). + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Arguments provided to this Constraint, for use in + formatting the description. + + + + + The ConstraintBuilder holding this constraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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 + A ConstraintResult + + + + 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 + + + + 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. + + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + Keeps track of an interval time which can be represented in + Minutes, Seconds or Milliseconds + + + + + Constructs a interval given an value in milliseconds + + + + + Gets Interval value represented as a TimeSpan object + + + + + Returns the interval with the current value as a number of minutes. + + + + + Returns the interval with the current value as a number of seconds. + + + + + Returns the interval with the current value as a number of milliseconds. + + + + + Is true for intervals created with a non zero value + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + + + + IntervalUnit provides the semantics to the value stored in Interval class. + + + + + Unit representing an Interval in minutes + + + + + Unit representing an Interval in seconds + + + + + Unit representing an Interval in milliseconds + + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + An extension of ResolvableConstraintExpression that adds a no-op Items property for readability. + + + + + Create a new instance of ItemsConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + + No-op property for readability. + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Perform the comparison + + + + + 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. + + + + Perform the comparison + + + + + 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 + + + + + Abstract method to get the max line length + + + + + 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 given + 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 failing constraint result + + + + 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 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 + + + + Custom value formatter function + + The value + + + + + Custom value formatter factory function + + The next formatter function + ValueFormatter + If the given formatter is unable to handle a certain format, it must call the next formatter in the chain + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Formatting strings used for expected and actual _values + + + + + Current head of chain of value formatters. Public for testing. + + + + + Add a formatter to the chain of responsibility. + + + + + + Formats text to represent a generalized value. + + The value + The formatted text + + + + Formats 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 + + + + 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 + + + + Converts any null 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 + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test that the actual value is an NaN + + + + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + 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 + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + 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. + + + + + Returns the default NUnitComparer. + + + + + Compares two objects + + + + + + + + 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 + + + + + Comparison objects used in comparisons for some constraints. + + + + + List of points at which a failure occurred. + + + + + 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 the list of external comparers to be used to + test for equality. They are applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + The list consists of objects to be interpreted by the caller. + This generally means that the caller may only make use of + objects it has placed on the list at a particular depth. + + + + + Flags the comparer to include + property in comparison of two values. + + + Using this modifier does not allow to use the + modifier. + + + + + Compares two objects for equality within a tolerance. + + + + + 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 + + + + FailurePoint class represents one point of failure + in an equality test. + + + + + The location of the failure + + + + + The expected value + + + + + The actual value + + + + + Indicates whether the expected value is valid + + + + + Indicates whether the actual value is valid + + + + + 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. + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + 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. + + + + + 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. + + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + 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. + + + + + The syntax element preceding this operator + + + + + The syntax element following 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. + + + + + 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. + + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + 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. + + + + + + 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. + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + 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. + + + + + + + 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. + + + + + Gets the name of the property to which the operator applies + + + + + 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. + + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + 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. + + + + + 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. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifies the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Gets text describing a 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 + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Modifies the current instance to be case-sensitive + and returns it. + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether one path in canonical form is a subpath of another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Gets text describing a constraint + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + Construct given a base constraint + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Formats a prefix constraint's description. + + + + + 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 + + + + Returns the string representation of the constraint. + + + + + + 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 value + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whether two _values are within a + specified range. + + + + + Initializes a new instance of the class. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use an and returns self. + + + + + Modifies the constraint to use a and returns self. + + + + + 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 + + + + 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. + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Resolve the current expression to a Constraint + + + + + ReusableConstraint wraps a constraint expression after + resolving it so that it can be reused consistently. + + + + + Construct a ReusableConstraint from a constraint expression + + The expression to be resolved and reused + + + + Converts a constraint to a ReusableConstraint + + The constraint to be converted + A ReusableConstraint + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Return the top-level constraint for this expression + + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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 + + + + + + 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. + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + 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. + + + + + + + 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 + + + + + Description of this constraint + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + 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 a given string + + The string to be tested + True for success, false for failure + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + 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 + + + + 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. + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + 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 actual value for a failing constraint test to a + MessageWriter. This override only handles the special message + used when an exception is expected but none is thrown. + + The writer on which the actual value is displayed + + + + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Executes the code and returns success if an exception is thrown. + + A delegate representing the code to be tested + True if an exception is thrown, otherwise false + + + + Returns the ActualValueDelegate itself as the value to be tested. + + A delegate representing the code to be tested + The delegate itself + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Gets text describing a constraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Applies the constraint to 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 + A ConstraintResult + + + + 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. + + + + + Returns a default Tolerance object, equivalent to an exact match. + + + + + Returns an empty Tolerance object, equivalent to an exact match. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + 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 as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a as the amount, using + the current amount as a number of clock ticks. + + + + + Gets the for the current Tolerance + + + + + Gets the magnitude of the current Tolerance instance. + + + + + Returns true if the current tolerance has not been set or is using the . + + + + + Apply the tolerance to an expected value and return + a Tolerance.Range that represents the acceptable values. + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Tolerance.Range represents the range of values that match + a specific tolerance, when applied to a specific value. + + + + + The lower bound of the range + + + + + The Upper bound of the range + + + + + Construct a Range + + + + + 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. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + The type of the actual argument to which the constraint was applied + + + + + Construct a TypeConstraint for a given Type + + The expected type for the constraint + Prefix used in forming the constraint description + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Check that all items are unique. + + + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. + + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Asserts on Directories + + + + + DO NOT USE! Use DirectoryAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both point to the same directory. + 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 the 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 point to the same directory. + If they are not 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 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 + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + 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 the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to 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 the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + 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 the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to 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 the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + 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 new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the Dictionary key collection. + + The key to be matched in the Dictionary key collection + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the Dictionary value collection. + + The value to be matched in the Dictionary value collection + + + + 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 regular expression supplied as an argument. + + + + + 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 + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + 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 + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + Default Constructor (normally used) + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + Abstract base for Exceptions that terminate a test and provide a ResultState. + + + + 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 + + + + Gets the ResultState provided by this exception + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Gets the ResultState provided by this exception + + + + + Asserts on Files + + + + + DO NOT USE! Use FileAssert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file exists. If it does not exist + an is thrown. + + 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 the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + 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 the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + + + + Class used to guard against unexpected argument values + or operations by throwing an appropriate exception. + + + + + Throws an exception if an argument is null + + The value to be tested + The name of the argument + + + + Throws an exception if a string argument is null or empty + + The value to be tested + The name of the argument + + + + Throws an ArgumentOutOfRangeException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an ArgumentException if the specified condition is not met. + + The condition that must be met + The exception message to be used + The name of the argument + + + + Throws an InvalidOperationException if the specified condition is not met. + + The condition that must be met + The exception message to be used + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding only if a specified number of them succeed. + + + + + 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 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 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. + + + + + The AssertionResult class represents the result of a single assertion. + + + + + Construct an AssertionResult + + + + The pass/fail status of the assertion + + + The message produced by the assertion, or null + + + The stacktrace associated with the assertion, or null + + + + ToString Override + + + + + Override GetHashCode + + + + + Override Equals + + + + + + AssertionStatus enumeration represents the possible outcomes of an assertion. + The order of definition is significant, higher level values override lower + ones in determining the overall result of a test. + + + + + An assumption failed + + + + + The assertion succeeded + + + + + A warning message was issued + + + + + The assertion failed + + + + + An unexpected exception was thrown + + + + + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. + + + + + Apply changes to the execution context + + The execution context + + + + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + CombiningStrategy is the abstract base for classes that + know how to combine values provided for individual test + parameters to create a set of test cases. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. + + + Attributes or other objects should implement one of the + derived interfaces, rather than this one, since they + indicate in which part of the command chain the wrapper + should be applied. + + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. + + + + + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. + + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + The IFixtureBuilder interface is exposed by a class that knows how to + build a TestFixture from one or more Types. In general, it is exposed + by an attribute, but may be implemented in a helper class used by the + attribute in some cases. + + + + + Build one or more TestFixtures from type provided. At least one + non-null TestSuite must always be returned, since the method is + generally called because the user has marked the target class as + a fixture. If something prevents the fixture from being used, it + will be returned nonetheless, labelled as non-runnable. + + The type info of the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + IImplyFixture is an empty marker interface used by attributes like + TestAttribute that cause the class where they are used to be treated + as a TestFixture even without a TestFixtureAttribute. + + Marker interfaces are not usually considered a good practice, but + we use it here to avoid cluttering the attribute hierarchy with + classes that don't contain any extra implementation. + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + The IDataPointProvider interface is used by extensions + that provide data for a single test parameter. + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + The IParameterDataSource interface is implemented by types + that can provide data for a test method parameter. + + + + + Gets an enumeration of data items for use as arguments + for a test method parameter. + + The parameter for which data is needed + An enumeration containing individual data items + + + + The IParameterInfo interface is an abstraction of a .NET parameter. + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter + + + + + Gets the underlying .NET ParameterInfo + + + + + Gets the Type of the parameter + + + + + A PropertyBag represents a collection of name/value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + The entries in a PropertyBag are of two kinds: those that + take a single value and those that take multiple _values. + However, the PropertyBag has no knowledge of which entries + fall into each category and the distinction is entirely + up to the code using the PropertyBag. + + When working with multi-valued properties, client code + should use the Add method to add name/value pairs and + indexing to retrieve a list of all _values for a given + key. For example: + + bag.Add("Tag", "one"); + bag.Add("Tag", "two"); + Assert.That(bag["Tag"], + Is.EqualTo(new string[] { "one", "two" })); + + When working with single-valued properties, client code + should use the Set method to set the value and Get to + retrieve the value. The GetSetting methods may also be + used to retrieve the value in a type-safe manner while + also providing default. For example: + + bag.Set("Priority", "low"); + bag.Set("Priority", "high"); // replaces value + Assert.That(bag.Get("Priority"), + Is.EqualTo("high")); + Assert.That(bag.GetSetting("Priority", "low"), + Is.EqualTo("high")); + + + + + Adds a key/value pair to the property bag + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + True if their are _values present, otherwise false + + + + Gets or sets the list of _values for a particular key + + The key for which the _values are to be retrieved or set + + + + Gets a collection containing all the keys in the property set + + + + + The IReflectionInfo interface is implemented by NUnit wrapper objects that perform reflection. + + + + + Returns an array of custom attributes of the specified type applied to this object + + + + + Returns a value indicating whether an attribute of the specified type is defined on this object. + + + + + The ISimpleTestBuilder interface is exposed by a class that knows how to + build a single TestMethod from a suitable MethodInfo Types. In general, + it is exposed by an attribute, but may be implemented in a helper class + used by the attribute in some cases. + + + + + Build a TestMethod from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. + + + + + Examine the type and determine if it is suitable for + this builder to use in building a TestSuite. + + Note that returning false will cause the type to be ignored + in loading the tests. If it is desired to load the suite + but label it as non-runnable, ignored, etc., then this + method must return true. + + The type of the fixture to be used + True if the type can be used to build a TestSuite + + + + Build a TestSuite from type provided. + + The type of the fixture to be used + A TestSuite + + + + Common interface supported by all representations + of a test. Only includes informational fields. + The Run method is specifically excluded to allow + for data-only representations of a test. + + + + + Gets the id of the test + + + + + Gets the name of the test + + + + + Gets the type of the test + + + + + Gets the fully qualified name of the test + + + + + Gets the name of the class containing this test. Returns + null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the Type of the test fixture, if applicable, or + null if no fixture type is associated with this test. + + + + + Gets an IMethod for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Gets the RunState of the test, indicating whether it can be run. + + + + + Count of the test cases ( 1 if this is a test case ) + + + + + Gets the properties of the test + + + + + Gets the parent test, if any. + + The parent test or null if none exists. + + + + Returns true if this is a test suite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets a fixture object for running this test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + The ITestBuilder interface is exposed by a class that knows how to + build one or more TestMethods from a MethodInfo. In general, it is exposed + by an attribute, which has additional information available to provide + the necessary test parameters to distinguish the test cases built. + + + + + Build one or more TestMethods from the provided MethodInfo. + + The method to be used as a test + The TestSuite to which the method will be added + A TestMethod object + + + + The ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. + + + This interface is not the same as the ITestCaseBuilder interface in NUnit 2.x. + We have reused the name because the two products don't interoperate at all. + + + + + Examine the method and determine if it is suitable for + this builder to use in building a TestCase to be + included in the suite being populated. + + Note that returning false will cause the method to be ignored + in loading the tests. If it is desired to load the method + but label it as non-runnable, ignored, etc., then this + method must return true. + + The test method to examine + The suite being populated + True is the builder can use this method + + + + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. + + The method to be used as a test case + The test suite being populated, or null + A TestCase or null + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + + + + Gets the expected result of the test case + + + + + Returns true if an expected result has been set + + + + + The ITestData interface is implemented by a class that + represents a single instance of a parameterized test. + + + + + Gets the name to be used for the test + + + + + Gets the RunState for this test case. + + + + + Gets the argument list to be provided to the test + + + + + Gets the property dictionary for the test case + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Determine if a particular test passes the filter criteria. Pass + may examine the parents and/or descendants of a test, depending + on the semantics of the particular filter + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + The ITestCaseData interface is implemented by a class + that is able to return the data required to create an + instance of a parameterized test fixture. + + + + + Get the TypeArgs if separately set + + + + + The ITestListener interface is used internally to receive + notifications of significant events while a test is being + run. The events are propagated to clients by means of an + AsyncCallback. NUnit extensions may also monitor these events. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + The ITestResult interface represents the result of a test. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. Not available in + the Compact Framework 1.0. + + + + + Gets the number of asserts executed + when running the test and all its children. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + Accessing HasChildren should not force creation of the + Children collection in classes implementing this interface. + + + + + Gets the collection of child results. + + + + + Gets the Test to which this result applies. + + + + + Gets any text output written to this result. + + + + + Gets a list of AssertionResults associated with the test + + + + + Gets the collection of files attached to the test + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + Returns true if the Type wrapped is equal to the argument + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the Namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type is a static class. + + + + + Get the display name for this typeInfo. + + + + + Get the display name for an object of this type, constructed with specific arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a value indicating whether this type has a method with a specified public attribute + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + An object implementing IXmlNodeBuilder is able to build + an XML representation of itself and any children. + + + + + Returns a TNode representing the current object. + + If true, children are included where applicable + A TNode representing the result + + + + Returns a TNode representing the current object after + adding it as a child of the supplied parent node. + + The parent node. + If true, children are included, where applicable + + + + + The ResultState class represents the outcome of running a test. + It contains two pieces of information. The Status of the test + is an enum indicating whether the test passed, failed, was + skipped or was inconclusive. The Label provides a more + detailed breakdown for use by client runners. + + + + + Initializes a new instance of the class. + + The TestStatus. + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + + + + Initializes a new instance of the class. + + The TestStatus. + The stage at which the result was produced + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + The stage at which the result was produced + + + + The result is inconclusive + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test was skipped because it is explicit + + + + + The test succeeded + + + + + The test issued a warning + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The test was not runnable. + + + + + A suite failed because one or more child tests failed or had errors + + + + + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + Gets the TestStatus for the test. + + The status. + + + + Gets the label under which this test result is + categorized, if any. + + + + + Gets the stage of test execution in which + the failure or other result took place. + + + + + Get a new ResultState, which is the same as the current + one but with the FailureSite set to the specified value. + + The FailureSite to use + A new ResultState + + + + Test whether this ResultState has the same Status and Label + as another one. In other words, the whether two are equal + ignoring the Site. + + + + + + + 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. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The FailureSite enum indicates the stage of a test + in which an error or failure occurred. + + + + + Failure in the test itself + + + + + Failure in the SetUp method + + + + + Failure in the TearDown method + + + + + Failure of a parent test + + + + + Failure of a child test + + + + + The RunState enum indicates whether a test can be executed. + + + + + The test is not runnable. + + + + + The test is runnable. + + + + + The test can only be run explicitly + + + + + The test has been skipped. This value may + appear on a Test when certain attributes + are used to skip the test. + + + + + The test has been ignored. May appear on + a Test, when the IgnoreAttribute is used. + + + + + The TestAttachment class represents a file attached to a TestResult, + with an optional description. + + + + + Absolute file path to attachment file + + + + + User specifed description of attachment. May be null. + + + + + Creates a TestAttachment class to represent a file attached to a test result. + + Absolute file path to attachment file + User specifed description of attachment. May be null. + + + + The TestOutput class holds a unit of output from + a test to a specific output stream + + + + + Construct with text, output destination type and + the name of the test that produced the output. + + Text to be output + Name of the stream or channel to which the text should be written + FullName of test that produced the output + + + + Return string representation of the object for debugging + + + + + + Get the text + + + + + Get the output type + + + + + Get the name of the test that created the output + + + + + Convert the TestOutput object to an XML string + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + There was a warning + + + + + The test failed + + + + + TNode represents a single node in the XML representation + of a Test or TestResult. It replaces System.Xml.XmlNode and + System.Xml.Linq.XElement, providing a minimal set of methods + for operating on the XML in a platform-independent manner. + + + + + Constructs a new instance of TNode + + The name of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + + + + Constructs a new instance of TNode with a value + + The name of the node + The text content of the node + Flag indicating whether to use CDATA when writing the text + + + + Gets the name of the node + + + + + Gets the value of the node + + + + + Gets a flag indicating whether the value should be output using CDATA. + + + + + Gets the dictionary of attributes + + + + + Gets a list of child nodes + + + + + Gets the first ChildNode + + + + + Gets the XML representation of this node. + + + + + Create a TNode from it's XML text representation + + The XML text to be parsed + A TNode + + + + Adds a new element as a child of the current node and returns it. + + The element name. + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + + The element name + The text content of the new element + The newly created child element + + + + Adds a new element with a value as a child of the current node and returns it. + The value will be output using a CDATA section. + + The element name + The text content of the new element + The newly created child element + + + + Adds an attribute with a specified name and value to the XmlNode. + + The name of the attribute. + The value of the attribute. + + + + Finds a single descendant of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + + + Finds all descendants of this node matching an xpath + specification. The format of the specification is + limited to what is needed by NUnit and its tests. + + + + + Writes the XML representation of the node to an XmlWriter + + + + + + Class used to represent a list of XmlResults + + + + + Class used to represent the attributes of a node + + + + + Gets or sets the value associated with the specified key. + Overridden to return null if attribute is not found. + + The key. + Value of the attribute or null + + + + AssemblyHelper provides static methods for working + with assemblies. + + + + + Gets the path from which an assembly was loaded. + For builds where this is not possible, returns + the name of the assembly. + + The assembly. + The path. + + + + Gets the path to the directory from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the AssemblyName of an assembly. + + The assembly + An AssemblyName + + + + Loads an assembly given a string, which may be the + path to the assembly or the AssemblyName + + + + + + + Gets the assembly path from code base. + + Public for testing purposes + The code base. + + + + + Waits for pending asynchronous operations to complete, if appropriate, + and returns a proper result of the invocation by unwrapping task results + + The raw result of the method invocation + The unwrapped result, if necessary + + + + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + Built-in SuiteBuilder for all types of test classes. + + + + + Checks to see if the provided Type is a fixture. + To be considered a fixture, it must be a non-abstract + class with one or more attributes implementing the + IFixtureBuilder interface or one or more methods + marked as tests. + + The fixture type to check + True if the fixture can be built, false if not + + + + Build a TestSuite from TypeInfo provided. + + The fixture type to build + A TestSuite built from that type + + + + We look for attributes implementing IFixtureBuilder at one level + of inheritance at a time. Attributes on base classes are not used + unless there are no fixture builder attributes at all on the derived + class. This is by design. + + The type being examined for attributes + A list of the attributes found. + + + + Class to build ether a parameterized or a normal NUnitTestMethod. + There are four cases that the builder must deal with: + 1. The method needs no params and none are provided + 2. The method needs params and they are provided + 3. The method needs no params but they are provided in error + 4. The method needs params but they are not provided + This could have been done using two different builders, but it + turned out to be simpler to have just one. The BuildFrom method + takes a different branch depending on whether any parameters are + provided, but all four cases are dealt with in lower-level methods + + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + A Test representing one or more method invocations + + + + Determines if the method can be used to build an NUnit test + test method of some kind. The method must normally be marked + with an identifying attribute for this to be true. + + Note that this method does not check that the signature + of the method for validity. If we did that here, any + test methods with invalid signatures would be passed + over in silence in the test run. Since we want such + methods to be reported, the check for validity is made + in BuildFrom rather than here. + + An IMethodInfo for the method being used as a test method + The test suite being built, to which the new test would be added + True if the builder can create a test case from this method + + + + Build a Test from the provided MethodInfo. Depending on + whether the method takes arguments and on the availability + of test case data, this method may return a single test + or a group of tests contained in a ParameterizedMethodSuite. + + The method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations + + + + Builds a ParameterizedMethodSuite containing individual test cases. + + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases + + + + Build a simple, non-parameterized TestMethod for this method. + + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. + + + + Class that can build a tree of automatic namespace + suites from a group of fixtures. + + + + + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. + + + + + The root of the test suite being created by this builder. + + + + + Initializes a new instance of the class. + + The root suite. + + + + Gets the root entry in the tree created by the NamespaceTreeBuilder. + + The root suite. + + + + Adds the specified fixtures to the tree. + + The fixtures to be added. + + + + Adds the specified fixture to the tree. + + The fixture to be added. + + + + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. + + + + + Constructs an + + + + + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. + + The MethodInfo from which to construct the TestMethod + The suite or fixture to which the new test will be added + The ParameterSet to be used, or null + + + + + Helper method that checks the signature of a TestMethod and + any supplied parameters to determine if the test is valid. + + Currently, NUnitTestMethods are required to be public, + non-abstract methods, either static or instance, + returning void. They may take arguments but the _values must + be provided or the TestMethod is not considered runnable. + + Methods not meeting these criteria will be marked as + non-runnable and the method will return false in that case. + + The TestMethod to be checked. If it + is found to be non-runnable, it will be modified. + Parameters to be used for this test, or null + True if the method signature is valid, false if not + + The return value is no longer used internally, but is retained + for testing purposes. + + + + + NUnitTestFixtureBuilder is able to build a fixture given + a class marked with a TestFixtureAttribute or an unmarked + class containing test methods. In the first case, it is + called by the attribute and in the second directly by + NUnitSuiteBuilder. + + + + + Build a TestFixture from type provided. A non-null TestSuite + must always be returned, since the method is generally called + because the user has marked the target class as a fixture. + If something prevents the fixture from being used, it should + be returned nonetheless, labelled as non-runnable. + + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. + + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + + + + + Method to add test cases to the newly constructed fixture. + + The fixture to which cases should be added + + + + Method to create a test case from a MethodInfo and add + it to the fixture being built. It first checks to see if + any global TestCaseBuilder addin wants to build the + test case. If not, it uses the internal builder + collection maintained by this fixture builder. + + The default implementation has no test case builders. + Derived classes should add builders to the collection + in their constructor. + + The method for which a test is to be created + The test suite being built. + A newly constructed Test + + + + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. + + + + The number of test cases that cover all possible pairs of test function + parameters values is significantly less than the number of test cases + that cover all possible combination of test function parameters values. + And because different studies show that most of software failures are + caused by combination of no more than two parameters, pairwise testing + can be an effective ways to test the system when it's impossible to test + all combinations of parameters. + + + The PairwiseStrategy code is based on "jenny" tool by Bob Jenkins: + http://burtleburtle.net/bob/math/jenny.html + + + + + + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea + + + + + Initializes a new instance of the FleaRand class. + + The seed. + + + + FeatureInfo represents coverage of a single value of test function + parameter, represented as a pair of indices, Dimension and Feature. In + terms of unit testing, Dimension is the index of the test parameter and + Feature is the index of the supplied value in that parameter's list of + sources. + + + + + Initializes a new instance of FeatureInfo class. + + Index of a dimension. + Index of a feature. + + + + A FeatureTuple represents a combination of features, one per test + parameter, which should be covered by a test case. In the + PairwiseStrategy, we are only trying to cover pairs of features, so the + tuples actually may contain only single feature or pair of features, but + the algorithm itself works with triplets, quadruples and so on. + + + + + Initializes a new instance of FeatureTuple class for a single feature. + + Single feature. + + + + Initializes a new instance of FeatureTuple class for a pair of features. + + First feature. + Second feature. + + + + TestCase represents a single test case covering a list of features. + + + + + Initializes a new instance of TestCaseInfo class. + + A number of features in the test case. + + + + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. + + + + The algorithm starts with creating a set of all feature tuples which we + will try to cover (see method). This set + includes every single feature and all possible pairs of features. We + store feature tuples in the 3-D collection (where axes are "dimension", + "feature", and "all combinations which includes this feature"), and for + every two feature (e.g. "A" and "B") we generate both ("A", "B") and + ("B", "A") pairs. This data structure extremely reduces the amount of + time needed to calculate coverage for a single test case (this + calculation is the most time-consuming part of the algorithm). + + + Then the algorithm picks one tuple from the uncovered tuple, creates a + test case that covers this tuple, and then removes this tuple and all + other tuples covered by this test case from the collection of uncovered + tuples. + + + Picking a tuple to cover + + + There are no any special rules defined for picking tuples to cover. We + just pick them one by one, in the order they were generated. + + + Test generation + + + Test generation starts from creating a completely random test case which + covers, nevertheless, previously selected tuple. Then the algorithm + tries to maximize number of tuples which this test covers. + + + Test generation and maximization process repeats seven times for every + selected tuple and then the algorithm picks the best test case ("seven" + is a magic number which provides good results in acceptable time). + + Maximizing test coverage + + To maximize tests coverage, the algorithm walks thru the list of mutable + dimensions (mutable dimension is a dimension that are not included in + the previously selected tuple). Then for every dimension, the algorithm + walks thru the list of features and checks if this feature provides + better coverage than randomly selected feature, and if yes keeps this + feature. + + + This process repeats while it shows progress. If the last iteration + doesn't improve coverage, the process ends. + + + In addition, for better results, before start every iteration, the + algorithm "scrambles" dimensions - so for every iteration dimension + probes in a different order. + + + + + + Creates a set of test cases for specified dimensions. + + + An array which contains information about dimensions. Each element of + this array represents a number of features in the specific dimension. + + + A set of test cases. + + + + + Gets the test cases generated by this strategy instance. + + A set of test cases. + + + + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. + + + + + Construct with a collection of individual providers + + + + + Determine whether any data is available for a parameter. + + An IParameterInfo representing one + argument to a parameterized test + True if any data is available, otherwise false. + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + An IEnumerable providing the required data + + + + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo representing one + argument to a parameterized test + + True if any data is available, otherwise false. + + + + + Return an IEnumerable providing data for use with the + supplied parameter. + + An IParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + TestActionAfterCommand handles the AfterTest method of a single + TestActionItem, provided the items BeforeTest has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + AfterCommand is a DelegatingTestCommand that performs some + specific action after the inner command is run. + + + + + Construct an AfterCommand + + + + + Execute the command + + + + + Set this to perform action after the inner command. + + + + + ContextSettingsCommand applies specified changes to the + TestExecutionContext prior to running a test. No special + action is needed after the test runs, since the prior + context will be restored automatically. + + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Perform the before test action + + + + + Perform the after test action + + + + + TestActionBeforeCommand handles the BeforeTest method of a single + TestActionItem, relying on the item to remember it has been run. + + + + + Initializes a new instance of the class. + + The inner command. + The TestActionItem to run before the inner command. + + + + BeforeTestCommand is a DelegatingTestCommand that performs some + specific action before the inner command is run. + + + + + Construct a BeforeCommand + + + + + Execute the command + + + + + Action to perform before the inner command. + + + + + ConstructFixtureCommand constructs the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + + + + DelegatingTestCommand wraps an inner TestCommand. + Derived classes may do what they like before or + after running the inner command. + + + + TODO: Documentation needed for field + + + + TODO: Documentation needed for constructor + + + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + + + + EmptyTestCommand is a TestCommand that does nothing. It simply + returns the current result from the context when executed. We + use it to avoid testing for null when executing a chain of + DelegatingTestCommands. + + + + + Construct a NullCommand for a test + + + + + Execute the command + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The inner command. + The max time allowed in milliseconds + + + + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. + + + + + Constructs a OneTimeSetUpCommand for a suite + + The inner command to which the command applies + A SetUpTearDownList for use by the command + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The command wrapped by this command + A SetUpTearDownList for use by the command + + + + SetUpTearDownCommand runs SetUp methods for a suite, + runs the test and then runs TearDown methods. + + + + + Initializes a new instance of the class. + + The inner command. + List of setup/teardown items + + + + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. + + + + + Construct a SetUpTearDownNode + + A list of setup methods for this level + A list teardown methods for this level + + + + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. + + + + + Run SetUp on this level. + + The execution context to use for running. + + + + Run TearDown for this level. + + + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The test being skipped. + + + + Overridden to simply set the CurrentResult to the + appropriate Skipped state. + + The execution context for the test + A TestResult + + + + TestActionCommand handles a single ITestAction applied + to a test. It runs the BeforeTest method, then runs the + test and finally runs the AfterTest method. + + + + + Initializes a new instance of the class. + + The inner command. + The TestAction with which to wrap the inner command. + + + + TestActionItem wraps a single execution of an ITestAction. + It's primary purpose is to track whether the BeforeTest + method has been called and suppress calling the + AfterTest method if it has not. This is necessary when + ITestActions are used before and after a CompositeWorkItem, + since the OneTimeSetUpCommand and OneTimeTearDownCommand + are separate command chains. By sharing a TestActionItem + between the setup and teardown chains, the two calls can + be coordinated. + + + + + Construct a TestActionItem + + The ITestAction to be included + + + + Get flag indicating if the BeforeTest entry was already called. + + + + + Run the BeforeTest method of the action and remember that it has been run. + + The test to which the action applies + + + + Run the AfterTest action, but only if the BeforeTest + action was actually run. + + The test to which the action applies + + + + TestCommand is the abstract base class for all test commands + in the framework. A TestCommand represents a single stage in + the execution of a test, e.g.: SetUp/TearDown, checking for + Timeout, verifying the returned result from a method, etc. + + TestCommands may decorate other test commands so that the + execution of a lower-level command is nested within that + of a higher level command. All nested commands are executed + synchronously, as a single unit. Scheduling test execution + on separate threads is handled at a higher level, using the + task dispatcher. + + + + + Construct a TestCommand for a test. + + The test to be executed + + + + Gets the test associated with this command. + + + + + Runs the test in a specified context, returning a TestResult. + + The TestExecutionContext to be used for running the test. + A TestResult + + + + TestMethodCommand is the lowest level concrete command + used to run actual test cases. + + + + + Initializes a new instance of the class. + + The test. + + + + Runs the test, saving a TestResult in the execution context, as + well as returning it. If the test has an expected result, it + is asserts on that value. Since failed tests and errors throw + an exception, this command must be wrapped in an outer command, + will handle that exception and records the failure. This role + is usually played by the SetUpTearDown command. + + The execution context + + + + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. + + + + + Constructs a TheoryResultCommand + + The command to be wrapped by this one + + + + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. + + + + + Default constructor uses the current culture. + + + + + Construct a CultureDetector for a particular culture for testing. + + The culture to be used + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + Tests to determine if the current culture is supported + based on a culture attribute. + + The attribute to examine + + + + + Test to determine if the a particular culture or comma- + delimited set of cultures is in use. + + Name of the culture or comma-separated list of culture ids + True if the culture is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + ExceptionHelper provides static methods for working with exceptions + + + + + Rethrows an exception, preserving its stack trace + + The exception to rethrow + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. Excludes exception names, creating more readable message + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined stack trace. + + + + Gets the stack trace of the exception. + + The exception. + A string representation of the stack trace. + + + + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. + + + + + List of Child WorkItems + + + + + Construct a CompositeWorkItem for executing a test suite + using a filter to select child tests. + + The TestSuite to be executed + A filter used to select child tests + + + + Method that actually performs the work. Overridden + in CompositeWorkItem to do one-time setup, run all child + items and then dispatch the one-time teardown work item. + + + + + + + + + + Cancel (abort or stop) a CompositeWorkItem and all of its children + + true if the CompositeWorkItem and all of its children should be aborted, false if it should allow all currently running tests to complete + + + + OneTimeTearDownWorkItem represents the cleanup + and one-time teardown phase of a CompositeWorkItem + + + + + Construct a OneTimeTearDownWOrkItem wrapping a CompositeWorkItem + + The CompositeWorkItem being wrapped + + + + The WorkItem name, overridden to indicate this is the teardown. + + + + + + + + + + PerformWork is not used in CompositeWorkItem + + + + + EventListenerTextWriter sends text output to the currently active + ITestEventListener in the form of a TestOutput object. If no event + listener is active in the context, or if there is no context, + the output is forwarded to the supplied default writer. + + + + + Construct an EventListenerTextWriter + + The name of the stream to use for events + The default writer to use if no listener is available + + + + Get the Encoding for this TextWriter + + + + + Write formatted string + + + + + Write formatted string + + + + + Write formatted string + + + + + Write an object + + + + + Write a string + + + + + Write a decimal + + + + + Write a double + + + + + Write formatted string + + + + + Write a ulong + + + + + Write a long + + + + + Write a uint + + + + + Write an int + + + + + Write a char + + + + + Write a boolean + + + + + Write chars + + + + + Write chars + + + + + Write a float + + + + + Write a string with newline + + + + + Write an object with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write formatted string with newline + + + + + Write a decimal with newline + + + + + Write a formatted string with newline + + + + + Write a double with newline + + + + + Write a uint with newline + + + + + Write a ulong with newline + + + + + Write a long with newline + + + + + Write an int with newline + + + + + Write a bool with newline + + + + + Write chars with newline + + + + + Write chars with newline + + + + + Write a char with newline + + + + + Write a float with newline + + + + + Write newline + + + + + An IWorkItemDispatcher handles execution of work items. + + + + + Start execution, performing any initialization. Sets + the top level work item and dispatches it. + + + + + Dispatch a single work item for execution. The first + work item dispatched is saved as the top-level + work item and used when stopping the run. + + The item to dispatch + + + + Cancel the ongoing run completely. + If no run is in process, the call has no effect. + + true if the IWorkItemDispatcher should abort all currently running WorkItems, false if it should allow all currently running WorkItems to complete + + + + A SimpleWorkItem represents a single test case and is + marked as completed immediately upon execution. This + class is also used for skipped or ignored test suites. + + + + + Construct a simple work item for a test. + + The test to be executed + The filter used to select this test + + + + Method that performs actually performs the work. + + + + + Creates a test command for use in running this test. + + A TestCommand + + + + SimpleWorkItemDispatcher handles execution of WorkItems by + directly executing them. It is provided so that a dispatcher + is always available in the context, thereby simplifying the + code needed to run child tests. + + + + + Start execution, creating the execution thread, + setting the top level work and dispatching it. + + + + + Dispatch a single work item for execution by + executing it directly. + The item to dispatch + + + + + Cancel (abort or stop) the ongoing run. + If no run is in process, the call has no effect. + + true if the run should be aborted, false if it should allow its currently running test to complete + + + + The TextCapture class intercepts console output and writes it + to the current execution context, if one is present on the thread. + If no execution context is found, the output is written to a + default destination, normally the original destination of the + intercepted output. + + + + + Construct a TextCapture object + + The default destination for non-intercepted output + + + + Gets the Encoding in use by this TextWriter + + + + + Writes a single character + + The char to write + + + + Writes a string + + The string to write + + + + Writes a string followed by a line terminator + + The string to write + + + + A WorkItem may be an individual test case, a fixture or + a higher level grouping of tests. All WorkItems inherit + from the abstract WorkItem class, which uses the template + pattern to allow derived classes to perform work in + whatever way is needed. + + A WorkItem is created with a particular TestExecutionContext + and is responsible for re-establishing that context in the + current thread before it begins or resumes execution. + + + + + Construct a WorkItem for a particular test. + + The test that the WorkItem will run + Filter used to include or exclude child items + + + + Construct a work Item that wraps another work Item. + Wrapper items are used to represent independently + dispatched tasks, which form part of the execution + of a single test, such as OneTimeTearDown. + + The WorkItem being wrapped + + + + Initialize the TestExecutionContext. This must be done + before executing the WorkItem. + + + Originally, the context was provided in the constructor + but delaying initialization of the context until the item + is about to be dispatched allows changes in the parent + context during OneTimeSetUp to be reflected in the child. + + The TestExecutionContext to use + + + + Event triggered when the item is complete + + + + + Gets the current state of the WorkItem + + + + + The test being executed by the work item + + + + + The name of the work item - defaults to the Test name. + + + + + Filter used to include or exclude child tests + + + + + The execution context + + + + + The test result + + + + + Gets the ParallelScope associated with the test, if any, + otherwise returning ParallelScope.Default; + + + + + Execute the current work item, including any + child work items. + + + + + Marks the WorkItem as NotRunnable. + + Reason for test being NotRunnable. + + + + Cancel (abort or stop) a WorkItem + + true if the WorkItem should be aborted, false if it should run to completion + + + + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. + + + + + Method called by the derived class when all work is complete + + + + + Builds the set up tear down list. + + Unsorted array of setup MethodInfos. + Unsorted array of teardown MethodInfos. + A list of SetUpTearDownItems + + + + Changes the result of the test, logging the old and new states + + The new ResultState + The new message + + + + WorkItemBuilder class knows how to build a tree of work items from a tree of tests + + + + + Creates a work item. + + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + True if child work items should be created and added. + + + + + Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. + + + A signed integer that indicates the relative values of and , as shown in the following table.Value Meaning Less than zero is less than .Zero equals .Greater than zero is greater than . + + The first object to compare.The second object to compare. + + + + The current state of a work item + + + + + Ready to run or continue + + + + + Work Item is executing + + + + + Complete + + + + + 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. + + + + + + + Gets or sets the maximum line length for this writer + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a given + 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 result of the constraint that failed + + + + Gets the unique type name between expected and actual. + + The expected value + The actual value causing the failure + Output of the unique type name for expected + Output of the unique type name for actual + + + + 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 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 ConstraintResult for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + Combines multiple filters so that a test must pass all + of them in order to pass this filter. + + + + + Constructs an empty AndFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters pass, otherwise false + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters match, otherwise false + + + + Checks whether the AndFilter is explicit matched by a test. + + The test to be matched + True if all the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + CategoryFilter is able to select or exclude tests + based on their categories. + + + + + + Construct a CategoryFilter using a single category name + + A category name + + + + Check whether the filter matches a test + + The test to be matched + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + A base class for multi-part filters + + + + + Constructs an empty CompositeFilter + + + + + Constructs a CompositeFilter from an array of filters + + + + + + Adds a filter to the list of filters + + The filter to be added + + + + Return a list of the composing filters. + + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is explicit matched by a test. + + The test to be matched + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + IdFilter selects tests based on their id + + + + + Construct an IdFilter for a single value + + The id the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + FullName filter selects tests based on their FullName + + + + + Construct a MethodNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a NamespaceFilter for a single namespace + + The namespace the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + NotFilter negates the operation of another filter + + + + + Construct a not filter on another filter + + The filter to be negated + + + + Gets the base filter + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Check whether the filter matches a test + + The test to be matched + True if it matches, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Combines multiple filters so that a test must pass one + of them in order to pass this filter. + + + + + Constructs an empty OrFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters pass, otherwise false + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters match, otherwise false + + + + Checks whether the OrFilter is explicit matched by a test + + The test to be matched + True if any of the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + PropertyFilter is able to select or exclude tests + based on their properties. + + + + + + Construct a PropertyFilter using a property name and expected value + + A property name + The expected value of the property + + + + Check whether the filter matches a test + + The test to be matched + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + TestName filter selects tests based on their Name + + + + + Construct a TestNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. + + + + + Returns the value matched by the filter - used for testing + + + + + Indicates whether the value is a regular expression + + + + + Construct a ValueMatchFilter for a single value. + + The value to be included. + + + + Match the input provided by the derived class + + The value to be matchedT + True for a match, false otherwise. + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. + + + + + Construct a GenericMethodHelper for a method + + MethodInfo for the method to examine + + + + Return the type arguments for the method, deducing them + from the arguments actually provided. + + The arguments to the method + An array of type arguments. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Interface for logging within the engine + + + + + Logs the specified message at the error level. + + The message. + + + + Logs the specified message at the error level. + + The message. + The arguments. + + + + Logs the specified message at the warning level. + + The message. + + + + Logs the specified message at the warning level. + + The message. + The arguments. + + + + Logs the specified message at the info level. + + The message. + + + + Logs the specified message at the info level. + + The message. + The arguments. + + + + Logs the specified message at the debug level. + + The message. + + + + Logs the specified message at the debug level. + + The message. + The arguments. + + + + InternalTrace provides facilities for tracing the execution + of the NUnit framework. Tests and classes under test may make use + of Console writes, System.Diagnostics.Trace or various loggers and + NUnit itself traps and processes each of them. For that reason, a + separate internal trace is needed. + + Note: + InternalTrace uses a global lock to allow multiple threads to write + trace messages. This can easily make it a bottleneck so it must be + used sparingly. Keep the trace Level as low as possible and only + insert InternalTrace writes where they are needed. + TODO: add some buffering and a separate writer thread as an option. + TODO: figure out a way to turn on trace in specific classes only. + + + + + Gets a flag indicating whether the InternalTrace is initialized + + + + + Initialize the internal trace facility using the name of the log + to be written to and the trace level. + + The log name + The trace level + + + + Initialize the internal trace using a provided TextWriter and level + + A TextWriter + The InternalTraceLevel + + + + Get a named Logger + + + + + + Get a logger named for a particular Type. + + + + + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. + + + + + Use the default settings as specified by the user. + + + + + Do not display any trace messages + + + + + Display Error messages only + + + + + Display Warning level and higher messages + + + + + Display informational and higher messages + + + + + Display debug messages and higher - i.e. all messages + + + + + Display debug messages and higher - i.e. all messages + + + + + A trace listener that writes to a separate file per domain + and process using it. + + + + + Construct an InternalTraceWriter that writes to a file. + + Path to the file to use + + + + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + + + + + + Returns the character encoding in which the output is written. + + The character encoding in which the output is written. + + + + Writes a character to the text string or stream. + + The character to write to the text stream. + + + + Writes a string to the text string or stream. + + The string to write. + + + + Writes a string followed by a line terminator to the text string or stream. + + The string to write. If is null, only the line terminator is written. + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. + + + + + Provides internal logging to the NUnit framework + + + + + Initializes a new instance of the class. + + The name. + The log level. + The writer where logs are sent. + + + + Logs the message at error level. + + The message. + + + + Logs the message at error level. + + The message. + The message arguments. + + + + Logs the message at warm level. + + The message. + + + + Logs the message at warning level. + + The message. + The message arguments. + + + + Logs the message at info level. + + The message. + + + + Logs the message at info level. + + The message. + The message arguments. + + + + Logs the message at debug level. + + The message. + + + + Logs the message at debug level. + + The message. + The message arguments. + + + + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. + + + + + Construct a MethodWrapper for a Type and a MethodInfo. + + + + + Construct a MethodInfo for a given Type and method name. + + + + + Gets the Type from which this method was reflected. + + + + + Gets the MethodInfo for this method. + + + + + Gets the name of the method. + + + + + Gets a value indicating whether the method is abstract. + + + + + Gets a value indicating whether the method is public. + + + + + Gets a value indicating whether the method contains unassigned generic type parameters. + + + + + Gets a value indicating whether the method is a generic method. + + + + + Gets a value indicating whether the MethodInfo represents the definition of a generic method. + + + + + Gets the return Type of the method. + + + + + Gets the parameters of the method. + + + + + + Returns the Type arguments of a generic method or the Type parameters of a generic method definition. + + + + + Replaces the type parameters of the method with the array of types provided and returns a new IMethodInfo. + + The type arguments to be used + A new IMethodInfo with the type arguments replaced + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the method. + + + + + Invokes the method, converting any TargetInvocationException to an NUnitException. + + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. + + + + + Construct a ParameterWrapper for a given method and parameter + + + + + + + Gets a value indicating whether the parameter is optional + + + + + Gets an IMethodInfo representing the method for which this is a parameter. + + + + + Gets the underlying ParameterInfo + + + + + Gets the Type of the parameter + + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the parameter. + + + + + A PropertyBag represents a collection of name value pairs + that allows duplicate entries with the same key. Methods + are provided for adding a new pair as well as for setting + a key to a single value. All keys are strings but _values + may be of any type. Null _values are not permitted, since + a null entry represents the absence of the key. + + + + + Adds a key/value pair to the property set + + The key + The value + + + + Sets the value for a key, removing any other + _values that are already in the property set. + + + + + + + Gets a single value for a key, using the first + one if multiple _values are present and returning + null if the value is not found. + + + + + + + Gets a flag indicating whether the specified key has + any entries in the property set. + + The key to be checked + + True if their are _values present, otherwise false + + + + + Gets a collection containing all the keys in the property set + + + + + + Gets or sets the list of _values for a particular key + + + + + Returns an XmlNode representing the current PropertyBag. + + Not used + An XmlNode representing the PropertyBag + + + + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + + The parent node. + Not used + + + + + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. + + + + + The FriendlyName of the AppDomain in which the assembly is running + + + + + The selected strategy for joining parameter data into test cases + + + + + The process ID of the executing assembly + + + + + The stack trace from any data provider that threw + an exception. + + + + + The reason a test was not run + + + + + The author of the tests + + + + + The ApartmentState required for running the test + + + + + The categories applying to a test + + + + + The Description of a test + + + + + The number of threads to be used in running tests + + + + + The maximum time in ms, above which the test is considered to have failed + + + + + The ParallelScope associated with a test + + + + + The number of times the test should be repeated + + + + + Indicates that the test should be run on a separate thread + + + + + The culture to be set for a test + + + + + The UI culture to be set for a test + + + + + The type that is under test + + + + + The timeout value for the test + + + + + The test will be ignored until the given date + + + + + The optional Order the test will run in + + + + + Randomizer returns a set of random _values in a repeatable + way, to allow re-running of tests if necessary. It extends + the .NET Random class, providing random values for a much + wider range of types. + + The class is used internally by the framework to generate + test case data and is also exposed for use by users through + the TestContext.Random property. + + + For consistency with the underlying Random Type, methods + returning a single value use the prefix "Next..." Those + without an argument return a non-negative value up to + the full positive range of the Type. Overloads are provided + for specifying a maximum or a range. Methods that return + arrays or strings use the prefix "Get..." to avoid + confusion with the single-value methods. + + + + + Initial seed used to create randomizers for this run + + + + + 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. + + + + + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. + + + + + + Default constructor + + + + + Construct based on seed value + + + + + + Returns a random unsigned int. + + + + + Returns a random unsigned int less than the specified maximum. + + + + + Returns a random unsigned int within a specified range. + + + + + Returns a non-negative random short. + + + + + Returns a non-negative random short less than the specified maximum. + + + + + Returns a non-negative random short within a specified range. + + + + + Returns a random unsigned short. + + + + + Returns a random unsigned short less than the specified maximum. + + + + + Returns a random unsigned short within a specified range. + + + + + Returns a random long. + + + + + Returns a random long less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random ulong. + + + + + Returns a random ulong less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random Byte + + + + + Returns a random Byte less than the specified maximum. + + + + + Returns a random Byte within a specified range + + + + + Returns a random SByte + + + + + Returns a random sbyte less than the specified maximum. + + + + + Returns a random sbyte within a specified range + + + + + Returns a random bool + + + + + Returns a random bool based on the probability a true result + + + + + Returns a random double between 0.0 and the specified maximum. + + + + + Returns a random double within a specified range. + + + + + Returns a random float. + + + + + Returns a random float between 0.0 and the specified maximum. + + + + + Returns a random float within a specified range. + + + + + Returns a random enum value of the specified Type as an object. + + + + + Returns a random enum value of the specified Type. + + + + + Default characters for random functions. + + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + string representing the set of characters from which to construct the resulting string + A random string of arbitrary length + + + + Generate a random string based on the characters from the input string. + + desired length of output string. + A random string of arbitrary length + Uses DefaultStringChars as the input character set + + + + Generate a random string based on the characters from the input string. + + A random string of the default length + Uses DefaultStringChars as the input character set + + + + Returns a random decimal. + + + + + Returns a random decimal between positive zero and the specified maximum. + + + + + Returns a random decimal within a specified range, which is not + permitted to exceed decimal.MaxVal in the current implementation. + + + A limitation of this implementation is that the range from min + to max must not exceed decimal.MaxVal. + + + + + Helper methods for inspecting a type by reflection. + + Many of these methods take ICustomAttributeProvider as an + argument to avoid duplication, even though certain attributes can + only appear on specific types of members, like MethodInfo or Type. + + In the case where a type is being examined for the presence of + an attribute, interface or named member, the Reflect methods + operate with the full name of the member being sought. This + removes the necessity of the caller having a reference to the + assembly that defines the item being sought and allows the + NUnit core to inspect assemblies that reference an older + version of the NUnit framework. + + + + + Examine a fixture type and return an array of methods having a + particular attribute. The array is order with base methods first. + + The type to examine + The attribute Type to look for + Specifies whether to search the fixture type inheritance chain + The array of methods found + + + + Examine a fixture type and return true if it has a method with + a particular attribute. + + The type to examine + The attribute Type to look for + True if found, otherwise false + + + + Invoke the default constructor on a Type + + The Type to be constructed + An instance of the Type + + + + Invoke a constructor on a Type with arguments + + The Type to be constructed + Arguments to the constructor + An instance of the Type + + + + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() + + An array of objects + An array of Types + + + + Invoke a parameterless method returning void on an object. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + + + + Invoke a method, converting any TargetInvocationException to an NUnitException. + + A MethodInfo for the method to be invoked + The object on which to invoke the method + The argument list for the method + The return value from the invoked method + + + + Represents the result of running a single test case. + + + + + Construct a TestCaseResult based on a TestMethod + + A TestMethod to which the result applies. + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + The TestResult class represents the result of a test. + + + + + Error message for when child tests have errors + + + + + Error message for when child tests have warnings + + + + + Error message for when child tests are ignored + + + + + The minimum duration for tests + + + + + Aggregate assertion count + + + + + Construct a test result given a Test + + The test to be used + + + + Gets the test with which this result is associated. + + + + + Gets the ResultState of the test result, which + indicates the success or failure of the test. + + + + + Gets the name of the test result + + + + + Gets the full name of the test result + + + + + Gets or sets the elapsed time for running the test in seconds + + + + + Gets or sets the time the test started running. + + + + + Gets or sets the time the test finished running. + + + + + Adds a test attachment to the test result + + The TestAttachment object to attach + + + + Gets the collection of files attached to the test + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets or sets the count of asserts executed + when running the test. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Gets a TextWriter, which will write output to be included in the result. + + + + + Gets any text output written to this result. + + + + + Gets a list of assertion results associated with the test. + + + + + Returns the Xml representation of the result. + + If true, descendant results are included + An XmlNode representing the result + + + + Adds the XML representation of the result as a child of the + supplied parent node.. + + The parent node. + If true, descendant results are included + + + + + Gets a count of pending failures (from Multiple Assert) + + + + + Gets the worst assertion status (highest enum) in all the assertion results + + + + + Set the result of the test + + The ResultState to use in the result + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + Stack trace giving the location of the command + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + The FailureSite to use in the result + + + + RecordTearDownException appends the message and stacktrace + from an exception arising during teardown of the test + to any previously recorded information, so that any + earlier failure information is not lost. Note that + calling Assert.Ignore, Assert.Inconclusive, etc. during + teardown is treated as an error. If the current result + represents a suite, it may show a teardown error even + though all contained tests passed. + + The Exception to be recorded + + + + Determine result after test has run to completion. + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Record an assertion result + + + + + Adds a reason element to a node and returns it. + + The target node. + The new reason element. + + + + Adds a failure element to a node and returns it. + + The target node. + The new failure element. + + + + Adds an attachments element to a node and returns it. + + The target node. + The new attachments element. + + + + Creates a failure message incorporating failures + from a Multiple Assert block for use by runners + that don't know about AssertionResults. + + Message as a string + + + + Represents the result of running a test suite + + + + + Construct a TestSuiteResult base on a TestSuite + + The TestSuite to which the result applies + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + Indicates whether this result has any child results. + + + + + Gets the collection of child results. + + + + + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. + + The result to be added + + + + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. + + + + + Single instance of our default filter + + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + Regex pattern used to delete lines from the bottom of the stack + + + + Construct a stack filter instance + + Regex pattern used to delete lines from the top of the stack + + + + Construct a stack filter instance + + + + + Filters a raw stack trace and returns the result. + + The original stack trace + A filtered stack trace + + + + Provides methods to support legacy string comparison methods. + + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + Zero if the strings are equivalent, a negative number if strA is sorted first, a positive number if + strB is sorted first + + + + Compares two strings for equality, ignoring case if requested. + + The first string. + The second string.. + if set to true, the case of the letters in the strings is ignored. + True if the strings are equivalent, false if not. + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + The expected result to be returned + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + The expected result of the test, which + must match the method return type. + + + + + Gets a value indicating whether an expected result was specified. + + + + + TestCaseTimeoutException is thrown when a test running directly + on a TestWorker thread is cancelled due to timeout. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Helper class used to save and restore certain static or + singleton settings in the environment that affect tests + or which might be changed by the user tests. + + + + + Link to a prior saved context + + + + + Indicates that a stop has been requested + + + + + The event listener currently receiving notifications + + + + + The number of assertions for the current test + + + + + The current culture + + + + + The current UI culture + + + + + The current test result + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + An existing instance of TestExecutionContext. + + + + Gets and sets the current context. + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current test event listener + + + + + The current WorkItemDispatcher. Made public for + use by nunitlite.tests + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + Default tolerance value used for floating point equality + when no other tolerance is specified. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets the assert count. + + The assert count. + + + + The current nesting level of multiple assert blocks + + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + The current head of the ValueFormatter chain, copied from MsgUtils.ValueFormatter + + + + + If true, all tests must run on the same thread. No new thread may be spawned. + + + + + Record any changes in the environment made by + the test code in the execution context so it + will be passed on to lower level tests. + + + + + Set up the execution environment to match a context. + Note that we may be running on the same thread where the + context was initially created or on a different thread. + + + + + Increments the assert count by one. + + + + + Increments the assert count by a specified amount. + + + + + Adds a new ValueFormatterFactory to the chain of formatters + + The new factory + + + + An IsolatedContext is used when running code + that may effect the current result in ways that + should not impact the final result of the test. + A new TestExecutionContext is created with an + initially clear result, which is discarded on + exiting the context. + + + using (new TestExecutionContext.IsolatedContext()) + { + // Code that should not impact the result + } + + + + + Save the original current TestExecutionContext and + make a new isolated context current. + + + + + Restore the original TestExecutionContext. + + + + + Enumeration indicating whether the tests are + running normally or being cancelled. + + + + + Running normally with no stop requested + + + + + A graceful stop has been requested + + + + + A forced stop has been requested + + + + + Interface to be implemented by filters applied to tests. + The filter applies when running the test, after it has been + loaded, since this is the only time an ITest exists. + + + + + Unique Empty filter. + + + + + Indicates whether this is the EmptyFilter + + + + + Indicates whether this is a top-level filter, + not contained in any other filter. + + + + + Determine if a particular test passes the filter criteria. The default + implementation checks the test itself, its parents and any descendants. + + Derived classes may override this method or any of the Match methods + to change the behavior of the filter. + + The test to which the filter is applied + True if the test passes the filter, otherwise false + + + + Determine if a test matches the filter explicitly. That is, it must + be a direct match of the test itself or one of it's children. + + The test to which the filter is applied + True if the test matches the filter explicitly, otherwise false + + + + Determine whether the test itself matches the filter criteria, without + examining either parents or descendants. This is overridden by each + different type of filter to perform the necessary tests. + + The test to which the filter is applied + True if the filter matches the any parent of the test + + + + Determine whether any ancestor of the test matches the filter criteria + + The test to which the filter is applied + True if the filter matches the an ancestor of the test + + + + Determine whether any descendant of the test matches the filter criteria. + + The test to be matched + True if at least one descendant matches the filter criteria + + + + Create a TestFilter instance from an xml representation. + + + + + Create a TestFilter from it's TNode representation + + + + + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. + + + + + Adds an XML node + + True if recursive + The added XML node + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + Type arguments used to create a generic fixture instance + + + + + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test case has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Construct a new TestListener - private so it may not be used. + + + + + Get a listener that does nothing + + + + + TestNameGenerator is able to create test names according to + a coded pattern. + + + + + Default pattern used to generate names + + + + + Construct a TestNameGenerator + + + + + Construct a TestNameGenerator + + The pattern used by this generator. + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + The display name + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + Arguments to be used + The display name + + + + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a ParameterSet from an object implementing ITestData + + + + + + The RunState for this set of parameters. + + + + + The arguments to be used in running the test, + which must match the method signature. + + + + + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. + + + + + Gets the property dictionary for this test + + + + + Applies ParameterSet _values to the test itself. + + A test. + + + + The original arguments provided by the user, + used for display purposes. + + + + + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. + + + + + Initializes a new instance of the class. + + The callback handler to be used for reporting progress. + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished. Sends a result summary to the callback. + to + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Returns the parent test item for the targer test item if it exists + + + parent test item + + + + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. + + The string to be used + A new string with the _values replaced + + + + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. + + + + + Initializes a new instance of the class. + + The ITypeInfo for the type that represents the suite. + + + + Gets a string representing the type of test + + + + + + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. + + + + + Construct from a MethodInfo + + + + + + Gets a string representing the type of test + + + + + + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. + + + + + Initializes a new instance of the class. + + The type. + + + + The Test abstract class represents a test within the framework. + + + + + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. + + + + + Used to cache the declaring type for this MethodInfo + + + + + Method property backing field + + + + + Constructs a test given its name + + The name of the test + + + + Constructs a test given the path through the + test hierarchy to its parent and a name. + + The parent tests full name + The name of the test + + + + TODO: Documentation needed for constructor + + + + + + Construct a test from a MethodInfo + + + + + + Gets or sets the id of the test + + + + + + Gets or sets the name of the test + + + + + Gets or sets the fully qualified name of the test + + + + + + Gets the name of the class where this test was declared. + Returns null if the test is not associated with a class. + + + + + Gets the name of the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + The arguments to use in creating the test or empty array if none required. + + + + + Gets the TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. + + + + + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Whether or not the test should be run + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Gets a string representing the type of test. Used as an attribute + value in the XML representation of a test and has no other + function in the framework. + + + + + Gets a count of test cases represented by + or contained under this test. + + + + + Gets the properties for this test + + + + + Returns true if this is a TestSuite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the parent as a Test object. + Used by the core to set the parent. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets or sets a fixture object for running this test. + + + + + Static prefix used for ids in this AppDomain. + Set by FrameworkController. + + + + + Gets or Sets the Int value representing the seed for the RandomGenerator + + + + + + The SetUp methods. + + + + + The teardown methods + + + + + Creates a TestResult for this test. + + A TestResult suitable for this type of test. + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object deriving from MemberInfo + + + + Modify a newly constructed test by applying any of NUnit's common + attributes, based on a supplied ICustomAttributeProvider, which is + usually the reflection element from which the test was constructed, + but may not be in some instances. The attributes retrieved are + saved for use in subsequent operations. + + An object deriving from MemberInfo + + + + Mark the test as Invalid (not runnable) specifying a reason + + The reason the test is not runnable + + + + Get custom attributes applied to a test + + + + + Add standard attributes and members to a test node. + + + + + + + Returns the Xml representation of the test + + If true, include child tests recursively + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Compares this test to another test for sorting purposes + + The other test + Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test + + + + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. + + + + + Initializes a new instance of the class + specifying the Assembly and the path from which it was loaded. + + The assembly this test represents. + The path used to load the assembly. + + + + Initializes a new instance of the class + for a path which could not be loaded. + + The path used to load the assembly. + + + + Copy-constructor style to create a filtered copy of the test assemblies + test cases + + + + + + + Gets the Assembly represented by this instance. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Get custom attributes specified on the assembly + + + + + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. + + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used + + + + The TestMethod class represents a Test implemented as a method. + + + + + The ParameterSet used to create this test method + + + + + Initializes a new instance of the class. + + The method to be used as a test. + + + + Initializes a new instance of the class. + + The method to be used as a test. + The suite or fixture to which the new test will be added + + + + The arguments to use in executing the test method, or empty array if none are provided. + + + + + Overridden to return a TestCaseResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Returns a TNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Gets this test's child tests + + A list of child tests + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns the name of the method + + + + + TestSuite represents a composite test, which contains other tests. + + + + + Our collection of child tests + + + + + Initializes a new instance of the class. + + The name of the suite. + + + + Initializes a new instance of the class. + + Name of the parent suite. + The name of the suite. + + + + Initializes a new instance of the class. + + Type of the fixture. + Arguments used to instantiate the test fixture, or null if none used. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Copy constructor style to create a filtered copy of the given test suite + + Test Suite to copy + Filter to be applied + + + + Sorts tests under this suite. + + + + + Adds a test to the suite. + + The test. + + + + Gets this test's child tests + + The list of child tests + + + + Gets a count of test cases represented by + or contained under this test. + + + + + + The arguments to use in creating the fixture, or empty array if none are provided. + + + + + Set to true to suppress sorting this suite's contents + + + + + OneTimeSetUp methods for this suite + + + + + OneTimeTearDown methods for this suite + + + + + Overridden to return a TestSuiteResult. + + A TestResult for this test. + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns an XmlNode representing the current result after + adding it as a child of the supplied parent node. + + The parent node. + If true, descendant results are included + + + + + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. + + A list of methodinfos to check + + + + TypeHelper provides static methods that operate on Types. + + + + + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. + + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The display name for the Type + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The arglist provided. + The display name for the Type + + + + Returns the best fit for a common type to be used in + matching actual arguments to a methods Type parameters. + + The first type. + The second type. + Either type1 or type2, depending on which is more general. + + + + Determines whether the specified type is numeric. + + The type to be examined. + + true if the specified type is numeric; otherwise, false. + + + + + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. + + An array of args to be converted + A ParameterInfo[] whose types will be used as targets + + + + Determines whether this instance can deduce type args for a generic type from the supplied arguments. + + The type to be examined. + The arglist. + The type args to be used. + + true if this the provided args give sufficient information to determine the type args to be used; otherwise, false. + + + + + Return the interfaces implemented by a Type. + + The Type to be examined. + An array of Types for the interfaces. + + + + The TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. + + + + + Construct a TypeWrapper for a specified Type. + + + + + Gets the underlying Type on which this TypeWrapper is based. + + + + + Gets the base type of this type as an ITypeInfo + + + + + Gets the Name of the Type + + + + + Gets the FullName of the Type + + + + + Gets the assembly in which the type is declared + + + + + Gets the namespace of the Type + + + + + Gets a value indicating whether the type is abstract. + + + + + Gets a value indicating whether the Type is a generic Type + + + + + Returns true if the Type wrapped is T + + + + + Gets a value indicating whether the Type has generic parameters that have not been replaced by specific Types. + + + + + Gets a value indicating whether the Type is a generic Type definition + + + + + Gets a value indicating whether the type is sealed. + + + + + Gets a value indicating whether this type represents a static class. + + + + + Get the display name for this type + + + + + Get the display name for an object of this type, constructed with the specified args. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns an array of custom attributes of the specified type applied to this type + + + + + Returns a value indicating whether the type has an attribute of the specified type. + + + + + + + + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + + + + + + Returns an array of IMethodInfos for methods of this Type + that match the specified flags. + + + + + Gets the public constructor taking the specified argument Types + + + + + Returns a value indicating whether this Type has a public constructor taking the specified argument Types. + + + + + Construct an object of this Type, using the specified arguments. + + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for equality with zero + + + + + 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 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 supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the supplied 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 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 to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to 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 tests whether the actual value + is a superset of the collection supplied as an argument. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + 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 regular expression 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 a subpath of the 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 + inclusively within a specified range. + + from must be less than or equal to true + Inclusive beginning of the range. Must be less than or equal to to. + Inclusive end of the range. Must be greater than or equal to from. + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + 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 + + + + + Basic Asserts on strings. + + + + + DO NOT USE! Use StringAssert.AreEqualIgnoringCase(...) or Assert.AreEqual(...) instead. + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 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 + + + + 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 TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the 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 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 + + + + + + + + Marks the test case as explicit. + + + + + Marks the test case as explicit, specifying the reason. + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Provide the context information of the current test. + This is an adapter for the internal ExecutionContext + class, hiding the internals from the user test. + + + + + Construct a TestContext for an ExecutionContext + + The ExecutionContext to adapt + + + + 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 TextWriter that will send output to the current test result. + + + + + Gets a TextWriter that will send output directly to Console.Error + + + + + Gets a TextWriter for use in displaying immediate progress messages + + + + + TestParameters object holds parameters for the test run, if any are specified + + + + + Static DefaultWorkDirectory is now used as the source + of the public instance property WorkDirectory. This is + a bit odd but necessary to avoid breaking user tests. + + + + + Get a representation of the current test. + + + + + Gets a Representation of the TestResult for the current test. + + + + + Gets the directory containing the current test assembly. + + + + + Gets the directory to be used for outputting files created + by this test run. + + + + + Gets the random generator. + + + The random generator. + + + + Write the string representation of a boolean value to the current result + + + Write a char to the current result + + + Write a char array to the current result + + + Write the string representation of a double to the current result + + + Write the string representation of an Int32 value to the current result + + + Write the string representation of an Int64 value to the current result + + + Write the string representation of a decimal value to the current result + + + Write the string representation of an object to the current result + + + Write the string representation of a Single value to the current result + + + Write a string to the current result + + + Write the string representation of a UInt32 value to the current result + + + Write the string representation of a UInt64 value to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a formatted string to the current result + + + Write a line terminator to the current result + + + Write the string representation of a boolean value to the current result followed by a line terminator + + + Write a char to the current result followed by a line terminator + + + Write a char array to the current result followed by a line terminator + + + Write the string representation of a double to the current result followed by a line terminator + + + Write the string representation of an Int32 value to the current result followed by a line terminator + + + Write the string representation of an Int64 value to the current result followed by a line terminator + + + Write the string representation of a decimal value to the current result followed by a line terminator + + + Write the string representation of an object to the current result followed by a line terminator + + + Write the string representation of a Single value to the current result followed by a line terminator + + + Write a string to the current result followed by a line terminator + + + Write the string representation of a UInt32 value to the current result followed by a line terminator + + + Write the string representation of a UInt64 value to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + Write a formatted string to the current result followed by a line terminator + + + + This method adds the a new ValueFormatterFactory to the + chain of responsibility used for formatting values in messages. + The scope of the change is the current TestContext. + + The factory delegate + + + + Attach a file to the current test result + + Relative or absolute file path to attachment + Optional description of attachment + + + + This method provides a simplified way to add a ValueFormatter + delegate to the chain of responsibility, creating the factory + delegate internally. It is useful when the Type of the object + is the only criterion for selection of the formatter, since + it can be used without getting involved with a compound function. + + The type supported by this formatter + The ValueFormatter delegate + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Construct a TestAdapter for a Test + + The Test to be adapted + + + + Gets the unique Id of a test + + + + + The name of the test, which may or may not be + the same as the method name. + + + + + The name of the method representing the test. + + + + + The FullName of the test + + + + + The ClassName of the test + + + + + The properties of the test. + + + + + The arguments to use in creating the test or empty array if none are required. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a TestResult + + The TestResult to be adapted + + + + Gets a ResultState representing the outcome of the test. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + Gets the number of test cases that failed + when running the test and all its children. + + + + + Gets the number of test cases that had warnings + when running the test and all its children. + + + + + Gets the number of test cases that passed + when running the test and all its children. + + + + + Gets the number of test cases that were skipped + when running the test and all its children. + + + + + Gets the number of test cases that were inconclusive + when running the test and all its children. + + + + + The TestFixtureData class represents a set of arguments + and other parameter info to be used for a parameterized + fixture. It is derived from TestFixtureParameters and adds a + fluent syntax for use in initializing the fixture. + + + + + 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. + + + + Marks the test fixture as explicit. + + + + + Marks the test fixture as explicit, specifying the reason. + + + + + Ignores this TestFixture, specifying the reason. + + The reason. + + + + + TestParameters class holds any named parameters supplied to the test run + + + + + Gets the number of test parameters + + + + + Gets a collection of the test parameter names + + + + + Gets a flag indicating whether a parameter with the specified name exists. + + Name of the parameter + True if it exists, otherwise false + + + + Indexer provides access to the internal dictionary + + Name of the parameter + Value of the parameter or null if not present + + + + Get method is a simple alternative to the indexer + + Name of the parameter + Value of the parameter or null if not present + + + + Get the value of a parameter or a default string + + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Get the value of a parameter or return a default + + The return Type + Name of the parameter + Default value of the parameter + Value of the parameter or default value if not present + + + + Adds a parameter to the list + + Name of the parameter + Value of the parameter + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + 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 ArgumentException + + + + + Creates a constraint specifying an expected ArgumentNullException + + + + + Creates a constraint specifying an expected InvalidOperationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + 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 + + + + + Provides static methods to express conditions + that must be met for the test to succeed. If + any test fails, a warning is issued. + + + + + DO NOT USE! + The Equals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + Not applicable + + + + DO NOT USE! + The ReferenceEquals method throws an InvalidOperationException. This is done + to make sure there is no mistake by calling this function. + + The left object. + The right object. + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + 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 . + + A lambda that returns a Boolean + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + 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 + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning on success. + + The Type being compared. + 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 an actual value, succeeding if the constraint + fails and issuing a warning on failure. + + The Type being compared. + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + A function to build the message included with the Exception + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + 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 a warning is issued. + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false a warning is issued. + + The evaluated condition + A function to build the message included with the Exception + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + The message to display if the condition is true + Arguments to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + + + + Asserts that a condition is false. If the condition is true a warning is issued. + + A lambda that returns a Boolean + A function to build the message included with the Exception + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + A Constraint to be applied + + + + Apply a constraint to an actual value, succeeding if the constraint + fails and issuing a warning if it succeeds. + + The Type being compared. + The actual value to test + 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 an actual value, succeeding if the constraint + is satisfied and issuing a warning on failure. + + The Type being compared. + The actual value to test + A Constraint to be applied + A function to build the message included with the Exception + + + + FrameworkPackageSettings is a static class containing constant values that + are used as keys in setting up a TestPackage. These values are used in + the framework, and set in the runner. Setting values may be a string, int or bool. + + + + + Flag (bool) indicating whether tests are being debugged. + + + + + Flag (bool) indicating whether to pause execution of tests to allow + the user to attach a debugger. + + + + + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. + + + + + Full path of the directory to be used for work and result files. + This path is provided to tests by the framework TestContext. + + + + + Integer value in milliseconds for the default timeout value + for test cases. If not specified, there is no timeout except + as specified by attributes on the tests themselves. + + + + + A TextWriter to which the internal trace will be sent. + + + + + A list of tests to be loaded. + + + + + The number of test threads to run for the assembly. If set to + 1, a single queue is used. If set to 0, tests are executed + directly, without queuing. + + + + + The random seed to be used for this assembly. If specified + as the value reported from a prior run, the framework should + generate identical random values for tests as were used for + that run, provided that no change has been made to the test + assembly. Default is a random value itself. + + + + + If true, execution stops after the first error or failure. + + + + + If true, use of the event queue is suppressed and test events are synchronous. + + + + + The default naming pattern used in generating test names + + + + + Parameters to be passed on to the tests, serialized to a single string which needs parsing. Obsoleted by ; kept for backward compatibility. + + + + + Parameters to be passed on to the tests, already parsed into an IDictionary<string, string>. Replaces . + + + + + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. + + + + + Gets the custom attributes from the given object. + + .NET Standard 1.3 libraries do not have an ICustomAttributeProvider, so we need to cast to each of + it's direct subtypes and try to get attributes off those instead. + The actual. + Type of the attribute. + if set to true [inherit]. + A list of the given attribute on the given object. + + + + A MarshalByRefObject that lives forever + + + + + Provides NUnit specific extensions to aid in Reflection + across multiple frameworks + + + This version of the class allows direct calls on Type on + those platforms that would normally require use of + GetTypeInfo(). + + + + + Returns an array of generic arguments for the give type + + + + + + + Gets the constructor with the given parameter types + + + + + + + + Gets the constructors for a type + + + + + + + + + + + + + + + + + + + + + + + Gets declared or inherited interfaces on this type + + + + + + + Gets the member on a given type by name. BindingFlags ARE IGNORED. + + + + + + + + + Gets all members on a given type. BindingFlags ARE IGNORED. + + + + + + + + Gets field of the given name on the type + + + + + + + + Gets property of the given name on the type + + + + + + + + Gets property of the given name on the type + + + + + + + + + Gets the method with the given name and parameter list + + + + + + + + Gets the method with the given name and parameter list + + + + + + + + + Gets the method with the given name and parameter list + + + + + + + + + Gets public methods on the given type + + + + + + + Gets methods on a type + + + + + + + + Extensions to the various MemberInfo derived classes + + + + + Returns the get method for the given property + + + + + + + + Returns an array of custom attributes of the specified type applied to this member + + + + + Returns an array of custom attributes of the specified type applied to this parameter + + + + + Returns an array of custom attributes of the specified type applied to this assembly + + + + + Extensions for Assembly that are not available in .NET Standard + + + + + DNX does not have a version of GetCustomAttributes on Assembly that takes an inherit + parameter since it doesn't make sense on Assemblies. This version just ignores the + inherit parameter. + + The assembly + The type of attribute you are looking for + Ignored + + + + + Gets the types in a given assembly + + + + + + + Type extensions that apply to all target frameworks + + + + + Determines if the given array is castable/matches the array. + + + + + + + + Determines if one type can be implicitly converted from another + + + + + + + + This class is used as a flag when we get a parameter list for a method/constructor, but + we do not know one of the types because null was passed in. + + + + + A shim of the .NET interface for platforms that do not support it. + Used to indicate that a control can be the target of a callback event on the server. + + + + + Processes a callback event that targets a control. + + + + + + Returns the results of a callback event that targets a control. + + + + + diff --git a/csharp/packages/NUnit3TestAdapter.3.7.0/LICENSE.txt b/csharp/packages/NUnit3TestAdapter.3.7.0/LICENSE.txt new file mode 100644 index 00000000..39fa647c --- /dev/null +++ b/csharp/packages/NUnit3TestAdapter.3.7.0/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright (c) 2015-2016 Charlie Poole + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/csharp/packages/NUnit3TestAdapter.3.7.0/NUnit3TestAdapter.3.7.0.nupkg b/csharp/packages/NUnit3TestAdapter.3.7.0/NUnit3TestAdapter.3.7.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..2ede51b8c8f39b5b59e22c092ed19ac84d7f7fd3 GIT binary patch literal 272219 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
    AkA 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
    5hQ~k)D`MhijHY<`lF= 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

    VKVw-z@nJX>- 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

    *HjWhB`_w3LVah%Ez6fbI0h* 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

    8C z_6aG~?m54$d#6cUD>+GRV9!#|Bbo&g&r?5gR*c5=6GB$Rit#~(l{cQWB znfbos1?^OX^-gh}9PLO+(RCwE&>k`1+D>bGX2>UpT?Lb}STwBhi+ZC%bMs3#GS zih#OzjrZa=9`hyXt;z8H(#f@s0agr^k2<WL z8}SQM4AV3XP_fj}i8JcK5nt?x=Q{daoc{1gNpsT#-O%e~GGy*pRW1pn+mLmf)BzFI zW)ZhAWlaloLY(zRMWB1c2urKR5U9jdQK@?RFhU2xj`E3?kTEst`XB)q2C-$uYI{5j zj;Jh{o*Y%YFcFcNp(WuYH%8pu3Oo197JC6K86>odI0tQB1}ri#h$0whgFX9N`DY}i z6xIPdHkK0ig#Z&d(+L4o-Qrsm6GLU9N-ZJQzUu0kEqS4_ezm$E76*zt+MTJ;E1;Z= zk55ZndbtX_r0z}(SL|$Q>|?(Pv2G}O#_1z5*BJK5x$Gj|{0qD+#F`|Vd^5PWN;y5~&RTim0fR#HKt$EI$}eODFfs$**r3{!Mb{8vGx$ z&<||0oT>r3S`tx&CG(_1WoPEMPQWI*DZ6Uk_j_9Okx?Ie1}ETl57?*3z~k?YOZgx< z&wie9bWRD?)OLN#)O=;U@mBt*&9x-t!YFx`G5g6y>a%7AL|*so9a!duqxxdT+dUUs zX`B8qx^Zj>0a@&UiZ}QZDKXi~Xt7-IDMxpGTkha&iB4S3FIHx3DV6P0G9L@<E|1um-xcM8}owp6qnzzw1!O6}x6 z{5_WwTDi7}hKw4TDmWXJC|6x$Sb%^dMU#p(*pzs|tAX-aq8ni}fon<#V0|l(Kg@h0 zp05rU+DUV&9qRQpJibD=V(CYauW&QtQk|bKs`8e!rTN~)GU=n%Hgi0#71HLn`*=Zo z&r=Qw=a~91NlVw(aWC2L0oL$1oSC)4Qaf<%(s4`h4`p64FaIcDe7TMLfXJvtAqA)Y z%2%~Aj-YP6!_BFd{R}-}2QE~m)YWfRL4i~=?ghQ>n`(Z!LJnPl*SiUPb*u+uLF3J; zS9%x2ED!5rfPU2)s*T(V)p)vOlr8iXfR(zG=snd z5gY_B6!qPRBRDquw!V(|1+Z#U_QB$w+a{?jXcfoWQd4vildnpY3%k=JO#w1Ag-?eS zZ5$=vh0fwSyuf$e!tSzCezL`{w2f}`#JWnQ!5-tbxKqC6xx7u5di%)FYX4BH)cXBF zvc>(>AA2`TKGSXfk0FOS>tv*hLaW(k@#ge9>8ck7vv+=yzNh1#DmeI2N+002A8C~d zXsu{F?J^1R`TlaYt+c)-xcplYO?%)}I&ocw=glNjTKx6dl)Uaz;Mjb;we&Tz1fAN% zBzgYr?nS1$d{=LzLaTu z0RUpENgH*FcI@%+79*T&VS)LH(`i)bJn`dfD*b812wks>HT|nuJ`;1-CxyiFZuR}8 zTwr{e>~3iGmodsr-p&J9fBDzMDk>B?a&D{le#3lzWRjb_6$|Bb1>MY&HkK3NPyZ+P zMs(!{jvcpPK}h`j&;V9`9!l-c#&Y@wvgy1g`VSxB#mz|Pq6uImUrkqT_~^o^B3?~b zSXK&j+C(o&iWrpJFFezumXjly%+V)Q=et7;2z=EUiSuHw(vG@u%=-1ZZQ9<;B}-lH zR}_|f>GjrD4`Z^Cq z#H)xQyvMO?5RDkWd2&a6R_}SPw<|sdFVxd`pwYLx%f0Mg`+{bc;_pf$Y4wmHsy&z@ ze6hd`NH|Hj0ga<4LX#$aTu^Dcx2_OcdUjw^ayp2b1JXtlm zBfHULOWh)A6P{h1VdA27Brmx+K0n7 zqxsz3Q!Z^UIE37c>=LDdHdff?hLo>>%ajkqqk`kZgZZzz#JKmx=dm&z-^2IU{D_` zK7_klaf*)aX8}Ousm20JKlOXAdIf^_!o(~1K4E>n^D!c|cK${l$(v516-P)BTP$W z$()VPhr-uT-N{>GI!9~FoSp11=*26m!Q*YHmCSn^!N%|mngq8&v}Dk+?-WH3mUa3^ z<((Ss$sPmOqjVG(P~N$N?zAcj@jdLCBi!=c>(>n$9Zbe`{Umz$iY>-J>@W3Xd9?}J zEu0s(JLmcTZi97;sbxpZ@k4R3u=FuDfI;kCAx=wAV|%C%zdIBTae%-f{Pv#S zP+pj~Ck*Nhe~kG+NL&&kCMhOtCoCo;A|fCmDFzV|5f_&ffCxY&p?2bYFdugZdzib? zSC4rCVC(HZd7hx{o)QOczoU0lZxjtFbr!Jv#@G6uyXFX}60Hfv-L$2<5o>}N;44D_ zC#MIxHOs^#o?ESTj#GE)8g4sByy&lV`lL|N8Sq0&UN(yey+1lj&cJmHH0!m|6hynn z^nYdNdNw}r!IxDvoQ_yzEsf<4$0us7EutH)!nX~5{x#-C#>SQXbPM-%qQ4wz0c+Na=8O?=b_rx!`p-niZ5>jeT*<;%1wT2r zBtTh(=j(-D{Lu^MkudN9nSL=L^Ejw zBcv8k35jO?Q8cpwOdiilR$z_-&sRT?C8LbF4~YG>KK8^gv{ly~9YlO}^NyPRwWCPr z^vOzJCO~bjzdMMKLd=flVCda(++aID>bnHHgnjL&o88Y%tY^PW*Z!E;*f^9}f0cc2 zWgt^U`-h_Ze-vxVBsG8GOKtaI=ED-+ANAtd|D(r@ zkun&RuCd2sxUdn_2d?M+0&FsMBd)*s)%!otSrK=SEFQvAoTy(h4H{#*V& z#G40hPrWdE;>66nzYkFg)1&=BSyk6il@E@9|E^e_05S~2#HC}6U}4e!Yqx)HCh-4^ zRR8xt`Tl#Pm?HPTlh}^6&;=bB?FMWt>OUd>lF9ael01Adhs+1{aC+*MlcVG5;mM~A zwSVmPPXykQtcMBl7(InQPQ!mUe7alzH-i76gWW$-pb(iE?1vcb>OUOdzgu7NKTvf3 znezMd1AlRDPX2-NzfTkVZr$H+QGapPm~j8;hV?t(_v`y#fGuX+|NpD~LoGav4`N{f QFt3=`X~a54=7$hP*G8C&^WRgO~1#ovJgN_`zyep;pc=fyCp%f>%YrtXV9 zHsR~mlE)^j+|r#%_YVY{2ikkn9qoO6K{mayD?KpSm+tOM&tJA8-5YdvHJ6sgCmPYq z7bvyFa?}&8b617EJ+JHuC02=2w}awo>K`A$HI2XL@uyU|z_!+#1nMuJw51g2=Z>;q zSL@|u<^P4NK{dC!5pq`$eqO2Nbi^SaOC>EofpiXRs-o>9Zx@{iF40M1fx;+nohTeg{qE9P^t9hWSCjcXLRZ9CneL;|X(W=zk zJYs;y=~sNHo2?>Bb)wS^O2tSl`YcZ?HC%+h9~i&x^TCS!zuw-{U-i5H&P9IS^1Z!Z zY>XVc``k@E4OhN))A#={d($8P_Uj*9_Vk+WA`Zh5;V^V5@$s=0Fi zs=JT0vq%2vS3fwfeDH_&oPWo&kIua7T5{CwDC%!Q>=!lZ*Ep1nB)tzql)aTjNy-{J1Bz6)tTT`kjAlP$P)uE<5mOT!23o=gb|zIH z3k)!(lUo|AZmEsAySt}WyRn-q+@#x7nsfuqptv8@p-g%;Ybv~?myGQ0KKa4}2M(CA z`2cjpP$erdEcZgol4x)nE){NdMWpfMq??S~oN)c2dF*c-cy<>-cM(_$m0IqXz8p0beIerE+fT5CJ;X8bQdW>gizYkT;AJKN zDlrw&;Ba73Juc{tsR_RPGTVB)yRU)wtP-PXkJi*5S`3jjGtSB!fu^M~Xnty_c`y+q zQclZLCQ-gWgs605dz@f0&?!+T790scqp^C#qn9U+Fzaflrp98NhoKwB9lF({VQ>_R zMB}QIU61;B+;c=mlUq}=?;Iy+Buf(tuK>2xJHeC!Jr7PR_e7);%)njF2mYa@<2G+fcF; zhT?*jdfs}f9c?kT7%xT!6lP?UxY6C+nHGqdR1wL|z%?03RF^i+j56;0q${zKbe%&& zM4}@z6D@+HQN(K2l*S;d<@<1x%op|-7e8{oQ0Ov0R+uUAlrl4Arh%N`7)q0wlGcc+ zk(p8w1(u&F(w~q1J|FgX9QwoXCf&@j5EJ+8p_3RIvw#3@B@7nAClfwi!*d9qK)9jB zq?2>#vy<%L4qQjKRljTD{}4Yc#E;S0(aj*IcnybTW<$hgL zMfyTYisumfF7;--A-{6nNoJrfvQq%<;sMk})YTwBpkN%+crGqYQ7;-`?#4l$kIR(j zb=+W7P26y-b=;)X#A6C^b1M2kL}2U}pdIEa72sS&=Q3CAA!_FZKZK$QjrhTjfRx7k z45pfgX)JA`0p=H{vBcwM$VG@D-&B`0u5hBkB2*^as4sKkQ@*HO>P;!NV*%!JydJsG zi$|id02;+VRptW11O`Of5`jEGO9@45)|5mYX7_l@XUd}98O$BNdJTOdGnt&8!Q{gt z#2LVBN9Kf&IpALd7h0wIf=Cv$B4Vzdxkl}1jJXDxG@A135qby@dLrou$T?oM7knR= zidc0;ys;%2izVaNn<`0`XbVDwg~uX_qB?jAO_Fh>%y=^Hx9ruqr>Rz7gJn>$X_T$8 zntG&tud&hzmXn+Snaf2zlDyF*_yIt;8?oYu?MMr-J)d}ra?K1(ebK(CI(QV#Cp!Ta zrFhc{N7j%4vk1}EgfPNtgQ*g%WS>|H<5OzFNLUR_R|MaJ2=Jc8`XB3%i|0em(FPss z6w+mBV|mJvbXj6YtHna#Q`!6#GYx3KitYQ8!yr(@by zpH_7bYIv^mZWUI1%e@#`+dZS2zT(=Cz)(s2Umb58=Xk+d2t*J|m`BB6u?q_+a(Zw! zYFnOaV0@uZm7w`e#%6q;ijXj$LE zX2;vutaSpa?;<*x=q5sk+fM!F5ZDp|-2~9~TwX=zX7q`EvBsYVTF`?6nU}D0ZqSR1 z9rU3r(KJs;(S|?TnE=#WDQ(O26D$*OE5T6&$G7CFc$FQjok6&GIRv5Gu+bhOuM-S_ zSHnRDAS>9?39?c_I2dHbG4>EUa)R@TF{a~c3iO72tpCUoZj+a}0Cg9_{79Kw7Af<} zqGf(rEb|2kT(2JMo#!?D>>%zTWDs{siJjSo#yKLkkQ^s-2^s|3!~R?~8U0~E4(?C0 z2N!}d?y>J+2O5fwj>2m3KWGzN#ul8Xm}?5zJ84fE0*H{F6weU|UsjKAB+2yR~)6_t)w%d^7c#KIb!nu1;G#$ckCgKRB(}oVWojb+4VWlf{R%Zz$0ON z3~?Y$GkZuHVEQ6WbC`l*Fk%rLtzV-%K>WlFiB*Q>n80s|X^aVCMcOTb9*-h%H}2hh^_p!|VB$;)^2nwLwEP zVr}jyG38*E+;ot6BT}bbk&K9wcpu{gUqpA|e!SRIPaf(i(-ozy&9%IDSIyE@lwEP! zC8NRBG|f-Kl{c{~3`s>a87-QLE$`nIrLE0PeebRsrK=db;^a-n==3<(eka(?uCP_D zh$UlYkT|#hNmrD%HrJHzN>9xxPIV&|8_reAjOS+N8Hz%*J9o5@$<}m|VgE4LgKMeL zsK#V!RQ+`XOOho{fLQWC_y`D7Ud9NIdbb)g;$Mw0yI7k$Cf~m;vzE6Gh+YnP(dgx- z6;U}3lJas>il}s%d~5^L0RyPt?pH| zkA-`M{i@cr&^_tnt??&?ue?}_YzzWORxrz5_}9WMm7&8ynLE!P7ZwQpd*s#_?G5|fj2=NEe9u@tJTq~Td|Js zNxC)TTS8EusQ67M4J@-%|6!ULckp@UNR4lJBct=pB4esUq84CB^>XItnC@(?=lJsA z256o6IEvi30zK+yu<6n3-M-S&f&0;OEQ49&U1(=+Bs1KHg%k5Hp2OJ(_7A*QQR)Qs zha;`hD2(8K0y99N7Hjj(V2pc(11T)Wp8yFbNjC?#04R;di{ZkK_Jd2}OkvJyX`^#o^;T=3Cp|2zAI9%)KYYF7M-t~(i{u-EXb7?I1aJyBr zrhYkyd-Reh3@xviIi~#r_7Q&J2>dI*Fq-I>|A3bNW4|EKTrQOF+&bcPd zQMQLD->c@CQhbCZq5Nuf#Bl}r7ehYw(Ff0`NfoY11c)7X%87R7PRPpxK*Y55`O7EocU?nV|m+a)cUM`9K*50 zWKfgdL$@$TA*H)b73P)#qlcRjj9y~j))6-x`N?E-;Jg;)+SN}yc;}#n0*I~`oUK*CD<}%#k z91EV&8*;oro`dzS6#EK(?0+H;`*Cg*a!0ZU19Ph#!m{BubcoH<8;fAsQyL!Gff<;~ zLnsG}bspy23F*ufA&lKj9+q97k;9P)c{rLOEL%mxBMvjLc+J4#IRhKlh;RO^U8Ar@ z()93Vji!e%O%Gw39>O#|glT#R)ASIg=^;$hLzt$AFij6(njXS5J%nj`2-EZsrs*L} z(?gi1hcHbKVVW*543Ry|ZMfndJUQ???4`!XWg8dws`_%Jw%&LU9CMts||*G8QN_yY+Y!%!N%iGhQ=FI&S7v^;kadPq?+e5 z+&npMRfx>x@kCV>4=Bj%HT)%isDr7*v!#=GiR4b^rOeI2EL*VZlOS<7u-U*27_BD-e7PGJ24pC!mbPkx3EKlY3oj^#wXJb<%hAC zgc97RVxT1tIMRt#s`7^g1Tety+1^Ln&e{!2{q$ygCfhoi`@M(a(@vUu5V_iPe zjF-4_1U5^xry6{lX15EWom|{bi%mUL-`gyU$@Fy@=WHl=28i(3nY=`DD{yJJAv9Ch$$_3` zFy?D6Y?R0#3InEu;66A5Fd4KVw+}o6<#ny*7Y#H^&00a~zrvxWGAq#z%BsRKJ$4-6fA0GC1sLNuM} z8gxKn*a3;!sk;VtNC&Jn9k5b6Q+oM`ow=XR*#NSgd4M1$VR*Xg@KkR);xS}2_AOq@W9jy9t4km`q=VH!%9=fjHl zHHYc;B%uAbr9Gb^eiFQm;DxVgUg+x$gxRqWj3N&MPv8lSUH=_G$W%`KAUX#AUEuPB z2G62v^Cv-&nODHb5&V1L)=zpK0feW}PW^Vuaq7Px%E6PKy1X3NqV#i|qg35ORR$F2 zFP`-+k5Sjfi(~Wgu9w?Lq$an8m&^~* zDz_P6!vppZN%`B+p-sea@ZC=qBDRq9p*&wFA$t=J1u4D3=2;nTLj+;ojVR0^K3Bq+ zj1)|zf>vox_^Rb7l53)J;j# zrL}0Q5B>xT>cx+Xja_b)jm`LHqkoGzCn1CLrk5SwU5a+&IJw7k4L67Y!HR1elZ1<=m9?|e7 zbjCpnH#)RfZ**=xXkhg|R|Zrcj)`};MshG1L-eCVh>er!<)@ev>HS9CPd zPnu1d$-^F;%bBNiPwA?PNKugT9U|&hPOW&jM9%V92#^w(D10BNofxhN&ok2)I2KfnmK&P_J(P)D$V7`rnU$k0|ZyHRT zA;-n_d5$JP#7{*8X6fzuk%W6WMd4tXqS)1XImR`nXn+eIdEt58$3VsE*h@M#H+`(Y zMpLdb#xoxqk`T$>h;pYT3 z^;}hsP_-EUGP5s2&wyz~xY4KYuLO6E_&x;&tgYIGdNPRX%w%9gy-U;a8`p@IsDlIB z9;hGJ?sv^$t#(TuqkZ7x&ZFjCD@SXzAWzHSNYKTy`4a#HaxtfJ4D&g)MjG2gRG4o9 zc={H%CVz`7V~JgrYN351bxh`G=-7;h84j+q)qd>EpUg?t2rcnpAcePrL zlft&f(aGr9YqaOr{H(&~J3QPk7qmVJ9VQAWU00fa<|r<~+ms)E_rQUJ%-7vTnvSck zh&9$50eC+SkN9Lns#{9&9*};mjP~W9_!*fkkCwSjgVhx!jh&`($;}msWMZfl8dNnO z2562z<$$Q9shVEurtxm45~npD9+C~yS|O9j#)2eEu+-q$p6&%N$6f188ae{C#qs5> zU6UgXAuoHH3S4J$Ze|#rcs~xe>pbqon**r#R2yOxYeO>gb57dolIlba-)pI;+}uw1Oq&$?}3F<=T=^@3lXJ%UoiTMIZntFPt%F-{Bp^^%NKp4y=LL zhs1L`Niy)RBKQixMd6%ZZOM~gZN+()=~e=Nun5N9o05f&RXz`2RRn*i2&N%sDV9ja zJa5IDxzTMq%Z+v>% zGTd1P#$ZLRo`p*mAMuFYD4B% zsIGwg3N9XvC-QyGf^58+?&4iKc*qT~*)Pb+lkuv_Q>X~v`ba|YmT$n3JUiHg_`nLE ztcq8a*m!faI?=eo_HQnYNq7ZMQ=pfb0^2W)$-Rv@gJ#$v_>PRsX|3eH(BZlDa?g|%s7cB@c3gPUJvGAxtAfn0*V}fFtC4A#bu>|0R9-vcBA>FJIw>`C}~N z2(wvX--HP)lMkrUlB2P{fz3SQXSnD?sG5>7SO#@ z{7T@MWx#3j`&&V7ZAEw(;Pd+_wxm?ts7%n(brv&r@=(d!K`s;U&y2K*YT=&6Pe%0P zRekSL4t^Yw-1eX0^Ho>f2?b}rhh3a!w2N2Rf#881438-h*tPHce`OR|4>qcbMo}P) z!XsNkv6z=R52oxfX8dlX8M^m_%rN6qrmp=|Xb0cGQvCi^7+?AE;f$soyuuCyGVEYz zYdbFfS9Xx~U^|!|auf(V@BoKUOmc>o!5z1^gZ0Lq7e?BnwRk^!ZoECT$5CsbC^j^q zJ?8ZRoq@11W4ej&n`IAiW@56$_ch@NDIaH=9?WFGlQnEmc+((^@wv-%jB{-|3VmXX zl1?@a3*w%v5qhPVYS%OrZb+7e$>m|O3*31-j=%!1a4wk(cm?F zz#iHIh+pUuz;T1;(XL^x=D=-QbufD*p+*z1SEmeT;J;xGZk~nfqv*d&r`=jChiR|zeM-U$F$r}fx(l5RJk8@`JP!ZA2hh(Jveo&Q0CksnaF|Em4o2P z3-@q?+vG&B3ws{gTw3hbLOv`*yW)e~rVvpjVAYe7Yt-E&&4IP=Air{O`wp zyp}S?aN%u#y28=2OyyzkSqWD05WlttpYS|913Tx5opg8b0&Gd(ae!U_Ux4_PH#P`f z1V3oF=*Izg%rh~6es2#k{OW&;%6-n{eaOkgM~{~GD)B;*bSd9M^Y+D~P536-G_XF4 zwYeU10N-GnFh!L?4SY^erHhnf@wg4&79O=lpUZ8^-+AIRSErFSZBsj7cT@mzPGj+jjN|40kZjs2GQUZv_LShCMstZ$ak*lfj$ew z_n$)rA200(Uyg`9gbj|6en%1!yB@Q{o8naAeQp8e`>KdZRtB$vt!9nqxS4ac5tI@Q zeh;$dhz5TEEYCbE(Jz$7d?8ct8tD8c6V%b)tC))VQ>0#$z)3z=d+49bLcv~V@0AUG_Rwe0=@ba%jt4@C27hKP5*Pv9&j_dI)YcKdel!)GL2a&yDLbErb!5gf*+0;Swn-t9&O@b4L zDB`bVJDvB@j4FOD*khENTozZY&=H>Dvs3ELZ?j@UUXMA1W7d5vbtwG;a_oAfcCQkv zB?DD|&jwHAum;j`nZHqkd#FL??*y?457z`I_hleRenVd%afq1y9@bU%(7iyK#@N+4 z0=V2QEM(N*{@Z8|QEKoOgih8H`0&`{cZA60gkO|nZe9R;7KzWb9XpkcxJNhu4*6~y*Wi==>gj3Mzuxt0)?PoOI^tg+5hzgxBK|;a#!V_a z10jlfR#XR%K!~i_Sk`e9e@yuGS~B8I@KIL%Kj`}}66Jnj0(3bQx@267$D38T`%&XL zxv%4*{ptnpphdx%kJ1pa84IU6jlOj1;YNDrKcy9gdl~!;Lg+*%I|?3_*g}0&rK^zHXpn|P2a}bI` zw?NO<%a9JynyTjMP^2Dt$FrkDH0*u2qeBm%GRMLb&`1P>BW{#{UW)-;^x%$VjSC6JN zEBdzJeP|(WZLx<4OVBYhNyR{ZCHe~LuSzKo#7>`(y9q8`c%q3fu!`Y)F zpsiY=>d(}_t#ZUEs}|2k-7Mhz{{9hjd-!EZ`PgvpS>yMV!~m$bC(Ym&?b!R-_(MD> z46K6VRR(`4z|dHJccmOKx{{xAnTqRl{80qPN7}o%`uIag8f$PqVBccL)%WbLpnMvo zr}hiw4WYyxQbs$splosucRY2RlnaHj$vF*_0f8@)GVWXf%I8qV)kDr*XthuH-vwt} zmALF>oRkZsTrTBiDesZ;n5jSUFzmZ-ATY~^soYT5w#HS zq_X!;sXIlTEA2QBk3vQdR1BQkP&ZwjVXzMgwi0`H_Hc`Eo~14j&O4><9D{vLu=Q$4 zdUym_M760)1ba%bjp~Dfy((C@x?Zri1=|W+saf1+yG!x&M+J*MhF`3rX4R;hu5JQG z&Pl@gN%f#$#|ZWr^-IA{73>S@CGqDug59UESwOq2V91`ZrCePu*w>MdCaB*#Q!xsE zab}>bbdN<@9eD)h*vMX#hev+G-XoRZd@XVe%6B8jqg?21KzW+ifpVj_$+FZ(yxk~o z_HIPE$GZ*X-QHa&zv+D$<-_2#)Du#^h;p*}yOfb=hvlghN=v;GjlldrMq?-sL{lh} zK4sSVV*yX~C!uWhA3RSv`D<)WB7v*GWJ6WB8@tUkwfj@*dBuME^tahm97PK7zyn1+> zl$WBMtTwyk*PI%rCX>|%A;(fzC34tK+?d#9da+bZDd~ro&QO**vh;Ys&83Wo*`=QY z=P9Kx!2^^ql5~WNclv0KNj|10iLX0D?bLU-YOsBQlA_~nMhuavL<;I%CSlMd{S}-p5W`) z_6{*2nX)L&8FTXAN@ zQukM!gYw~uPLz*T^hPGArz_4!`AWqlDF0HSXYOUFy{d9A#%p&a?fs;bcU4m6Pbz~`XS2wl>hZ|o_yYFhrtXT!l~`TxxiH`p&?f9Gb<*d7NrB7&(tq8w8^V&jrRG+zDgpcy&P@ z>$i?qyYkot)@*fc9=q5&N!_F|)$Q%HPF8!0>RQ$3P2C{+o1^YC*symcF#VxlPO|2z zKjzyt;ykmVNpw*YqF+PZJcBhxAF}4Dbp|^=`dw?j>M_{-=#Q)g>a&7frp}1&v`$yg z8f;Vax7IRMj_s0Cm#JLzHEV@xHQ060mDXyt!C-p?8#dTi1iMwR9qNk68{qsQZ!ECm z`epPV)*7{6upRK=#n#zs`3%nZ>~quy^Vre$I(1_nJHcMBewN4P*=_1+!FKt9 zztY;EUNP8C!QL>~^@8!6|LEQSj9_I3`;uT|4fZ3!jxgAB{;Bo`)o8Gn{bj&rY7FyX zB{27BEpu+{Y`a}8(U>|twgFhJgyAlKeQcAxQFRKoL-oZP)kZZ_?f`eGp;!;&560l__kNYSTrk>jvU8QXMKDTP z=vo7G!_vE2pE%_=67T=#d2IznU8?vv_7!F0P%sW!pbZm0Dr zwX>+*rxg+aK9{LG5@$QNs?mb&@*hlm*!d4N-_-pqu@%@FQ}<%xW6o#QPE$vJepW4+ zM=83$+f|2PH~7m-?{#ihn*@6ywzl*n>vq*G7OQ40_0iIYoIBKG8uLF<+GO3S z{$T3vD*di=r)uJn2K0QObgJ_O#h+v#c17gJ&fRLR#vpT{^F`Gy*e>=f2%t?y9@!Kmkp;5;Uez3O~PEz_94sq9VX zt7?s4TC=aJ`bCtYHT#;HuQAc=>*^`NcKMmI<<KN^n*yxqRM7?44EI4bTVwFq zZ1sr(H0`|7l1tlOoU%Fl6sq;_e{f3AGceN^o>*tFzI z>rr)s!H!Sv1a_-njL6;YV`|%SN+I@f_i^>@Gl*TM<|prUpH?k6o6=sI>O7CUt2+Lf%+>`N{7B8-13>b|&`%+i$QNlFO}q zYTX*vy^Oa#e~P;61=Ak!LsIjQwR=S9`8G5G9s=Oy)1!F0P<)ZYbT zySJTJ)CwM+Uo3Ag9htNMIx`NT?X3*>^1dqgIx>G z*VPvc#x?aX>Oq73N9qFSP4%R~zLrWv{-)kA*xpoid#|GMwE4n!Tyw*9&xPi8tkspSrONI#$b_(xe?!b(_o`2c3Lqju}=4J7_hiC(O^dd zE3r;6*creQ)~N>T09IwbTc+o`0{{gMH;TgE^Hut%=r+8uJsC-*qQhKQ~xS z<(-j9*53_QU-=N~D%(T~^3oSkSF15KqjIY=$=YP@ZYkF+i|b;~L*aE`R@G}!#; z6!$3W+j;EEkp?TVA++ce>|Cb{_Oex#XjD_I`3B?oO|do`jIlJu8a5cmVTyIF!Jbb& zA8EE;FxdF2KSWxr7Y)`}bpWR!`wg}{HOiY~rP>ufFIy|CCU~b>l?Lmqn&zEhU1qTD zRjuAx)^!Hkn>xii+q%_YJFDJy&aoad7$anz^{l}@Qgynw-kP{k_wc!@H*DM=8tf}o zXX6}Zp}`)h>h!v;MFxAS>J;x>Yl*>rj~>pm9u;hddb_II>#=rsP$p+w;PqOc6zpYd zboHRuXMNgW6RUGxzjd2nFT|Rwo2;$Y7j+%(3Qhv{Rlz9bGHu9Ta}`;RE3n9=TLa8aI)4>={%>F`Tm;oCxr3VknmGC%d~9~X(yv} z)F~)kbq30aT8k1->uPM=18bdiD{5$~kArTh=c{eN+5@+M9%^0&`L@^?QZ{<5ywivk~+_f=?}mV6qdIXKy%wr}A9Mnt^|eh@*4;*^6Y#ZQ19Q?HAh zcckP`{oyxtrELtbt7=eUxP?w0N0Dx+TA{T1gjwRZ!Gx~$)IL01C@gK&TvYoj^vly2 zmeezZ7vXu0rL-m|2>&Zlwp{?&Q7eR^`z@x>^R{Xio-UNG(w-@%A4(~3;yIH@F6P&@ z=Yx*34wRnAj2g}>L9x}<(u!8t>cfB?bpuLQeWHj?{VjEeP^h`KH1zP7g`)e_oEp}g z90gmv?U+%}Ji1oLm>!Em>Dsr&bnR75IaG47G%a6iqN9s2Pm`$6{m|JFdvy$i<)K#S z(bROpj>L(peo*9%;=Z(Q&q*BW9(7yBEl(`jJNX^;I7(OjM&uYCp}!{dcMhS)#*lx^ z7|zGZC~egQ3eL@nB(rzN#H5zVdE`iZx-yRBIV1j3!M=2Mnj==Qv}H6MGnzV1v~>$mJJLEmBlIlzpTIg+b#CD(@H~?}7Hjg) zHGjX_Q=ywDGdi5hoU^u>vsyzvqiKsJYmHqL6=59etfe(vQRI{LV*4hP_;#YunHj?Q zeyPx}K^ajWN9n0sQAXA6D1G$>l;JERr=!T}3TH$(J>iW0o1DJ-66C~`)>Ds>mjBIv zDxd47t@NtLn8(Zoe?zzoQtq{WGj>*VhkAMJsrD1< zPh(Gt#w_l|Vv0PKQa+*H0sT%Dt6dX)!fL5qAAQQ2U%L`#1WRgzXstRMaINaBy(IdA zbxG~p&i#gdMeXI$d)3vow?to1AFbUJtyG__{aW-U$b8$WR9Dn~J9@v!zhB*3`xC(5 zKzXP7ZtasOAFF)|lwZ}p9-XLOt5trJ`tRD5f4_>>)%Y){WZg>ZepL&2BIH~iZBi5K z4mcAOPpBVOQ|i`7XF~E$>tWSWbG-j&SUS(2DVz_BZhKMN=kHa^>ULUt)p{wrrQDA4 zE%D53(QUqzcdAdrS$lM znhOc*q?b;S^Dy+Rjm;FwpRI4YlL1rypDjK$d{`tutUAXnx1JE0$BA`&t<1OuF~V;< zEHA+MHP3wKs0+vKv=$4zSnWn%i`8x8mc*`9_l!FOE@zO;C_Xs@3CjU<1+$p}=37vQ0NbQQqDk*nbPpIFHd($B$=gpCRd(`XW8u3mJ zBdtfIW#Oe8Vpofot`?tMB$Vrga=lP`gmQ~eZV^gWBwQrrPLZ=yMaJJB`wTdL68i!; zUqs1>nxn>!-wzwp6TeSl<36#s-To>l4+`Z$p?pu|e9yp)q8{~)@%P6c75bw>e^mH) zN{L@8z};%My>I;Q;#=*%jsH`8hxBFHdy;b_i&aJX?f8|TI3@Jq+YU!LUb0x7luiky zx`dRmB~Oa{XQg}+y<8rBR>~*EGf#>R&kFpkz)y-le=Gj{t$68Kq5MH8e-H{KpIh>V z$b3Vjy&)3b5YB%H=Rbt=4Uw6Z@+Nyr`Wq#;*}3$?CG_4CC9cdw*P>Rgb!9q|*lWEr zc1j{4^n`U?`UJqtBr)~L^r}Rq&}*fvv_6x*JX$MlE3G@zDgRFKPp!q6nP@SeOtd)4 z_uAh}Kb>$b&J@>Tbh*}#)2}C*M9xf8vbITN&J>wABZbVF7RRVb+BR8Ff-+n5oGq

    RNTL?c)uSui`zW8`U=fzpkD^`G$HPuASUt=92QL~XFnL)mHdqTFHypnuQ8cLLQ9t)v@Kk6P6zAD7xEQ5#Xewnl^U ztaTX5=dD_lzm?kk);Pd_kn(j4?}sYiJ`d#@oBgh{+3yDXc&Aw%p*~;QjK_KRqC5{8 zHsjgp#{th!52HLmYEM)90k2SRqC7{vi?TyS%PtfCw9QtnQqHq4i#%f=;j-+ER)D@R z+7bOw^p5BcqrZvP`bYVv`W=4O|CE1^|1E#7{};a+-%>p}c6MxA?3&m|Vz0+$$Ct&s z;#=cG@k`@Z$8U+>9=|vKaQqkX-^AaHzZ-8UIj-d7l2s+!ORg-rt>lX(Un%)v$x|gS zm;Ak?Bym(?PU7su#>CddP~wWj#}a!IcO)K8{2=jY;x~!EB}SE2l^#}la_QpIvr5;O z_LuI)?<89oCGG}Xtot6;eP4|NR1T;X&z9@3FBpga#^Wh)8eTdAyMT#U{U^g$N2)0} zfq5k|9b0T&j`sMy`xCr1C|kXC{{(&|Le9ryb2!;OWXObFn(JIev60ALXJc)fj`D+uW?Nl>9&Gg?eB0YrAHj~!#<~9qD6hxP4yQEuHWc>%Y7XM!7L@!o zuz4tN!<*o?x&z+S%*a<<`0I$UpGtsX{G}Zi~JZ#Xoc7Z})fj*ZD8`(O6lmEw&}r zAG!a2KIH4U zgZIK@&s?FZF^XewvpGSfHT&$PLFZsk*GXz=&=)k%>+0z4X>3dB)smp2ot;of`v9Ca5C5JeUT^L=PuH*9-rprmJ*(RXx+zH0=e74|2M4-3L#hf1 zr*-#r=8+X00h&vhXPna)^lk4A1~Wo7(h4SMLcxI=FQ~1JDH=g_dV6nIroX+zXvWZZ zkHOF_<_>oEFf@u87Wek|7{dIZW3acYFRMMRD`enxYa!&jTimxPP`#OsV4$aaBLrl! zUA=1A#&f$m^f>7FERMo?-93mT36z6Ebp%x{p5LA64>B@rrskl?96?ouP|;d6FJ7ib zgp5W^z%1w+>^15(&kK5bpfBUU`IN4{u7U0j9Z-yg4b#=?_MX8mi2(_-_5sn!^fJG@ zeRE%s$#!>y;lCmq40MGij&vscz^RLQ(2YQ4SfA3BE%t@NOZZ*wy{fqbLKOa4RdB0} zIIC?F=iU5nQ4|wlLyHQ9t4=dy8MU~#eKX{59Nav=djLiS1KSmH0VZcgsEZ^!n8`mk z=-jRr_hqsJgCccldw)OTf-chWDj;V^KJYV|l%GHuT9DU+EhVBeYEGwyOjp{-j9SsP zb+D_iqicE4-ItY#xH1??)5G4S7PV(EFoV5)5@Ns>^mPiDcbQ2Arwn#?s$OI}b%A6q zm62!_e<7hsl6;R5E{r;cxX1}Ks0bAU3o}tI5Bdjt+Ou6sde^0xth##pv)kLYXb00P z90lX=#Y?&~SqUYbKZ+s%jtbL4Ms4oOw&}^P%MQs2lAPKGncFZgF`{JC8BeMt>m7`f zhtpJ;R|e;G^+}RY8th|DR;YSf7irWhD}y#|N!P~dEwl8X7eM`05e%OgrTH_)?-@m< zMca&O5A$3bQbd1OM&aA7J?)unTNWv`4Oy~lo5r<_VhS~sjAn>S+s_RKR(B0>ol;A? z`w9qBc_B6G$dd?Q3~H}*iHCq{Ta_5wH3Au#kqt+f&%*&ah^)sQLw!2_*Y#ejcWMwoA_vSzv)PM;FC%+m?3xIy0S%X5wE>F|O;uU?>C2!0K8f zfZo)E&73YKd7as{$z(n?CzI*w-Pp5ThPp_PLa2!o=LLh9wA#_H}CSFqe$9To^~JL`B^jdn9-@tVL?L;LwpGb?rfp z)ct3$laX*?{3932#KyIKGnTlOLAJd|LXfVT-=1w>p;tle_hO28vq+TeKMdQ!WZ~7_ z7qb;nghT66%uz%Uj*(UtbG}E7w4gBu@9?Bu8zW$Dd!{%-3KeIz_iaA3W?6p+cY$n# zB}%>FV7%qk&bK7`sab{6> zXD9RWAhzzvN$rC@SsAf*ZXhI=EC+}QC!0|Q05%Bi16d;gV#7h`320o`wr;G|;h+!5 zW(H}cQ!U1hz8#wZz2X~$D{XtWV++!Z$k#oFIghp|*~rRVQ_utyG*$ff;ITbZ9cKI6 zc7FQ+vVMq}OwZ(d@cvk)*Fi){*deFRsKsnTK^z~_Dx??&#;^;WMl-e4t29iNaV13ug`j$s$xlqZpi)oC zv2!ryXCk`@fi3fldK<7ZpJY*z+u?>xU9`^>ifj)N&Z$OR#d#?TQV-hq37Y+HM0XTIHnwywU;wv5@f zYQ6<+OP8I#tgWwWGkn$7ooU;m=dpBcD%-FnFgMk08P3@eO^a(GU$s%GHr$ioo>UKi zVa?L_tNHAuols=_()Mi#zya*=F}?#`ymiB!0Yi(+kIt%dv21r1-}sJL8T7=@2MVV4 zh&_LC>Mf{MOwHdf7ZYV-hC8R?3aHk@&cf*`_vA>T*byRSSK9a<-p(5x_n zuMAYNDdJM`@tod`-J1t-^KVuOjN7Kb%*{@&6(jIf8Dyz>J?(=TwLz0c zj6e1q1Luvr(OcHv)u$b#RWh({oWG?s;tTgdvXy6Bk*}L-kVF$Og{4ncHqG@ub+V$4 zSRgqB#S7*Lj-pkwh_8q$H-<$4*oIhT;D$k~Z-sQ!YML3RUfG^WDgbv!co(JmGHu+l zGl^(x(60tKT?EoOW1bF*LY<79EUg#}T#2b*VFqEz z)3K}9ex0B}6n7Oc=oxB_W034BB)oy1?U>x=9D}rsIg-@JBQo_1{V)gVQ7O<0QG({O zxUS&A7CP6r!2gp?O<~JYw5Rzu8|uAAel)R!FxK*V0-rN5(7v4~29m^BV-B{=9dKrQ zucW8W{JE7mO4-O$s$P9GmC>gN{o(1h;6_eH^>Aem&%#uDct_h^IN`zpgq#Lr>ELw2 z-aLaN74Fdu1raI~xrTSixaIBc?P^}!holhnho{|Y*;JjG^OYAT3clTkdRXDTE=yN~0!7w_CIT@ArDU$&H7n2Ehgd1*hsPnLZs*M+@ zP3XIGBRwhP&S}wRM=4tRvi9V)qGW<7P>gL2gEo-sGTfA|hwAjd5P zR-+Clv0+fjEm(UvjnPf_=Dv1515nsA4oCtbFkR3VDQ9T6m=5wAN$o_5HSRjXprapf zlGvT)jn<}xxG|K|dMyKsq6XMPL)tmCfR(sN6|Sa2q6M?BleZn%1CC5N*g*_z*SSk= zLSHf~VXJEI*&N_7bxZGJ#2H75StUFoTG^fL=_*9>yd^8Rvi5Yh_Z7{DkQs;1oj6@C zu!j}%uvs7I-n^x#3Sw4wXS(rx=L?CNRXCQzmz&NO5@RBi0;>CSF1)Eb@U@#%n^Oz|YM zs9GN}%nSPPFiLNPd8QroW6z4a4=g;{?Zg&@FcYj9yQMg~>l(mmUKcin9k`Y4%C>XF z^@?d2izq9x-OSEtkzT@u-)tfB=X=-z_2SWoPG|+u8I#s|xQZq5d>kRmE#Zj8Qmq`= zj@3#YoakD)17h0+n37az1v9y>6DUv1U4UbgWoAhlA$-~8Zm^!0JVIZ+x5~u1efrW#ItxJYSOv?rq@DT-_ zD(49}%?KZS;ntzKL!LR!-HvA)>_Uf@WQ2vmKrdoa_9@5C?Z%MsCJb3PD<>ESk=U4b zt7cs%x;)6}$6fSc9zpaVsynfn!eC=A6r8v+pc=Ab;^{E%oh6bA>WYFw;}fN>^Ohlz zboU7;8bPyTW`+>r9Jgkjl&D?9{i-~C(@*2*4-M&R4V#pL{Ko{t{2;)b4n9i5W@fVt zTR~+ryH{@E62&DJ8>ntR#KX=AseHjUJiKAb!(HKmzVo{Wf<75`V|?Fc-Chh^w!(C- zmg7m&COF@0r$SUe#xA4|ng^4oAA?ObALT7+-yRh2O*Ag6Q|O6sM~)-kK_vR^&GQDf z_h*C61MU4=wyUM{k5>ALglxj+gsXvMK>sXU*^G!AYXbJxMdmF@_ulJxN1Xaso@J(VYyVRVx?HlIYc`(xh9i$&1?i zI&o`D5x^D>1igl$RaCKN)vK^SQfkEth212e0B>BT)h5-AYZssm_#LBZDu=gU(%=k0 z%K+*Fl*P4Iwd2~Mwg7HN4HjvU(gSH$+xyAfqz2Hw7i}_VJ%Bdtg8h5))zR-Kzk7s^ z?da!x^w0yFI+a@ceyz5M1?265P8o0qurqD!Ps2BZVsn?;ruxCt0Sx#U->;{dN$*3swSovLo=%4pKDL}}CUFY~dN zDbhpJ2b@ zw1oC>T(mvMgC~cd4?VaoXEtNBQ+)r=+NLEs(ipGP5t|C}vJ}#@$SLe+q}OzBVT6X` zu044=dg?{X40LQ4yGOPiG0ri{XP!`{ZTNMzKGRlSVpB(#HEwx#_{7$`SKR%;tD`>p zj`F{D;kwmhWLN~Y%Euhj?B zV!JH06kJwnPO24GJ9$Q3MDSIqwIz5%FEu=zT2+@?4+#RV_0m>qX=+8K&q`Qd-%skHPC9(20icD%Ys4EB^K&nPEkp~aw;+U}-R zYMWb+0xrnnZyPCDF*&PivT#xv{(Pq%*Lu7%?3LM`58j+~kz*HSb+vLy)d_8ZiynLw zWqu599o|91X$hfiA&}L!`Kf*gn~#QmYMYc(?cF>XPf~QcLPmE6b9@ zJAFUxT7FqsveQdDmhYE|!ZVZIbat{kHGDZF&I-j#hl_1Lm8CKS;BY`ri=wbDHOcqoI>Gl{ zi=4J_VoVv)@B=>D4RA|DP&)LwjA#95pYW&bB(yp$CU%-r)EK4D>c)_E5Z0J zU=$*%3|%5{T2r&kbtam2QVlv?n#{7j2!50j7DgxtcB6zQGRVmdA+UvxN^X#H3q1gs zA%|b=V!93s0jXzpSndP6jr?qXe+wb#=N8AXUde#bG@zb&I)gv(Ps~<|6Ua zI?-*Vz&#AAT672Tn8nClE@l<3`H6Kc^Tf4+UV~`7mU3G4D3-+-5QtnK5#gXNHQP^3 zgw3gKsB%!!cMM`oc9`jxrLqvsF2(mca3wWj<|fyfK~1d;N4G}+bQ@9_W2xErV=orE zqxtN#gb_(ipbLi&0Z2txvY4&M(-)_%1D zne?V3Z8R(dS?rXIne48M5Ti#iQ7~Ph?wwlBFNSZ$7X_3%tng+zCK=~2@H1D;na-(? ziKMny-E_gv9zTBfd9PmBoZbJ#e?I!r{g;o)eys7n;oF+7n|aDo*PD3CcP}p6^6lXj z!B1zO{LQIv?cM&9n|2Pqgdvk%Rc(8=0E=QgQrcrAhCSMGp}Y(dFSc3 zj~qID-zmR5@ap^$}ANqOQ!p9DzZhL6kZ~vsa9{|?G z0T_>ds%tbfya>95)p;l$b!n8b2s;2bYNfi2qtaTBt)X69jT&M^S2F5|pSGs9YBjdT zqHY=1@olLrRa^=bQH}MzYizV6)ufs83wxap*5PY?BXhfp{X!1Z! zcqp|a!eNPG3D{2GXcI9-yD&VddMyug;jL5`GBMl^SG?vi80u=N5qC*(rq;L{wc}-e zxSm6@Ea&E$MMJn#oPZ@AVPAnEpkw+SOnn)Z9Z5YZxFX3{C3(&I`Z_#ZLgjW;Aqpxi z^a2QSNKEb+V~B)6|dyOBeYN_I?2?l{Ur?6kr^%Cc%XV%y@- zpcPbX5PTA{ap<54Ss&KuZ3k+gEA}+4aYQ1n1fvp%vf;GqFn187+#B!@5@hy4WJI!O zs+Gd~VL+-iqEu?fah#DmPK2N9YB5kA#)#ViwLqrl<-nN`==MZ3f`kMD2F^}KOMO_%4?MF3 z|1;Ds(kAKEy+YMRlR8M3*yN2w;C!uzzbuJ$*J7YW!OJ+u?EteE zr#a%^u8oSHQcKFBG4>1fu_0X|!#yj`-9iEhV-^AkEs78%s-l`63>-5XEO)raq5EXr z)_%m~mWgyN&Dq8xKS8c#w3U@JaIS?Tv{#3(m1Kov7j>WywuD;VO5=%@GVxbZ5I{KD zR3z7F2JBMO3iI5mt>q4`7SRm(H*!At2BPs+t!Q;C$2c{7iwqPKGByx0PPe9pZ}pXx z+R>ie(d8q{@8||>!#)bR71s*{}*cTwKhvl$Uj&~f9KA0 z%d}~;(o=AmesucOjp+sFel^WTgIdro`X2sn=ej(9#T#>X?k%7B(y0#|xqSIEqyPF5 zHt9HiT}GZsXV!JljCFY6i--D|b$DF44$tM*_2GnXM%&SCc(l@m+`% zXlQsO2S*v-X;kVEI{6miZ_V>c{hb4BK7Y4o0$QzB;3Q!+PFc4yjJ0199lnVj# z^N{S)re$ z(qn)#%6Z`FKur(er8vRaC~8c@Br3>R4W7aoD;cJN`#Ag^gFoFb|IGnf$`hyoTzQfg zp7HSC$DoDp-Cr|$?ZJQiY{54KEu1ak>5WL>sbW7)!03t1sLg`sP+A(_!A#?PlD?P) zh$o@MrmLd?oeG=M7-ya;)1Uk-$A-|tIBU72Qs2;T`SYd!vEH-r9aalcc~ahqlRTa_ z7p#A8`>DrF@$<-b2YdTqU(b>@a}Yhn=l5wu-N;coxE=fZf9msX{qMfKF24)>|CHwc Lzq0=yc;Np67}5J1 literal 0 HcmV?d00001 diff --git a/csharp/packages/NUnit3TestAdapter.3.7.0/tools/Mono.Cecil.Pdb.dll b/csharp/packages/NUnit3TestAdapter.3.7.0/tools/Mono.Cecil.Pdb.dll new file mode 100644 index 0000000000000000000000000000000000000000..ef5c600cb54f09a258fb89bccbb9d4e45611979c GIT binary patch literal 81920 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ȯhAo;3+n!S*Ybu(O zY0XIf{-OwNFAA?O3WrILej7QmNpzN+~IdnkA`zru}S8`Q1O$ z6K4z_GWfP&^R;9ZRfnsufi2_-j{jp?s?OljXxajX$0 zOb=dTy24FMy_#?U%lQN7AZ9ZiaXTGxN=NMJsNR*1>P9*^8-|oYM->Xtlco@40VFNj z3eeDF6l@5B6RCg3YGJRt-L)1LgPLM?oFelH?JyLtwiz+OlOm%_i)ougOvt7ZWK$b? zV{z@srVwocIY1-ZjHjK-F_$*>&7mdw_@io$7uXl(s5{o)kPh8QEwUId{asTF+k0XV z6j~VbSuNa{^qft-aMs+DUcH6mQ(Lt1(>TQOsmvh8R_f;ML)#x-%dyS!ysQ{i`V>$U z)vsyT;vFZ>`fzqAJs>5k@PZg6J#McgwlnHBo+Kv7PFs-i=XQvf40{~D_b6T3d*n%b zk9n;3+-~)r8Cdkbk~QZ@WX8vP#o(LSk8lkyGn$>SlHm!mC&9r(0gPy+lv2FQopiC4jm(Orw zjjs7(KWokk7#g5ONRu;yR-*q-v_u5#gCNZgXCe4M>8T;IN}KzsXwkg zx_BaLJa0Z<;^9Ju5B%!i){N_JUEaYbH8Sp_x{J@QvmE}XUl|^&RK|yQ@fh7Z{F8IT z2cPAt7~Tr!m2p1Sk#YIT?up&|c2}JHM8=IQ*2c#6&dpVKEza)Uv#VO28{0LzuQs=9 zeDC7kh3a^1er|8oxyGrCYy62;sk@KV=5`LJcijDWr7~9KioHsuI&O~%@2gbyRiH-y zeEiPA%wb9wd`T2=G z3*+N^M<@1IC-#m(?|5Z)bZmZNbWgRqzgh#^zA;?$d-g9>7WR$LSH>%Q_v~AoU)(dl zXK`*}Y;kd7eq#T`{KCYXxg)n*rG$M)}^i*ik#l?l$YIS1Y{_1RXaRNdY z$E&qb&`(sxC-#h2#_-P7YJ2uBR`<=<78ggyW=H30`^Oim3yZL4Z>=)AueNv>4j=vj zhyREQkRpa%CPQaQbsOH~kYiPBTv*eduUU*C(I&cL#p0 z{Qvx;o=4n!$}|6CC&FD>C*~LCmzGa(E&GXcT)#7RvT~9Oh8MV4vAsL3)aHc#kJZ1c ze-e{8{QGNi4=28j&+BPA?qRz)y}W!_WA542`STYS7It&XyCwhr$H>pw{~!GO|Azw^ zWA1=+^^N$|J)Fbfd0)8F9pZQVRL;HQdzFH4WAwPE+)*w&cnZ7gNnDRPUAl0R=i~0v zxb^RAx&QEA^d11OJMgb7eg1^`?LCgrSwjGiX?_{7>RN$MhtJdN6Y=_hyZ(*n)dD_} zuX}8CBa-guNN+>36t{Cz(3*j!)|CM7$24eZ{ACn^RX$J;58Ra7Lf$03?mp2K6}sI- z7bJvRmq@42?CV4G?YA1K_zGI5m4D+!89shDck}Fa`}q0twvygoNuW>kpQAp@@G#s? zbJudxYcfE1hRY!`Tvfr%tCmx@=B#izfG9pq>>6p_A2#g1LT4L;f{Gi*wJZ2W-CkTj z2``3eSAD*J35xXZkQ1Fx1iT6roe7`hv)gq3P@<#~h_Y`^(u80iwHlN){1W*hTah5tB!BRSVYJ#Ihz$DuMmsKb9P2mU`T CvfCH{ literal 0 HcmV?d00001 diff --git a/csharp/packages/NUnit3TestAdapter.3.7.0/tools/NUnit3.TestAdapter.dll b/csharp/packages/NUnit3TestAdapter.3.7.0/tools/NUnit3.TestAdapter.dll new file mode 100644 index 0000000000000000000000000000000000000000..a47d96d5aa828b1429b1f553708e35b700f0bede GIT binary patch literal 53248 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 P88FzNpS<*J=J literal 0 HcmV?d00001 diff --git a/csharp/packages/NUnit3TestAdapter.3.7.0/tools/nunit.engine.api.dll b/csharp/packages/NUnit3TestAdapter.3.7.0/tools/nunit.engine.api.dll new file mode 100644 index 0000000000000000000000000000000000000000..7ebf561132bb056df23455ca28be8697fd0895c8 GIT binary patch literal 18944 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 literal 0 HcmV?d00001 diff --git a/csharp/packages/NUnit3TestAdapter.3.7.0/tools/nunit.engine.dll b/csharp/packages/NUnit3TestAdapter.3.7.0/tools/nunit.engine.dll new file mode 100644 index 0000000000000000000000000000000000000000..1b762bcdf02e5468d3b2814c8a6a3e07b097c817 GIT binary patch literal 111616 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