From 144e9c94be444207c82ed4fc8eab7bfef44acef9 Mon Sep 17 00:00:00 2001 From: David Rundle Date: Sun, 13 Oct 2013 23:15:10 +0100 Subject: [PATCH 1/4] Fixed some issues with 0.3.x (DR/GA) Worked with Gary Allen Tested the code with the calculator example --- .../Boxes.Integration.Test.csproj | 75 + .../ContainerSetupBaseTests.cs | 41 + .../Properties/AssemblyInfo.cs | 36 + .../TopologicalProcessOrderTests.cs | 48 + src/Boxes.Integration.Test/packages.config | 4 + src/Boxes.Integration.sln | 9 + src/Boxes.Integration.sln.DotSettings | 4 +- src/Boxes.Integration/BoxesWrapperBase.cs | 14 +- src/Boxes.Integration/IBoxesWrapper.cs | 7 +- .../Setup/PipelineExecutorWrapper.cs | 48 + .../Tasks/ExtendBoxesTask.cs | 20 +- .../NUnit.2.6.0.12054/NUnit.2.6.0.12054.nupkg | Bin 0 -> 93979 bytes .../NUnit.2.6.0.12054.nuspec | 30 + .../NUnit.2.6.0.12054/lib/nunit.framework.dll | Bin 0 -> 143360 bytes .../NUnit.2.6.0.12054/lib/nunit.framework.xml | 10845 ++++++++++++++++ src/packages/NUnit.2.6.0.12054/license.txt | 15 + src/packages/repositories.config | 4 + 17 files changed, 11192 insertions(+), 8 deletions(-) create mode 100644 src/Boxes.Integration.Test/Boxes.Integration.Test.csproj create mode 100644 src/Boxes.Integration.Test/ContainerSetupBaseTests.cs create mode 100644 src/Boxes.Integration.Test/Properties/AssemblyInfo.cs create mode 100644 src/Boxes.Integration.Test/TopologicalProcessOrderTests.cs create mode 100644 src/Boxes.Integration.Test/packages.config create mode 100644 src/Boxes.Integration/Setup/PipelineExecutorWrapper.cs create mode 100644 src/packages/NUnit.2.6.0.12054/NUnit.2.6.0.12054.nupkg create mode 100644 src/packages/NUnit.2.6.0.12054/NUnit.2.6.0.12054.nuspec create mode 100644 src/packages/NUnit.2.6.0.12054/lib/nunit.framework.dll create mode 100644 src/packages/NUnit.2.6.0.12054/lib/nunit.framework.xml create mode 100644 src/packages/NUnit.2.6.0.12054/license.txt create mode 100644 src/packages/repositories.config diff --git a/src/Boxes.Integration.Test/Boxes.Integration.Test.csproj b/src/Boxes.Integration.Test/Boxes.Integration.Test.csproj new file mode 100644 index 0000000..e314c47 --- /dev/null +++ b/src/Boxes.Integration.Test/Boxes.Integration.Test.csproj @@ -0,0 +1,75 @@ + + + + + Debug + AnyCPU + {356B6CFA-EFEA-43DA-83DD-C2093F3818DD} + Library + Properties + Boxes.Integration.Test + Boxes.Integration.Test + v4.5 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + ..\..\lib\Boxes.Core.dll + + + ..\..\lib\Boxes.Test.Core.dll + + + ..\packages\NUnit.2.6.0.12054\lib\nunit.framework.dll + + + + + + + + + + + + + + + + + + + + {4d3cc463-a3c6-4569-bc00-a5c5d5a2ddd2} + Boxes.Integration + + + + + \ No newline at end of file diff --git a/src/Boxes.Integration.Test/ContainerSetupBaseTests.cs b/src/Boxes.Integration.Test/ContainerSetupBaseTests.cs new file mode 100644 index 0000000..8a47681 --- /dev/null +++ b/src/Boxes.Integration.Test/ContainerSetupBaseTests.cs @@ -0,0 +1,41 @@ +namespace Boxes.Integration.Test +{ + using System; + using System.Data; + using System.Linq; + using Boxes.Test; + using Boxes.Test.Infrastructure; + using Setup; + using NUnit.Framework; + using Setup.Registrations; + + public interface ILifeStyle {} + + public class Singleton : ILifeStyle {} + + public class Configure {} + + public class Register : RegisterBase + { + } + + public class RegisterBaseTests : TestBase> + { + [Test] + public void Simple_setup() + { + Action(() => + { + var reg = new Register() + .LifeStyle(typeof(Singleton)) + .Where(x => typeof(IDbCommand).IsAssignableFrom(x)) + .AssociateWith(Contracts.SelfOnly); + + return new Context>(reg); + }); + + + } + + } +} \ No newline at end of file diff --git a/src/Boxes.Integration.Test/Properties/AssemblyInfo.cs b/src/Boxes.Integration.Test/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..f364da2 --- /dev/null +++ b/src/Boxes.Integration.Test/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Boxes.Integration.Test")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("Boxes.Integration.Test")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2013")] +[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("9eff756e-0d54-4911-873a-124c5faf4581")] + +// 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/src/Boxes.Integration.Test/TopologicalProcessOrderTests.cs b/src/Boxes.Integration.Test/TopologicalProcessOrderTests.cs new file mode 100644 index 0000000..5e7e3db --- /dev/null +++ b/src/Boxes.Integration.Test/TopologicalProcessOrderTests.cs @@ -0,0 +1,48 @@ +namespace Boxes.Integration.Test +{ + using Boxes.Test; + using Boxes.Test.Infrastructure; + using System; + using System.Collections.Generic; + using System.Linq; + using Process; + using NUnit.Framework; + + public class TopologicalProcessOrderTests : TestBase + { + [Test] + public void Order_dependencies() + { + Arrange(() => + { + Func, IEnumerable> createModules = + titles => titles.Select(title => new Module(title, new Version(1, 0))); + + Func, IEnumerable, Package> createPackage = + (title, exports, imports) => + { + var manifest = new Manifest(title, new Version(1, 0), "title", createModules(exports), + createModules(imports)); + var package = new Package(manifest, title); + return package; + }; + + dynamic ctx = new Context(new TopologicalProcessOrder()); + ctx.PackagesToSort = new List() + { + createPackage("package1", new[] {"a1"}, new string[] {}), + createPackage("package3", new[] {"a3"}, new[] {"a1", "a2"}), + createPackage("package2", new[] {"a2"}, new[] {"a1"}), + createPackage("package4", new[] {"a4"}, new[] {"a3"}), + }; + return ctx; + }); + Action(ctx => ((dynamic) ctx).Result = ctx.Sut.Arrange(((dynamic) ctx).PackagesToSort)); + Assert(ctx => ((dynamic) ctx).Result[0].Name == "package1"); + Assert(ctx => ((dynamic) ctx).Result[1].Name == "package2"); + Assert(ctx => ((dynamic) ctx).Result[2].Name == "package3"); + Assert(ctx => ((dynamic) ctx).Result[3].Name == "package4"); + Execute(); + } + } +} diff --git a/src/Boxes.Integration.Test/packages.config b/src/Boxes.Integration.Test/packages.config new file mode 100644 index 0000000..783e245 --- /dev/null +++ b/src/Boxes.Integration.Test/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/Boxes.Integration.sln b/src/Boxes.Integration.sln index 390929e..9a68805 100644 --- a/src/Boxes.Integration.sln +++ b/src/Boxes.Integration.sln @@ -5,6 +5,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Boxes.Integration", "Boxes. EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{0733A87B-C669-461C-A0FE-A9BF85F841B2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Boxes.Integration.Test", "Boxes.Integration.Test\Boxes.Integration.Test.csproj", "{356B6CFA-EFEA-43DA-83DD-C2093F3818DD}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,8 +17,15 @@ Global {4D3CC463-A3C6-4569-BC00-A5C5D5A2DDD2}.Debug|Any CPU.Build.0 = Debug|Any CPU {4D3CC463-A3C6-4569-BC00-A5C5D5A2DDD2}.Release|Any CPU.ActiveCfg = Release|Any CPU {4D3CC463-A3C6-4569-BC00-A5C5D5A2DDD2}.Release|Any CPU.Build.0 = Release|Any CPU + {356B6CFA-EFEA-43DA-83DD-C2093F3818DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {356B6CFA-EFEA-43DA-83DD-C2093F3818DD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {356B6CFA-EFEA-43DA-83DD-C2093F3818DD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {356B6CFA-EFEA-43DA-83DD-C2093F3818DD}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {356B6CFA-EFEA-43DA-83DD-C2093F3818DD} = {0733A87B-C669-461C-A0FE-A9BF85F841B2} + EndGlobalSection EndGlobal diff --git a/src/Boxes.Integration.sln.DotSettings b/src/Boxes.Integration.sln.DotSettings index 4481f70..29d31a9 100644 --- a/src/Boxes.Integration.sln.DotSettings +++ b/src/Boxes.Integration.sln.DotSettings @@ -14,4 +14,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. <Policy><Descriptor Staticness="Instance" AccessRightKinds="Protected" Description="instance_field_protected"><ElementKinds><Kind Name="FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /></Policy> - <Policy><Descriptor Staticness="Static, Instance" AccessRightKinds="Protected" Description="static_field_protected"><ElementKinds><Kind Name="FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /></Policy> \ No newline at end of file + <Policy><Descriptor Staticness="Static, Instance" AccessRightKinds="Protected" Description="static_field_protected"><ElementKinds><Kind Name="FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /></Policy> + <data /> + <data><IncludeFilters /><ExcludeFilters /></data> \ No newline at end of file diff --git a/src/Boxes.Integration/BoxesWrapperBase.cs b/src/Boxes.Integration/BoxesWrapperBase.cs index 705735f..aa0cca9 100644 --- a/src/Boxes.Integration/BoxesWrapperBase.cs +++ b/src/Boxes.Integration/BoxesWrapperBase.cs @@ -19,6 +19,7 @@ namespace Boxes.Integration using InternalIoc; using Loading; using Process; + using Setup; using Tasks; using Trust; @@ -29,7 +30,7 @@ namespace Boxes.Integration /// the type of the container, this will be used to resolve the instances /// /// do not remove the TContainer this is used with the extension methods and with the other classes in the system - public abstract class BoxesWrapperBase : IBoxesWrapper + public abstract class BoxesWrapperBase : IBoxesWrapper { //TODO: look at disabling registrations (controllable in a module) //http://ayende.com/blog/2792/introducing-monorail-hotswap @@ -60,18 +61,27 @@ protected BoxesWrapperBase() { _internalContainer = new InternalInternalContainer(); PackageRegistry = new PackageRegistry(); - _extensionRunner = new TaskRunner(new ExtendBoxesTask(_internalContainer)); _loaderFactory = new LoaderFactory(); //setup the internal IoC + _internalContainer.Add(); + _internalContainer.setInstance(typeof(PackageRegistry), PackageRegistry); + _internalContainer.Add(); _internalContainer.Add(typeof(IIocSetup<>), typeof(IocSetup<>)); _internalContainer.Add(); _internalContainer.Add(); _internalContainer.setInstance(typeof(LoaderFactory), _loaderFactory); + + //this is a default impl, it could be overriden in a module by another interface/impl + _internalContainer.Add(typeof(IDefaultContainerSetup<>), typeof(DefaultContainerSetup<>)); + Initialize(_internalContainer); + + _extensionRunner = new TaskRunner(new ExtendBoxesTask(_internalContainer)); + } public PackageRegistry PackageRegistry { get; private set; } diff --git a/src/Boxes.Integration/IBoxesWrapper.cs b/src/Boxes.Integration/IBoxesWrapper.cs index e907980..5ae746b 100644 --- a/src/Boxes.Integration/IBoxesWrapper.cs +++ b/src/Boxes.Integration/IBoxesWrapper.cs @@ -25,7 +25,7 @@ namespace Boxes.Integration /// /// the generic type is require to help the extension methods, do not get rid of it /// - public interface IBoxesWrapper : IDisposable + public interface IBoxesWrapper : IDisposable { /// /// package registry, this will provide the information of what modules have been loaded @@ -71,9 +71,12 @@ public static class BoxesWrapperExtensions /// /// the trust manager being used by boxes. /// - public static ITrustManager TrustManager(this IBoxesWrapper boxes) + public static ITrustManager TrustManager(this IBoxesWrapper boxes) { return boxes.GetService(); } + + + } } \ No newline at end of file diff --git a/src/Boxes.Integration/Setup/PipelineExecutorWrapper.cs b/src/Boxes.Integration/Setup/PipelineExecutorWrapper.cs new file mode 100644 index 0000000..848c700 --- /dev/null +++ b/src/Boxes.Integration/Setup/PipelineExecutorWrapper.cs @@ -0,0 +1,48 @@ +namespace Temp +{ + using System.Collections.Generic; + using System.Linq; + using Boxes.Tasks; + + /// + /// + /// + /// + public class PipelineExecutorWrapper + { + private ICollection> _tasks; + private PipilineExecutor _pipilineExecutor; + + private int _numberOfRegistrations = -1; + + public PipelineExecutorWrapper() { } + + public PipelineExecutorWrapper(IEnumerable> tasks) + { + _tasks = tasks as ICollection> ?? tasks.ToList(); + } + + public void UpdateTasksAsRequired(IEnumerable> tasks) + { + _tasks = tasks as ICollection> ?? tasks.ToList(); + UpdateTasksAsRequired(); + } + + public void UpdateTasksAsRequired() + { + var currentNumberOfRegistrations = _tasks.Count(); + + if (currentNumberOfRegistrations == _numberOfRegistrations) + { + return; + } + _numberOfRegistrations = currentNumberOfRegistrations; + _pipilineExecutor = _tasks.CreatePipeline(); + } + + public IEnumerable Execute(IEnumerable item) + { + return _pipilineExecutor.Execute(item); + } + } +} \ No newline at end of file diff --git a/src/Boxes.Integration/Tasks/ExtendBoxesTask.cs b/src/Boxes.Integration/Tasks/ExtendBoxesTask.cs index 0a1b05e..f4a9ba4 100644 --- a/src/Boxes.Integration/Tasks/ExtendBoxesTask.cs +++ b/src/Boxes.Integration/Tasks/ExtendBoxesTask.cs @@ -63,11 +63,25 @@ public void Execute(Package item) var types = assemblies.SelectMany(x => x.GetExportedTypes()).ToArray(); - foreach (var service in types.Where(x => typeof(IBoxesExtension).IsAssignableFrom(x))) + foreach (var service in types.Where(x => !x.IsInterface && !x.IsAbstract && typeof(IBoxesExtension).IsAssignableFrom(x))) { - var contract = service.FirstInterface(); + var registeredService = service; + var contract = registeredService.FirstInterface(); + + //try and get the generic types + if (contract.IsGenericType) + { + contract = contract.GetGenericTypeDefinition(); + } + + if (registeredService.IsGenericType) + { + registeredService = service.GetGenericTypeDefinition(); + } + + _trustManager.IsTrusted(new TypeFromPackageTrustContext(contract, service, item)); - _container.Add(contract, service); + _container.Add(contract, registeredService); } diff --git a/src/packages/NUnit.2.6.0.12054/NUnit.2.6.0.12054.nupkg b/src/packages/NUnit.2.6.0.12054/NUnit.2.6.0.12054.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..b2bfd1269792f655b945c20ca12d1694932912f9 GIT binary patch literal 93979 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 + + + NUnit + 2.6.0.12054 + NUnit + Charlie Poole + Charlie Poole + http://nunit.org/nuget/license.html + http://nunit.org + http://nunit.org/nuget/nunit_32x32.png + false + NUnit features a fluent assert syntax, parameterized, generic and theory tests and is user-extensible. A number of runners, both from the NUnit project and by third parties, are able to execute NUnit tests. + +Version 2.6 is the seventh major release of this well-known and well-tested programming tool. + +This package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. + NUnit is a unit-testing framework for all .Net languages with a strong TDD focus. + Version 2.6 is the seventh major release of NUnit. + +Unlike earlier versions, this package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. + +The nunit.mocks assembly is now provided by the NUnit.Mocks package. The pnunit.framework assembly is provided by the pNUnit package. + en-US + test testing tdd framework fluent assert theory plugin addin + + + + + \ No newline at end of file diff --git a/src/packages/NUnit.2.6.0.12054/lib/nunit.framework.dll b/src/packages/NUnit.2.6.0.12054/lib/nunit.framework.dll new file mode 100644 index 0000000000000000000000000000000000000000..eaea9eedf798fa34c9ec39bb7661f16c412c78c6 GIT binary patch literal 143360 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

hxzk;5HzOoDN;Sx%oz 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

_HBNiM$D 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 + + + nunit.framework + + + +

+ Attribute used to apply a category to a test + + + + + The name of the category + + + + + Construct attribute for a given category based on + a name. The name may not contain the characters ',', + '+', '-' or '!'. However, this is not checked in the + constructor since it would cause an error to arise at + as the test was loaded without giving a clear indication + of where the problem is located. The error is handled + in NUnitFramework.cs by marking the test as not + runnable. + + The name of the category + + + + Protected constructor uses the Type name as the name + of the category. + + + + + The name of the category + + + + + Used to mark a field for use as a datapoint when executing a theory + within the same fixture that requires an argument of the field's Type. + + + + + Used to mark an array as containing a set of datapoints to be used + executing a theory within the same fixture that requires an argument + of the Type of the array elements. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct the attribute + + Text describing the test + + + + Gets the test description + + + + + Enumeration indicating how the expected message parameter is to be used + + + + Expect an exact match + + + Expect a message containing the parameter string + + + Match the regular expression provided as a parameter + + + Expect a message that starts with the parameter string + + + + ExpectedExceptionAttribute + + + + + + Constructor for a non-specific exception + + + + + Constructor for a given type of exception + + The type of the expected exception + + + + Constructor for a given exception name + + The full name of the expected exception + + + + Gets or sets the expected exception type + + + + + Gets or sets the full Type name of the expected exception + + + + + Gets or sets the expected message text + + + + + Gets or sets the user message displayed in case of failure + + + + + Gets or sets the type of match to be performed on the expected message + + + + + Gets the name of a method to be used as an exception handler + + + + + ExplicitAttribute marks a test or test fixture so that it will + only be run if explicitly executed from the gui or command line + or if it is included by use of a filter. The test will not be + run simply because an enclosing suite is run. + + + + + Default constructor + + + + + Constructor with a reason + + The reason test is marked explicit + + + + The reason test is marked explicit + + + + + Attribute used to mark a test that is to be ignored. + Ignored tests result in a warning message when the + tests are run. + + + + + Constructs the attribute without giving a reason + for ignoring the test. + + + + + Constructs the attribute giving a reason for ignoring the test + + The reason for ignoring the test + + + + The reason for ignoring a test + + + + + Abstract base for Attributes that are used to include tests + in the test run based on environmental settings. + + + + + Constructor with no included items specified, for use + with named property syntax. + + + + + Constructor taking one or more included items + + Comma-delimited list of included items + + + + Name of the item that is needed in order for + a test to run. Multiple itemss may be given, + separated by a comma. + + + + + Name of the item to be excluded. Multiple items + may be given, separated by a comma. + + + + + The reason for including or excluding the test + + + + + PlatformAttribute is used to mark a test fixture or an + individual method as applying to a particular platform only. + + + + + Constructor with no platforms specified, for use + with named property syntax. + + + + + Constructor taking one or more platforms + + Comma-deliminted list of platforms + + + + CultureAttribute is used to mark a test fixture or an + individual method as applying to a particular Culture only. + + + + + Constructor with no cultures specified, for use + with named property syntax. + + + + + Constructor taking one or more cultures + + Comma-deliminted list of cultures + + + + Marks a test to use a combinatorial join of any argument data + provided. NUnit will create a test case for every combination of + the arguments provided. This can result in a large number of test + cases and so should be used judiciously. This is the default join + type, so the attribute need not be used except as documentation. + + + + + PropertyAttribute is used to attach information to a test as a name/value pair.. + + + + + Construct a PropertyAttribute with a name and string value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and int value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and double value + + The name of the property + The property value + + + + Constructor for derived classes that set the + property dictionary directly. + + + + + Constructor for use by derived classes that use the + name of the type as the property name. Derived classes + must ensure that the Type of the property value is + a standard type supported by the BCL. Any custom + types will cause a serialization Exception when + in the client. + + + + + Gets the property dictionary for this attribute + + + + + Default constructor + + + + + Marks a test to use pairwise join of any argument data provided. + NUnit will attempt too excercise every pair of argument values at + least once, using as small a number of test cases as it can. With + only two arguments, this is the same as a combinatorial join. + + + + + Default constructor + + + + + Marks a test to use a sequential join of any argument data + provided. NUnit will use arguements for each parameter in + sequence, generating test cases up to the largest number + of argument values provided and using null for any arguments + for which it runs out of values. Normally, this should be + used with the same number of arguments for each parameter. + + + + + Default constructor + + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + RandomAttribute is used to supply a set of random values + to a single parameter of a parameterized test. + + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + Abstract base class for attributes that apply to parameters + and supply data for the parameter. + + + + + Gets the data to be provided to the specified parameter + + + + + The collection of data to be returned. Must + be set by any derived attribute classes. + We use an object[] so that the individual + elements may have their type changed in GetData + if necessary. + + + + + Construct with one argument + + + + + + Construct with two arguments + + + + + + + Construct with three arguments + + + + + + + + Construct with an array of arguments + + + + + + Get the collection of values to be used as arguments + + + + + Construct a set of doubles from 0.0 to 1.0, + specifying only the count. + + + + + + Construct a set of doubles from min to max + + + + + + + + Construct a set of ints from min to max + + + + + + + + Get the collection of values to be used as arguments + + + + + RangeAttribute is used to supply a range of values to an + individual parameter of a parameterized test. + + + + + Construct a range of ints using default step of 1 + + + + + + + Construct a range of ints specifying the step size + + + + + + + + Construct a range of longs + + + + + + + + Construct a range of doubles + + + + + + + + Construct a range of floats + + + + + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + RequiredAddinAttribute may be used to indicate the names of any addins + that must be present in order to run some or all of the tests in an + assembly. If the addin is not loaded, the entire assembly is marked + as NotRunnable. + + + + + Initializes a new instance of the class. + + The required addin. + + + + Gets the name of required addin. + + The required addin name. + + + + Summary description for SetCultureAttribute. + + + + + Construct given the name of a culture + + + + + + Summary description for SetUICultureAttribute. + + + + + Construct given the name of a culture + + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + SetUpFixtureAttribute is used to identify a SetUpFixture + + + + + Attribute used to mark a static (shared in VB) property + that returns a list of tests. + + + + + Attribute used to identify a method that is called + immediately after each test is run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Provide actions to execute before and after tests. + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + Provides details about the test that is going to be run. + + + + Executed after each test is run + + Provides details about the test that has just been run. + + + + Provides the target for the action attribute + + 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")] + publc void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + NOTE: This interface is used in both the framework + and the core, even though that results in two different + types. However, sharing the source code guarantees that + the various implementations will be compatible and that + the core is able to reflect successfully over the + framework implementations of ITestCaseData. + + + + + Gets the argument list to be provided to the test + + + + + Gets the expected result + + + + + Indicates whether a result has been specified. + This is necessary because the result may be + null, so it's value cannot be checked. + + + + + Gets the expected exception Type + + + + + Gets the FullName of the expected exception + + + + + Gets the name to be used for the test + + + + + Gets the description of the test + + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets a value indicating whether this is explicit. + + true if explicit; otherwise, false. + + + + Gets the ignore reason. + + The ignore reason. + + + + Construct a TestCaseAttribute with a list of arguments. + This constructor is not CLS-Compliant + + + + + + Construct a TestCaseAttribute with a single argument + + + + + + Construct a TestCaseAttribute with a two arguments + + + + + + + Construct a TestCaseAttribute with a three arguments + + + + + + + + Gets the list of arguments to a test case + + + + + Gets or sets the expected result. + + The result. + + + + Gets the expected result. + + The result. + + + + Gets a flag indicating whether an expected + result has been set. + + + + + Gets a list of categories associated with this test; + + + + + Gets or sets the category associated with this test. + May be a single category or a comma-separated list. + + + + + Gets or sets the expected exception. + + The expected exception. + + + + Gets or sets the name the expected exception. + + The expected name of the exception. + + + + Gets or sets the expected message of the expected exception + + The expected message of the exception. + + + + Gets or sets the type of match to be performed on the expected message + + + + + Gets or sets the description. + + The description. + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the ignored status of the test + + + + + Gets or sets the ignored status of the test + + + + + Gets or sets the explicit status of the test + + + + + Gets or sets the reason for not running the test + + + + + Gets or sets the reason for not running the test. + Set has the side effect of marking the test as ignored. + + The ignore reason. + + + + FactoryAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the factory - for use with languages + that don't support params arrays. + + An array of the names of the factories that will provide data + + + + Construct with a Type and name - for use with languages + that don't support params arrays. + + The Type that will provide data + The name of the method, property or field that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with this test. + May be a single category or a comma-separated list. + + + + + [TestFixture] + public class ExampleClass + {} + + + + + Default constructor + + + + + Construct with a object[] representing a set of arguments. + In .NET 2.0, the arguments may later be separated into + type arguments and constructor arguments. + + + + + + Descriptive text for this fixture + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Gets a list of categories for this fixture + + + + + The arguments originally provided to the attribute + + + + + Gets or sets a value indicating whether this should be ignored. + + true if ignore; otherwise, false. + + + + Gets or sets the ignore reason. May set Ignored as a side effect. + + The ignore reason. + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + Attribute used to identify a method that is called after + all the tests in a fixture have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + publc void TestDescriptionMethod() + {} + } + + + + + + 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 method or assembly, sets the default timeout + for all contained test methods. + + + + + Construct a TimeoutAttribute given a time in milliseconds + + The timeout value in milliseconds + + + + Marks a test that must run in the STA, causing it + to run in a separate thread if necessary. + + On methods, you may also use STAThreadAttribute + to serve the same purpose. + + + + + Construct a RequiresSTAAttribute + + + + + Marks a test that must run in the MTA, causing it + to run in a separate thread if necessary. + + On methods, you may also use MTAThreadAttribute + to serve the same purpose. + + + + + Construct a RequiresMTAAttribute + + + + + Marks a test that must run on a separate thread. + + + + + Construct a RequiresThreadAttribute + + + + + Construct a RequiresThreadAttribute, specifying the apartment + + + + + ValueSourceAttribute indicates the source to be used to + provide data for one parameter of a test method. + + + + + Construct with the name of the factory - for use with languages + that don't support params arrays. + + The name of the data source to be used + + + + Construct with a Type and name - for use with languages + that don't support params arrays. + + The Type that will provide data + The name of the method, property or field that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + The IConstraintExpression interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + Static UnsetObject used to detect derived constraints + failing to set the actual value. + + + + + The actual value being tested against a constraint + + + + + The display name of this Constraint for use by ToString() + + + + + Argument fields used by ToString(); + + + + + The builder holding this constraint + + + + + Construct a constraint with no arguments + + + + + Construct a constraint with one argument + + + + + Construct a constraint with two arguments + + + + + Sets the ConstraintBuilder holding this constraint + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the constraint and the actual value to the writer, which + then displays the constraint description and the value. + + Constraints that need to provide additional details, + such as where the error occured can override this. + + The MessageWriter on which to display the message + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Test whether the constraint is satisfied by an + ActualValueDelegate that returns the value to be tested. + The default implementation simply evaluates the delegate + but derived classes may override it to provide for delayed + processing. + + An ActualValueDelegate + True for success, false for failure + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Default override of ToString returns the constraint DisplayName + followed by any arguments within angle brackets. + + + + + + Returns the string representation of this constraint + + + + + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + + + + + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + + + + + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. + + + + + Returns a DelayedConstraint with the specified delay time. + + The delay in milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending Or + to the current constraint. + + + + + Class used to detect any derived constraints + that fail to set the actual value in their + Matches override. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + Writes the description of the constraint to the specified writer + + + + + AttributeConstraint tests that a specified attribute is present + on a Type or other provider and that the value of the attribute + satisfies some other constraint. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Construct given a base constraint + + + + + + Constructs an AttributeConstraint for a specified attriute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Writes a description of the attribute to the specified writer. + + + + + Writes the actual value supplied to the specified writer. + + + + + Returns a string representation of the constraint. + + + + + BasicConstraint is the abstract base for constraints that + perform a simple comparison to a constant value. + + + + + Initializes a new instance of the class. + + The expected. + The description. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + Test that the actual value is an NaN + + + + + + + Write the constraint description to a specified writer + + + + + + BinaryConstraint is the abstract base of all constraints + that combine two other constraints in some fashion. + + + + + The first constraint being combined + + + + + The second constraint being combined + + + + + Construct a BinaryConstraint from two other constraints + + The first constraint + The second constraint + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Apply both member constraints to an actual value, succeeding + succeeding only if both of them succeed. + + The actual value + True if the constraints both succeeded + + + + Write a description for this contraint to a MessageWriter + + The MessageWriter to receive the description + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Apply the member constraints to an actual value, succeeding + succeeding as soon as one of them succeeds. + + The actual value + True if either constraint succeeded + + + + Write a description for this contraint to a MessageWriter + + The MessageWriter to receive the description + + + + CollectionConstraint is the abstract base class for + constraints that operate on collections. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Determines whether the specified enumerable is empty. + + The enumerable. + + true if the specified enumerable is empty; otherwise, false. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Protected method to be implemented by derived classes + + + + + + + CollectionItemsEqualConstraint is the abstract base class for all + collection constraints that apply some notion of item equality + as a part of their operation. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + Flag the constraint to ignore case and return self. + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + Check that the collection is empty + + + + + + + Write the constraint description to a MessageWriter + + + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + Check that all items are unique. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + Test whether the expected item is contained in the collection + + + + + + + Write a descripton of the constraint to a MessageWriter + + + + + + CollectionEquivalentCOnstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + Test whether two collections are equivalent + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + CollectionSubsetConstraint is used to determine whether + one collection is a subset of another + + + + + Construct a CollectionSubsetConstraint + + The collection that the actual value is expected to be a subset of + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + Modifies the constraint to use an IComparer and returns self. + + + + + Modifies the constraint to use an IComparer<T> and returns self. + + + + + Modifies the constraint to use a Comparison<T> and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + Test whether the collection is ordered + + + + + + + Write a description of the constraint to a MessageWriter + + + + + + Returns the string representation of the constraint. + + + + + + If used performs a reverse comparison + + + + + CollectionTally counts (tallies) the number of + occurences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + Try to remove an object from the tally + + The object to remove + True if successful, false if the object was not found + + + + Try to remove a set of objects from the tally + + The objects to remove + True if successful, false if any object was not found + + + + The number of objects remaining in the tally + + + + + ComparisonAdapter class centralizes all comparisons of + values in NUnit, adapting to the use of any provided + IComparer, IComparer<T> or Comparison<T> + + + + + Returns a ComparisonAdapter that wraps an IComparer + + + + + Returns a ComparisonAdapter that wraps an IComparer<T> + + + + + Returns a ComparisonAdapter that wraps a Comparison<T> + + + + + Compares two objects + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Construct a ComparisonAdapter for an IComparer + + + + + Compares two objects + + + + + + + + Construct a default ComparisonAdapter + + + + + ComparisonAdapter<T> extends ComparisonAdapter and + allows use of an IComparer<T> or Comparison<T> + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an IComparer<T> + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a Comparison<T> + + + + + Compare a Type T to an object + + + + + Abstract base class for constraints that compare values to + determine if one is greater than, equal to or less than + the other. This class supplies the Using modifiers. + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Modifies the constraint to use an IComparer and returns self + + + + + Modifies the constraint to use an IComparer<T> and returns self + + + + + Modifies the constraint to use a Comparison<T> and returns self + + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + ConstraintBuilder maintains the stacks that are used in + processing a ConstraintExpression. An OperatorStack + is used to hold operators that are waiting for their + operands to be reognized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + Initializes a new instance of the class. + + + + + Appends the specified operator to the expression by first + reducing the operator stack and then pushing the new + operator on the stack. + + The operator to push. + + + + Appends the specified constraint to the expresson by pushing + it on the constraint stack. + + The constraint to push. + + + + Sets the top operator right context. + + The right context. + + + + Reduces the operator stack until the topmost item + precedence is greater than or equal to the target precedence. + + The target precedence. + + + + Resolves this instance, returning a Constraint. If the builder + is not currently in a resolvable state, an exception is thrown. + + The resolved constraint + + + + Gets a value indicating whether this instance is resolvable. + + + true if this instance is resolvable; otherwise, false. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The builder. + + + + Pushes the specified operator onto the stack. + + The op. + + + + Pops the topmost operator from the stack. + + + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + The top. + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The builder. + + + + Pushes the specified constraint. As a side effect, + the constraint's builder field is set to the + ConstraintBuilder owning this stack. + + The constraint. + + + + Pops this topmost constrait from the stack. + As a side effect, the constraint's builder + field is set to null. + + + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost constraint without modifying the stack. + + The topmost constraint + + + + ConstraintExpression represents a compound constraint in the + process of being constructed from a series of syntactic elements. + + Individual elements are appended to the expression as they are + reognized. Once an actual Constraint is appended, the expression + returns a resolvable Constraint. + + + + + ConstraintExpressionBase is the abstract base class for the + ConstraintExpression class, which represents a + compound constraint in the process of being constructed + from a series of syntactic elements. + + NOTE: ConstraintExpressionBase is separate because the + ConstraintExpression class was generated in earlier + versions of NUnit. The two classes may be combined + in a future version. + + + + + The ConstraintBuilder holding the elements recognized so far + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a string representation of the expression as it + currently stands. This should only be used for testing, + since it has the side-effect of resolving the expression. + + + + + + Appends an operator to the expression and returns the + resulting expression itself. + + + + + Appends a self-resolving operator to the expression and + returns a new ResolvableConstraintExpression. + + + + + Appends a constraint to the expression and returns that + constraint, which is associated with the current state + of the expression being built. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a 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 AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + With is currently a NOP - reserved for future use. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a 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 AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + The ConstraintOperator class is used internally by a + ConstraintBuilder to represent an operator that + modifies or combines constraints. + + Constraint operators use left and right precedence + values to determine whether the top operator on the + stack should be reduced before pushing a new operator. + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + The syntax element preceding this operator + + + + + The syntax element folowing this operator + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + PrefixOperator takes a single constraint and modifies + it's action in some way. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Returns the constraint created by applying this + prefix to another constraint. + + + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + Represents a constraint that succeeds if all the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + they all succeed. + + + + + Represents a constraint that succeeds if any of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + any of them succeed. + + + + + Represents a constraint that succeeds if none of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Represents a constraint that succeeds if the specified + count of members of a collection match a base constraint. + + + + + Construct an ExactCountOperator for a specified count + + The expected count + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifes the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + Operator used to test for the presence of a named Property + on an object and optionally apply further tests to the + value of that property. + + + + + Constructs a PropOperator for a particular named property + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Gets the name of the property to which the operator applies + + + + + Operator that tests for the presence of a particular attribute + on a type and optionally applies further tests to the attribute. + + + + + Construct an AttributeOperator for a particular Type + + The Type of attribute tested + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Operator that tests that an exception is thrown and + optionally applies further tests to the exception. + + + + + Construct a ThrowsOperator + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Abstract base class for all binary operators + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + ContainsConstraint tests a whether a string contains a substring + or a collection contains an object. It postpones the decision of + which test to use until the type of the actual argument is known. + This allows testing whether a string is contained in a collection + or as a substring of another string using the same syntax. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to ignore case and return self. + + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Creates a new DelayedConstraint + + The inner constraint two decorate + The time interval after which the match is performed + If the value of is less than 0 + + + + Creates a new DelayedConstraint + + The inner constraint two decorate + The time interval after which the match is performed + The time interval used for polling + If the value of is less than 0 + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + Test whether the constraint is satisfied by a delegate + + The delegate whose value is to be tested + True for if the base constraint fails, false if it succeeds + + + + Test whether the constraint is satisfied by a given reference. + Overridden to wait for the specified delay period before + calling the base constraint with the dereferenced value. + + A reference to the value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a MessageWriter. + + The writer on which the actual value is displayed + + + + Returns the string representation of the constraint. + + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + EmptyConstraint tests a whether a string or collection is empty, + postponing the decision about which test is applied until the + type of the actual argument is known. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + EqualConstraint is able to compare an actual value with the + expected value provided in its constructor. Two objects are + considered equal if both are null, or if both have the same + value. NUnit has special semantics for some object types. + + + + + If true, strings in error messages will be clipped + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + The MessageWriter to write to + + + + Write description of this constraint + + The MessageWriter to write to + + + + Display the failure information for two collections that did not match. + + The MessageWriter on which to display + The expected collection. + The actual collection + The depth of this failure in a set of nested collections + + + + Displays a single line showing the types and sizes of the expected + and actual enumerations, 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 + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to suppress string clipping + and return self. + + + + + Flag the constraint to compare arrays as collections + and return self. + + + + + Switches the .Within() modifier to interpret its tolerance as + a distance in representable values (see remarks). + + Self. + + Ulp stands for "unit in the last place" and describes the minimum + amount a given value can change. For any integers, an ulp is 1 whole + digit. For floating point values, the accuracy of which is better + for smaller numbers and worse for larger numbers, an ulp depends + on the size of the number. Using ulps for comparison of floating + point results instead of fixed tolerances is safer because it will + automatically compensate for the added inaccuracy of larger numbers. + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual values is allowed to deviate from + the expected value. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in days. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in hours. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in minutes. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in seconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in milliseconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in clock ticks. + + Self + + + + EqualityAdapter class handles all equality comparisons + that use an IEqualityComparer, IEqualityComparer<T> + or a ComparisonAdapter. + + + + + Compares two objects, returning true if they are equal + + + + + Returns true if the two objects can be compared by this adapter. + The base adapter cannot handle IEnumerables except for strings. + + + + + Returns an EqualityAdapter that wraps an IComparer. + + + + + Returns an EqualityAdapter that wraps an IEqualityComparer. + + + + + Returns an EqualityAdapter that wraps an IEqualityComparer<T>. + + + + + Returns an EqualityAdapter that wraps an IComparer<T>. + + + + + Returns an EqualityAdapter that wraps a Comparison<T>. + + + + + EqualityAdapter that wraps an IComparer. + + + + + Returns true if the two objects can be compared by this adapter. + Generic adapter requires objects of the specified type. + + + + + EqualityAdapter that wraps an IComparer. + + + + Helper routines for working with floating point numbers + + + The floating point comparison code is based on this excellent article: + http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm + + + "ULP" means Unit in the Last Place and in the context of this library refers to + the distance between two adjacent floating point numbers. IEEE floating point + numbers can only represent a finite subset of natural numbers, with greater + accuracy for smaller numbers and lower accuracy for very large numbers. + + + If a comparison is allowed "2 ulps" of deviation, that means the values are + allowed to deviate by up to 2 adjacent floating point values, which might be + as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. + + + + + Compares two floating point values for equality + First floating point value to be compared + Second floating point value t be compared + + Maximum number of representable floating point values that are allowed to + be between the left and the right floating point values + + True if both numbers are equal or close to being equal + + + Floating point values can only represent a finite subset of natural numbers. + For example, the values 2.00000000 and 2.00000024 can be stored in a float, + but nothing inbetween them. + + + This comparison will count how many possible floating point values are between + the left and the right number. If the number of possible values between both + numbers is less than or equal to maxUlps, then the numbers are considered as + being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + Compares two double precision floating point values for equality + First double precision floating point value to be compared + Second double precision floating point value t be compared + + Maximum number of representable double precision floating point values that are + allowed to be between the left and the right double precision floating point values + + True if both numbers are equal or close to being equal + + + Double precision floating point values can only represent a limited series of + natural numbers. For example, the values 2.0000000000000000 and 2.0000000000000004 + can be stored in a double, but nothing inbetween them. + + + This comparison will count how many possible double precision floating point + values are between the left and the right number. If the number of possible + values between both numbers is less than or equal to maxUlps, then the numbers + are considered as being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + + Reinterprets the memory contents of a floating point value as an integer value + + + Floating point value whose memory contents to reinterpret + + + The memory contents of the floating point value interpreted as an integer + + + + + Reinterprets the memory contents of a double precision floating point + value as an integer value + + + Double precision floating point value whose memory contents to reinterpret + + + The memory contents of the double precision floating point value + interpreted as an integer + + + + + Reinterprets the memory contents of an integer as a floating point value + + Integer value whose memory contents to reinterpret + + The memory contents of the integer value interpreted as a floating point value + + + + + Reinterprets the memory contents of an integer value as a double precision + floating point value + + Integer whose memory contents to reinterpret + + The memory contents of the integer interpreted as a double precision + floating point value + + + + Union of a floating point variable and an integer + + + The union's value as a floating point variable + + + The union's value as an integer + + + The union's value as an unsigned integer + + + Union of a double precision floating point variable and a long + + + The union's value as a double precision floating point variable + + + The union's value as a long + + + The union's value as an unsigned long + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + The value against which a comparison is to be made + + + + + Initializes a new instance of the class. + + The expected value. + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Tests whether a value is greater than or equal to the value supplied to its constructor + + + + + The value against which a comparison is to be made + + + + + Initializes a new instance of the class. + + The expected value. + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Tests whether a value is less than the value supplied to its constructor + + + + + The value against which a comparison is to be made + + + + + Initializes a new instance of the class. + + The expected value. + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Tests whether a value is less than or equal to the value supplied to its constructor + + + + + The value against which a comparison is to be made + + + + + Initializes a new instance of the class. + + The expected value. + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + MessageWriter is the abstract base for classes that write + constraint descriptions and messages in some form. The + class has separate methods for writing various components + of a message, allowing implementations to tailor the + presentation as needed. + + + + + Construct a MessageWriter given a culture + + + + + Method to write single line message with optional args, usually + written to precede the general failure message. + + The message to be written + Any arguments used in formatting the message + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The constraint that failed + + + + Display Expected and Actual lines for given values. This + method may be called by constraints that need more control over + the display of actual and expected values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given values, including + a tolerance value on the Expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in locating the point where the strings differ + If true, the strings should be clipped to fit the line + + + + Writes the text for a connector. + + The connector. + + + + Writes the text for a predicate. + + The predicate. + + + + Writes the text for an expected value. + + The expected value. + + + + Writes the text for a modifier + + The modifier. + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Abstract method to get the max line length + + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Returns the representation of a type as used in NUnitLite. + This is the same as Type.ToString() except for arrays, + which are displayed with their declared sizes. + + + + + + + Converts any control characters in a string + to their escaped representation. + + The string to be converted + The converted string + + + + Return the a string representation for a set of indices into an array + + Array of indices for which a string is needed + + + + Get an array of indices representing the point in a enumerable, + collection or array corresponding to a single int index into the + collection. + + The collection to which the indices apply + Index in the collection + Array of indices + + + + Clip a string to a given length, starting at a particular offset, returning the clipped + string with ellipses representing the removed parts + + The string to be clipped + The maximum permitted length of the result string + The point at which to start clipping + The clipped string + + + + Clip the expected and actual strings in a coordinated fashion, + so that they may be displayed together. + + + + + + + + + Shows the position two strings start to differ. Comparison + starts at the start index. + + The expected string + The actual string + The index in the strings at which comparison should start + Boolean indicating whether case should be ignored + -1 if no mismatch found, or the index where mismatch found + + + + The Numerics class contains common operations on numeric values. + + + + + Checks the type of the object, returning true if + the object is a numeric type. + + The object to check + true if the object is a numeric type + + + + Checks the type of the object, returning true if + the object is a floating point numeric type. + + The object to check + true if the object is a floating point numeric type + + + + Checks the type of the object, returning true if + the object is a fixed point numeric type. + + The object to check + true if the object is a fixed point numeric type + + + + Test two numeric values for equality, performing the usual numeric + conversions and using a provided or default tolerance. If the tolerance + provided is Empty, this method may set it to a default tolerance. + + The expected value + The actual value + A reference to the tolerance in effect + True if the values are equal + + + + Compare two numeric values, performing the usual numeric conversions. + + The expected value + The actual value + The relationship of the values to each other + + + + NUnitComparer encapsulates NUnit's default behavior + in comparing two objects. + + + + + Compares two objects + + + + + + + + Returns the default NUnitComparer. + + + + + Generic version of NUnitComparer + + + + + + Compare two objects of the same type + + + + + NUnitEqualityComparer encapsulates NUnit's handling of + equality tests between objects. + + + + + + + + + + Compares two objects for equality within a tolerance + + The first object to compare + The second object to compare + The tolerance to use in the comparison + + + + + 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. + + + + + 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 + + + + Returns the default NUnitEqualityComparer + + + + + Gets and sets a flag indicating whether case should + be ignored in determining equality. + + + + + Gets and sets a flag indicating that arrays should be + compared as collections, without regard to their shape. + + + + + Gets and sets an external comparer to be used to + test for equality. It is applied to members of + collections, in place of NUnit's own logic. + + + + + Gets the list of failure points for the last Match performed. + + + + + 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 + + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + The expected path used in the constraint + + + + + The actual path being tested + + + + + Flag indicating whether a caseInsensitive comparison should be made + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns true if the expected path and actual path match + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether two paths are the same + + The first path + The second path + Indicates whether case should be ignored + + + + + Test whether one path is under another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + Indicates whether case should be ignored + + + + + Test whether one path is the same as or under another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Modifies the current instance to be case-insensitve + and returns it. + + + + + Modifies the current instance to be case-sensitve + and returns it. + + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The expected path + The actual path + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The expected path + The actual path + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The expected path + The actual path + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Writes the description to a MessageWriter + + + + + NotConstraint negates the effect of some other constraint + + + + + Initializes a new instance of the class. + + The base constraint to be negated. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a MessageWriter. + + The writer on which the actual value is displayed + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + SomeItemsConstraint applies another constraint to each + item in a collection, succeeding if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + NoItemConstraint applies another constraint to each + item in a collection, failing if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + ExactCoutConstraint applies another constraint to each + item in a collection, succeeding only if a specified + number of items succeed. + + + + + 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. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + PropertyExistsConstraint tests that a named property + exists on the object provided through Match. + + Originally, PropertyConstraint provided this feature + in addition to making optional tests on the vaue + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. + + The writer on which the actual value is displayed + + + + Returns the string representation of the constraint. + + + + + + PropertyConstraint extracts a named property and uses + its value as the actual value for a chained constraint. + + + + + Initializes a new instance of the class. + + The name. + The constraint to apply to the property. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whethe two values are within a + specified range. + + + + + Initializes a new instance of the class. + + From. + To. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + ResolvableConstraintExpression is used to represent a compound + constraint being constructed at a point where the last operator + may either terminate the expression or may have additional + qualifying constraints added to it. + + It is used, for example, for a Property element or for + an Exception element, either of which may be optionally + followed by constraints that apply to the property or + exception. + + + + + Create a new instance of ResolvableConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + Resolve the current expression to a Constraint + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + ReusableConstraint wraps a resolved constraint so that it + may be saved and reused as needed. + + + + + Construct a ReusableConstraint + + The constraint or expression to be reused + + + + Conversion operator from a normal constraint to a ReusableConstraint. + + The original constraint to be wrapped as a ReusableConstraint + + + + + Returns the string representation of the constraint. + + A string representing the constraint + + + + Resolves the ReusableConstraint by returning the constraint + that it originally wrapped. + + A resolved constraint + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation + + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation of this constraint + + + + + StringConstraint is the abstract base for constraints + that operate on strings. It supports the IgnoreCase + modifier for string operations. + + + + + The expected value + + + + + Indicates whether tests should be case-insensitive + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + EmptyStringConstraint tests whether a string is empty. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + NullEmptyStringConstraint tests whether a string is either null or empty. + + + + + Constructs a new NullOrEmptyStringConstraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + SubstringConstraint can test whether a string contains + the expected substring. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + StartsWithConstraint can test whether a string starts + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + EndsWithConstraint can test whether a string ends + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + RegexConstraint can test whether a string matches + the pattern provided. + + + + + Initializes a new instance of the class. + + The pattern. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + ThrowsConstraint is used to test the exception thrown by + a delegate by applying a constraint to it. + + + + + Initializes a new instance of the class, + using a constraint to be applied to the exception. + + A constraint to apply to the caught exception. + + + + Executes the code of the delegate and captures any exception. + If a non-null base constraint was provided, it applies that + constraint to the exception. + + A delegate representing the code to be tested + True if an exception is thrown and the constraint succeeds, otherwise false + + + + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation of this constraint + + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Modes in which the tolerance value for a comparison can + be interpreted. + + + + + The tolerance was created with a value, without specifying + how the value would be used. This is used to prevent setting + the mode more than once and is generally changed to Linear + upon execution of the test. + + + + + The tolerance is used as a numeric range within which + two compared values are considered to be equal. + + + + + Interprets the tolerance as the percentage by which + the two compared values my deviate from each other. + + + + + Compares two values based in their distance in + representable numbers. + + + + + The Tolerance class generalizes the notion of a tolerance + within which an equality test succeeds. Normally, it is + used with numeric types, but it can be used with any + type that supports taking a difference between two + objects and comparing that difference to a value. + + + + + Constructs a linear tolerance of a specdified amount + + + + + Constructs a tolerance given an amount and ToleranceMode + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Returns an empty Tolerance object, equivalent to + specifying no tolerance. In most cases, it results + in an exact match but for floats and doubles a + default tolerance may be used. + + + + + Returns a zero Tolerance object, equivalent to + specifying an exact match. + + + + + Gets the ToleranceMode for the current Tolerance + + + + + Gets the value of the current Tolerance instance. + + + + + Returns a new tolerance, using the current amount as a percentage. + + + + + Returns a new tolerance, using the current amount in Ulps. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of clock ticks. + + + + + Returns true if the current tolerance is empty. + + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + Construct a TypeConstraint for a given Type + + + + + + Write the actual value for a failing constraint test to a + MessageWriter. TypeConstraints override this method to write + the name of the type. + + The writer on which the actual value is displayed + + + + ExactTypeConstraint is used to test that an object + is of the exact type provided in the constructor + + + + + Construct an ExactTypeConstraint for a given Type + + The expected Type. + + + + Test that an object is of the exact type specified + + The actual value. + True if the tested object is of the exact type provided, otherwise false. + + + + Write the description of this constraint to a MessageWriter + + The MessageWriter to use + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + Constructs an ExceptionTypeConstraint + + + + + Write the actual value for a failing constraint test to a + MessageWriter. Overriden to write additional information + in the case of an Exception. + + The MessageWriter to use + + + + InstanceOfTypeConstraint is used to test that an object + is of the same type provided or derived from it. + + + + + Construct an InstanceOfTypeConstraint for the type provided + + The expected Type + + + + Test whether an object is of the specified type or a derived type + + The object to be tested + True if the object is of the provided type or derives from it, otherwise false. + + + + Write a description of this constraint to a MessageWriter + + The MessageWriter to use + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Test whether an object can be assigned from the specified type + + The object to be tested + True if the object can be assigned a value of the expected Type, otherwise false. + + + + Write a description of this constraint to a MessageWriter + + The MessageWriter to use + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Test whether an object can be assigned to the specified type + + The object to be tested + True if the object can be assigned a value of the expected Type, otherwise false. + + + + Write a description of this constraint to a MessageWriter + + The MessageWriter to use + + + + Thrown when an assertion failed. + + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Thrown when a test executes inconclusively. + + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + + + + + + + Compares two objects of a given Type for equality within a tolerance + + The first object to compare + The second object to compare + The tolerance to use in the comparison + + + + + 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 + + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Helper for Assert.AreEqual(double expected, double actual, ...) + allowing code generation to work consistently. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + + + + Throws an with the message and arguments + that are passed in. This is used by the other Assert functions. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This is used by the other Assert functions. + + The message to initialize the with. + + + + Throws an . + This is used by the other Assert functions. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as ignored. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as Inconclusive. + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + 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. + + 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. + Used as a synonym for That in rare cases where a private setter + causes a Visual Basic compilation error. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + 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. + + 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 + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + The message that will be displayed on failure + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestSnippet delegate + The message that will be displayed on failure + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestSnippet delegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestSnippet delegate + The message that will be displayed on failure + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestSnippet delegate + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate does not throw an exception. + + A TestSnippet delegate + The message that will be displayed on failure + + + + Verifies that a delegate does not throw an exception. + + A TestSnippet delegate + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is either null or equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is either null or equal to string.Empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is either null or equal to string.Empty + + The string to be tested + + + + Assert that a string is not null or empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not null or empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is not null or empty + + The string to be tested + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + + + + Gets the number of assertions executed so far and + resets the counter to zero. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter names for constraints and + asserts and avoiding conflict with the definition of + , from which it inherits much of its + behavior, in certain mock object frameworks. + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to Assert.That + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to Assert.That. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to Assert.That + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to Assert.That. + + 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 Assert.That. + + The evaluated condition + The message to display if the condition is false + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically Assert.That. + + The evaluated condition + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + Provides static methods to express the assumptions + that must be met for a test to give a meaningful + result. If an assumption is not met, the test + should produce an inconclusive result. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + + + + Asserts that a condition is true. If the condition is false the + method throws an . + + The evaluated condition + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + A set of Assert methods operationg on one or more collections + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + The message that will be displayed on failure + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that superset is not a subject of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that superset is not a subject of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + + + + Asserts that superset is not a subject of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that superset is a subset of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that superset is a subset of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + + + + Asserts that superset is a subset of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + + + + Static helper class used in the constraint-based syntax + + + + + Creates a new SubstringConstraint + + The value of the substring + A SubstringConstraint + + + + Creates a new CollectionContainsConstraint. + + The item that should be found. + A new CollectionContainsConstraint + + + + Summary description for DirectoryAssert + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are not equal + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are equal + Arguments to be used in formatting the message + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are equal + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Summary description for FileAssert. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + The message to display if objects are not equal + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if objects are not equal + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if objects are not equal + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + The message to be displayed when the two Stream are the same. + Arguments to be used in formatting the message + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + The message to be displayed when the Streams are the same. + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if objects are not equal + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if objects are not equal + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + GlobalSettings is a place for setting default values used + by the framework in performing asserts. + + + + + Default tolerance for floating point equality + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a 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 AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Interface implemented by a user fixture in order to + validate any expected exceptions. It is only called + for test methods marked with the ExpectedException + attribute. + + + + + Method to handle an expected exception + + The exception to be handled + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for a positive value + + + + + Returns a constraint that tests for a negative value + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + The Iz class is a synonym for Is intended for use in VB, + which regards Is as a keyword. + + + + + The List class is a helper class with properties and methods + that supply a number of constraints used with lists and collections. + + + + + List.Map returns a ListMapper, which can be used to map + the original collection to another collection. + + + + + + + ListMapper is used to transform a collection used as an actual argument + producing another collection to be used in the assertion. + + + + + Construct a ListMapper based on a collection + + The collection to be transformed + + + + Produces a collection containing all the values of a property + + The collection of property values + + + + + Randomizer returns a set of random values in a repeatable + way, to allow re-running of tests if necessary. + + + + + Get a randomizer for a particular member, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. + + + + + Get a randomizer for a particular parameter, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. + + + + + Construct a randomizer using a random seed + + + + + Construct a randomizer using a specified seed + + + + + Return an array of random doubles between 0.0 and 1.0. + + + + + + + Return an array of random doubles with values in a specified range. + + + + + Return an array of random ints with values in a specified range. + + + + + Get a random seed for use in creating a randomizer. + + + + + The SpecialValue enum is used to represent TestCase arguments + that cannot be used as arguments to an Attribute. + + + + + Null represents a null value, which cannot be used as an + argument to an attriute under .NET 1.x + + + + + Basic Asserts on strings. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string is not found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are Notequal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + The message to display in case of failure + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + The message to display in case of failure + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + + + + The TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It provides a number of instance modifiers + for use in initializing the test case. + + Note: Instance modifiers are getters that return + the same instance after modifying it's state. + + + + + The argument list to be provided to the test + + + + + The expected result to be returned + + + + + Set to true if this has an expected result + + + + + The expected exception Type + + + + + The FullName of the expected exception + + + + + The name to be used for the test + + + + + The description of the test + + + + + A dictionary of properties, used to add information + to tests without requiring the class to change. + + + + + If true, indicates that the test case is to be ignored + + + + + If true, indicates that the test case is marked explicit + + + + + The reason for ignoring a test case + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Sets the expected result for the test + + The expected result + A modified TestCaseData + + + + Sets the expected exception type for the test + + Type of the expected exception. + The modified TestCaseData instance + + + + Sets the expected exception type for the test + + FullName of the expected exception. + The modified TestCaseData instance + + + + Sets the name of the test case + + The modified TestCaseData instance + + + + Sets the description for the test case + being constructed. + + The description. + The modified TestCaseData instance. + + + + Applies a category to the test + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Ignores this TestCase. + + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Marks this TestCase as Explicit + + + + + + Marks this TestCase as Explicit, specifying the reason. + + The reason. + + + + + Gets the argument list to be provided to the test + + + + + Gets the expected result + + + + + Returns true if the result has been set + + + + + Gets the expected exception Type + + + + + Gets the FullName of the expected exception + + + + + Gets the name to be used for the test + + + + + Gets the description of the test + + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets a value indicating whether this is explicit. + + true if explicit; otherwise, false. + + + + Gets the ignore reason. + + The ignore reason. + + + + Gets a list of categories associated with this test. + + + + + Gets the property dictionary for this test + + + + + Provide the context information of the current test + + + + + Constructs a TestContext using the provided context dictionary + + A context dictionary + + + + Get the current test context. This is created + as needed. The user may save the context for + use within a test, but it should not be used + outside the test for which it is created. + + + + + Gets a TestAdapter representing the currently executing test in this context. + + + + + Gets a ResultAdapter representing the current result for the test + executing in this context. + + + + + Gets the directory containing the current test assembly. + + + + + Gets the directory to be used for outputing files created + by this test run. + + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Constructs a TestAdapter for this context + + The context dictionary + + + + The name of the test. + + + + + The FullName of the test + + + + + The properties of the test. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a context + + The context holding the result + + + + The TestState of current test. This maps to the ResultState + used in nunit.core and is subject to change in the future. + + + + + The TestStatus of current test. This enum will be used + in future versions of NUnit and so is to be preferred + to the TestState value. + + + + + Provides details about a test + + + + + Creates an instance of TestDetails + + The fixture that the test is a member of, if available. + The method that implements the test, if available. + The full name of the test. + A string representing the type of test, e.g. "Test Case". + Indicates if the test represents a suite of tests. + + + + The fixture that the test is a member of, if available. + + + + + The method that implements the test, if available. + + + + + The full name of the test. + + + + + A string representing the type of test, e.g. "Test Case". + + + + + Indicates if the test represents a suite of tests. + + + + + The ResultState enum indicates the result of running a test + + + + + The result is inconclusive + + + + + The test was not runnable. + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test succeeded + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + The test failed + + + + + Helper class with static methods used to supply constraints + that operate on strings. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + TextMessageWriter writes constraint descriptions and messages + in displayable form as a text stream. It tailors the display + of individual message components to form the standard message + format of NUnit assertion failure messages. + + + + + Prefix used for the expected value line of a message + + + + + Prefix used for the actual value line of a message + + + + + Length of a message prefix + + + + + Construct a TextMessageWriter + + + + + Construct a TextMessageWriter, specifying a user message + and optional formatting arguments. + + + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The constraint that failed + + + + Display Expected and Actual lines for given values. This + method may be called by constraints that need more control over + the display of actual and expected values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given values, including + a tolerance value on the expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in string comparisons + If true, clip the strings to fit the max line length + + + + Writes the text for a connector. + + The connector. + + + + Writes the text for a predicate. + + The predicate. + + + + Write the text for a modifier. + + The modifier. + + + + Writes the text for an expected value. + + The expected value. + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Write the generic 'Expected' line for a constraint + + The constraint that failed + + + + Write the generic 'Expected' line for a given value + + The expected value + + + + Write the generic 'Expected' line for a given value + and tolerance. + + The expected value + The tolerance within which the test was made + + + + Write the generic 'Actual' line for a constraint + + The constraint for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + Gets or sets the maximum line length for this writer + + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying an expected exception + + + + + Creates a constraint specifying an exception with a given InnerException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying that no exception is thrown + + + + diff --git a/src/packages/NUnit.2.6.0.12054/license.txt b/src/packages/NUnit.2.6.0.12054/license.txt new file mode 100644 index 0000000..530a6e0 --- /dev/null +++ b/src/packages/NUnit.2.6.0.12054/license.txt @@ -0,0 +1,15 @@ +Copyright © 2002-2012 Charlie Poole +Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov +Copyright © 2000-2002 Philip A. Craig + +This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment (see the following) in the product documentation is required. + +Portions Copyright © 2002-2012 Charlie Poole or Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright © 2000-2002 Philip A. Craig + +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source distribution. diff --git a/src/packages/repositories.config b/src/packages/repositories.config new file mode 100644 index 0000000..39fb85e --- /dev/null +++ b/src/packages/repositories.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From 367209a6ff628c6f2dfff1cccb0577453fc91764 Mon Sep 17 00:00:00 2001 From: David Rundle Date: Sun, 13 Oct 2013 23:19:47 +0100 Subject: [PATCH 2/4] licence file updated --- nuspec/boxes.nuspec | 4 ++-- nuspec/changes.txt | 8 ++++++++ .../ContainerSetupBaseTests.cs | 15 ++++++++++++++- .../Properties/AssemblyInfo.cs | 15 ++++++++++++++- .../TopologicalProcessOrderTests.cs | 15 ++++++++++++++- src/Boxes.Integration/BoxesWrapperBase.cs | 2 +- .../Exceptions/CreateLoaderException.cs | 2 +- .../Exceptions/FailedTrustException.cs | 2 +- .../ServiceTypeDoesNotMatchInstanceException.cs | 2 +- src/Boxes.Integration/ExtensionManifest.cs | 2 +- .../Extensions/IBoxesExtension.cs | 2 +- .../Extensions/IBoxesExtensionWithSetup.cs | 2 +- .../Extensions/ISetupBoxesExtension.cs | 2 +- .../Extensions/XmlManifest2012ExtensionReader.cs | 2 +- .../Factories/FuncCreateLoader.cs | 2 +- src/Boxes.Integration/Factories/ICreateLoader.cs | 2 +- .../Factories/IDependencyResolverFactory.cs | 2 +- src/Boxes.Integration/Factories/IIoCFactory.cs | 2 +- src/Boxes.Integration/Factories/IIocSetup.cs | 2 +- src/Boxes.Integration/Factories/LoaderFactory.cs | 2 +- src/Boxes.Integration/IBoxesWrapper.cs | 2 +- src/Boxes.Integration/IDependencyResolver.cs | 2 +- .../InternalContainerExtensions.cs | 2 +- .../InternalIoc/IInternalContainer.cs | 2 +- .../InternalIoc/InternalInternalContainer.cs | 2 +- src/Boxes.Integration/InternalIoc/Registration.cs | 2 +- src/Boxes.Integration/LoaderProxy.cs | 2 +- src/Boxes.Integration/ObjectExtensions.cs | 2 +- src/Boxes.Integration/Process/IProcessOrder.cs | 2 +- .../Process/TopologicalProcessOrder.cs | 2 +- src/Boxes.Integration/Process/TopologicalSort.cs | 2 +- .../Process/TopologicalSortExtensions.cs | 2 +- src/Boxes.Integration/ProcessPackageContext.cs | 2 +- src/Boxes.Integration/Properties/AssemblyInfo.cs | 2 +- src/Boxes.Integration/Setup/ContainerSetupBase.cs | 2 +- .../Setup/DefaultContainerSetup.cs | 2 +- .../Filters/DefaultTypeRegistrationFilter.cs | 2 +- .../Setup/Filters/ITypeRegistrationFilter.cs | 2 +- src/Boxes.Integration/Setup/IContainerSetup.cs | 2 +- .../Setup/IRegistrationTaskMapper.cs | 2 +- .../Setup/RegistrationContext.cs | 2 +- src/Boxes.Integration/Setup/RegistrationMeta.cs | 2 +- .../Setup/Registrations/Contracts.cs | 2 +- .../Setup/Registrations/IRegister.cs | 2 +- .../Setup/Registrations/RegisterBase.cs | 2 +- .../Setup/Registrations/RegisterContext.cs | 2 +- .../Setup/Registrations/Registration.cs | 2 +- src/Boxes.Integration/Tasks/ExtendBoxesTask.cs | 2 +- .../Tasks/PipelineExecutorWrapper.cs | 2 +- src/Boxes.Integration/Tasks/TypeScannerTask.cs | 2 +- .../AssemblyFromPackageTrustContext.cs | 2 +- .../SetupFromPackageTrustContext.cs | 2 +- .../TypeFromPackageTrustContext.cs | 2 +- .../Trust/Contexts/TrustContext.cs | 2 +- .../Trust/Filters/ContractFilter.cs | 2 +- .../Trust/Filters/FuncContractFilter.cs | 2 +- .../Trust/Filters/ITrustFilter.cs | 2 +- .../Trust/Filters/TrustFilterBase.cs | 2 +- src/Boxes.Integration/Trust/ITrustManager.cs | 2 +- src/Boxes.Integration/Trust/TrustManager.cs | 2 +- src/Boxes.Integration/TypeExtensions.cs | 2 +- 61 files changed, 108 insertions(+), 61 deletions(-) diff --git a/nuspec/boxes.nuspec b/nuspec/boxes.nuspec index ba0a580..b8a9a95 100644 --- a/nuspec/boxes.nuspec +++ b/nuspec/boxes.nuspec @@ -4,14 +4,14 @@ Boxes.Integration 0.0.0 Boxes Integration - David Rundle + Boxes Contrib Team dbones.co.uk http://opensource.org/licenses/Apache-2.0 https://github.com/boxes-project false Boxes.Integration utilises Boxes.Core to provide an API to integrate with an IoC container. Boxes.Integration utilises Boxes.Core to provide an API to integrate with an IoC container. - Copyright 2012 - 2013 dbones.co.uk (David Rundle) + Copyright 2012 - 2013 dbones.co.uk es-US Composition Plugin Module Modular Package Bundle Isolated ioc di inversionofcontrol dependencyinjection diff --git a/nuspec/changes.txt b/nuspec/changes.txt index 976fd5e..943f727 100644 --- a/nuspec/changes.txt +++ b/nuspec/changes.txt @@ -1,3 +1,11 @@ +0.3.x +============== +Support for other IoC container +Trust manager +External modules can override Boxes Intergration internals +Build Foundation for Tenancy + + 0.2.x ============== updated to support 0.2 versions of Core and Integration projects diff --git a/src/Boxes.Integration.Test/ContainerSetupBaseTests.cs b/src/Boxes.Integration.Test/ContainerSetupBaseTests.cs index 8a47681..2d1ded4 100644 --- a/src/Boxes.Integration.Test/ContainerSetupBaseTests.cs +++ b/src/Boxes.Integration.Test/ContainerSetupBaseTests.cs @@ -1,4 +1,17 @@ -namespace Boxes.Integration.Test +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +namespace Boxes.Integration.Test { using System; using System.Data; diff --git a/src/Boxes.Integration.Test/Properties/AssemblyInfo.cs b/src/Boxes.Integration.Test/Properties/AssemblyInfo.cs index f364da2..5886e26 100644 --- a/src/Boxes.Integration.Test/Properties/AssemblyInfo.cs +++ b/src/Boxes.Integration.Test/Properties/AssemblyInfo.cs @@ -1,4 +1,17 @@ -using System.Reflection; +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/src/Boxes.Integration.Test/TopologicalProcessOrderTests.cs b/src/Boxes.Integration.Test/TopologicalProcessOrderTests.cs index 5e7e3db..bfa6b14 100644 --- a/src/Boxes.Integration.Test/TopologicalProcessOrderTests.cs +++ b/src/Boxes.Integration.Test/TopologicalProcessOrderTests.cs @@ -1,4 +1,17 @@ -namespace Boxes.Integration.Test +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +namespace Boxes.Integration.Test { using Boxes.Test; using Boxes.Test.Infrastructure; diff --git a/src/Boxes.Integration/BoxesWrapperBase.cs b/src/Boxes.Integration/BoxesWrapperBase.cs index aa0cca9..9c33476 100644 --- a/src/Boxes.Integration/BoxesWrapperBase.cs +++ b/src/Boxes.Integration/BoxesWrapperBase.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Exceptions/CreateLoaderException.cs b/src/Boxes.Integration/Exceptions/CreateLoaderException.cs index ec51faf..7891c4a 100644 --- a/src/Boxes.Integration/Exceptions/CreateLoaderException.cs +++ b/src/Boxes.Integration/Exceptions/CreateLoaderException.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Exceptions/FailedTrustException.cs b/src/Boxes.Integration/Exceptions/FailedTrustException.cs index 38b74bf..389457b 100644 --- a/src/Boxes.Integration/Exceptions/FailedTrustException.cs +++ b/src/Boxes.Integration/Exceptions/FailedTrustException.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Exceptions/ServiceTypeDoesNotMatchInstanceException.cs b/src/Boxes.Integration/Exceptions/ServiceTypeDoesNotMatchInstanceException.cs index d645486..8fe1476 100644 --- a/src/Boxes.Integration/Exceptions/ServiceTypeDoesNotMatchInstanceException.cs +++ b/src/Boxes.Integration/Exceptions/ServiceTypeDoesNotMatchInstanceException.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/ExtensionManifest.cs b/src/Boxes.Integration/ExtensionManifest.cs index ef68b9e..8cc9d78 100644 --- a/src/Boxes.Integration/ExtensionManifest.cs +++ b/src/Boxes.Integration/ExtensionManifest.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Extensions/IBoxesExtension.cs b/src/Boxes.Integration/Extensions/IBoxesExtension.cs index 032b5db..7ab4e4f 100644 --- a/src/Boxes.Integration/Extensions/IBoxesExtension.cs +++ b/src/Boxes.Integration/Extensions/IBoxesExtension.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Extensions/IBoxesExtensionWithSetup.cs b/src/Boxes.Integration/Extensions/IBoxesExtensionWithSetup.cs index 347f67a..b7ad0d7 100644 --- a/src/Boxes.Integration/Extensions/IBoxesExtensionWithSetup.cs +++ b/src/Boxes.Integration/Extensions/IBoxesExtensionWithSetup.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Extensions/ISetupBoxesExtension.cs b/src/Boxes.Integration/Extensions/ISetupBoxesExtension.cs index c6f4efe..dad608d 100644 --- a/src/Boxes.Integration/Extensions/ISetupBoxesExtension.cs +++ b/src/Boxes.Integration/Extensions/ISetupBoxesExtension.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Extensions/XmlManifest2012ExtensionReader.cs b/src/Boxes.Integration/Extensions/XmlManifest2012ExtensionReader.cs index 09964eb..ca14ab3 100644 --- a/src/Boxes.Integration/Extensions/XmlManifest2012ExtensionReader.cs +++ b/src/Boxes.Integration/Extensions/XmlManifest2012ExtensionReader.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Factories/FuncCreateLoader.cs b/src/Boxes.Integration/Factories/FuncCreateLoader.cs index cd2ff9a..1298bfe 100644 --- a/src/Boxes.Integration/Factories/FuncCreateLoader.cs +++ b/src/Boxes.Integration/Factories/FuncCreateLoader.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Factories/ICreateLoader.cs b/src/Boxes.Integration/Factories/ICreateLoader.cs index c99bab4..896fb90 100644 --- a/src/Boxes.Integration/Factories/ICreateLoader.cs +++ b/src/Boxes.Integration/Factories/ICreateLoader.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Factories/IDependencyResolverFactory.cs b/src/Boxes.Integration/Factories/IDependencyResolverFactory.cs index 7cae634..f611034 100644 --- a/src/Boxes.Integration/Factories/IDependencyResolverFactory.cs +++ b/src/Boxes.Integration/Factories/IDependencyResolverFactory.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Factories/IIoCFactory.cs b/src/Boxes.Integration/Factories/IIoCFactory.cs index 9335297..9b5dce4 100644 --- a/src/Boxes.Integration/Factories/IIoCFactory.cs +++ b/src/Boxes.Integration/Factories/IIoCFactory.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Factories/IIocSetup.cs b/src/Boxes.Integration/Factories/IIocSetup.cs index 701d75f..4414aee 100644 --- a/src/Boxes.Integration/Factories/IIocSetup.cs +++ b/src/Boxes.Integration/Factories/IIocSetup.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Factories/LoaderFactory.cs b/src/Boxes.Integration/Factories/LoaderFactory.cs index 8e71128..7a46c5d 100644 --- a/src/Boxes.Integration/Factories/LoaderFactory.cs +++ b/src/Boxes.Integration/Factories/LoaderFactory.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/IBoxesWrapper.cs b/src/Boxes.Integration/IBoxesWrapper.cs index 5ae746b..b40723f 100644 --- a/src/Boxes.Integration/IBoxesWrapper.cs +++ b/src/Boxes.Integration/IBoxesWrapper.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/IDependencyResolver.cs b/src/Boxes.Integration/IDependencyResolver.cs index f268389..eeca6b3 100644 --- a/src/Boxes.Integration/IDependencyResolver.cs +++ b/src/Boxes.Integration/IDependencyResolver.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/InternalContainerExtensions.cs b/src/Boxes.Integration/InternalContainerExtensions.cs index 9a8b4db..dee1ef0 100644 --- a/src/Boxes.Integration/InternalContainerExtensions.cs +++ b/src/Boxes.Integration/InternalContainerExtensions.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/InternalIoc/IInternalContainer.cs b/src/Boxes.Integration/InternalIoc/IInternalContainer.cs index b5fa176..d2295ed 100644 --- a/src/Boxes.Integration/InternalIoc/IInternalContainer.cs +++ b/src/Boxes.Integration/InternalIoc/IInternalContainer.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/InternalIoc/InternalInternalContainer.cs b/src/Boxes.Integration/InternalIoc/InternalInternalContainer.cs index dd4f01d..904d9c8 100644 --- a/src/Boxes.Integration/InternalIoc/InternalInternalContainer.cs +++ b/src/Boxes.Integration/InternalIoc/InternalInternalContainer.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/InternalIoc/Registration.cs b/src/Boxes.Integration/InternalIoc/Registration.cs index d40c0e1..58c0ef2 100644 --- a/src/Boxes.Integration/InternalIoc/Registration.cs +++ b/src/Boxes.Integration/InternalIoc/Registration.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/LoaderProxy.cs b/src/Boxes.Integration/LoaderProxy.cs index 5baf740..218266d 100644 --- a/src/Boxes.Integration/LoaderProxy.cs +++ b/src/Boxes.Integration/LoaderProxy.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/ObjectExtensions.cs b/src/Boxes.Integration/ObjectExtensions.cs index e0a8e58..60e399f 100644 --- a/src/Boxes.Integration/ObjectExtensions.cs +++ b/src/Boxes.Integration/ObjectExtensions.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Process/IProcessOrder.cs b/src/Boxes.Integration/Process/IProcessOrder.cs index f4b1fb1..99a2699 100644 --- a/src/Boxes.Integration/Process/IProcessOrder.cs +++ b/src/Boxes.Integration/Process/IProcessOrder.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Process/TopologicalProcessOrder.cs b/src/Boxes.Integration/Process/TopologicalProcessOrder.cs index 6681eb9..362d8c0 100644 --- a/src/Boxes.Integration/Process/TopologicalProcessOrder.cs +++ b/src/Boxes.Integration/Process/TopologicalProcessOrder.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Process/TopologicalSort.cs b/src/Boxes.Integration/Process/TopologicalSort.cs index ba66f10..e2cd3b4 100644 --- a/src/Boxes.Integration/Process/TopologicalSort.cs +++ b/src/Boxes.Integration/Process/TopologicalSort.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Process/TopologicalSortExtensions.cs b/src/Boxes.Integration/Process/TopologicalSortExtensions.cs index 3dae58f..8f5be8a 100644 --- a/src/Boxes.Integration/Process/TopologicalSortExtensions.cs +++ b/src/Boxes.Integration/Process/TopologicalSortExtensions.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/ProcessPackageContext.cs b/src/Boxes.Integration/ProcessPackageContext.cs index 9480d76..96cf840 100644 --- a/src/Boxes.Integration/ProcessPackageContext.cs +++ b/src/Boxes.Integration/ProcessPackageContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Properties/AssemblyInfo.cs b/src/Boxes.Integration/Properties/AssemblyInfo.cs index 9f8b0d7..69a6f96 100644 --- a/src/Boxes.Integration/Properties/AssemblyInfo.cs +++ b/src/Boxes.Integration/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/ContainerSetupBase.cs b/src/Boxes.Integration/Setup/ContainerSetupBase.cs index 7e52c5a..50a7e9b 100644 --- a/src/Boxes.Integration/Setup/ContainerSetupBase.cs +++ b/src/Boxes.Integration/Setup/ContainerSetupBase.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/DefaultContainerSetup.cs b/src/Boxes.Integration/Setup/DefaultContainerSetup.cs index 3ed4aba..189a292 100644 --- a/src/Boxes.Integration/Setup/DefaultContainerSetup.cs +++ b/src/Boxes.Integration/Setup/DefaultContainerSetup.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Filters/DefaultTypeRegistrationFilter.cs b/src/Boxes.Integration/Setup/Filters/DefaultTypeRegistrationFilter.cs index cc84132..099c626 100644 --- a/src/Boxes.Integration/Setup/Filters/DefaultTypeRegistrationFilter.cs +++ b/src/Boxes.Integration/Setup/Filters/DefaultTypeRegistrationFilter.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Filters/ITypeRegistrationFilter.cs b/src/Boxes.Integration/Setup/Filters/ITypeRegistrationFilter.cs index 6af5a29..8b46f28 100644 --- a/src/Boxes.Integration/Setup/Filters/ITypeRegistrationFilter.cs +++ b/src/Boxes.Integration/Setup/Filters/ITypeRegistrationFilter.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/IContainerSetup.cs b/src/Boxes.Integration/Setup/IContainerSetup.cs index d870a88..f2bc95d 100644 --- a/src/Boxes.Integration/Setup/IContainerSetup.cs +++ b/src/Boxes.Integration/Setup/IContainerSetup.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/IRegistrationTaskMapper.cs b/src/Boxes.Integration/Setup/IRegistrationTaskMapper.cs index 9bb76b9..acacc71 100644 --- a/src/Boxes.Integration/Setup/IRegistrationTaskMapper.cs +++ b/src/Boxes.Integration/Setup/IRegistrationTaskMapper.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/RegistrationContext.cs b/src/Boxes.Integration/Setup/RegistrationContext.cs index 7fbfd88..3420890 100644 --- a/src/Boxes.Integration/Setup/RegistrationContext.cs +++ b/src/Boxes.Integration/Setup/RegistrationContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/RegistrationMeta.cs b/src/Boxes.Integration/Setup/RegistrationMeta.cs index 3d9eb6d..72ffe30 100644 --- a/src/Boxes.Integration/Setup/RegistrationMeta.cs +++ b/src/Boxes.Integration/Setup/RegistrationMeta.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Registrations/Contracts.cs b/src/Boxes.Integration/Setup/Registrations/Contracts.cs index f151f55..523f695 100644 --- a/src/Boxes.Integration/Setup/Registrations/Contracts.cs +++ b/src/Boxes.Integration/Setup/Registrations/Contracts.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Registrations/IRegister.cs b/src/Boxes.Integration/Setup/Registrations/IRegister.cs index 6533809..3ee8476 100644 --- a/src/Boxes.Integration/Setup/Registrations/IRegister.cs +++ b/src/Boxes.Integration/Setup/Registrations/IRegister.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Registrations/RegisterBase.cs b/src/Boxes.Integration/Setup/Registrations/RegisterBase.cs index cade617..6a43453 100644 --- a/src/Boxes.Integration/Setup/Registrations/RegisterBase.cs +++ b/src/Boxes.Integration/Setup/Registrations/RegisterBase.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Registrations/RegisterContext.cs b/src/Boxes.Integration/Setup/Registrations/RegisterContext.cs index bde25af..55566ff 100644 --- a/src/Boxes.Integration/Setup/Registrations/RegisterContext.cs +++ b/src/Boxes.Integration/Setup/Registrations/RegisterContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Registrations/Registration.cs b/src/Boxes.Integration/Setup/Registrations/Registration.cs index 71fab2e..4445b22 100644 --- a/src/Boxes.Integration/Setup/Registrations/Registration.cs +++ b/src/Boxes.Integration/Setup/Registrations/Registration.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Tasks/ExtendBoxesTask.cs b/src/Boxes.Integration/Tasks/ExtendBoxesTask.cs index f4a9ba4..1511ee5 100644 --- a/src/Boxes.Integration/Tasks/ExtendBoxesTask.cs +++ b/src/Boxes.Integration/Tasks/ExtendBoxesTask.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Tasks/PipelineExecutorWrapper.cs b/src/Boxes.Integration/Tasks/PipelineExecutorWrapper.cs index 9eb2042..dda8aa3 100644 --- a/src/Boxes.Integration/Tasks/PipelineExecutorWrapper.cs +++ b/src/Boxes.Integration/Tasks/PipelineExecutorWrapper.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Tasks/TypeScannerTask.cs b/src/Boxes.Integration/Tasks/TypeScannerTask.cs index c20d384..b246502 100644 --- a/src/Boxes.Integration/Tasks/TypeScannerTask.cs +++ b/src/Boxes.Integration/Tasks/TypeScannerTask.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/AssemblyFromPackageTrustContext.cs b/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/AssemblyFromPackageTrustContext.cs index 37ff7ef..dbdff5a 100644 --- a/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/AssemblyFromPackageTrustContext.cs +++ b/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/AssemblyFromPackageTrustContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/SetupFromPackageTrustContext.cs b/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/SetupFromPackageTrustContext.cs index e38e3e3..9b64af7 100644 --- a/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/SetupFromPackageTrustContext.cs +++ b/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/SetupFromPackageTrustContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/TypeFromPackageTrustContext.cs b/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/TypeFromPackageTrustContext.cs index 4681234..2ae7737 100644 --- a/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/TypeFromPackageTrustContext.cs +++ b/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/TypeFromPackageTrustContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Contexts/TrustContext.cs b/src/Boxes.Integration/Trust/Contexts/TrustContext.cs index e484a6e..6e237dd 100644 --- a/src/Boxes.Integration/Trust/Contexts/TrustContext.cs +++ b/src/Boxes.Integration/Trust/Contexts/TrustContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Filters/ContractFilter.cs b/src/Boxes.Integration/Trust/Filters/ContractFilter.cs index c6a2240..56513d2 100644 --- a/src/Boxes.Integration/Trust/Filters/ContractFilter.cs +++ b/src/Boxes.Integration/Trust/Filters/ContractFilter.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Filters/FuncContractFilter.cs b/src/Boxes.Integration/Trust/Filters/FuncContractFilter.cs index 5805a55..cbd8e47 100644 --- a/src/Boxes.Integration/Trust/Filters/FuncContractFilter.cs +++ b/src/Boxes.Integration/Trust/Filters/FuncContractFilter.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Filters/ITrustFilter.cs b/src/Boxes.Integration/Trust/Filters/ITrustFilter.cs index 761d1c5..f8b2ae5 100644 --- a/src/Boxes.Integration/Trust/Filters/ITrustFilter.cs +++ b/src/Boxes.Integration/Trust/Filters/ITrustFilter.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Filters/TrustFilterBase.cs b/src/Boxes.Integration/Trust/Filters/TrustFilterBase.cs index 77ffce4..7677599 100644 --- a/src/Boxes.Integration/Trust/Filters/TrustFilterBase.cs +++ b/src/Boxes.Integration/Trust/Filters/TrustFilterBase.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/ITrustManager.cs b/src/Boxes.Integration/Trust/ITrustManager.cs index a23d3f0..0ee6709 100644 --- a/src/Boxes.Integration/Trust/ITrustManager.cs +++ b/src/Boxes.Integration/Trust/ITrustManager.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/TrustManager.cs b/src/Boxes.Integration/Trust/TrustManager.cs index e2a7ce1..6198d02 100644 --- a/src/Boxes.Integration/Trust/TrustManager.cs +++ b/src/Boxes.Integration/Trust/TrustManager.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/TypeExtensions.cs b/src/Boxes.Integration/TypeExtensions.cs index aefb7bd..e3700a9 100644 --- a/src/Boxes.Integration/TypeExtensions.cs +++ b/src/Boxes.Integration/TypeExtensions.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk (David Rundle) +// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From 38b80344442003834216694fa774588bace683e2 Mon Sep 17 00:00:00 2001 From: David Rundle Date: Mon, 14 Oct 2013 01:06:33 +0100 Subject: [PATCH 3/4] nuget/licence/changes file updates. Code header --- nuspec/boxes.nuspec | 1 + nuspec/license.txt | 2 +- src/Boxes.Integration.Test/ContainerSetupBaseTests.cs | 2 +- src/Boxes.Integration.Test/Properties/AssemblyInfo.cs | 2 +- src/Boxes.Integration.Test/TopologicalProcessOrderTests.cs | 2 +- src/Boxes.Integration/BoxesWrapperBase.cs | 2 +- src/Boxes.Integration/Exceptions/CreateLoaderException.cs | 2 +- src/Boxes.Integration/Exceptions/FailedTrustException.cs | 2 +- .../Exceptions/ServiceTypeDoesNotMatchInstanceException.cs | 2 +- src/Boxes.Integration/ExtensionManifest.cs | 2 +- src/Boxes.Integration/Extensions/IBoxesExtension.cs | 2 +- src/Boxes.Integration/Extensions/IBoxesExtensionWithSetup.cs | 2 +- src/Boxes.Integration/Extensions/ISetupBoxesExtension.cs | 2 +- .../Extensions/XmlManifest2012ExtensionReader.cs | 2 +- src/Boxes.Integration/Factories/FuncCreateLoader.cs | 2 +- src/Boxes.Integration/Factories/ICreateLoader.cs | 2 +- src/Boxes.Integration/Factories/IDependencyResolverFactory.cs | 2 +- src/Boxes.Integration/Factories/IIoCFactory.cs | 2 +- src/Boxes.Integration/Factories/IIocSetup.cs | 2 +- src/Boxes.Integration/Factories/LoaderFactory.cs | 2 +- src/Boxes.Integration/IBoxesWrapper.cs | 2 +- src/Boxes.Integration/IDependencyResolver.cs | 2 +- src/Boxes.Integration/InternalContainerExtensions.cs | 2 +- src/Boxes.Integration/InternalIoc/IInternalContainer.cs | 2 +- src/Boxes.Integration/InternalIoc/InternalInternalContainer.cs | 2 +- src/Boxes.Integration/InternalIoc/Registration.cs | 2 +- src/Boxes.Integration/LoaderProxy.cs | 2 +- src/Boxes.Integration/ObjectExtensions.cs | 2 +- src/Boxes.Integration/Process/IProcessOrder.cs | 2 +- src/Boxes.Integration/Process/TopologicalProcessOrder.cs | 2 +- src/Boxes.Integration/Process/TopologicalSort.cs | 2 +- src/Boxes.Integration/Process/TopologicalSortExtensions.cs | 2 +- src/Boxes.Integration/ProcessPackageContext.cs | 2 +- src/Boxes.Integration/Properties/AssemblyInfo.cs | 2 +- src/Boxes.Integration/Setup/ContainerSetupBase.cs | 2 +- src/Boxes.Integration/Setup/DefaultContainerSetup.cs | 2 +- .../Setup/Filters/DefaultTypeRegistrationFilter.cs | 2 +- src/Boxes.Integration/Setup/Filters/ITypeRegistrationFilter.cs | 2 +- src/Boxes.Integration/Setup/IContainerSetup.cs | 2 +- src/Boxes.Integration/Setup/IRegistrationTaskMapper.cs | 2 +- src/Boxes.Integration/Setup/RegistrationContext.cs | 2 +- src/Boxes.Integration/Setup/RegistrationMeta.cs | 2 +- src/Boxes.Integration/Setup/Registrations/Contracts.cs | 2 +- src/Boxes.Integration/Setup/Registrations/IRegister.cs | 2 +- src/Boxes.Integration/Setup/Registrations/RegisterBase.cs | 2 +- src/Boxes.Integration/Setup/Registrations/RegisterContext.cs | 2 +- src/Boxes.Integration/Setup/Registrations/Registration.cs | 2 +- src/Boxes.Integration/Tasks/ExtendBoxesTask.cs | 2 +- src/Boxes.Integration/Tasks/PipelineExecutorWrapper.cs | 2 +- src/Boxes.Integration/Tasks/TypeScannerTask.cs | 2 +- .../Contexts/BoxesExtensions/AssemblyFromPackageTrustContext.cs | 2 +- .../Contexts/BoxesExtensions/SetupFromPackageTrustContext.cs | 2 +- .../Contexts/BoxesExtensions/TypeFromPackageTrustContext.cs | 2 +- src/Boxes.Integration/Trust/Contexts/TrustContext.cs | 2 +- src/Boxes.Integration/Trust/Filters/ContractFilter.cs | 2 +- src/Boxes.Integration/Trust/Filters/FuncContractFilter.cs | 2 +- src/Boxes.Integration/Trust/Filters/ITrustFilter.cs | 2 +- src/Boxes.Integration/Trust/Filters/TrustFilterBase.cs | 2 +- src/Boxes.Integration/Trust/ITrustManager.cs | 2 +- src/Boxes.Integration/Trust/TrustManager.cs | 2 +- src/Boxes.Integration/TypeExtensions.cs | 2 +- 61 files changed, 61 insertions(+), 60 deletions(-) diff --git a/nuspec/boxes.nuspec b/nuspec/boxes.nuspec index b8a9a95..56c339f 100644 --- a/nuspec/boxes.nuspec +++ b/nuspec/boxes.nuspec @@ -6,6 +6,7 @@ Boxes Integration Boxes Contrib Team dbones.co.uk + http://docs.dbones.co.uk/GetFile.aspx?File=/boxes/logo/boxes48.jpg http://opensource.org/licenses/Apache-2.0 https://github.com/boxes-project false diff --git a/nuspec/license.txt b/nuspec/license.txt index 9f0871a..6836c00 100644 --- a/nuspec/license.txt +++ b/nuspec/license.txt @@ -1,4 +1,4 @@ -Copyright 2012 - 2013 dbones.co.uk (David Rundle) +Copyright 2012 - 2013 dbones.co.uk Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration.Test/ContainerSetupBaseTests.cs b/src/Boxes.Integration.Test/ContainerSetupBaseTests.cs index 2d1ded4..e333724 100644 --- a/src/Boxes.Integration.Test/ContainerSetupBaseTests.cs +++ b/src/Boxes.Integration.Test/ContainerSetupBaseTests.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration.Test/Properties/AssemblyInfo.cs b/src/Boxes.Integration.Test/Properties/AssemblyInfo.cs index 5886e26..d6d212d 100644 --- a/src/Boxes.Integration.Test/Properties/AssemblyInfo.cs +++ b/src/Boxes.Integration.Test/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration.Test/TopologicalProcessOrderTests.cs b/src/Boxes.Integration.Test/TopologicalProcessOrderTests.cs index bfa6b14..4d87dd3 100644 --- a/src/Boxes.Integration.Test/TopologicalProcessOrderTests.cs +++ b/src/Boxes.Integration.Test/TopologicalProcessOrderTests.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/BoxesWrapperBase.cs b/src/Boxes.Integration/BoxesWrapperBase.cs index 9c33476..6bcbdde 100644 --- a/src/Boxes.Integration/BoxesWrapperBase.cs +++ b/src/Boxes.Integration/BoxesWrapperBase.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Exceptions/CreateLoaderException.cs b/src/Boxes.Integration/Exceptions/CreateLoaderException.cs index 7891c4a..91ee3fc 100644 --- a/src/Boxes.Integration/Exceptions/CreateLoaderException.cs +++ b/src/Boxes.Integration/Exceptions/CreateLoaderException.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Exceptions/FailedTrustException.cs b/src/Boxes.Integration/Exceptions/FailedTrustException.cs index 389457b..4b88045 100644 --- a/src/Boxes.Integration/Exceptions/FailedTrustException.cs +++ b/src/Boxes.Integration/Exceptions/FailedTrustException.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Exceptions/ServiceTypeDoesNotMatchInstanceException.cs b/src/Boxes.Integration/Exceptions/ServiceTypeDoesNotMatchInstanceException.cs index 8fe1476..240b7a6 100644 --- a/src/Boxes.Integration/Exceptions/ServiceTypeDoesNotMatchInstanceException.cs +++ b/src/Boxes.Integration/Exceptions/ServiceTypeDoesNotMatchInstanceException.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/ExtensionManifest.cs b/src/Boxes.Integration/ExtensionManifest.cs index 8cc9d78..292d920 100644 --- a/src/Boxes.Integration/ExtensionManifest.cs +++ b/src/Boxes.Integration/ExtensionManifest.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Extensions/IBoxesExtension.cs b/src/Boxes.Integration/Extensions/IBoxesExtension.cs index 7ab4e4f..bb2a743 100644 --- a/src/Boxes.Integration/Extensions/IBoxesExtension.cs +++ b/src/Boxes.Integration/Extensions/IBoxesExtension.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Extensions/IBoxesExtensionWithSetup.cs b/src/Boxes.Integration/Extensions/IBoxesExtensionWithSetup.cs index b7ad0d7..705b8c7 100644 --- a/src/Boxes.Integration/Extensions/IBoxesExtensionWithSetup.cs +++ b/src/Boxes.Integration/Extensions/IBoxesExtensionWithSetup.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Extensions/ISetupBoxesExtension.cs b/src/Boxes.Integration/Extensions/ISetupBoxesExtension.cs index dad608d..cb0bd53 100644 --- a/src/Boxes.Integration/Extensions/ISetupBoxesExtension.cs +++ b/src/Boxes.Integration/Extensions/ISetupBoxesExtension.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Extensions/XmlManifest2012ExtensionReader.cs b/src/Boxes.Integration/Extensions/XmlManifest2012ExtensionReader.cs index ca14ab3..c367195 100644 --- a/src/Boxes.Integration/Extensions/XmlManifest2012ExtensionReader.cs +++ b/src/Boxes.Integration/Extensions/XmlManifest2012ExtensionReader.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Factories/FuncCreateLoader.cs b/src/Boxes.Integration/Factories/FuncCreateLoader.cs index 1298bfe..80e62be 100644 --- a/src/Boxes.Integration/Factories/FuncCreateLoader.cs +++ b/src/Boxes.Integration/Factories/FuncCreateLoader.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Factories/ICreateLoader.cs b/src/Boxes.Integration/Factories/ICreateLoader.cs index 896fb90..0ed5aa5 100644 --- a/src/Boxes.Integration/Factories/ICreateLoader.cs +++ b/src/Boxes.Integration/Factories/ICreateLoader.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Factories/IDependencyResolverFactory.cs b/src/Boxes.Integration/Factories/IDependencyResolverFactory.cs index f611034..5b9a654 100644 --- a/src/Boxes.Integration/Factories/IDependencyResolverFactory.cs +++ b/src/Boxes.Integration/Factories/IDependencyResolverFactory.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Factories/IIoCFactory.cs b/src/Boxes.Integration/Factories/IIoCFactory.cs index 9b5dce4..656b4e7 100644 --- a/src/Boxes.Integration/Factories/IIoCFactory.cs +++ b/src/Boxes.Integration/Factories/IIoCFactory.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Factories/IIocSetup.cs b/src/Boxes.Integration/Factories/IIocSetup.cs index 4414aee..250fa8e 100644 --- a/src/Boxes.Integration/Factories/IIocSetup.cs +++ b/src/Boxes.Integration/Factories/IIocSetup.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Factories/LoaderFactory.cs b/src/Boxes.Integration/Factories/LoaderFactory.cs index 7a46c5d..756fa54 100644 --- a/src/Boxes.Integration/Factories/LoaderFactory.cs +++ b/src/Boxes.Integration/Factories/LoaderFactory.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/IBoxesWrapper.cs b/src/Boxes.Integration/IBoxesWrapper.cs index b40723f..ceac068 100644 --- a/src/Boxes.Integration/IBoxesWrapper.cs +++ b/src/Boxes.Integration/IBoxesWrapper.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/IDependencyResolver.cs b/src/Boxes.Integration/IDependencyResolver.cs index eeca6b3..19adda2 100644 --- a/src/Boxes.Integration/IDependencyResolver.cs +++ b/src/Boxes.Integration/IDependencyResolver.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/InternalContainerExtensions.cs b/src/Boxes.Integration/InternalContainerExtensions.cs index dee1ef0..0703b48 100644 --- a/src/Boxes.Integration/InternalContainerExtensions.cs +++ b/src/Boxes.Integration/InternalContainerExtensions.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/InternalIoc/IInternalContainer.cs b/src/Boxes.Integration/InternalIoc/IInternalContainer.cs index d2295ed..37b77b3 100644 --- a/src/Boxes.Integration/InternalIoc/IInternalContainer.cs +++ b/src/Boxes.Integration/InternalIoc/IInternalContainer.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/InternalIoc/InternalInternalContainer.cs b/src/Boxes.Integration/InternalIoc/InternalInternalContainer.cs index 904d9c8..bc820ba 100644 --- a/src/Boxes.Integration/InternalIoc/InternalInternalContainer.cs +++ b/src/Boxes.Integration/InternalIoc/InternalInternalContainer.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/InternalIoc/Registration.cs b/src/Boxes.Integration/InternalIoc/Registration.cs index 58c0ef2..b243c70 100644 --- a/src/Boxes.Integration/InternalIoc/Registration.cs +++ b/src/Boxes.Integration/InternalIoc/Registration.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/LoaderProxy.cs b/src/Boxes.Integration/LoaderProxy.cs index 218266d..ed80786 100644 --- a/src/Boxes.Integration/LoaderProxy.cs +++ b/src/Boxes.Integration/LoaderProxy.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/ObjectExtensions.cs b/src/Boxes.Integration/ObjectExtensions.cs index 60e399f..6f6c543 100644 --- a/src/Boxes.Integration/ObjectExtensions.cs +++ b/src/Boxes.Integration/ObjectExtensions.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Process/IProcessOrder.cs b/src/Boxes.Integration/Process/IProcessOrder.cs index 99a2699..088862d 100644 --- a/src/Boxes.Integration/Process/IProcessOrder.cs +++ b/src/Boxes.Integration/Process/IProcessOrder.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Process/TopologicalProcessOrder.cs b/src/Boxes.Integration/Process/TopologicalProcessOrder.cs index 362d8c0..35ac9b8 100644 --- a/src/Boxes.Integration/Process/TopologicalProcessOrder.cs +++ b/src/Boxes.Integration/Process/TopologicalProcessOrder.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Process/TopologicalSort.cs b/src/Boxes.Integration/Process/TopologicalSort.cs index e2cd3b4..32c3ac1 100644 --- a/src/Boxes.Integration/Process/TopologicalSort.cs +++ b/src/Boxes.Integration/Process/TopologicalSort.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Process/TopologicalSortExtensions.cs b/src/Boxes.Integration/Process/TopologicalSortExtensions.cs index 8f5be8a..e4d8093 100644 --- a/src/Boxes.Integration/Process/TopologicalSortExtensions.cs +++ b/src/Boxes.Integration/Process/TopologicalSortExtensions.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/ProcessPackageContext.cs b/src/Boxes.Integration/ProcessPackageContext.cs index 96cf840..317e541 100644 --- a/src/Boxes.Integration/ProcessPackageContext.cs +++ b/src/Boxes.Integration/ProcessPackageContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Properties/AssemblyInfo.cs b/src/Boxes.Integration/Properties/AssemblyInfo.cs index 69a6f96..eee0ecf 100644 --- a/src/Boxes.Integration/Properties/AssemblyInfo.cs +++ b/src/Boxes.Integration/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/ContainerSetupBase.cs b/src/Boxes.Integration/Setup/ContainerSetupBase.cs index 50a7e9b..d5fd3d2 100644 --- a/src/Boxes.Integration/Setup/ContainerSetupBase.cs +++ b/src/Boxes.Integration/Setup/ContainerSetupBase.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/DefaultContainerSetup.cs b/src/Boxes.Integration/Setup/DefaultContainerSetup.cs index 189a292..bd7d10d 100644 --- a/src/Boxes.Integration/Setup/DefaultContainerSetup.cs +++ b/src/Boxes.Integration/Setup/DefaultContainerSetup.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Filters/DefaultTypeRegistrationFilter.cs b/src/Boxes.Integration/Setup/Filters/DefaultTypeRegistrationFilter.cs index 099c626..aeedf59 100644 --- a/src/Boxes.Integration/Setup/Filters/DefaultTypeRegistrationFilter.cs +++ b/src/Boxes.Integration/Setup/Filters/DefaultTypeRegistrationFilter.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Filters/ITypeRegistrationFilter.cs b/src/Boxes.Integration/Setup/Filters/ITypeRegistrationFilter.cs index 8b46f28..8334ebf 100644 --- a/src/Boxes.Integration/Setup/Filters/ITypeRegistrationFilter.cs +++ b/src/Boxes.Integration/Setup/Filters/ITypeRegistrationFilter.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/IContainerSetup.cs b/src/Boxes.Integration/Setup/IContainerSetup.cs index f2bc95d..e342be6 100644 --- a/src/Boxes.Integration/Setup/IContainerSetup.cs +++ b/src/Boxes.Integration/Setup/IContainerSetup.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/IRegistrationTaskMapper.cs b/src/Boxes.Integration/Setup/IRegistrationTaskMapper.cs index acacc71..e27a20d 100644 --- a/src/Boxes.Integration/Setup/IRegistrationTaskMapper.cs +++ b/src/Boxes.Integration/Setup/IRegistrationTaskMapper.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/RegistrationContext.cs b/src/Boxes.Integration/Setup/RegistrationContext.cs index 3420890..cf2bbea 100644 --- a/src/Boxes.Integration/Setup/RegistrationContext.cs +++ b/src/Boxes.Integration/Setup/RegistrationContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/RegistrationMeta.cs b/src/Boxes.Integration/Setup/RegistrationMeta.cs index 72ffe30..a3632c9 100644 --- a/src/Boxes.Integration/Setup/RegistrationMeta.cs +++ b/src/Boxes.Integration/Setup/RegistrationMeta.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Registrations/Contracts.cs b/src/Boxes.Integration/Setup/Registrations/Contracts.cs index 523f695..2b61516 100644 --- a/src/Boxes.Integration/Setup/Registrations/Contracts.cs +++ b/src/Boxes.Integration/Setup/Registrations/Contracts.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Registrations/IRegister.cs b/src/Boxes.Integration/Setup/Registrations/IRegister.cs index 3ee8476..57ca1fc 100644 --- a/src/Boxes.Integration/Setup/Registrations/IRegister.cs +++ b/src/Boxes.Integration/Setup/Registrations/IRegister.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Registrations/RegisterBase.cs b/src/Boxes.Integration/Setup/Registrations/RegisterBase.cs index 6a43453..a819c21 100644 --- a/src/Boxes.Integration/Setup/Registrations/RegisterBase.cs +++ b/src/Boxes.Integration/Setup/Registrations/RegisterBase.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Registrations/RegisterContext.cs b/src/Boxes.Integration/Setup/Registrations/RegisterContext.cs index 55566ff..eebb960 100644 --- a/src/Boxes.Integration/Setup/Registrations/RegisterContext.cs +++ b/src/Boxes.Integration/Setup/Registrations/RegisterContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Setup/Registrations/Registration.cs b/src/Boxes.Integration/Setup/Registrations/Registration.cs index 4445b22..22d9761 100644 --- a/src/Boxes.Integration/Setup/Registrations/Registration.cs +++ b/src/Boxes.Integration/Setup/Registrations/Registration.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Tasks/ExtendBoxesTask.cs b/src/Boxes.Integration/Tasks/ExtendBoxesTask.cs index 1511ee5..2fc7f20 100644 --- a/src/Boxes.Integration/Tasks/ExtendBoxesTask.cs +++ b/src/Boxes.Integration/Tasks/ExtendBoxesTask.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Tasks/PipelineExecutorWrapper.cs b/src/Boxes.Integration/Tasks/PipelineExecutorWrapper.cs index dda8aa3..78fd4f5 100644 --- a/src/Boxes.Integration/Tasks/PipelineExecutorWrapper.cs +++ b/src/Boxes.Integration/Tasks/PipelineExecutorWrapper.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Tasks/TypeScannerTask.cs b/src/Boxes.Integration/Tasks/TypeScannerTask.cs index b246502..453dae3 100644 --- a/src/Boxes.Integration/Tasks/TypeScannerTask.cs +++ b/src/Boxes.Integration/Tasks/TypeScannerTask.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/AssemblyFromPackageTrustContext.cs b/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/AssemblyFromPackageTrustContext.cs index dbdff5a..3d3718a 100644 --- a/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/AssemblyFromPackageTrustContext.cs +++ b/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/AssemblyFromPackageTrustContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/SetupFromPackageTrustContext.cs b/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/SetupFromPackageTrustContext.cs index 9b64af7..57b210f 100644 --- a/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/SetupFromPackageTrustContext.cs +++ b/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/SetupFromPackageTrustContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/TypeFromPackageTrustContext.cs b/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/TypeFromPackageTrustContext.cs index 2ae7737..089ce80 100644 --- a/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/TypeFromPackageTrustContext.cs +++ b/src/Boxes.Integration/Trust/Contexts/BoxesExtensions/TypeFromPackageTrustContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Contexts/TrustContext.cs b/src/Boxes.Integration/Trust/Contexts/TrustContext.cs index 6e237dd..c22135c 100644 --- a/src/Boxes.Integration/Trust/Contexts/TrustContext.cs +++ b/src/Boxes.Integration/Trust/Contexts/TrustContext.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Filters/ContractFilter.cs b/src/Boxes.Integration/Trust/Filters/ContractFilter.cs index 56513d2..0d5f2bd 100644 --- a/src/Boxes.Integration/Trust/Filters/ContractFilter.cs +++ b/src/Boxes.Integration/Trust/Filters/ContractFilter.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Filters/FuncContractFilter.cs b/src/Boxes.Integration/Trust/Filters/FuncContractFilter.cs index cbd8e47..0e5832e 100644 --- a/src/Boxes.Integration/Trust/Filters/FuncContractFilter.cs +++ b/src/Boxes.Integration/Trust/Filters/FuncContractFilter.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Filters/ITrustFilter.cs b/src/Boxes.Integration/Trust/Filters/ITrustFilter.cs index f8b2ae5..e1c20f8 100644 --- a/src/Boxes.Integration/Trust/Filters/ITrustFilter.cs +++ b/src/Boxes.Integration/Trust/Filters/ITrustFilter.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/Filters/TrustFilterBase.cs b/src/Boxes.Integration/Trust/Filters/TrustFilterBase.cs index 7677599..dbc8aa8 100644 --- a/src/Boxes.Integration/Trust/Filters/TrustFilterBase.cs +++ b/src/Boxes.Integration/Trust/Filters/TrustFilterBase.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/ITrustManager.cs b/src/Boxes.Integration/Trust/ITrustManager.cs index 0ee6709..7b04bff 100644 --- a/src/Boxes.Integration/Trust/ITrustManager.cs +++ b/src/Boxes.Integration/Trust/ITrustManager.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/Trust/TrustManager.cs b/src/Boxes.Integration/Trust/TrustManager.cs index 6198d02..ce78288 100644 --- a/src/Boxes.Integration/Trust/TrustManager.cs +++ b/src/Boxes.Integration/Trust/TrustManager.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/Boxes.Integration/TypeExtensions.cs b/src/Boxes.Integration/TypeExtensions.cs index e3700a9..d186938 100644 --- a/src/Boxes.Integration/TypeExtensions.cs +++ b/src/Boxes.Integration/TypeExtensions.cs @@ -1,4 +1,4 @@ -// Copyright 2012 - 2013 dbones.co.uk & Boxes Contrib Team +// Copyright 2012 - 2013 dbones.co.uk // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From 8c40269ec20ded5b4ff88ac190db8e1dbac5048a Mon Sep 17 00:00:00 2001 From: David Rundle Date: Mon, 14 Oct 2013 01:18:18 +0100 Subject: [PATCH 4/4] 128px icon --- nuspec/boxes.nuspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nuspec/boxes.nuspec b/nuspec/boxes.nuspec index 56c339f..344d33e 100644 --- a/nuspec/boxes.nuspec +++ b/nuspec/boxes.nuspec @@ -6,7 +6,7 @@ Boxes Integration Boxes Contrib Team dbones.co.uk - http://docs.dbones.co.uk/GetFile.aspx?File=/boxes/logo/boxes48.jpg + http://docs.dbones.co.uk/GetFile.aspx?File=/boxes/logo/boxeslogo.jpg http://opensource.org/licenses/Apache-2.0 https://github.com/boxes-project false